Microcontrollers come in a broad swathe of capabilities these days. There are the venerable 8-bit micros that have been around forever and valiantly crunch away, all the way up to modern 32-bit powerhouses with advanced peripherals and huge amounts of RAM and ROM. If you’re blinking a few LEDs or opening a garage door, the former is fine. For what [Jared] had in mind, a little more horsepower was required.
[Jared]’s project started out as an experiment with composite video output on a STM32F446RE microcontroller. Using a 4-bit resistor DAC, the device was able to output NTSC signals, using interrupts and NOPs to handle timing. The hardware worked, and was tested by playing the entirety of Star Wars: A New Hope from an SD card.
Attention then turned to creating a Game Boy emulator for the platform. After many hurdles with various bugs and edge cases, things started working, albeit slowly. The Pokemon game ROM wouldn’t fit in the microcontroller’s limited flash storage, so [Jared] implemented a complicated bank switching scheme. This combined with the limited computational resources meant the game was playable, but limited to just 10 FPS.
Enter the STM32H7. With over double the clock speed and capable of 856 DMIPS versus 225 of the original chip, things were coming together. Pokemon now ran at 60 FPS, and the built-in DAC greatly improved the sound. The DMA subsystem allowed further performance gains, and even running in debug mode, performance far exceeded that of the previous hardware.
With unit prices of most microcontrollers being remarkably low, it goes to show that once you’ve tapped out on performance on one platform, there’s usually a faster option available. It’s possible to emulate the Game Boy on the ESP-32 too, as Sprite_TM showed us in 2016. Video after the break.
[Thanks to Ben for the tip!]
Continue reading “Playing Pokemon On A CRT Thanks To A Powerful Microcontroller”
Catch up on your Hackaday with this week’s podcast. Mike and Elliot riff on the Bluepill (ST32F103 boards), blackest of black paints, hand-crafted sorting machines, a 3D printer bed leveling system that abuses some 2512 resistors, how cyborgs are going mainstream, and the need for more evidence around airport drone sightings.
Stream or download Episode 4 here, and subscribe to Hackaday on your favorite podcasting platform! You’ll find show notes after the break.
Direct download (43.1 MB)
Places to follow Hackaday podcasts:
Continue reading “Hackaday Podcast Ep004 – Taking The Blue Pill, Abusing Resistors, And Not Finding Drones”
Hackaday regular [befinitiv] wrote into the tip line to let us know about a hack you might enjoy, wireless UART output from a bare STM32 microcontroller. Desiring the full printf debugging experience, but constrained both by available space and expense, [befinitiv] was inspired to improvise by a similar hack that used the STM32 to send Morse code over standard FM frequencies.
In this case, [befinitiv]’s solution is both more useful and slightly more legal, as the software uses the 27 MHz ISM band to blast out ASK modulated serial data through a simple wire antenna attached to one of the microcontroller’s pins. The broadcast can then be picked up by an RTL-SDR receiver and interpreted back into a stream of data by GNU Radio.
The software for the STM32 and the GNU Radio Companion graph are both available on Bitbucket. The blog post goes into some detail explaining how the transmitter works and what all the GNU Radio components are doing to claw the serial data back from the ether.
[cover image cc by-sa licensed by Adam Greig, randomskk on Flickr]
This project of [Nathan]’s certainly has a playful straightforwardness about it. His Skype ‘Kiss’ Interface has a simple job: to try to create a more intuitive way to express affection within the limits of using Skype. It all came about from a long distance relationship for which the chat program was the main means of communicating. Seeking a more intuitive and personal means of expressing some basic affection, [Nathan] created a capacitive touch sensor that, when touched with the lips, sends the key combination for either a kissy face emoji or the red lips emoji, depending on the duration.
Capacitive touch sensing allows for triggering the sensor without actually physically touching one’s lips to the electrodes, which [Nathan] did by putting a clear plastic layer over the PCB traces. His board uses an STM32 microcontroller with software handling the USB HID and STM’s TSC (Touch Sensing Controller) functionality. As a result, the board has few components and a simple interface, which was in keeping with the goal of rejecting feature creep and focusing on a simple task.
Clearly the unit works; but how well does it actually fulfill its intended purpose? We don’t know that yet, but we do know that [Nathan] seems to have everything he needs in order to find out. Either way, it’s a fun project that definitely fits the spirit of the Human-Computer Interface Challenge of The Hackaday Prize.
If you just came down in the last shower, you’re probably used to living in a world where LEDs are cheap, awesome, and practically everywhere. Spare a thought for those of us who lived before the invention of high brightness LEDs – these things still amaze us! A great example of how far we’ve come is this “analog” watch build by [Kevin], featuring no less than 73 of the critters.
The microcontroller running the watch is an STM32, chosen for its easy programmability. It’s running the LEDs in an emulation of the dial of an analog clock, hence the high part count. Naturally, it’s no simple task to cram 73 LEDs and all the necessary connections into the confines of a watch-sized PCB. [Kevin] goes into great detail about the challenges involved, from routing the traces to a tricky power draw problem caused by some odd blue LEDs.
Watch builds are always fun, and they make great conversation pieces for when you want to amaze strangers with your tales of battles fought in the PCB design suite. Now check out this similar build with an entirely different style.
The CAN bus is a rich vein to mine for a hacker: allowing the electronic elements of most current vehicles to be re-purposed and controlled with ease. [MikrocontrollerProjekte] has reverse engineered a CAN bus media and navigation controller and connected it to an STM32F746G-Discovery board. The STM32 is in turn connected to an Android phone, and allows the media controller to trigger a large number of functions on the phone, including music playback, maps, and general Android navigation.
When reverse engineering the controller, [MikrocontrollerProjekte] employed a variety of approaches. A small amount of information was found online, some fuzzing was done with random CAN bus IDs and messages, as well as some data logging with the device inside the car to identify message data to the relevant IDs on the bus.
The STM32F746G-Discovery board acts as a Human Interface Device (HID), emulating a mouse and keyboard connected to the Android phone via USB OTG. The LCD screen shows the output of the keystrokes and touchpad area. We’re not sure how useful the mouse-emulation would be, given that the phone has a touchscreen, but the media functions work really well, and would also make a really snazzy music controller for a PC.
We’ve covered plenty of other cool CAN bus hacks, like reverse-engineering this Peugeot 207, or this general purpose CAN sniffer.
Continue reading “Reverse Engineered Media Controller From Car Is Best Friends With Android”
It’s difficult to convey in an era when a UNIX-like operating system sits in your pocket, how there was once a time when the mere word was enough to convey an aura of immense computing power. If you ran UNIX, your computer probably filled a room, and you used it for Serious Stuff rather than just checking your Twitter feed. UNIX machines may still perform high-end tasks, but Moore’s Law has in the intervening years delivered upon its promise, and your phone with its UNIX-like OS is far more powerful than that room-sized minicomputer of the 1970s. A single chip for a few cents can do that job, which begs the question: just how little do we need to run UNIX today? It’s something [Joerg Wolfram] could advise you upon, because he’s got a functional UNIX running on a microcontroller.
Of course, the UNIX in question is not exactly the same as the one you’d find on a supercomputer, either in the 1970s or now. Mini UNIX is a minimalist version of the operating system developed by [Heinz Lycklama] at Bell Labs four decades ago. It gives you a complete UNIX V6 system for the DEC PDP-11, but which needs only 56K of RAM, and no MMU. Emulating a PDP-11 on an STM32 microcontroller allows it to run happily, and while it’s not the most minimalist of microcontrollers it’s still a pretty cheap part upon which to run UNIX.
It’s doubtful whether a 1970s version of an operating system on a commodity microcontroller will take the world by storm, but that’s hardly the point of such a neat hack. It’s certainly not the first time we’ve seen similar work, though this PIC32 offering has a little more in the way of resources to offer.
Header image: Golonlutoj [CC BY-SA 3.0].