A Retro Gaming Console For The New Generation

Ostensibly the ESPboy is an open-source hackable game engine built as an IoT platform for STEM education and play, but there’s no way [RomanS] could have been inspired by anything other than retro gaming consoles from the near past. For anyone who grew up playing with Tamagotchi pets or Palm Pilots, this project is going to be a major throwback.

The Saint Petersburg-based microcontroller hobbyist utilizes a ESP8266 microcontroller to build a series of modules for different game play modes, including a TFT display, GSM phone, MP3 player, GPS navigator, FM radio, and keyboard module. He has plans to build even more modules, including a LoRa messenger and thermal camera, to really expand the system’s capabilities.

Since the board has built-in WiFi, firmware can be uploaded to the device without a wired connection and compiler. The nature of the project makes the board compatible with the Arduino IDE and Micropython, which makes hacking the software even easier.

A TP4056 battery charging module charges the LiPo, although depending on the battery capacity, the charging current (set by the R3 resistor on the controller) does require some change. A MCP4725 I2C DAC is used for smooth driving the LCD’s backlight. In order to extend the battery life, the battery controller uses sleep mode to periodically wake up to measure and send data, which allows it to extend its battery life without external power. There’s also transistor driven buzzers that provide a little extra feedback to the user when playing games, complete with a variable resistor to adjust the sound volume.

A number of free pins run along the periphery for connecting to other modules, including pins for GPIO extension, sensor adapters, connectors to addressable LEDs, and an extension slot for actuators. For anyone interested in making their own version of the ESPboy, the PCB schematics are accessible online.

Projects like the Arduboy have shown that a small microcontroller-based game system can be equal parts fun and educational, so we’ve been excited to see more of these types of projects popping up during the course of the 2019 Hackaday Prize.

Continue reading “A Retro Gaming Console For The New Generation”

Fried Desk Lamp Reborn: How To Use ESP8266 To Build Connected Devices

Some hacks are born of genius or necessity, and others from our sheer ham-fisted incompetence. This is not a story about the first kind. But it did give me an excuse to show how easy it is to design WiFi-connected devices that work the way you want them to, rather than the way the manufacturer had in mind.

It started out as a sensible idea – consumer electronics in Vietnam have many different electric plug types for mains AC power: A, C, G, F, and I are fairly present, with A and C being most common. For a quick review of what all those look like, this website sums it up nicely. There are universal power adapters available of course, but they tend to fit my most common type (C) poorly, resulting in intermittent power loss whenever you sneeze. So I figured I should replace all the plugs on my devices to be A-type (common to those of you in North America), as it holds well in all the power bar types I have, mainly leftover server PDUs.

This was very straightforward until I got to my desk lamp. Being a fancy Xiaomi smart lamp, they had opted to hide a transformer in the plug with such small dimensions that I failed to notice it. So instead of receiving a balmy 12 volts DC, it received 220 volts AC. With a bright flash and bang, it illuminated my desk one final time.

Continue reading “Fried Desk Lamp Reborn: How To Use ESP8266 To Build Connected Devices”

A Stylish Home For Your Next ESP Project

The ESP8266 and ESP32 are fast becoming the microcontroller of choice for, well, everything. But one particular area we’ve seen a lot of activity in recently is home automation; these boards make it so incredibly easy and cheap to get your projects online that putting together your own automation system is far more appealing now than it’s ever been. Capitalizing on that trend, [hwhardsoft] has been working on a ESP enclosure that’s perfect for mounting on the living room wall.

Of course, there’s more to this project than an admittedly very nice plastic box. The system also includes a ILI9341 2.4 inch touch screen LCD, an integrated voltage regulator, and even a section of “perfboard” that gives you a spot to easily wire up ad-hoc circuits and sensors. You don’t even need to switch over to the bare modules either, as the PCB is designed to accommodate common development boards such as the Wemos D1 Mini and NodeMCU.

