Drawing On an OLED with an ATtiny85, No RAM Buffers Allowed

Small I2C OLED displays are common nowadays, and thanks to the work of helpful developers, there are also a variety of graphics libraries for using them. Most of them work by using a RAM buffer, which means that anything one wants to draw gets written to a buffer representing the screen, and the contents of that buffer are copied out to the display whenever it is updated. The drawback is that for some microcontrollers, there simply isn’t enough RAM for this approach to work. For example, a 128×64 monochrome OLED requires a 1024 byte buffer, but that’s bad news if a microcontroller has only 512 bytes of RAM in total like the ATtiny85. [David Johnson-Davies] has two solutions: a Tiny Graphics Library that needs no RAM buffer and an even slimmer Tiny Function Plotter, which we’ll discuss in order.

Tiny Function Plotter works on both SSD1306 and SH1106-based displays.

[David]’s Tiny Graphics Library works by taking advantage of a feature of SH1106 driver-based displays: the ability to read the display over I2C as well as write to it. With the ability to perform read-modify-write on a section at a time, using a large RAM buffer can be avoided. The only catch is that the library only works with OLEDs using the SH1106, but the good news is that these are very common at the usual Chinese resellers. ([David] notes that SH1106 is sometimes misspelled as “SSH1106”, so keep that in mind when searching.)

What about all those other SSD1306-based OLED displays out there? Are they out of luck? Not quite. [David] has one more trick up his sleeve: his Tiny Function Plotter works on the SSD1306 and also requires no RAM buffer. It’s unable to write text, but it can easily handle drawing graphs plotting things like values over time while needing very little overhead.

Another approach we’ve seen for using OLEDs driven by microcontrollers with limited memory is the solution [Michael] used in Tiny Sideways Tetris, which was done in part by realizing the smallest screen element he needed was a 4×4 block, and using that premise as the basis of a simple compression scheme.

I2C Bootloader for ATtiny85 Lets Other Micros Push Firmware Updates

There are a few different ways of getting firmware onto one of AVR’s ATtiny85 microcontrollers, including bootloaders that allow for firmware to be updated without the need to plug the chip into a programmer. However, [casanovg] wasn’t satisfied with those so he sent us a tip letting us know he wrote an I2C bootloader for the ATtiny85 called Timonel. It takes into account a few particulars of the part, such as the fact that it lacks a protected memory area where a bootloader would normally reside, and it doesn’t have a native I2C interface, only the USI (Universal Serial Interface). He’s just released the first functional version for the ATtiny85, but there’s no reason it couldn’t be made to work with the ATtiny45 and ATtiny25 as well.

Timonel is designed for systems where there is a more powerful microcontroller or microprocessor running the show (such as an ESP8266, Arduino, or even a board like a Raspberry Pi.) In designs where the ATtinys are on an I2C bus performing peripheral functions such as running sensors, Timonel allows the firmware for these peripheral MCUs to be updated directly from the I2C bus master. Embedded below is a video demo of [casanovg] sending simple serial commands, showing a successful firmware update of an AVR ATtiny85 over I2C.

Continue reading “I2C Bootloader for ATtiny85 Lets Other Micros Push Firmware Updates”

The Crustacean Battle Bot of your Nightmares

We’ve all seen a movie or TV show that got our imagination going, and the more studious of us might get fired up over a good book (one without pictures, even). You never know were inspiration might come from, which is why it’s so hard to track down in the first place. But one place we don’t often hear about providing many hackers with project ideas is the grocery store. But of course the more we learn about [Michael Kohn], the more we realize he’s got a very unique vision.

On a recent trip to the grocery store, [Michael] saw a two pack of frozen lobsters and thought they would make fine battling robots. You know, as one does. Unfortunately the process of taking a frozen lobster and turning it into a combat droid (which incidentally does include eating the thing at some point in the timeline) ended up being so disgusting that he only finished one of them. Whether that makes this poor fellow the winner or loser though…that’s a question that will require some contemplation.

The first step was cooking and eating the beast, and after that came cleaning the shell of as much remaining meat and innards as possible. He then baked it in a toaster oven for 40 minutes and let it sit for a couple of days to make sure it didn’t have any residual smell. Once he confirmed the shell was clean, he glued it back together and got started on mounting it to his hardware.

A wooden frame under the lobster holds the dual HD-1711MG mini servos that power the karate chop action of the claws, as well as the electronics. [Michael] used a ATtiny85 and NTD4963N MOSFETs to make a basic RC platform which responds to IR from a Syma S107 toy helicopter controller. He tried to power everything with AAA and then AA batteries, but found they just didn’t give him the juice he needed once the bot got going. So the final version utilizes a 5 V regulator and a standard RC 7.2v LiPO battery pack.

If you’re not big on shellfish, never fear. He’s created similar roving contraptions based around sausages and carrots too. One could say he’s truly a man of refined…taste.

Continue reading “The Crustacean Battle Bot of your Nightmares”

Thumbs Up for This Custom Atari 5200 Controller

It may be nearly 40 years old, but the Atari 5200 still inspires legions of fans to relive the 8-bit glory days of their youth. There was much to love about the game console, but the joystick-and-keypad controllers were not among its many charms. The joystick didn’t auto-center, the buttons were mushy, and the ergonomics were nonexistent.

