Posts with «arduino hacks» label

Trojans Can Lurk Inside AVR Bootloaders

If there’s one thing we’ve learned over the years, it’s that if it’s got a silicon chip inside, it could be carrying a virus. Research by one group focused on hiding a trojan inside an AVR Arduino bootloader, proving even our little hobbyist microcontrollers aren’t safe.

The specific aim of the research was to hide a trojan inside the bootloader of an AVR chip itself. This would allow the trojan to remain present on something like a 3D printer even if the main firmware itself was reinstalled. The trojan would still be able to have an effect on the printer’s performance from its dastardly hiding place, but would be more difficult to notice and remove.

The target of the work was the ATmega328P, commonly used in 3D printers, in particular those using the Marlin firmware. For the full technical details, you can dive in and read the research paper for yourself. In basic terms, though, the modified bootloader was able to use the chip’s IVSEL register to allow bootloader execution after boot via interrupt. When an interrupt is called, execution passes to the trojan-infected bootloader’s special code, before then returning to the program’s own interrupt to avoid raising suspicion. The trojan can also execute after the program’s interrupt code too, increasing the flexibility of the attack.

Simply reflashing a program to an affected chip won’t flush out the trojan. The chip instead must have its bootloader specifically rewritten a clean version to remove the offending code.

It’s not a super dangerous hack, overall. Typically, flashing a malicious bootloader would require physical access to the chip. Furthermore, there’s not heaps to be gained by sneaking code onto the average 3D printer out there. However, it’s nonetheless a good example of what bootloaders can really do, and a reminder of what we should all be careful of when operating in security-conscious domains. Stay safe out there!

Hack a Day 22 Sep 03:00

Arduino Nano Powers Reverse Polish Notation Calculator

There’s something about Reverse Polish Notation (RPN) and the calculators that use it. It calls to mind a time when a calculator was a serious tool, and not just a throwaway toy. Created in the legacy of such calculators by HP and Texas Instruments, [Simon Boak] shows off his SB116, sporting an Arduino Nano under the hood. It’s a fully custom design, with a hand-built metal case, a custom PCB for the keyboard, and a tiny OLED display for maximum retro green goodness.

The impetus for this build was to replace a particular calculator, a well-used TI Programmer, that’s useful for working with 6502 assembly. The SB116 supports binary, octal, decimal, and hex; and boasts some downright useful functions — AND, NOT, OR, XOR, and bitshifts. The source code is available, but you’re on your own for the case and keyboard. And for maximized retro faux-nostalgia, [Simon] designed a box that would have looked right at home on an 80s store shelf.

Stick around for more retro-modern takes on calculators, or tales of repairing a genuine vintage model.

Ethersweep: An Easy-To-Deploy Ethernet Connected Stepper Controller

[Neumi] over on Hackaday.IO wanted a simple-to-use way to drive stepper motors, which could be quickly deployed in a wide variety of applications yet to be determined. The solution is named Ethersweep, and is a small PCB stack that sits on the rear of the common NEMA17-format stepper motor. The only physical connectivity, beside the motor, are ethernet and a power supply via the user friendly XT30 connector. The system can be closed loop, with both an end-stop input as well as an on-board AMS AS5600 magnetic rotary encoder (which senses the rotating magnetic field on the rear side of the motor assembly – clever!) giving the necessary feedback. Leveraging the Trinamic TMC2208 stepper motor driver gives Ethersweep silky smooth and quiet motor control, which could be very important for some applications. A rear-facing OLED display shows some useful debug information as well as the all important IP address that was assigned to the unit.

Control is performed with the ubiquitous ATMega328 microcontroller, with the Arduino software stack deployed, making uploading firmware a breeze. To that end, a USB port is also provided, hooked up to the uC with the cheap CP2102 USB bridge chip as per most Arduino-like designs. The thing that makes this build a little unusual is the ethernet port. The hardware side of things is taken care of with the Wiznet WS500 ethernet chip, which implements the MAC and PHY in a single device, needing only a few passives and a magjack to operate. The chip also handles the whole TCP/IP stack internally, so only needs an external SPI interface to talk to the host device.

Talking about firmware for a moment, to ease deployment, the network configuration is handled by DHCP, although some control over MAC address assignment is promised for the future. All control is via UDP over ethernet, and again the basic functionality is there, but some niceties such as motor synchronisation and state querying are again subject to further releases. Hardware design is implemented in KiCAD and FreeCAD, with Arduino covering the firmware and host control side in python. You can read all about it on the Ethersweep project GitHub, what is there not to like?

