Flashing the ESP8266 In Windows

It’s only been a few months since the ESP8266 rolled out of some factory in China, and already the community is moving from simply getting custom firmware to work on the device to making the development tools easy to use. That’s huge – the barrier to entry is lowered, getting even more people on board with this very cool Internet of Things thing.

While the majority of the community is settling on using the Lua interpreter firmware, there’s still the matter of getting this firmware uploaded to the ESP. [Peter Jennings] of Microchess fame has been working on a Windows app to upload firmware to the ESP via a serial interface. There’s not much to it, but this will allow you to upload the community-created Lua firmware, set the WiFi credentials, toggle GPIO pins, and give you the ability to write a little bit of Lua in the same window.

If you’re looking for something that isn’t designed exclusively for Windows, there’s an alternative firmware flasher over on the nodemcu Github. This flasher also connects the ESP8266 to a network and uploads firmware. It’s a stripped-down programmer without a serial terminal or the ability to toggle pins, but there are plans for making this programmer cross-platform.

Dual Complementary Optoisolator Logic

You’ve seen CMOS logic, you’ve seen diode-resistor logic, you’ve seen logic based on relays, and some of you who can actually read have heard about rod logic. [Julian] has just invented optoisolator logic. He has proposed two reasons why this hasn’t been done before: either [Julian] is exceedingly clever, or optoisolator logic is a very stupid idea. It might just be the former.

Inside each optoisolator is a LED and a phototransistor. There’s no electrical connection between the two devices, which is exactly what you need in something that’s called an isolator. [Julian] was playing around with some optoisolators one day to create a weird push-pull circuit; the emitter of one phototransistor was connected to the collector of another. Tying the other ends of the phototransistor to +5V and Gnd meant he could switch between VCC and VDD, with every other part of the circuit isolated. This idea whirled around his mind for a few months until he got the idea of connecting even more LEDs to the inputs of the optoisolators. He could then connect the inputs of the isolators to +5V and Gnd because of the voltage drop of four LEDs.

A few more wheels turned in [Julian]’s head, and he decided to connect a switch between the two optoisolators. Connecting the ‘input’ of the circuit to ground made the LED connected to +5V light up. Connecting the input of the circuit to +5 made the LED connected to ground light up. And deeper down the rabbit hole goes [Julian].

With a few more buttons and LEDs, [Julian] created something that is either an AND, NAND, OR NOR, depending on your point of view. He already has an inverter and a few dozen more optoisolators coming from China.

It is theoretically possible to build something that could be called a computer with this, but that would do the unique properties of this circuit a disservice. In addition to a basic “1” and “0” logic state, these gates can also be configured for a tri-state input and output. This is huge; there are only two universal gates when you’re only dealing with 1s and 0s. There are about 20 universal logic gates if you can deal with a two.

It’s not a ternary computer yet (although we have seen those), but it is very cool and most probably not stupid.

Video below.

Continue reading “Dual Complementary Optoisolator Logic”

Accelerometers Are Actually Quite Simple

An accelerometer is the ubiquitous little sensor that tells your tablet when to flip orientation or informs the brain of your quadcopter how closely its actual actions are matching your desired ones. In a quick three minutes, [Afroman] explains what is inside an accelerometer and how they work.

It turns out the tiny devices that report acceleration in one, two or three dimensions are not powered by magic complicated mechanisms but very simple Micro Electro-Mechanical Systems or “MEMS.” MEMS are similar to copper/silver/gold-wired integrated circuits except in a MEMS circuit conductive silicon is used and they actually physically move, but only just a bit.

The secret is in creating microscopic capacitors along a weighted lever that flexes in response to changes in velocity. When the plates flex the distance between them changes which alters the capacitance. This translates physical motion into voltage which can then be interpreted by the rest of your circuit. The chemistry behind MEMS is interesting too.

This Christmas when your laptop’s power cord clotheslines your cousin’s kid, your hard drive has a chance of parking the head (on the drive, not on the child) between fall and impact and preventing damage (to the drive, not to the child) because of an accelerometer. If bad roads cause you to drift into the ditch, it is an accelerometer that senses the crash and tells your airbag to deploy before your body hits the steering wheel.

The MEMS market is exploding right now and for us hackers in particular, Wearables are looking to be a big part of that growth.

Battery Basics – Choosing a Battery for Your Project

If choosing a rechargeable battery for your project intimidates you, [Afroman] has prepared a primer video that should put you at ease. In this tutorial for battery basics he not only walks you through a choice of 5 rechargeable chemistries and their respective tradeoffs, but gives a procedure that will allow you to navigate through the specs of real-world batteries for sale – something that can be the most intimidating part of the process.

