Posts with «arduino hacks» label

Arduino BabyTV is Big Fun at Low Resolution

What kind of TV do you have? An older 720p model, or the now standard 1080p? Perhaps you’ve made the leap to the next generation, and are rocking a 4K display in the living room. All those are are fine and dandy if you just want to watch the local sportball contest, but where’s the challenge in that? With all the technology and modular components we have access to anymore, nowadays all the real hackers are making their own TVs.

Of course, when [Nikolai] built his very own LED TV, he did have to make a few concessions. For one thing, there’s no tuner on this model. Oh, and there’s the small issue of only having a 16×16 resolution. It might not be your idea of the perfect display, but it’s just perfect for his newborn son.

That’s right, [Nikolai] got his entry for the “Hacker Parent of the Year” award in early, and built an LED display for his son that he’s calling “BabyTV”.

Rather than the shows, trash, advertisements that they play on the kid channels, this TV only shows animated characters from retro games. We’ll concede that this project might be an elaborate Clockwork Orange style attempt at hypnotizing his son to instill an appreciation for classic gaming. But we’ll allow it.

To make his BabyTV go, [Nikolai] used a 16×16 WS2812B LED panel and an Arduino Nano. Two rotary encoders are used to allow adjusting brightness and change the character currently being shown on the screen. As a particularly clever hack, the Arduino has an IR sensor attached and is constantly watching for any signals. If an IR signal is detected, the BabyTV switches to the next image. So if Junior has a standard IR remote in his hands, any button he presses will cause the display to change to the next “channel”.

Historically speaking we haven’t seen much stuff for children here at Hackaday, but 2018 seems to be changing that. Recent projects like the incredible scratch built mini excavator and gorgeous AT-ST high chair would seem to indicate we’re currently witnessing a generation of hackers become parents. Don’t panic folks, but we might be getting old.

Moltoduino: Arduinos All the Way Down

It is getting difficult to find a desktop or laptop computer with only a single CPU. Even a typical ARM-based computer now probably has multiple cores. Of course, there’s nothing to stop you from using multiple microcontrollers — like the Arduino — together. To make the process neater, [Dimitris Platis] put together Moltoduino, essentially an Arduino on a shield made to plug into another Arduino. And, yes, they will stack. You can see a video about the open source boards, below.

The key is how the board brings the pins out to connections that are easy to jumper between boards. There are several obvious use cases, but one that [Dimitris] is particularly interested in is hardware-in-the-loop testing. The idea is that you can use a simulated I/O device in one computer to exchange fake data with the software under test.

For example, you might be working on a sous vide cooker that reads a temperature and controls a heater. A second computer could stand in for the temperature sensor and heater. You could log outputs and also control the inputs. This is really nice when you want to set up repeatable test cases.

Of course, you don’t have to stack the boards to make that work. In fact, you don’t have to use another Arduino. A PC or some other controller could be the surrogate test device. But having it all in a stack is handy. There are several examples of doing testing using simulated hardware on the project’s GitHub page. The test subjects are a robot car and an ultrasonic device.

One neat feature is that each board has a switch to enable the master Arduino to ISP program it. So while you might not need to stack boards to use any of the proposed techniques, it does make for a nice and compact package.

Usually, when we see a cluster it uses Raspberry Pis. Or, sometimes, PCs.

Debugging with Serial Print at 5333333 Baud

Debugging with printf is something [StorePeter] has always found super handy, and as a result he’s always been interested in tweaking the process for improvements. This kind of debugging usually has microcontrollers sending messages over a serial port, but in embedded development there isn’t always a hardware UART, or it might already be in use. His preferred method of avoiding those problems is to use a USB to Serial adapter and bit-bang the serial on the microcontroller side. It was during this process that it occurred to [StorePeter] that there was a lot of streamlining he could be doing, and thanks to serial terminal programs that support arbitrary baud rates, he’s reliably sending debug messages over serial at 5.3 Mbit/sec, or 5333333 Baud. His code is available for download from his site, and works perfectly in the Arduino IDE.

The whole thing consists of some simple, easily ported code to implement a bare minimum bit-banged serial communication. This is output only, no feedback, and timing consists of just sending bits as quickly as the CPU can handle, leaving it up to the USB Serial adapter and rest of the world to handle whatever that speed turns out to be. On a 16 MHz AVR, transmitting one bit can be done in three instructions, which comes out to about 5333333 baud or roughly 5.3 Mbit/sec. Set a terminal program to 5333333 baud, and you can get a “Hello world” in about 20 microseconds compared to 1 millisecond at 115200 baud.

He’s got additional tips on using serial print debugging as a process, and he’s done a followup where he stress-tests the reliability of a 5.3 MBit/sec serial stream from an ATMega2560 at 16 MHz in his 3D printer, and found no missed packets. That certainly covers using printf as a debugger, so how about a method of using the debugger as printf?

This 3D-Printed Robotic Vacuum Sucks

