An 128x64 OLED display with a weird image on it, showing a mouse cursor, date and time in the bottom right corner, and a whole lot of presumably dithered dots

Making Your Own Technically-HDMI OLED Monitor

One day, [mitxela] got bored and decided to build his own HDMI monitor – the unconventional way. HDMI has a few high-speed differential pairs, but it also has an I2C interface used for detecting the monitor’s resolution and issuing commands like brightness control. In fact, I2C is the backbone for a lot of side channels like these – it’s also one of our preferred interfaces for connecting to cool sensors, and in this case, an OLED display!

[mitxela] describes his journey from start to end, with all the pitfalls and detours. Going through the pinout with a broken hence sacrificial HDMI cable in hand, he figured out how to probe the I2C lines with Linux command-line tools and used those to verify that the display was recognized on the HDMI-exposed I2C bus. Then, he turned to Python and wrote a short library for the display using the smbus bindings – and, after stumbling upon an FPS limitation caused by SMBus standard restrictions, rewrote his code to directly talk to the I2C device node, raising FPS from 2 to 5-10.

From there, question arose – what’s the best software route to take? He tried making a custom X modeline on the HDMI port the display was technically attached to, but that didn’t work out. In the end, he successfully employed the Linux capability called “virtual monitors”, and found out about an interesting peculiarity – there was no mouse cursor to be seen. Turns out, they’re typically hardware-accelerated and overlaid by our GPUs, but in [mitxela]’s case, the GPU was not involved, so he added cursor support to the picture forwarding code, too.

With partial refresh, the display could be redrawn even faster, but that’s where [mitxela] decided he’s reached a satisfactory conclusion to this journey. The write-up is a great read, and if videos are more your forte, he also made a video about it all – embedded below.

We first covered the ability to get I2C from display ports 14 years ago, and every now and then, this fun under-explored opportunity has been popping up in hackers’ projects. We’ve even seen ready-to-go breakouts for getting I2C out of VGA ports quickly. And if you go a bit further, with your I2C hacking skills, you can even strip HDCP!

We thank [sellicott] and [leo60228] for sharing this with us!

Continue reading “Making Your Own Technically-HDMI OLED Monitor”

An OLED Photo Frame Powered By The ATtiny85

Rolling your own digital picture frame that loads images from an SD card and displays them on an LCD with a modern microcontroller like the ESP32 is an afternoon project, even less if you pull in somebody else’s code. But what if you don’t have the latest and greatest hardware to work with?

Whether you look at it as a practical application or an interesting experiment in wringing more performance out of low-end hardware, [Assad Ebrahim]’s demonstration of displaying digital photographs on an OLED using the ATtiny85 is well worth a look. The whole thing can put put together on a scrap of perfboard with a handful of common components, and can cycle through the five images stored on the chip’s flash memory for up to 20 hours on a CR2032 coin cell.

As you might expect, the biggest challenge in this project is getting all the code and data to fit onto the ATtiny85. To that end [Assad] wrote his own minimal driver for the SSD1306 OLED display, as the traditional Adafruit code took up too much space. The driver is a pretty bare bones implementation, but it’s enough to initialize the screen and get it ready for incoming data. His code also handles emulating I2C over Atmel’s Universal Serial Interface (USI) at an acceptable clip, so long as you bump the chip up to 8 MHz.

For the images, [Assad] details the workflow he uses to take the high-resolution color files and turn them into an array of bytes for the display. Part of that it just scaling down and converting to 1-bit color, but there’s also a bit of custom Forth code in the mix that converts the resulting data into the format his code expects.

This isn’t the first time we’ve seen somebody use one of these common OLED displays in conjunction with the ATtiny85, and it’s interesting to see how their techniques compare. It’s not a combination we’d necessarily chose willingly, but sometimes you’ve got to work with whats available.

Analog Style VU Meter With Arduino And OLED Display

Looking for a digital recreation of the classic analog volume unit (VU) meter? If you’ve got an Arduino, a few passive components, and a SSD1306 OLED, then [mircemk] might have the answer for you. As you can see in the video below, his code turns a handful of cheap parts into an attractive and functional audio display.

The project’s Hackaday.IO page explains that the idea is based on the work of [stevenart], with code adapted for the SSD1306 display and some tweaks made to the circuit. While [mircemk] says the code could be modified for stereo as long as the two displays don’t have conflicting I2C addresses, he decided to simply duplicate the whole setup for each channel to keep things simple. With as cheap as some of these parts are nowadays, it’s hard to blame him.

[mircemk] has provided source code for a couple different styles of VU indicators, the colors of which can easily be inverted depending on your tastes. He also clarifies that the jerky motion of the virtual “needle” seen in the video is due to the camera; in real-life it sweeps smoothly like the genuine article.

Much like the project that aimed to recreate authentic “steam gauges” with e-paper displays, this as an excellent technique to file away for use in the future. Compared to authentic analog gauges, these digital recreations are quicker and faster to implement, plus going this route prevents any antique hardware from going on the chopping block.

Continue reading “Analog Style VU Meter With Arduino And OLED Display”

Bridging The PC And Embedded Worlds With Pico And Python

Although protocols like I2C and SPI are great for communicating between embedded devices and their peripherals, it can be a pain to interface these low-level digital interfaces to a PC. [Alexandre] typically used an Arduino to bridge between the PC and embedded worlds, but he got tired of defining a custom serial protocol for each project. Inspired by MicroPython’s machine module, [Alexandre] has developed u2if—an implementation of some of MicroPython’s machine module for PC—using a USB-connected Raspberry Pi Pico to bridge between a PC and low-level digital interfaces.

