Back to Video Basics with an ESP32 VGA Display

In a world where standards come and go with alarming speed, there’s something comforting about VGA. It’s the least common denominator of video standards, and seeing that chunky DB15 connector on the back of a computer means that no matter what, you’ll be able to get something from it, if you can just find a VGA cable in your junk bin.

But that’s the PC world; what about microcontrollers? Can you coax VGA video from them? Yes, you can, with an ESP32, a handful of resistors, and a little bit of clever programming. At least that’s what [bitluni] has managed to do in his continuing quest to push the ESP32 to output all the signals. For this project, [bitluni] needed to generate three separate signals – red, green, and blue – but with only two DACs on board, he had to try something else. He built external DACs the old way using R/2R voltage divider networks and addressed them with the I2S bus in LCD mode. He needed to make some compromises to fit the three color signals and the horizontal and vertical sync pulses into the 24 available bits, and there were a few false starts, but the video below shows that he was able to produce a 320×240 signal, and eventually goosed that up to a non-native 460×480.

It’s a pretty impressive hack, and we learned a lot about both the ESP32 and the VGA standard by watching the video. He’s previously used the ESP32 to build an AM radio station and to output composite PAL video, and even turned his oscilloscope into a vector display with it. They’re all great learning projects too.

Continue reading “Back to Video Basics with an ESP32 VGA Display”

Arduino Nitrox Analyzer for the Submarine Hacker

For Hackaday readers who don’t spend their free time underwater, nitrox is a blend of nitrogen and oxygen that’s popular with scuba divers. Compared to atmospheric air, nitrox has a higher concentration of oxygen; which not only allows divers to spend more time underwater but also reduces the risk of decompression sickness. Of course when fiddling with the ratio of gases you breathe there’s a not inconsequential risk of dying, so nitrox diving requires special training and equipment to make sure the gas mixture is correct.

Divers can verify the ratio of oxygen to nitrogen in their nitrox tanks with a portable analyzer, though as you might expect, they aren’t exactly cheap. But if you’re confident in your own hacking skills, [Eunjae Im] might have the solution for divers looking to save some cash. He’s come up with an Arduino based nitrox analyzer that can be built for considerably less than the cost of a commercial unit.

Now before you get the torches lit up, we should be clear: ultimately the accuracy, and therefore safety, of this device depends on the quality of the oxygen sensor used. [Eunjae] isn’t suggesting you get a bottom of the barrel sensor for this build, and in fact links to a replacement sensor that’s intended for commercial nitrox analyzers as a way to verify the unit is up to the task. The downside is that the sensor alone runs $80. If you want to go with something cheaper, you do so at your own risk.

With a suitable sensor in hand, the project really boils down to building up an interface and enclosure for it. [Eunjae] is using an Arduino Nano, a 128×64 OLED screen, and a battery inside of a rugged waterproof case. He also added an ADS1115 16 Bit DAC between the oxygen sensor and the Arduino for fast and accurate readings over I2C. With the hardware assembled, calibrating the device is as simple as taking it outside and making sure you get an oxygen reading of 20.9% (the atmospheric normal).

While [Eunjae] is happy with his analyzer on the whole, he does see a few areas which could be improved in future revisions. The case is bulky and rather unattractive, something that could be addressed with a custom 3D printed case (though waterproofing it might be an issue). He also says the only reason he used a 9V alkaline battery was because he had it on hand, a small rechargeable battery pack would be a much more elegant solution.

We’ll go out on a limb and say that most Hackaday readers aren’t avid scuba divers. For better or for worse, we’re the sort of folks who stay in the shallow end of the pool. But when one of our ilk does dip below the waves, they really seem to go all out.

Continue reading “Arduino Nitrox Analyzer for the Submarine Hacker”

3000W Unicycle’s Only Limitation Is “Personal Courage”

Electric vehicles are fertile ground for innovation because the availability of suitable motors, controllers, and power sources makes experimentation accessible even to hobbyists. Even so, [John Dingley] has been working on such vehicles since about 2009, and his latest self-balancing electric unicycle really raises the bar by multiple notches. It sports a monstrous 3000 Watt brushless hub motor intended for an electric motorcycle, and [John] was able to add numerous touches such as voice feedback and 1950’s styling using surplus aircraft and motorcycle parts. To steer, the frame changes shape slightly with help of the handlebars to allow the driver’s center of gravity to shift towards one or the other outer rims of the wheel. In a test drive at a deserted beach, [John] tells us that the bike never went above 20% power; the device’s limitations are entirely by personal courage. Watch the video of the test, embedded below.