If you thought you’d seen this stepper-mounted driver setup before, you’d be correct, here’s a Hackaday Prize 2017 Entry for a CANBUS controlled driver. We also saw this on Dummy: the obscenely well made robot arm by [Zhihui Jun], which if you missed it, then do circle back and take a look, you won’t regret it!

The Ease of Wireless Charging, Without the Wait

Historically, there have been a few cases of useful wireless power transmission over great distances, like a team at MIT that was able to light up a 60 W bulb at several meters, and of course Nikola Tesla had grand dreams of drawing energy from the atmosphere. But for most of us wireless power is limited to small, short-range devices like cellphone chargers. While it’s not a lot of work to plug in a phone when it needs a charge, even this small task can be automated.

This build begins with a 3D printed cradle for the smartphone to sit in. When the device detects that the phone has been placed in the cradle, it uses a linear actuator to drive a custom-built charging cable into the phone’s USB port. Similarly, when the phone is lifted from the cradle the cable is automatically removed. It appears that there is some play in the phone’s position that lets the charger be plugged in smoothly, and the project’s creator [Larpushka] points out that the linear actuator is not particularly strong so we don’t imagine the risk of damage is very high.

While wireless charging still may have the edge when it comes to keeping debris out of the port, we still really enjoy a project like this that seems to be done for its own sake. There are some improvements that [Larpushka] plans to make, but for now we’re delighted by this build. For anyone looking to add true wireless charging to any phone that doesn’t have it, though, it’s not too difficult to accomplish either.

Saving Fuel With Advanced Sensors And An Arduino

When [Robot Cantina] isn’t busy tweaking the 420cc Big Block engine in their Honda Insight, they’re probably working on some other completely far out automotive atrocity. In the video below the break, you’ll see them take the concept of a ‘lean burn’ system from the Insight and graft hack it into their 1997 Saturn coupe.

What’s a lean burn system? Simply put, it tricks the car into burning less fuel when it’s cruising under a light load to improve the vehicle’s average mileage. The Saturn’s electronics aren’t sophisticated enough to implement a lean burn system simply, and so [Robot Cantina] did what any of us might have done: hacked it in with an Arduino.

The video does a wonderful job going into the details, but essentially by using an oxygen sensor with finer resolution (wide-band) and then outputting the appropriate narrow band signal to the ECU, [Robot Cantina] can fine tune the air/fuel ratio with nothing more than a potentiometer, and the car’s ECU is none the wiser. What were the results? Well… they weren’t as expected, which means more experimentation, more parts, and hopefully, more videos. We love seeing the scientific method put to fun use!

People are ever in the quest to try interesting new (and sometimes old) ideas, such as this hot rod hacked to run with a lawnmower carburetor.

a Customizable Macropad to Make Anyone’s Tail Wag

[Gili Yankovitch] has always wanted some kind of macro keypad for all those boss-slaying combos he keeps up the sleeve of his wizard robe while playing WoW. Seventeen years later, he finally threw down the gauntlet and built one. But really, this is an understatement, because Paws is kind of the customizable macropad to end all customizable macropads.

This thing is completely bespoke, and yet cookie cutter at the same time — but we mean that in the best possible way. Paws can be made in any shape or form, and quite easily. How is this even possible, you ask? Well, every single key has its own microcontroller.

Yep, each key has an ATtiny85 and a cute little ribbon cable, and these form a token ring network that talks to an Arduino, which provides the keyboard interface to the computer. To make things even easier, [Gili] built a simple programming UI that automatically recognizes the configuration and number of keys, and lets the user choose the most important bit of all — the color of the LED.

[Gili] wanted to combine all the skills he’s learned since the worst timeline started in early 2020 — embedded software, CAD, electronics, and PCB design. We’d like to add networking to that list, especially since he figured out a nice workaround for the slowness of I²C and the limitations of communication between the ‘tiny85s and the Arduino. Though [Gili] may have started out with a tall order, he definitely filled it. Want to get your paws on the design files? Just claw your way over to GitHub.

If your customization interests lie more toward what program is in focus, be sure to check out Keybon, which was one of the many awesome winners of our Odd Inputs and Peculiar Peripherals contest.

A Handy Tester for a Mountain of PS/2 Keybords

The hacking life is not without its challenges, and chief among these is the tendency to always be in acquisition mode. When we come across a great deal on bulk equipment, or see a chance to rescue some obscure gear from the e-waste stream, we generally pounce on it, regardless of the advisability.