Despite its outward appearance, this project is very much beginner friendly. Utilizing through hole components, screw down terminals, and a impeccably well-labeled silkscreen, you won’t need to be a hardware expert to produce a very slick gadget the whole family can appreciate.

Much like the HestiaPi project we covered a few months back, this project takes a cheap and readily available development board and turns it into something that has all the trappings of a commercial offering. These projects are reminders that the line between built and bought is only getting blurrier as time goes on.

Continue reading “A Stylish Home For Your Next ESP Project”

Detecting Cars With An ESP8266 Magnetometer

Having a motorized gate on your driveway is great, but only if there’s an easy way to trigger it. [Andrew] says the gate at his parent’s place could only be controlled by manually pushing a button on the panel or with a dinky remote that didn’t have nearly the range they wanted. So he decided to build his own magnetometer allowing the gate to automatically open when a car was trying to leave.

Naturally, there are commercial offerings that would solve this problem. But with a sticker price of more than $150 USD, [Andrew] was more than happy to spend a bit of time tinkering to get the job done for less than 1/10th the cost with an ESP8266 and a QMC5883X series magneto-resistive sensor. Of course, this is one of those projects that seems simple enough in your head, but ends up taking a bit of finesse to pull off in the real-world.

For one, [Andrew] had to figure out how to prevent false positives. Pretty much any object brought close enough to the sensor, including his hand, would cause it to react. He ended up coming up with a way to use a rolling average to prevent the gate from firing off just because a squirrel ran past. The built-in safeties are designed to ensure that the gate only opens when an actual car is sitting in the appropriate spot for long enough.

Speaking of, we love how [Andrew] deployed the QMC5883X sensor for this project. The small sensor board and a few moisture-absorbing packets were placed in a Sonoff IP66 waterproof enclosure, and buried under the rocks of the driveway. A standard CAT5 cable is used to tether it to the ESP8266, relay, and assorted other goodies that now live in the gate’s control box. In the future he says the cable will likely have to go into a conduit, but for now the system is working more or less how he expected.

If your estate isn’t quite palatial enough to have a motorized gate out front, we’ve seen plenty of projects that add some much-needed intelligence to the humble garage door opener which might be more your speed.

Reading The Water Meter In A Literal Sense With An ESP8266

In our info-obsessed culture, hackers are increasingly interested in ways to quantify the world around them. One popular project is to collect data about their home energy or water consumption to try and identify any trends or potential inefficiencies. For safety and potentially legal reasons, this usually has to be done in a minimally invasive way that doesn’t compromise the metering done by the utility provider. As you might expect, that often leads to some creative methods of data collection.

The latest solution comes courtesy of [Keilin Bickar], who’s using the ESP8266 and a serial TTL camera module to read the characters from the LCD of his water meter. With a 3D printed enclosure that doubles as a light source for the camera, the finished device perches on top of the water meter and sends the current reading to HomeAssistant via MQTT without any permanent wiring or mounting.

Of course, the ESP8266 is not a platform we generally see performing optical character recognition. Some clever programming was required to get the Wemos D1 Mini Lite to reliably read the numbers from the meter without having to push the task to a more computationally powerful device such as a Raspberry Pi. The process starts with a 160×120 JPEG image provided by a VC0706 camera module, which is then processed with the JPEGDecoder library. The top and bottom of the image are discarded, and the center band is isolated into blocks that correspond with the position of each digit on the display.

Within each block, the code checks an array of predetermined points to see if the corresponding pixel is black or not. In theory this allows detecting all the digits between 0 and 9, though [Keilin] says there were still the occasional false readings due to inherent instabilities in the camera and mounting. But with a few iterations to the code and the aid of a Python testing program that allowed him to validate the impact of changes to the algorithm, he was able to greatly improve the detection accuracy. He says it also helps that the nature of the data allows for some basic sanity checks;  for example the number only ever goes up, and only by a relatively small amount each time.

