FabGL Has Everything You Need To Write Games For The ESP32

Typically, when one considers writing a video game, the platform is among the first decisions to be made. The PC can be an easy one to start with, and mobile development is fairly accessible too. Of course, you could always develop for a microcontroller platform instead. [Fabrizio Di Vittorio] has built the perfect set of tools to do just that with the ESP32, by the name of FabGL.

The library contains a laundry list of features that are perfect for developing games. There’s VGA output with up to 64 colors, PS/2 mouse and keyboard inputs, as well as a capable graphics library and game engine. It can even act as an ANSI/VT terminal if necessary.

[Fabrizio] has put the hardware through its paces, with a variety of benchmarks displaying impressive performance with simple balls, polygons and sprites. You could easily produce a 2D game in an early 90s style without running into any hardware limitations — though given the ESP32 clocks in at up to 240MHz, that’s somewhat to be expected.

It’s an impressive project (video after the break), and we’d love to see more games developed on the platform. Once you have a VGA connector wired in you should try out some ESP32 VGA hacks. And for those ESP8266 die hards there’s a game engine for that chip too!

Continue reading “FabGL Has Everything You Need To Write Games For The ESP32”

A Robust ESP8266 RFID Access Control System

By now we’ve seen plenty of projects that use an ESP8266 as a form of rudimentary access control: tap a button on your smartphone, and the door to your apartment unlocks. With the power and flexibility of the ESP, it’s a very easy project to pull off with minimal additional hardware. But what about if you want to get a little more serious, and need to support many users?

Rather than reinvent the wheel, you might want to check out the extremely impressive ESP-RFID project. It’s still based on the ESP8266 we all know and love, but it combines the diminutive WiFi-enabled microcontroller with a nice custom PCB and some exceptionally slick software to create a very professional access control system without breaking the bank. As the name implies, the system is geared towards RFID authentication and supports readers such as the MFRC522, PN532 RFID, or RDM6300. Add in a stack of Mifare Classic 1KB cards, and your hackerspace is well on the way to getting a new door control system.

The official hardware for ESP-RFID can be purchased through Tindie with or without an installed ESP-12F module, but as it’s a fully open source project, you’re also free to build your own version if you’d like. In either event, the board allows you to easily connect the ESP up to your RFID reader of choice, as well as door sensors and of course the door locks themselves.

On the software side of things, ESP-RFID should be able to handle about 1000 unique users and their RFID cards before the relatively limited RAM and storage of the ESP catches up with it. But if you’ve got that many people coming and going in your hackerspace, it might be time to update your systems to begin with. Incidentally, the project makes no guarantees about the security of the ESP-RFID code, and says that the system shouldn’t be used for secure locations. That said, you can run ESP-RFID without an Internet connection to reduce your attack surface, at the cost of losing NTP time synchronization.

If you’re not managing a few hundred users and their RFID cards, one of the more simplistic ESP8266 door locks might be more your speed. We’ve also seen similar tricks pulled off with the Particle Photon, in case you’ve got one of those rattling around the parts bin.

Bringing A Child’s Play Kitchen To Life

Given how many adults will go out of their way to avoid spending any extended amount of time in the kitchen, it’s pretty amazing how much children love playing in their miniature versions. Especially since they tend to be pretty simple: usually they’re little more than different sized boxes made out of MDF to represent the refrigerator, oven, and microwave. Of course, some kids are fortunate enough to have hackers and makers for parents.

[Brian Lough] wanted to get his two year old daughter her own play kitchen, but wasn’t terribly impressed with anything on the market. So he decided to start with the IKEA Duktig and add in his own personal touches to turn the stark white playset into something that would really get his daughter’s imagination going. With the liberal application of RGB LEDs and microcontrollers, her kitchen is sure to be envy of the sandbox.

Being the class act that he is, [Brian] starts his write-up acknowledging the various IKEA Duktig hacks and modifications that served as inspiration for his own build. Most of the prior art out there relates to making the microwave and oven a bit more exciting with the addition of lights and sounds, which ultimately ended up being the way he approached his daughter’s version as well.