u2if consists of two parts: the PC portion is a Python implementation of a portion of the MicroPython machine module, and the Raspberry Pi Pico receives some custom C++ firmware. Thus far, [Alexandre] has implemented functionality for the onboard ADCs, I2C, SPI, UART, and GPIO lines as well as additional support for I2S sound and the WS2812B addressable LED.

Development board for Raspberry Pi Pico.

In addition to the u2if package, [Alexandre] has designed a PCB to break out all of the Raspberry Pi Pico’s interfaces in a handy 3×3.9″ board. We especially like that multiple headers are supplied for I2C, including one with enough space to mount an SSD1306 OLED display.

We think this could be an incredibly useful tool, and what makes it even more impressive is that it uses a board many of us already have laying around. If you want a dedicated device for interfacing with low-level digital buses, you may want to check out the GreatFET.

Smart Lid Spies On Sourdough Starter, Sends Data Wirelessly

[Justin Lam] created a wonderfully-detailed writeup of his Smart Sourdough Lid project, which was created out of a desire to get better data on the progress and health of his sourdough starters, and to do so more efficiently. The result is a tidy, one-piece lid that constantly measures temperature, humidity, and height of the starter in the jar. Data is sent wirelessly for analysis, but there is also a handy OLED display on the top of the lid that shows immediately useful data like how much the starter has peaked, and how much time has passed since it did so.

The PCB was optimized for size, and not designed with mounting in mind, so a hot-glued machine screw serves as a “button extender”. Issues like this can happen when enclosures are designed after the fact; it’s something to which we can all relate.

We really like how focused the design is, and the level of detail [Justin] goes into to explain his design decisions and describe how well they worked out. This isn’t [Justin]’s first kick at the can when it comes to getting data on his sourdough, after all. We remember his earlier work using computer vision to analyze sourdough starters, and he used what he learned to inform this new design; the smart lid is easier to use and handles data much more efficiently.

The project’s GitHub repository has all the information needed to build your own. The lid is ESP8266-based and integrates a VL6180X time-of-flight (ToF) distance sensor, DHT22 to sense temperature and humidity, and a small SSD1306 OLED display for data. A small custom PCB keeps the modules tidy, and a 3D-printed custom enclosure makes it one tidy package.

[Justin] also analyzes the results he obtained and talks about what they mean in the last part of his writeup, so if you’re into baking and interested in his findings, be sure to give that a look.

The Swiss Army Knife Of Bench Tools

[splat238] had a ton of spare sensors laying around that he had either bought for a separate project or on an impulse buy, so he knew he had to do something with them. He decided to build his own digital multi-tool focusing on sensors that would be particularly useful in a workshop setting. Coincidentally, he was inspired by a previous hack that we covered a while back.

He’s equipped his device with a bubble level, tachometer, IR thermometer, protractor, laser pointer, and many, many more features that would make great additions to any hacker’s workspace. There’s a good summary of each sensor, making his Instructable somewhat of a quick guide to common sensing modalities for hardware designers. The tachometer, thermometer, laser pointer, and a few other capabilities are notable upgrades from the project we highlighted previously. We also appreciate the bigger display, allowing for more detailed user feedback particularly in using the compass and bullseye digital level among other features.

The number of components in [splat238’s] build is too extensive to detail one-by-one in this article, so please see his Instructable linked above for all the details. [splat238] made his own PCB for mounting each sensor and did a good job making the design modular so you wouldn’t need to add certain components if you don’t need them. Most of the components take some through-hole soldering with only a handful of 0805 resistors required otherwise. The housing was designed such that the user can handle the tool with one hand and can switch between each function with a push of a button.

Finally, the device is powered using a rechargeable lithium-polymer battery making it very reusable. And, if there weren’t enough features already, the battery can be charged via USB or through two solar panels mounted into the housing unit. Okay, solar charging might be a case of featuritis, but still a cool build either way.

Check out some other handy DIY tools on Hackaday.

Continue reading “The Swiss Army Knife Of Bench Tools”

Arduino Handheld Game System Gets A Grip

With little more than an Arduino, an OLED display, and some buttons, it’s easy to build your own faux-retro game system. There’s even a growing library of titles out there that target this specific combination of hardware, thanks in no small part to the Arduboy project. But unless you’re content to play Circuit Dude on a breadboard, at some point you’ll probably want to wrap the build up in a more convenient form.

Like many that came before it, the OLED handheld created by [Alex Zidros] takes inspiration from a Nintendo product; but it’s not the Game Boy. Instead, his design is based on a 3D printed grip for the Switch Joy-Cons that he found on Thingiverse. After tacking on a holder for the PCB, he had the makings of a rather unique system.

We especially like the offset SSD1306 OLED display. Not because we think a game system with an asymmetrical layout is a particularly sound design decision, but because it gives the whole build a rather cyberpunk feel. When combined with the exposed electronics, the whole system looks like it could have been cobbled together from a futuristic dumpster. Which is high praise, as far as we’re concerned.

Opposite the display is a LiPo pouch battery that [Alex] says was liberated from a portable speaker, and down below is an Adafruit Feather 328P. There are two tactile switches mounted to the front of the Feather, and in something of a departure from these sort of builds, there are two more on the shoulders of the 3D printed case. Everything is held together with nothing more exotic than a scrap of perfboard, making it easy for anyone who might want to build their own version.

If you prefer your Arduino and OLED gaming to come in a slightly more familiar form factor, the build that was done inside of a Dreamcast Visual Memory Unit (VMU) has always been a favorite around these parts.