You cannot learn everything about batteries in 9 minutes, but watching this should get you from zero to the important 80% of the way there. Even if your project does not give you the specs you need to begin buying, [Afroman] tells you what to measure and how to shop for it. In particular, the information he gives is framed in the context you care about, hopefully ensuring you are not waylaid by all the details that were safe to ignore. If this is not enough, [Afroman]’s prequel video on battery terminology has more detail.

Much like your high school English teacher told you, you need to know the rules before you can choose to break them. Many of battery absolute Dos or Don’ts are written for the manufacturer, who provides for the consumer, not the hacker. Hackaday has published hundreds of battery articles over the years; search our archives when you are ready for more.

Continue reading “Battery Basics – Choosing a Battery for Your Project”

Compiling Your Own Programs For The ESP8266

When the ESP8266 was first announced to the world, we were shocked that someone was able to make a cheap, accessible UART to WiFi bridge. Until we get some spectrum opened up and better hardware, this is the part you need to build an Internet of Things thing.

It didn’t stop there, though. Some extremely clever people figured out the ESP8266 had a reasonably high-power microcontroller on board, a lot of Flash, and a good amount of RAM. It looked like you could just use the ESP8266 as a controller unto itself; with this chip, all you need to do is write some code for the ESP, and you have a complete solution for your Internet connected blinking lights or WiFi enabled toaster. Whatever the hip things the cool kids are doing these days, I guess.

But how do you set up your toolchain for the ESP8266? How do you build projects? How do you even upload the thing? Yes, it’s complicated, but never fear; [CNLohr] is here to make things easy for you. He’s put together a video that goes through all the steps to getting the toolchain running, setting up the build environment, and putting some code on the ESP8266. It’s all in a git, with some video annotations.

The tutorial covers setting up the Xtensa toolchain and a patched version of GCC, GDB, and binutils. This will take a long, long time to build, but once it’s done you have a build environment for the ESP8266.

With the build environment put together, [CNLohr] then grabs the Espressif SDK from the official site, and puts together the example image. Uploading to the module requires pulling some of the pins high and some low, plugging in a USB to serial module to send the code to the module, standing well back, and pressing upload.

For his example image, [CNLohr] has a few WS2812 RGB LEDs connected to the ESP8266 WiFi module. Uploading the image turns the LEDs into something controllable with UDP packets on port 7777. It’s exactly what you want in a programmable, WiFi chip, and just the beginning of what can be done with this very cool module.

If you’re looking around for some sort of dev board with an ESP8266 on it, [Mathieu] has been playing around with some cool boards, and we’ve been looking into making a Hackaday version to sell in the store. The Hackaday version probably won’t happen because FCC.

Continue reading “Compiling Your Own Programs For The ESP8266”

Flash Memory Endurance Testing

[Gene] has a project that writes a lot of settings to a PIC microcontroller’s Flash memory. Flash has limited read/erase cycles, and although the obvious problem can be mitigated with error correction codes, it’s a good idea to figure out how Flash fails before picking a certain ECC. This now became a problem of banging on PICs until they puked, and mapping out the failure pattern of the Flash memory in these chips.

The chip on the chopping block for this experiment was a PIC32MX150, with 128K of NOR Flash and 3K of extra Flash for a bootloader. There’s hardware support for erasing all the Flash, erasing one page, programming one row, and programming one word. Because [Gene] expected one bit to work after it had failed and vice versa, the testing protocol used RAM buffers to compare the last state and new state for each bit tested in the Flash. 2K of RAM was tested at a time, with a total of 16K of Flash testable. The code basically cycles through a loop that erases all the pages (should set all bits to ‘1’), read the pages to check if all bits were ‘1’, writes ‘0’ to all pages, and reads pages to check if all bits were ‘0’. The output of the test was a 4.6 GB text file that looked something like this:
Continue reading “Flash Memory Endurance Testing”

Finding a Cheaper USB to Serial Chips

FTDI-gate wasn’t great for anybody, and now with hardware hobbyists and technological tinkerers moving away from the most popular USB to serial adapter, some other chip has to fill the void. The cheapest USB to serial chip on the market appears to be the CH340G, available for 20-40 cents apiece from the usual retailers. There is, however, almost no English documentation, and the datasheet for the CH340 family doesn’t include this chip. [Ian]’s here to help you out. He got his mitts on a few of these chips and managed to figure out the pinout and a few reference schematics. He even made an Eagle part for you. Isn’t that nice?

The CH340 series of chips do exactly what you would expect them to do: a full-speed USB device that emulates a standard serial interface, with speeds from 50bps to 2Mpbs. The chip supports 5V and 3.3V, and all the weird modem lines are supported. This chip even has an IrDA mode, because wireless communication in the 90s was exactly as rad as you remember.

With [Ian]’s help, we now have a cheap source of USB to serial chips. If you need the datasheet, here you go. The driver is a bit more difficult to find, but what you’re looking for is the CH341 family of chips. That can be found with a little bit of Google fu.