Esp-01 Programmer Mod

For a small project of my there was needed a programmer for the Esp-01 wifi module to program the module. It’s not really a programmer, but more an usb to serial convertor.
Simple search on Aliexpress gave a nice looking programmer that you can stick in your pc and voila Esp-01 can be programmed, can be bought for $0.78 including shipping.

Bummer, when it arrived and want to use it to program the Esp-01 module it wasn’t possible to get it working with the Arduino ide. The ide was constant coming with the error espcomm sync failed and other com port related errors.
After a quick google search it was clear, the bought Esp-01 programmer works fine out of the box when you use the Esp-01 with the AT commands, but for using it with the Arduino Ide the Esp-01 module had to be set first in programming mode by connection GPIO-0 to ground and reset the module to bring it in flash uart download mode.
Most of the solutions found on the net uses 1 or 2 buttons to get this accomplished, but I wanted automatic programming mode just like the NodeMCU does. Just press upload in the Arduino ide and go….

The programmer uses the same usb to serial convertor (CH340G) as used in the NodeMCU so it should be possible to use the same schematic. The Arduino Ide already supports the NodeMCU so no need to change drivers, board.txt or platform.txt files.
The part that’s responsible for pulling GPIO-0 low and resetting the Esp-8266 is only two general purpose npn transitors and 2 resistors.

So I added 2x BC547 (or use any other general purpose transistor) and 12K resistors to the bottom of the programmer board. It’s not my best soldering work, but it will do the job.

Soldered 2 wires to pin 13 and 14 of the CH340G and connected them to the transistors on the other side.
You can fix everything with some hotglue if you want.

Change in the Arduino ide the setting Tools , Reset Methode to NodeMCU and you are ready to go.
Every time you press now upload the Esp-01 will be set in serial download mode and you can upload you fresh developed code.

 

Happy programming.

 

 

 

 

Iot SensorV2 with battery onboard

Not a complete new design, but a redesign of my Iot Esp8266 sensor V2, the schematic is exact the same however this time with a on board 18650 3.7V Li-ion battery.

The Iot sensor node will measure temperature, humidity, atmospheric pressure and light. The light is measured with the TSL2561 and temperature, humidity, atmospheric pressure with the Bosch BME280.

In the previous design the battery was placed in a separate battery holder and the pcb was taped to the battery, not really the ideal solution.  So the idea was born to combine everything on 1 pcb.
The first idea was to place the battery beside the electronics, when this was finished I thought that can be smaller and made also a design where the pcb is on top of the battery. Still I couldn’t decide if I wanted the side or top version. Ok, lets combine both designs and we will see later what’s version is nicer.
Just as mentioned in then previous design, it’s very hard to solder the BM280. My opinion is that you only can solder it good if you use a stencil to apply the solder paste and place the pcb in the oven or use a hot air station.
For the battery clips I used the Keystone 16~19mm PC Battery clip.  In the datasheet they note that for an 18650 with build in protection circuit you need 48mm between the front solder pins, that will make it fit for battery’s of 68mm if you add the rest of the clip. However I don’t think this is correct, at least not in my case. 18650 battery with build in protection are 69,7 mm long, it will fit but it looks that it’s way to tight. For 18650 battery with flat head the clips are to far apart and won’t make contact. An 18650 with button head will fit perfect. If you want to make your own sensor node, keep in mind that there are a lot of different sizes 18650.
I’m using now the Sanyo NCR18650GA 3350mAh – 10A Button Top and that fits perfect, they are 66.7mm long (battery used on the photo’s is not the Sanyo).

3d design in Altium
Pcb and stencil
Finished board
Board on top of the battery
Board on top of the battery top view
Board with battery on the side
PlayPause
previous arrow
next arrow
 
3d design in Altium
Pcb and stencil
Finished board
Board on top of the battery
Board on top of the battery top view
Board with battery on the side
previous arrow
next arrow

 

You can find a test/demo Arduino program on my Github.

 

If you want to make your own, or use parts of the design here are  the Altium Designer 16 files:

1700 Downloads

 

IoT Esp8266 BME280 sensor

Iot Esp8266 temperature, humidity, atmospheric pressure and light sensor.

After the problems with my sensor based on the DHT22 time for a redesign, this time with the BME280 for measuring temperature, humidity and atmospheric pressure. The TSL2561 known from my light sensor node is used for measuring light level.

Note: it’s hard to solder the TSL2561 and it’s even harder to solder the BME280, think it over before starting on it if you want to make your own copy.
My first 4 attempts soldering the BME280 failed. With a chip this small and the small pads that are needed for it, it’s important that to all the pads there’s an equal amount of solder paste applied. If that’s not the case the whole chip rest on the pads with the most solder and will not make contact with the other pads, extra handicap is in this case that the BME280 has a metal case an will make very easy a short circuit if you use to much solder.
I have ordered now a stencil to apply the solder paste even on the pcb. To be continued….

Update 02 April 2018
Stencil is finally in. Due the Chinese new year it took some time before they produced and shipped it. I have ordered it from Jlcpcb and it costs only $9 including shipping, unbelievable cheap.
That’s a huge stencil for such a small pcb, it didn’t even fit in the mailbox and had to collect it from the post office.
Stencil is for 2 different project’s, the upper 2 are for this project. The stencil I ordered was 100µm thick, not a standard thickness they sell, but ask for it and you will get it. Components with that small pads as the BM280 requires not to much paste, that’s why I prefer 100µm for those kind of components.
With the stencil is was easy to apply the solder paste and with the heat gun is was all soldered with ease.
Have a look at my making of the Colinkex jtag to get an idea how to apply the paste simple with not to much effort at home.