For the oven, [Brian] decided to add some big arcade buttons over the door which would change the color of the RGB LEDs inside. He thought this association would be a good way to help his daughter learn her colors, since she’ll be able to see the oven change color when she presses the corresponding button. He also added a knob to control the intensity of the light, meant to be analogous to the temperature control in a real oven.

The modifications to the microwave are a bit more extensive, including a “timer” made out of a TM1637 LED display in a 3D printed panel complete with a buzzer to indicate when the plastic food has been thoroughly illuminated. [Brian] even made it so the LEDs in the NeoPixel ring light up in a spinning pattern to cast some shadows and simulate movement. He notes that the microwave was actually a bit overwhelming to his daughter at first, but after a couple months of getting used to the functions, she enjoys it as much as the oven.

While hacking a play kitchen might be new territory for him, [Brian] is no stranger to building awesome stuff. We’ve previously seen him put together a YouTube subscriber counter in the style of Tetris, and he even managed to create a gorgeous looking display out of shoelaces of all things.

Rad-Hard ARM Microcontrollers, Because Ceramic Components Are Just Cooler

If you’re building a cubesat, great, just grab a microcontroller off the shelf, you probably don’t need to worry about radiation hardening. If you’re building an experiment for the ISS, just use any old microcontroller. Deep space? That’s a little harder, and you might need to look into radiation tolerant and radiation hardened microcontrollers. Microchip has just announced the release of two micros that meet this spec, in both radiation-tolerant and radiation-hardened varieties.

The new devices are the SAMV71Q21RT (radiation-tolerant) and the SAMRH71 (rad-hard), both ARM Cortex-M7 chips running at around 300 MHz with enough RAM to do pretty much anything you would want to do with a microcontroller. Peripherals include CAN-FD and Ethernet-AVB, analog front-end controllers, and the usual support for I2C, SPI, and other standards. This chip does it in space, and comes in a ceramic quad flat package with gold lead frames. These are beautiful devices.

Microchip has an incredible number of space-rated, rad-hard hardware; this is mostly due to their acquisition of Atmel a few years ago, and yes, it absolutely is possible to build a rad-hard Arduino Mega using the chip, space rated.

Of course, there are very, very, very few people who would actually ever need a rad-hard microcontroller; I would honestly expect this to be relevant to only one or two people reading this, and they too probably got the press release. If you’ve ever wanted to build something that goes to space, and you’d like to over-engineer everything about it, you now have the option for an ARM Cortex-M7.

ESP32 Alarm Clock Doesn’t Skimp On The Features

The ESP family of microcontrollers is absolutely on fire right now, with a decent chunk of the projects that come our way now based on one of the impossibly cheap WiFi-enabled boards. In fact, they are so cheap and popular that we’ve started to see a somewhat unexpected trend; people have a tendency to use them as drop-in replacements, despite the more modern boards being considerably more powerful than required. The end result is a bunch of projects in which the ESP is simply underutilized. It’s not a big deal, but somewhat disappointing to see.

But we can assure you this ESP32 alarm clock created by [Pangodream] is absolutely not one of them. He’s packed an impressive number of features into this unassuming little timepiece, and it’s really an excellent example of how much these boards are capable of without breaking a sweat. From DIY touch sensors to the Android application used to configure the clock over the network, this project is overflowing with neat hardware and software tricks worth taking a closer look at.

Inside the 3D printed case, the clock features a BH150 light sensor, the very popular DHT-11 for detecting temperature and humidity, as well as a ILI9341 2.8 inch LCD for the display. In a particularly clever touch (get it?), [Pangodream] used three coins connected to the digital pins of the ESP32 as capacitive sensors. These allow him to interact with the click just by tapping the top of the case, and saved him the trouble of adding traditional switches or buttons. We might have put some indentations in the top case to make identifying which of the three “buttons” you’re pushing, but we suppose the invisible interface does make things look a little more futuristic.

But if even that is too much physical touching for you, then [Pangodream] has come up with a fairly robust system for controlling and interacting with the clock over the network. It’s not just a convenient way of setting the time, a good number of the clock’s functions can be polled and configured in this manner; everything from the sensitivity of the touch sensors to how many times it will beep when the alarm goes off. To make things easier, he’s even wrapped it all up in a handy Android application for on the go configuration.