We imagine this is why [Nathan] ended up with a hoard of PS/2 keyboards. Seriously, there are like thousands of the things. And rather than lug a computer to them for testing, [Nathan] put together this handy Arduino-based portable tester to see which keyboards still have some life left in them. The video below goes into detail on the build, but the basics are pretty simple — an Arduino, a 16×2 LCD display, and a few bits and bobs to run it off a LiPo pack and charge it up. Plus, of course, a PS/2 jack to plug in a keyboard and power it up. Interestingly, the 16×2 display is an old Parallax unit, from the days when RadioShack still existed and sold their stuff. That required a little effort to get it working with the Arduino, but in the end it works like a charm — plug in a keyboard and whatever you type shows up on the screen.

Of course, it’s hard to look at something like this, and that mountain of keyboards in the background, and not scheme up ways to really automate the whole test process. Perhaps an old 3D printer with a stylus mounted where the hot end would go could press each key in turn while the tester output is recorded — something like this Wordle-bot, but on a keyboard scale. That kind of goes against [Nathan]’s portability goal, but it’s still fun to think about.

Hack a Day 12 Jul 16:30
2  arduino  arduino hacks  keyboard  ps  serial  test  tool hacks  

Arduino Drum Platform Is Fast

Drums are an exciting instrument to learn to play, but often prohibitive if there are housemates or close neighbors involved. For that problem there are still electronic drums which can be played much more quietly, but then the problem becomes one of price. To solve at least part of that one, [Jeremy] turned to using an Arduino to build a drum module on his own, but he still had to solve yet a third problem: how to make the Arduino fast enough for the drums to sound natural.

Playing music in real life requires precise timing, so the choice of C++ as a language poses some problems as it’s not typically as fast as lower-level languages. It is much easier to work with though, and [Jeremy] explains this in great detail over a series of blog posts detailing his drum kit’s design. Some of the solutions to the software timing are made up for with the hardware on the specific Arduino he chose to use, including an even system, a speedy EEPROM, hardware timers, and an ADC that can sample at 150k samples per second.

With that being said, the hardware isn’t the only thing standing out on this build. [Jeremy] has released the source code on his GitHub page for those curious about the build, and is planning on releasing several more blog posts about the drum kit build in the near future as well. This isn’t the only path to electronic drums, though, as we’ve seen with this build which converts an analog drumset into a digital one.

Hack a Day 29 Jun 06:00

Pocket Computer Reminds Us of PDAs

Before smartphones exploded on the scene in the late 00s, there was still a reasonable demand for pocket-sized computers that could do relatively simple computing tasks. Palm Pilots and other PDAs (Personal Digital Assistants) were all the rage in the ’90s and early ’00s, although for cutting-edge tech from that era plenty of these devices had astronomical price tags. This Arduino-based PDA hearkens back to that era, albeit with a much more accessible parts list.

The build is based around an Arudino Nano with an OLED screen and has the five necessary functions for a PDA: calculator, stopwatch, games, phonebook, and a calendar. With all of these components on such a small microcontroller, memory quickly became an issue when using the default libraries. [Danko] uses his own custom libraries in order to make the best use of memory which are all available on the project’s GitHub page. The build also includes a custom PCB to keep the entire pocket computer pocket-sized.

There are some other features packed into this tiny build as well, like the breakout game that can be played with a potentiometer. It’s an impressive build that makes as much use of the microcontroller’s capabilities as is possible, and if you enjoy projects where a microcontroller is used as if it is a PC take a look at this Arduino build with its own command-line interface.

Hack a Day 23 Jun 21:00

Sisyphean Ball Race Robot Toils Gracefully, Magnetically

Aren’t ball races and marble runs fun? Wouldn’t they be so much more enjoyable if you didn’t have to climb back up the ladder each time, as it were, and reset the thing? [Johannes] wrote in to tell us about a wee robot with the Sisyphean task of setting a ball bearing on a simple but fun course, collecting it from the end, and airlifting it back to the start of the track.

[Johannes] built this ‘bot to test small-scale resin printing strength as well as the longevity of some tiny linear actuators from Ali that may or may not be available at a moment’s notice. The point was to see how these little guys fared when connected directly to an Arduino or other microcontroller, rather than going the safer route with a motor driver of some kind.

Some things worked well, like the c-clips that keep the axles together, and using quick pulses to release the magnetically-linked ball from the gripper. Other aspects didn’t work out so well. Tiny resin parts do not respond well to force, for starters. And then there’s the actuators themselves. The connections are fragile and the motors are weak, but they vary wildly in quality from piece to piece, so YMMV. Some lose steps, and others occasionally seize. But you wouldn’t know any of that from the graceful movement capture in the video below. Although it appears to be automated, the bot is under remote control because of the motor issues.

Not into ball runs? There are other Sisyphean tasks available, such as moving sand around in the name of meditation.