Sunday, December 30, 2018

Build a $2 IoT/MQTT Node with a Bare ESP-12F

How to use a bare ESP-12F module as a standalone IoT/MQTT node — powered directly from a USB charger with just a handful of passive components, no base board required. Total cost: under $2.

Completed ESP-12F standalone MQTT node

Finished board — ESP-12F module with USB connector, ready to plug into any 5V charger.

Items needed

Prices based on AliExpress at the time of writing:

  • 1x ESP-12F module (pre-programmed with Tasmota firmware)
  • 1x 10k SMD resistor
  • 1x 10k through-hole resistor
  • 2x 4001 SMD diode
  • 1x USB male connector (PCB mount, SMD)

Schematic

ESP-12F standalone board schematic

Wiring diagram — USB 5V stepped down through two diodes to ~3.6V for the ESP-12F.

Board preparation

Step 1 — Ensure the ESP-12F module is programmed with Tasmota firmware. See the ESP-12F programming post for details.

Step 2 — Mount a 10k SMD resistor between the GND and IO15 pads of the ESP-12F module.

10k SMD resistor between GND and IO15

10k SMD resistor soldered between GND and IO15 pads.

Step 3 — Mount a 10k through-hole resistor between the VCC and EN pads of the ESP-12F module.

10k through-hole resistor between VCC and EN

10k through-hole resistor connecting VCC to EN (chip enable).

Another view of the VCC-EN resistor

Another angle showing the VCC–EN pull-up resistor.

Step 4 — Stick a piece of insulation tape on the right side of the ESP-12F module so the USB connector doesn't short any pads.

Insulation tape applied to ESP-12F

Insulation tape prevents shorts between the USB connector and ESP pads.

Step 5 — Place the USB connector as shown below. The SMD pins of the USB connector should sit over the insulation tape.

USB connector placed on ESP-12F

USB connector positioned over the insulation tape.

Step 6 — On the back side, fix the USB connector to the ESP-12F using hot glue. Don't apply hot glue on the SMD pin side yet — that comes later.

Hot glue fixing USB connector on back side

Hot glue secures the USB connector on the back side.

Step 7 — Solder two SMD diodes in series between the + line of the USB connector and the VCC pad of the ESP-12F module.

Two SMD diodes in series for voltage drop

Two 4001 diodes in series drop 5V USB to ~3.6V for the ESP-12F.

Step 8 — Connect the line of the USB connector to the GND pad of the ESP-12F module.

GND wire from USB to ESP-12F

USB ground connected to the ESP-12F GND pad.

Step 9 — Apply hot glue on both sides of the USB connector and ESP-12F for stability.

Hot glue applied for stability

Hot glue on both sides for mechanical strength.

Completed board from another angle

Completed board — ready for testing.

Testing

Step 10 — Power the board with a 5V USB charger and look for an open Wi-Fi SSID named sonoff-NNNN.

Step 11 — Connect to the SSID and follow the standard Tasmota generic module configuration.

Your $2 IoT/MQTT node is ready. Plug it into any USB charger, configure Tasmota to connect to your MQTT broker, and start automating.

Pogo-Pin Programming Dock for ESP-12F Modules

How to convert a Wemos D1 Mini into a pogo-pin programming dock for flashing Tasmota (or any firmware) onto bare ESP-12F modules — no breadboard wiring needed.

Pogo-pin programming dock for ESP-12F

Completed pogo-pin dock — a modified Wemos D1 Mini ready to flash ESP-12F modules.

Why?

ESP8266-based IoT modules can be purchased from AliExpress for as low as 1.3 EUR. These cheap Wi-Fi modules are handy for many home automation DIY projects, especially when used with open-source firmware like Tasmota. But programming bare ESP-12F modules requires connecting 8 pins — tedious on a breadboard and error-prone with dupont wires.

A pogo-pin dock lets you drop in a module, clip it down, and flash — repeatable and reliable.

Items needed

Items needed for pogo-pin dock

Everything you need to build the programming dock.

  • Wemos D1 Mini board
  • 8 pogo pins
  • ESP-12F module
  • USB-to-Micro-USB cable
  • Clip for holding the ESP module on the pogo-pin dock

Preparation

Step 1 — De-solder the existing ESP module from the Wemos D1 Mini board. This is the most difficult part — you need good soldering skills.

Wemos D1 Mini with ESP module removed

Wemos D1 Mini after removing the original ESP module.

Step 2 — Carefully solder 8 pogo pins onto the exposed ESP pads on the Wemos D1 Mini: TXD0, RXD0, IO0, IO15, GND, VCC, EN, RST.

Pogo pins soldered onto Wemos D1 Mini

Pogo pins soldered onto the exposed ESP pads.

Step 3 — Place a fresh ESP-12F module on the newly prepared dock and secure it with a clip.

ESP-12F module placed on the pogo-pin dock

ESP-12F seated on the pogo-pin dock, ready for flashing.

Pogo-pin dock with clip holding ESP-12F

Clip holds the ESP-12F firmly against the pogo pins during programming.

Flashing firmware

Step 4 — On your Linux host PC, clone esptool and download the Tasmota firmware:

cd ~
git clone https://github.com/espressif/esptool
cd esptool
wget http://thehackbox.org/tasmota/release/sonoff.bin

Step 5 — Connect the USB cable between your host PC and the Wemos D1 dock. Erase the ESP-12F flash:

./esptool.py --port /dev/ttyUSB0 erase_flash

Step 6 — Disconnect and reconnect the USB cable, then flash the Tasmota firmware:

./esptool.py --port /dev/ttyUSB0 write_flash -fs 1MB -fm dout 0x0 sonoff.bin

Your ESP-12F module is now flashed and ready for use. Check the next post about using an ESP-12F as a standalone board for home automation projects.

Close-up of pogo pins contacting ESP-12F pads

Close-up showing the pogo pins making contact with the ESP-12F module pads.

Another angle of the pogo-pin dock

Another angle of the completed pogo-pin programming dock.