Retro-aficionados need not suffer in silence, though, thanks to this replacement controller for the Atari 5200. [Scott Baker] didn’t want to settle for one of the commercial replacements or, horrors, an adapter for the old PC-style joystick, so he rolled his own. Working from the original Atari schematics, [Scott] devised a plan for using a readily available thumbstick controller as the basis for his build. The essential problem was how to adapt the 10k pots on the new joystick to work in an environment expecting 500k pots, which he solved using an analog to digital and back to analog approach. The ADCs on an ATtiny85 convert each joystick pot’s voltage to a digital value between 0 and 255, which is sent to a 100K digital potentiometer. A little fiddling with RC constants brings it back in line with what the console expects. The thumbstick and buttons live on a custom PCB – kudos to [Scott] for designing an ambidextrous board. The video below shows the design and the finished product in action.

[Scott] is on a bit of a 5200 kick these days; he just finished up a Raspberry Pi multi-cartridge for the venerable console. His controller should make retro-gameplay on the console a little easier on the hands.

Continue reading “Thumbs Up for This Custom Atari 5200 Controller”

Custom ATTiny85 Board Powers Kids’ Light Show

We’ve often said that kids with hackers and makers for parents must be some of the luckiest kids in the world. While all the other children have to settle for some mass produced drivel from Toys“R”Us Amazon, they’ve got some of the most thoughtfully engineered and built toys and gadgets on the planet. After all, there’s no way any hacker worth their salt is going to give anything less than 110% for their own child.

A case in point is this RGB star nightlight that [Unexpected Maker] built for his children. The star itself is simple enough, just a basic shape printed in transparent PLA on his Prusa i3. The impressive part is how he lights it up. Rather than stick an Arduino or ESP8266 in there as we have seen plenty of times before, he’s put together his own custom ATTiny85 board specifically for controlling the RGB LED strips.

The board, which he calls TinyDev, is designed to be the same thickness as NeoPixel style LED strips so it can fit inside tight spaces. He solders it onto the tail end of his LED strip, adds a photoresistor so the star can tell when it’s time to light up, and then snakes the whole arrangement through a channel printed in the star itself. There’s a battery pack in the middle, but that’s about it. It really does allow for a remarkably clean LED strip implementation, and the mind can’t help but start thinking of interesting possibilities when you can tuck the controller into the same space as the lights themselves.

[Unexpected Maker] has made the TinyDev completely open source for anyone who wants to build their own, but it’s also available on Tindie if you want to get one to play with quickly. If you’re looking to light up the little one’s room with somewhat more mainstream methods, we’ve got that covered too.

Continue reading “Custom ATTiny85 Board Powers Kids’ Light Show”

Simple RC to USB Interface

With the radio control hobby arguably larger now than it ever has been in the past, there’s a growing demand for high-fidelity PC simulators. Whether you want to be able to “fly” when it’s raining out or you just want to practice your moves before taking that expensive quadcopter up for real, a good simulator on your computer is the next best thing. But the simulator won’t do you much good if it doesn’t feel the same; you really need to hook your normal RC transmitter up to the computer for the best experience.

[Patricio] writes in to share with us his simple hack for interfacing his RC hardware to his computer over USB. Rather than plugging the transmitter into the computer, his approach allows the receiver to mimic a USB joystick. Not only is this more convenient since you can use the simulator without wires, but it will make sure that the minutiae of your radio hardware (such as response lag) is represented in the simulation.

The setup is actually very simple. [Patricio] used the ATtiny85 based Digispark development board because it’s what he had on hand, but the principle would be the same on other microcontrollers. Simply connect the various channels from the RC receiver to the digital input pins. RC receivers are 5 VDC and draw very little current, so it’s even possible to power the whole arrangement from the USB port.

On the software side, the Arduino sketch does about what you expect. It loops through listening for PWM signals on the input pins, and maps that to USB joystick position information. The current code only supports three channels for a simple airplane setup (X and Y for joystick, plus throttle), but it should be easy enough to follow along and add more channels if you needed them for more complex aircraft.

For more information on the intricacies of RC transmitter and receiver interaction, check out this fascinating research on receiver latency.

Energy Harvesting Design Doesn’t Need Sleep

Every scrap of power is precious when it comes to power harvesting, and working with such designs usually means getting cozy with a microcontroller’s low-power tricks and sleep modes. But in the case of the Ultra Low Power Energy Harvester design by [bobricius], the attached microcontroller doesn’t need to worry about managing power at all — as long as it can finish its job fast enough.

The idea is to use solar energy to fill a capacitor, then turn on the microcontroller and let it run normally until the power runs out. As a result, a microcontroller may only have a runtime in the range of dozens of microseconds, but that’s just fine if it’s enough time to, for example, read a sensor and transmit a packet. In early tests, [bobricius] was able to reliably transmit a 16-bit value wirelessly every 30 minutes using a small array of photodiodes as the power supply. That’s the other interesting thing; [bobricius] uses an array of BPW34 photodiodes to gather solar power. The datasheet describes them as silicon photodiodes, but they can be effectively used as tiny plastic-enclosed solar cells. They are readily available and can be arranged in a variety of configurations, while also being fairly durable.

Charging a capacitor then running a load for a short amount of time is one of the simplest ways to manage solar energy, and it requires no unusual components or fancy charge controllers. As long as the load doesn’t mind a short runtime, it can be an effective way to turn even indoor light into a figuratively free power source.