Continue reading “3000W Unicycle’s Only Limitation Is “Personal Courage””

Software Defined Television on an ESP32

Composite video from a single-board computer? Big deal — every generation of Raspberry Pi has had some way of getting composite signals out and onto the retro monitor of your choice. But composite video from an ESP32? That’s a thing now too.

There are some limitations, of course, not least of which is finding a monitor that can accept a composite input, but since [bitluni]’s hack uses zero additional components, we can overlook those. It really is as simple as hooking the monitor up to pin 25 and ground because, like his recent ESP32 AM radio station, the magic is entirely in software. For video, [bitluni] again uses his I²S tweaks to push a lot of data into the DAC really fast, reproducing the sync and image signals in the 0-1 volt range of the PAL composite standard. His code also supports the NTSC standard, but alas because of frequency limitations in the hardware it’s monochrome only for both standards, at least for now. He’s also got a neat trick to improve performance by running the video signal generation and the 3D-rendering on separate cores in the ESP32. Check out the results in the video below.

It looks like the ESP32 is getting to be one of those “Is there anything it can’t do?” systems. Aside from radio and video, we’ve seen audio playback, vector graphics, and even a Basic interpreter easter egg.

Continue reading “Software Defined Television on an ESP32”

Laser Galvo Control via Microcontroller’s DAC

Mirror galvanometers (‘galvos’ for short) are the worky bits in a laser projector; they are capable of twisting a mirror extremely quickly and accurately. With two of them, a laser beam may be steered in X and Y to form patterns. [bdring] had purchased some laser galvos and decided to roll his own control system with the goal of driving the galvos with the DAC (digital to analog) output of a microcontroller. After that, all that was needed to make it draw some shapes was a laser and a 3D printed fixture to hold everything in the right alignment.

The galvos came with drivers to take care of the low-level interfacing, and [bdring]’s job was to make an interface to translate the 0 V – 5 V output range of his microcontroller’s DAC into the 10 V differential range the driver expects. He succeeded, and a brief video of some test patterns is embedded below.

Continue reading “Laser Galvo Control via Microcontroller’s DAC”

ESP32, We Have Ways to Make You Talk

One of our favorite scenes from the [James Bond] franchise is the classic exchange between [Goldfinger] and [Bond]. [Connery] (the One True Bond) says, “You expect me to talk?” And the reply is, “No Mr. Bond, I expect you to die!” When it comes to the ESP32, though, apparently [XTronical] expects it to talk. He posted a library to simplify playing WAV files on the ESP32. There is also a video worth watching, below.

Actually, you might want to back up to his previous post where he connects a speaker via one of the digital to analog converters on the board. In that post, he just pushes out a few simple waveforms, but the hardware is the same setup he uses for playing the WAV files.

Continue reading “ESP32, We Have Ways to Make You Talk”

ESP32 Makes for World’s Worst Radio Station

We can say one thing for [bitluni]: the BOMs for his projects, like this ESP32 AM radio transmitter, are always on the low side. That’s because he leverages software to do jobs traditionally accomplished with hardware, always with instructive results.

In this case, the job at hand is creating an RF oscillator in the broadcast AM band and modulating some audio onto it. From his previous experience using an ESP32 to watch video on an oscilloscope, [bitluni] knew that the microcontroller’s DACs were up to the task of producing an 800-kHz signal, and he managed to produce a more-or-less sine wave carrier with some clever code. His sketch takes data from a header file, modulates it onto the carrier, and sends it out over the ether using a short stub of wire for an antenna. The range is severely limited, but for what it is, it gets the job done and shows the basics. And as a bonus, [bitluni] included a bit of JavaScript that turns an audio file into a header file that’s ready to go out over the airwaves for all your trolling needs.

If you’re looking for a little more range for your low power transmitter and you’re a licensed amateur operator, you might want to explore the world of QRP radio.

Continue reading “ESP32 Makes for World’s Worst Radio Station”