After you’ve taken a moment to ponder the turn of phrase used in the title, take a look at this scratch-built robotic vacuum created by [theking3737]. The entire body of the vacuum was 3D printed, and all of the internal electronics are off-the-shelf modular components. We can’t say how well it stacks up against the commercial equivalents from iRobot and the like, but it doesn’t look like it would be too hard to build one yourself to find out.

The body of this rather concerned-looking robot was printed on a DMS DP5 printer, which is a neat trick as it only has a build platform of 200 mm x 200 mm. Once all the pieces were printed, a 3D pen was used to “weld” the sections together. The final result looks a bit rough, but should give a bond that’s just as strong as the printed parts themselves.

The robot has four sets of ultrasonic range finders to detect walls and obstacles, though probably not in the positions you would expect. The right side of the robot has two sets of sensors, while the left side only gets one. We aren’t sure the reasoning behind the asymmetrical layout, but presumably the machine prefers making right turns.

Control is provided by an Arduino Mega and the ever-reliable HC-05 Bluetooth module. A companion Android application was written which allows configuring the robot without having to plug into the Arduino every time you want to tweak a setting.

We can’t say we’ve seen that many DIY robotic vacuums here at Hackaday, but we’ve certainly featured our fair share of hacks for the commercially available models.

Arduino Watchdog Has Bite And Doesn’t Need Treats

My dog Jasper isn’t much of a watchdog: he’s too interested in sleeping and chasing my cats to keep an eye on things. Fortunately, [Vadim] has come up with a more reliable alternative with this simple Arduino watchdog. It’s designed to work with crypto coin mining rigs, but it could be easily adapted for other high-uptime uses, such as file servers or doomsday weapons.

The way it works is simple: a small program on the watched computer sends a command over the serial port: a polite “hello”. The Arduino watchdog picks this up and responds with an equally polite “HELLO”. That starts the watchdog running. A simple Java program on the watched computer then sends a ping every five seconds over the serial port to let the watchdog know it is still running okay.

If the watchdog doesn’t receive this ping, it uses reed relay wired into the reset pins of the computer to trigger a reset. It then waits for the watched computer to say hello, starting the process again.

[Vadim] includes a demo video where the system resets an unreliable crypto mining rig. It does have limitations, of course: if the mining program crashes without taking down the entire computer, the watchdog won’t be triggered, and it won’t work if the problem requires a full hard power reset rather than a soft reset. dIt’s a neat little build that could be easily modified to handle all these issues, though, and you don’t need to keep feeding it treats to keep its attention, unlike Jasper.

Hack a Day 23 Feb 19:30

Underwater Logging for Science

Logging data with an Arduino is old-hat for most Hackaday readers. However, [Patricia Beddows] and [Edward Mallon] had some pretty daunting requirements. Their sensors were going underground and underwater as part of an effort to study conditions underwater and in caves. They needed to be accessible, yet rugged. They didn’t want to use batteries that would be difficult to take on airplanes, but also wanted more than a year of run time. You can buy all that, of course, if you are willing to pay the price.

Instead, they used off-the-shelf Arduino boards connected together inside PVC housings. Three alkaline AA batteries are compact and give them more than a year of run time. They wrote a journal paper to help other scientists use the same techniques for the Sensors journal published by the Multidisciplinary Digital Publishing Institute.

If you regularly read Hackaday, you probably won’t find the electronic part of the build remarkable. However, that’s kind of the point, as this is all off-the-shelf and inexpensive. They do however modify the boards in some cases to allow the controller to power them down, for example.

In fact, they put a lot of thought into reducing power requirements. Since your eye is more sensitive to green, for example, they use green LEDs with very low currents as indicators. They also speed up the serial bus going to sensors because they found that the increased power required was more than offset by finishing the transaction faster (and, thus, going back to sleep sooner).

The PVC enclosures are also interesting. The paper shows some practical deployments in some very harsh conditions. If you want more practical details, the Cave Pearl project has been blogging about their development of these loggers for a while. They have a good “how to” page, as well.

If an Arduino seems too last-year for you, we’ve seen long-duration logging done with ESP8266s and ESP32s. However, they did use lithium-ion cells. Spoiler alert: The ESP8266 lasts longer than the ESP32. If you want to minimize power when sending things out over a network connection, consider MQTT.

Arduino Keyboard is Gorgeous Inside and Out

While the vast majority of us are content to plod along with the squishy chiclet keyboards on our laptops, or the cheapest USB membrane keyboard we could find on Amazon, there’s a special breed out there who demand something more. To them, nothing beats a good old-fashioned mechanical keyboard, where each key-press sounds like a footfall of Zeus himself. They are truly the “Chad” of the input device world.

But what if even the most high end of mechanical keyboards doesn’t quench your thirst for spring-loaded perfection? In that case, the only thing left to do is design and build your own. [Matthew Cordier] recently unveiled the custom mechanical keyboard he’s been working on, and to say it’s an elegant piece of engineering is something of an understatement. It may even better inside than it does on the outside.

