In August of 2014, something new started showing up in the markets of Shenzen, the hi-tech area of China where the majority of the world’s electronics components are made. This is the ESP8266, a WiFi SoC (System on a Chip) that can connect to 802.11b/g/n networks on the 2.4GHz band. It can be addressed with SPI or a serial connection, and has an AT command set that makes it behave rather like an old-style modem. Basically, it has everything you would need to connect a device to a WiFi network, with the ESP8266 chip itself handling the complicated business of finding, joining and transmitting/receiving over a WiFi network.
That’s nothing particularly new in itself: WiFi connection devices like the TI CC3000 have been around for longer, and do much the same thing. The difference was the price. While the TI solution costs about $10 if you buy several thousand of them, the ESP8266 costs less than $7 for an individual board that can plug straight into an Arduino or similar. Buy the chip in bulk, and you can get it for less than $2.
The ESP8266 is more than just a WiFi dongle, though: it is a fully fledged computer in itself, with a megabyte of flash memory and a 32-bit processor that uses a RISC architecture. This can run applications, turning the ESP8266 into a standalone module that can collect and send data over the Internet. And it can do this while drawing a reasonably low amount of power: while receiving data, it typically uses just 60mA, and sending data over an 802.11n connection uses just 145mA. That means you can drive it from a small battery or other small power source, and it will keep running for a long time.
GPS-based location services will be around with us forever. If you’re in the outback, in the middle of the ocean, or even just in a neighborhood that doesn’t have good cell coverage, there’s no better way to figure out where you are than GPS. Using satellites orbiting thousands of miles above the Earth as a location service is an idea that breaks down at some very inopportune times. If you’re in a parking garage, you’re not using GPS to find your car. If you’re in a shopping mall, the best way to find your way to a store is still a map. Anyone every tried to use GPS and Google Maps in the hotel/casino labyrinth that is the Las Vegas strip?
[Blecky]’s entry for the Best Product competition of the Hackaday Prize aims to solve this problem. It’s an indoor location service using only cheap WiFi modules called SubPos. With just a few ESP8266 modules, [Blecky] can set up a WiFi positioning system, accurate to half a meter, that can be used wherever GPS isn’t.
The idea for a GPS-less positioning system came to [Blecky] after a caving expedition and finding navigation though subterranean structures was difficult without the aid of cell coverage and GPS. This got [Blecky] thinking what would be required to build a positioning service in a subterranian environment.
The answer to this question came in the form of a cheap WiFi module. Each of the SubPos nodes are encoded with the GPS coordinates of where they’re placed. By transmitting this location through the WiFi Beacon Frame, along with the transmitted power, any cell phone can use three or more nodes to determine its true location, down to a few centimeters. All of this is done without connecting to a specific WiFi network; it’s a complete hack of the WiFi standard to allow positioning data.
The most shallow comparison to an existing geolocation system would be a WiFi positioning system (WPS), but there are several key differences. In WPS, the WiFi APs don’t transmit their own location; the AP is simply cross-referenced with GPS coordinates in a database. Secondly, APs do not transmit their own transmit power – important if you’re using RSSI to determine how far you are from an Access Point.
The best comparison to an indoor location service comes from a new Decawave module that sets up ‘base stations’ and figures out a sensor’s location based on time of flight. This, however, requires additional radios for each device receiving location data. SubPos only requires WiFi, and you don’t even need to connect to an AP to get this location data; everything is broadcast as a beacon frame, and every device with WiFi detects a SubPos node automatically.
As an entry to the Hackaday Prize Best Product competition, there is an inevitable consideration as to how this product will be marketed. The applications for businesses are obvious; shopping malls could easily build a smartphone app showing a user exactly where in the mall they are, and provide directions to The Gap or one of the dozens of GameStops in the building. Because the SubPos nodes also work in 3D space, parking garage owners could set up a dozen or so SubPos nodes to direct you to your exact parking spot. Disney, I’m sure, would pay through the nose to get this technology in their parks.
Already [Blecky] is in talks with one company that would like to license his technology, but he’s not focused only on the high-dollar business accounts. He already has a product that needs manufacturing, and if he wins the Best Product competition, he will be working on something for the hacker/homebrew market. The price point [Blecky] sees is around $15 a node. The economics of this work with the ESP WiFi module, but [Blecky] is also looking at alternative chip sets that would allow for more than just RSSI position finding; an improved version of the SubPos node not based on the ESP-8266 could bring time of flight into the mix, providing better position accuracy while still being cheaper to manufacture than the current ESP-based solution.
[Blecky] has a great project on his hands here, and something we will, undoubtedly, see more of in the future. The idea of using WiFi beacon frames to transmit location data, and received signal strength to suss out a position is groundbreaking and applicable to everything from spelunking to finding your car in a parking garage. Since the SubPos system isn’t tied to any specific hardware, this could even be implemented in commercial routers, giving any device with WiFi true location data, inside or out. It’s also one of the top ten finalists for the Hackaday Prize Best Product competition, and like the others, it’s the cream of the crop.
[Carter Yagemann] found himself in a bit of a pickle. He uses his computer mostly for gaming, but would like to access it remotely from time to time to do a littler server work on the side. The problem is gaming computers eat up a lot of electrons and he didn’t want to waste them by leaving it on all the time. The obvious solution was to use the Wake on Lan function. Unfortunately, his motherboard did not support this technology.
Like any good hacker would do, [Carter] used an IoT board to connect the power button of his PC to the internet. He achieved this goal with a Particle Core board. His motherboard was an ATX variety, so wiring up two of the IoT board’s I/O pins to the power on pins on the motherboard was a simple task accomplished with the help of an inline resistor.
This hack is so easy that it’s a great alternative to the blinky LED first program we all know so well. Want to get started in the hacking community? This is a great way to get going.
Many modern radio control (RC) systems use frequency hopping to prevent interference. Unfortunately, hopping all over the 2.4GHz band can interfere with video or WiFi using the same frequency band. [Befinitiv] was trying to solve this problem when he realized that most of the systems used a TI CC2500 chip and a microcontroller. The microcontroller commands the chip via SPI and controls the frequency by writing into a frequency register.
Updating the microcontroller firmware was impractical. The firmware is encrypted, for one thing. In addition, the change would have to be reinserted on any future updates and repeated for every RC vendor. So [Befinitiv] took a different approach. He did a classic man in the middle attack by inserting an CPLD in between the controller and the CC2500.
These days, connecting your microcontroller project to a WiFi network is pretty easy — you connect up an ESP8266 to your microcontroller project and pretend it’s a WiFi modem, using these old-school-style AT commands. But what do you do if you need to flash new code into the microcontroller? You can’t reprogram the micro remotely through the ESP8266 because those stupid AT commands get in the way.
The solution? By flashing the esp-link firmware into your ESP8266, you talk directly to the microcontroller over WiFi as if it were connected by a serial cable: the ESP8266 becomes a totally transparent WiFi-serial bridge. Now, with a serial bootloader and an ESP8266 in Wifi-to-serial bridge mode, you can reflash your microcontroller wirelessly, and then telnet in to interact with and debug the system remotely. Once you’ve fixed the bugs, you can re-flash the microcontroller: all over WiFi, without having to climb up a ladder to reach your IoT attic-temperature sensor.
To flash a connected Arduino, for instance, all you need to do is convince AVRDUDE to use the network instead of a locally-connected USB-serial cable: avrdude -p m328p -c arduino -b 115200 -P net:192.168.1.123:23 -U:yourHexFile.hex. The ESP8266 passes the data straight through its TX and RX lines to your microcontroller and everything works as if it were wired.
Configuration to allow the ESP8266 to join your WiFi network takes place on a self-hosted webpage that uses [Sprite_tm]’s esp-httpd standalone server, which makes setup pretty painless. And then after that you can simply telnet to the ESP8266 at port 23 and type away, or do anything else you would with a wired serial connection.
Although the simple bridge mode came first, esp-link looks like it’s growing to be a one-stop shop for all your IoT or microcontroller + WiFi needs. In addition to the serial bridge code, there is also a REST-based microcontroller-to-internet mode and there is bi-directional MQTT support in the wings. We haven’t had a chance to dig into these yet, so if you have, let us know in the comments.
If you want to dig in deeper, head over to [Jeelabs]’ blog for a slightly outdated tour of the project written by the code’s author, [Thorsten von Eicken]. For the most up-to-date development news, follow the very active development of esp-link in this thread on the esp8266 forums.
We’ve heard it said before that you should build things twice. Once to learn how to build it and the second time to build it right. [AA7EE] must agree. He was happy with his homebrew regenerative receiver that he called Sproutie. But he also wanted to build one more and use what he learned to make an even better receiver. The Sproutie Mark II was born.
This isn’t some rip off of an old P-Box kit either. [AA7EE] used a four-device RF stage with FET isolation back to the antenna and a regulated power supply. Plug in coils allow reception on multiple bands ranging from about 3 to 13 MHz. There’s an audio stage with multiple selectable audio filters, and–the best part–a National HRO tuning dial that is a work of art all by itself.
Like many programmers, [Daniel Nugent] loves his old mechanical keyboard (a WASD Code Keyboard). What he didn’t love was the cord. Sure, you can get a modern wireless keyboard, but it won’t be the same as the keyboard you’ve spent so much time with. Armed with a Bluetooth Low Energy (BLE) module, a rechargeable battery and some coding, he kept his keyboard but got rid of the wires.
Although he has some specific handling for the WASD, the code would very likely handle any PS/2 keyboard. The PS/2 interface is a simple synchronous serial port with a single clock and single data line. Handling it with a microcontroller isn’t very difficult.