Simple D1 mini Circuit

Although the Smart Poi is based on ESP-01 for size reasons, I find it easier to use the excellent D1 mini for testing. Here is the basic setup:

Notice that the D1 mini is powered from a battery source (4 x NiMH AA in series). This is not entirely necessary, you could get away with plugging in the D1 mini via USB, and connecting the APA102 strip to the 5v pin. The problem comes in when the LED strip starts drawing too much power, you will have dropouts in Wifi connectivity, or wdt resets and won’t know if it’s the code or just power.

Use the offline code from my Github repo to get started:

SmartPoiOffline code

This code works fine on other Arduinos as well as ESP8266 chips. Just change the pins.

 

Programming the ESP-01 using Arduino IDE – some notes

The ESP-01 are so cheap and versatile, you just have to use them. (Get one on Aliexpress for just $2 here: http://s.click.aliexpress.com/e/kNB84VvO) In the couple of years using these amazing cheap powerful chips, I have had my share of problems. Here are some big ones to avoid:

Problem: The programmer doesn’t work all the time.

Solution: Increase power. I use a cheap usb interface like this one: 

You can buy one on Aliexpress here: http://s.click.aliexpress.com/e/E7AiIOhw

First of all you need to know that you can’t just plug the ESP-01 module into the handy header socket and press upload on the Arduino IDE. You will get an error, as the ESP-01 needs to be put into programming mode. I did this by shorting the GPIO 0 and gnd with a wire. The ESP-01 still plugs in.

Now Arduino can upload! Unfortunately I was having intermittent “unable to upload” errors even after this hack, and a new batch of ESP’s from a different supplier barely worked at all. Something else had to be done. Adding a breadboard power supply did the trick, unfortunately with the addition of 7 wires and a breadboard, as well as an adapter for the ESP-01 and a switch to toggle programming mode…

*Update: you can ignore the above, nowadays I just click on upload and quickly unplug/re-plug the esp-01 (unplug the 8 pin header, not the usb!). Seems to do the trick!

Problem: Blink sketch says it’s uploaded but LED doesn’t blink.

Solution: After checking the pin numbering and seeing some possible related issues on a google search, I checked out the Arduino ESP8266 settings.

It turns out that all ESP-01 are not made equal. Most come with 1Mb flash but the type of flash (?) and the way it’s connected can vary. Hence the “flash mode” option. In my case, after extensive testing, DOUT was the correct choice. The LED blinks again.

Problem: After ESP8266 tool update, the dreaded WDT reset happens after a few minutes (time depends on what the program is doing)

Solution: After some testing I found it was a memory overflow causing the issue. This led me to refine the google search and finally I found a relevant bug on github, to do with LwIP (the wifi firmware?). Here is the setting in Arduino:

Changing to LwIP v1.4 Higher Bandwidth worked for me… It’s possible that this bug has been fixed by now, but I am sticking with the working version at the moment.

To summarize,  ESP-01 is a bit tricky to program, there are so many variables in programming it, however they are so small and cheap – and despite many mistakes I have yet to brick one of these. I guess it’s worth the hassle*.

*UPDATE: CHECK OUT MY SMARTPOI PROJECT, made with the ESP-01 and APA102 LED strip.

ESP8266 Overview

What can I say about the ESP8266? It’s cheap, powerful and I use it to stream images from my phone to my Smart POV Poi.

Currently I am using the ESP-01 version (above) – I connect the esp-01 to the breadboard by this simple hack:

http://www.instructables.com/id/Making-ESP8266-01-module-breadboard-friendly/

I also use the very capable D1 Mini for development (below).

The code is all Arduino, with FastLED library for led driving. The only issue with ESP8266 is power consumption, the wifi uses far more power than the Atmega328 for example, however compared to the LED strips (144 LED’s at once) it is negligible.