After testing every works very well. Temperature, humidity, atmospheric pressure and lux are send with the help of MQTT to the SQlite database and Node-red ones in the 2 minutes.
Some fine tuning in the with Arduino created software to disable the BME280 and TSL2561 just before the ESP8266 goes in deep sleep to reduce the standby power. Standby current is now 42µA, more then the sensor with the DHT22 (27µA) but good enough.
Btw, to measure the standby current that precise I used the µcurrent designed by Dave Jones from EEVblog.

Pcb bare front
Bare pcb back
Pcb with stencil
Pcb with stencil closeup
Pcb front finished
Pcb back finished
Sensors closeup
Sleep current
PlayPause
previous arrow
next arrow
 
Pcb bare front
Bare pcb back
Pcb with stencil
Pcb with stencil closeup
Pcb front finished
Pcb back finished
Sensors closeup
Sleep current
previous arrow
next arrow

 

You want to make your own, download the Altium Designer 16 files.

1529 Downloads

 

EWelink touch hack

This time a hack on the EWelink wifi touch switch.

The EWelink touch switch is a similar product as the Sonoff touch, but I find the look a bit nicer. It’s more streamlined and is also available with black front.

The EWelink is sold in 1,2 and 3 gang version for the EU and US market.
I had only the 2 gang EU version, but it looks to me that the 1,2 and 3 gang EU version are the same. They left some parts out, but the pcb’s are all the same.
Can’t say anything about the US version, don’t have one to take apart.
The hart of the EWelink touch switch is the PSF-B04 module. This module contains inside the well know ESP8285, that’s in fact an ESP8266 with build in 1M flash memory.

Just like the hacks for the Sonoff products we need to connect Txd, Rxd, Vcc, Gnd and Gpio0 to the touch switch to make it possible to upload our own firmware.
Bummer, EWelink didn’t provide us just like Sonoff with a header where most of the pins required are easy accessible.
Time to get the soldering iron and solder some header pins direct to the PSF-B04 module. Because you can’t and won’t program the touch pcb when it’s connected to the power pcb, you need to provide it also with 3.3V power.
For the Gpio0 a simple wire will do the trick to get the ESP8285 in programming mode.

Pin mapping:

Wifi Led Gpio-13
Touch input Relay + led
left Gpio-0 Gpio-12
middle Gpio-10 Gpio-4
right Gpio-9 Gpio-5

The 1 gang uses the middle touch sensor, the 2 gang uses the left and right touch sensor and the 3 gang uses them all.

Note:It looks to me now that they place some resistors in other places for the 1,2 and 3 gang. Think they do that for example so touch1 is always connected  to gpio0, but in the 1gang touch1 is in the middle and for the 2 gang the touch is at the left . Can’t verify this because I only have the 2 gang.

Arduino ide settings:
Generic Esp8285 Module
CPU Frequency: 80MHz
Flash Size: 1M (64K SPIFFS)
Upload Speed: 115200

 

Important Note: As you can see in the last picture below they have placed a screw between the fase (L) and neutral (N) to hold the power pcb in place. The screw makes the isolation distance between the L and N to narrow. The minimum isolation distance requirement for 230V~ is 2.5mm and preferable  >3mm. With my Ewelink is was total 2.4mm, that’s not enough.
Simple solution, remove the screw, it doesn’t do anything. The power pcb can’t move because of the screw terminals and the other screws.
Do this all at your own risk.

 

Touch switch front
Touch switch back
Touch pcb
Pcb front connection
Programmer connected 1
Programmer connected 2
Isolation distance
PlayPause
previous arrow
next arrow
 
Touch switch front
Touch switch back
Touch pcb
Pcb front connection
Programmer connected 1
Programmer connected 2
Isolation distance
previous arrow
next arrow

 

Sonoff Touch Led Mod

Just like in all other Sonoff products one of the leds is hardwired to the relay and will lit up when the relay is switched on.
In my post over the Sonoff Wifi powerline switch mod I described how to put the led on a seperate IO pin of the Esp8266 so you can get full control over the led.
This post will do the same for the Sonoff touch led that’s behind the touch sensor.

The Sonoff touch has an Psf-a85 module on board from Itead, this module has the esp8285 inside. With the pinout and schematic available of the psf-a85 it’s easy to find the required pins.

You need to scratch the pcb track that’s going to the 1K resistor (see picture below). After that you need solder a thin wire between the 1K resistor and one of the free IO pins on the psf-a module, in the picture I choose pin 3 IO4.

Now you have full control over both (wifi and touch) led.
My idea was to let the touch led glow so you can find the touch button easy in the dark.

If you don’t know how to flash the esp8285 have a look at this.
Personally I add to all my ESPxx programs the OTA (over the air) flash capability’s so you can remove the usb to serial convertor and close up the housing for safety purpose and flash new firmware ota.

Arduino ide settings:
Generic Esp8285 Module
CPU Frequency: 80MHz
Flash Size: 1M (64K SPIFFS)
Upload Speed: 115200

Demo/test Sketch at Github

 

Sonoff Touch, Touch led glow