If this clock doesn’t offer you the level of over-engineering you require, check out this build that uses no less than five ESP32s to get the job done. Or maybe this one that hooks into NASA’s Deep Space Network.

Continue reading “ESP32 Alarm Clock Doesn’t Skimp On The Features”

Duck And Cover With This WiFi “Geiger Counter”

There’s perhaps no sound more recognizable than the frantic clicking of a Geiger counter. Not because this is some post-apocalyptic world in which everyone is personally acquainted with the operation of said devices, but because it’s such a common effect used in many movies, TV shows, and video games. If somebody hears that noise, even if it doesn’t really make sense in context, they know things are about to get serious.

Capitalizing on this phenomena, [Anton Haidai] has put together a quick hack which turns the ESP8266 into a “Geiger counter” for WiFi. Rather than detecting radiation, the gadget picks up on the strongest nearby WiFi signal and will start clicking in response to signal strength. As the signal gets stronger, so does the clicking. While primarily a novelty, it’s an interesting idea that could potentially be useful for things like fox hunting.

The hardware is really about as simple as it gets, just a basic buzzer attached to one of the digital pins on a NodeMCU development board. This project is more of a proof of concept, but if it were to be developed further it would be interesting to see the electronics placed into a 3D printed replica of one of the old Civil Defense Geiger counters. Perhaps even integrating an analog gauge that can bounce around in response to signal strength.

Software-wise there is the option of locking onto one single network SSID or allowing the device to find the strongest network in the area. Even if you’re not in the market for a chirping WiFi detector, the code is a good example of how you can detect signal RSSI and act on it accordingly; a neat trick which might come in handy in a future project.

If you’re more interested in the real thing, we’ve got plenty of DIY Geiger counters in the archive for you to check out. From diminutive builds that can be mounted to the top of a 9V battery to high-tech solid state versions with touch screen interfaces, you should have plenty of inspiration if you’re looking to kit yourself out before your next drive through the Chernobyl Exclusion Zone.

Continue reading “Duck And Cover With This WiFi “Geiger Counter””

Tracking Binary Changes: Learn The DIFF-erent Ways Of The ELF

Source control is often the first step when starting a new project (or it should be, we’d hope!). Breaking changes down into smaller chunks and managing the changes between them makes it easier to share work between developers and to catch and revert mistakes after they happen. As project complexity increases it’s often desirable to add other nice to have features on top of it like automatic build, test, and deployment.

These are less common for firmware but automatic builds (“Continuous Integration” or CI) is repetitively easy to setup and instantly gives you an eye on a range of potential problems. Forget to check in that new header? Source won’t build. Tweaked the linker script and broke something? Software won’t build. Renamed a variable but forgot a few references? Software won’t build. But just building the software is only the beginning. [noseglasses] put together a tool called elf_diff to make tracking binary changes easier, and it’s a nifty addition to any build pipeline.

In firmware-land, where flash space can be limited, it’s nice to keep a handle on code size. This can be done a number of ways. Manual inspection of .map files (colloquially “mapfiles”) is the easiest place to start but not conducive to automatic tracking over time. Mapfiles are generated by the linker and track the compiled sizes of object files generated during build, as well as the flash and RAM layouts of the final output files. Here’s an example generated by GCC from a small electronic badge. This is a relatively simple single purpose device, and the file is already about 4000 lines long. Want to figure out how much codespace a function takes up? That’s in there but you’re going to need to dig for it.

elf_diff automates that process by wrapping it up in a handy report which can be generated automatically as part of a CI pipeline. Fundamentally the tool takes as inputs an old and a new ELF file and generates HTML or PDF reports like this one that include readouts like the image shown here. The resulting table highlights a few classes of binary changes. The most prominent is size change for the code and RAM sections, but it also breaks down code size changes in individual symbols (think structures and functions). [noseglasses] has a companion script to make the CI process easier by compiling a pair of firmware files and running elf_diff over them to generate reports. This might be a useful starting point for your own build system integration.

Thanks [obra] for the tip! Have any tips and tricks for applying modern software practices to firmware development? Tell us in the comments!