This method might not allow the per-second sampling required to pull off the impressive (if slightly creepy) water usage data mining we saw recently, but as long as you’re not after very high resolution data this is an elegant and creative way to pull useful data from your existing utility meter.

ESP8266 And ESP32 WiFi Hacked!

[Matheus Garbelini] just came out with three (3!) different WiFi attacks on the popular ESP32/8266 family of chips. He notified Espressif first (thanks!) and they’ve patched around most of the vulnerabilities already, but if you’re running software on any of these chips that’s in a critical environment, you’d better push up new firmware pretty quick.

The first flaw is the simplest, and only effects ESP8266s. While connecting to an access point, the access point sends the ESP8266 an “AKM suite count” field that contains the number of authentication methods that are available for the connection. Because the ESP doesn’t do bounds-checking on this value, a malicious fake access point can send a large number here, probably overflowing a buffer, but definitely crashing the ESP. If you can send an ESP8266 a bogus beacon frame or probe response, you can crash it.

What’s most fun about the beacon frame crasher is that it can be implemented on an ESP8266 as well. Crash-ception! This takes advantage of the ESP’s packet injection mode, which we’ve covered before.

The second and third vulnerabilities exploit bugs in the way the ESP libraries handle the extensible authentication protocol (EAP) which is mostly used in enterprise and higher-security environments. One hack makes the ESP32 or ESP8266 on the EAP-enabled network crash, but the other hack allows for a complete hijacking of the encrypted session.

These EAP hacks are more troubling, and not just because session hijacking is more dangerous than a crash-DOS scenario. The ESP32 codebase has already been patched against them, but the older ESP8266 SDK has not yet. So as of now, if you’re running an ESP8266 on EAP, you’re vulnerable. We have no idea how many ESP8266 devices are out there in EAP networks,  but we’d really like to see Espressif patch up this hole anyway.

[Matheus] points out the irony that if you’re using WPA2, you’re actually safer than if you’re unpatched and using the nominally more secure EAP. He also wrote us that if you’re stuck with a bunch of ESP8266s in an EAP environment, you should at least encrypt and sign your data to prevent eavesdropping and/or replay attacks.

Again, because [Matheus] informed Espressif first, most of the bugs are already fixed. It’s even percolated downstream into the Arduino-for-ESP, where it’s just been worked into the latest release a few hours ago. Time for an update. But those crusty old NodeMCU builds that we’ve got running everything in our house?  Time for a full recompile.

We’ve always wondered when we’d see the first ESP8266 attacks in the wild, and that day has finally come. Thanks, [Matheus]!

Race RC Cars From Anywhere On Earth

Racing games have come a long way over the years. From basic 2D sprite-based titles, they’ve evolved to incorporate advanced engines with highly realistic simulated physics that can even be used to help develop real-world automobiles. For [Surrogate.tv], that still wasn’t quite good enough, so they decided to create something more rooted in reality.

The game is played in a web browser. Players are assigned a car and view the action from a top-down camera.

Their project resulted in a racing game based on controlling real RC cars over the internet, in live races against other human opponents. Starting with a series of Siku 1:43 scale RC cars, the team had to overcome a series of engineering challenges to make this a reality. For one, the original electronics had to be gutted as the team had issues when running many cars at the same time.

Instead, the cars were fitted with ESP8266s running custom firmware. An overhead GoPro is used with special low-latency streaming software to allow players to guide their car to victory. A computer vision system is used for lap timing, and there’s even automatic charging stations to help keep the cars juiced up for hours of play.

The game is free to play online, with the races currently operating on a regular schedule. We look forward to trying our hand at a race or three, and will be interested to see how the latency holds up from various parts of the world.

We’ve seen other remote RC builds before; usually featuring the power of the Raspberry Pi. We’ve also covered useful techniques for low latency video for real-time applications. Video after the break.

Continue reading “Race RC Cars From Anywhere On Earth”