The keyboard, which he is calling z.48, is based around the Arduino Pro Micro running a firmware generated on kbfirmware.com, and features some absolutely fantastic hand-wiring. No PCBs here, just a rainbow assortment of wire and the patience of a Buddhist monk. The particularly attentive reader may notice that [Matthew] used his soldering iron to melt away the insulation on his wires where they meet up with the keys, giving the final wiring job a very clean look.

Speaking of the keys, they are Gateron switches with DSA Hana caps. If none of those words mean anything to you, don’t worry. We’re through the Looking Glass and into the world of the keyboard aficionado now.

Finally, the case itself is printed on a CR-10 with a 0.3 mm nozzle and 0.2 mm layers giving it a very fine finish. At 70% infill, we imagine it’s got a good deal of heft as well. [Matthew] mentions that a production case and a PCB are in the cards for the future as he hopes to do a small commercial run of these boards. In the meantime we can all bask in the glory of what passes for a prototype in his world.

We’ve seen some exceptionally impressive mechanical keyboards over the years, including the occasional oddity like the fully 3D printed one and even one that inexplicably moves around. But this build by [Matthew] has to be one of the most elegant we’ve ever come across.

[Thanks to DarkSim905 for the tip]

Debugging an Arduino with an Arduino

As every Hackaday reader knows, and tells us at every opportunity in the comments, adding an Arduino to your project instantly makes it twice as cool. But what if, in the course of adding an Arduino to your project, you run into a problem and need to debug the code? What if you could use a second Arduino to debug the first? That would bring your project up to two Arduinos, instantly making it four times as awesome as before you started! Who could say no to such exponential gains?

Debugging an ATTiny85

Not [Wayne Holder], that’s for sure. He writes in to let us know about a project he’s been working on for a while that allows you to debug the execution of code on an Arduino with a second Arduino. In fact, the target chip could even be another AVR series microcontroller such as a the ATTiny85. With his software you can single-step through the code, view and modify values in memory, set breakpoints, and even disassemble the code. Not everything is working fully yet, but what he has so far is very impressive.

The trick is exploiting a feature known as “debugWIRE” that’s included in many AVR microcontrollers. Unfortunately documentation on this feature is hard to come by, but with some work [Wayne] has managed to figure out how most of it works and create an Arduino Sketch that lets the user interact with the target chip using a simple menu system over the serial monitor, similar to the Bus Pirate.

[Wayne] goes into plenty of detail on his site and in the video included after the break, showing many of the functions he’s got working so far in his software against an ATTiny85. If you spend a lot of time working on AVR projects, this looks like something you might want to keep installed on an Arduino in your tool bag for the future.

Debugging microcontroller projects can be a huge time saver when your code starts running on real hardware, but often takes some hacking to get working.

I’ll Have a Beer With a Compliment Chaser

[Andrew MacPherson] found out that compliments, even insincere ones, make the recipients feel better. So, he put together a thermal printer and a hilariously large button with an Arduino and created a machine that prints compliments. And where best to put a machine that prints out compliments? The local bar, where else?

An Arduino Nano clone runs the show connected to a thermal printer. The Nano clone didn’t like the 9 volt power supply, so a buck converter was used to reduce the voltage down to 5 volts for the Nano, while the printer gets the full power. During initial trials, the printer was very slow to print and it took [Andrew] a while to adjust the parameters – after tweaking the speed as well as the heating time, he was able to get the printer working without burning the paper or taking forever to print.

Once the machine was working, it was time to add a button. A large, light-up button was connected and glued to the side of the printer. More glue was used (after some “modifications” to the printer chassis) to secure a barrel connector for the power adapter.

[Andrew] decided that since he’s down at his favorite bar quite a lot, he’d set it up there. The customers could push the button and receive a compliment while drowning their sorrows. He got a friend of his who’s a copywriter to come up with some nicely written compliments to print out. The printer was such a hit that the bartender sent [Andrew] a message on Facebook saying so. If you have a thermal printer lying around, you can use this tutorial to connect it to the internet, or, if you don’t have one, you can build your own.

Junk Build Printer Uses Pencil To Print

Sometimes, it is interesting to see what you can build from the bits that you have in your junk drawer. [Dr West] decided to build a printer with spare parts including a hard drive, a scanner base and an Arduino. The result is a rather cool printer that prints out the image using a pencil, tapping the image out one dot at a time. The software converts the image into an array, with 0 representing white and 1 representing black. The printer itself works a bit like an old-school CRT TV: the scanner array moves the printer along a horizontal line, then moves it vertically and along another horizontal line. It then triggers the hard drive actuator to create a mark on the paper if there is a 1 in the array at that point.

We’ve seen a few drawing printers before, but most use a plotter or CNC approach, where the motors move the pencil on an X-Y . This type of dot matrix printer (sometimes called a dotter) isn’t as efficient, but it’s a lot of fun and shows what can be achieved with  a few bits of junk and a some ingenuity.