Thursday, March 10, 2016

ESP12e oled wireless notifier

The goal

Build small, battery powered wireless notifier based on ESP12e and oled SSD1306 display


Small, remote text display, weather station, whatever that could be implemented in eLua on nodeMCU or in ESP-SDK.


  • ESP12e wireless MCU
  • OLED 0.96" SSD1306 i2c/spi display
  • TPS79533 LDO 3.3v, SOT223-6
  • FT232R, SSOP28
  • TP4056, SOP-8
  • Battery pack li-po 400mAh
  • 2 x tactile smd switch B3U-3000PM (omron)
  • 1 x switch on - on low profile
  • resistor 0805 size:
    • 1 x 100 ohm
    • 2 x 330 ohm
    • 1 x 6.6k (see TP4056 datasheet, current program resistor)
    • 6 x 10k
    • 1 x 100k
    • 1 x 390k
    • 1 x 470k
  • resistor, bigger size (M1406 in eagle)
    • 0.2-0.5 ohm (see TP4056 datasheet)
  • capacitor 0805 size:
    • 1 x 10nF 
    • 1 x 100nF
    • 4 x 2.2uF
    • 2 x 10uF
  • capacitor, bigger size (C1206 in eagle)
    • 2 x 10uF
  • micro usb smd socket
  • 2 x red led, smd (size 1206 in eagle)
  • 1 x green led, smd (size 1206 in eagle)


This is the corrected schema of "wireless notifier", original one had GPIO2 form ESP12e connected to TP4059 CHR pin 7. Schema was made in Eagle free.

Current schema (with additional led and GPIO2 unconnected)

Other components like ESP12e, OLED and TPS79533 wasn't present in default eagle library. Micro tact switch also, but I've found them in Adafruit or SparkFun library.

Those are the places from which I've took missing parts:
Below you can see PCB board layout. Some of the routes are unconnected (ESP12e power pin) and additional cable needs to be soldered.

Board size

This is my first double sided board and in the same time initial test of my custom PCB laminator!.

Routes was printer on normal paper to get proper layer positioning

Before putting board with routes printed on toner-transfer paper, I made envelope from paper, so laminator rollers won't move the printouts.

Clamps where very usefull

I've positioned top and bottom printout using drill and rest of resistor wire. When printout was at good position, added clamps and remove drill and resistor wire. Clamps have pretty strong grip so printouts won't move when I'll put this between lamiantor rollers.

Made two holes on diagonal

My custom PCB laminator PID temperature controlling loop set temp into desired 180 Celsius and now I can put the board with printout and paper envelope between the rollers. Once I feel the grip of the rollers, I remove the clamps. When PCB goes through rollers that have temperature close to 180C, toner will get slightly stick and clamps are not required anymore. I've made initial 4 iterations to check the effect (this was first PCB use of my laminator), and when I slightly folded back the printout I have seen that toner is not sticky enought. I have made additional 10 iterations, and switch laminator into cooling mode.

Of course used my custom build laminator!

Picture below shows toner after wash, it adheres to the PCB very well. I needed to use a scalpel to make additional spacing between micro USB routers. I made them thicker and VCC slightly entered data route.

Board with toner, just after washing

PCB after etching and cleaning looks great! I'm very pleased with this precision, at last I can make smaller PCB's with smd only.

On this side will be mounted: micro USB socket, FT232R for usb<->serial conversion, LDO voltage stabilizer, and of course some resistors and capacitors mainly from SSD1306 display.

Etched top layer

Bottom side will have TP4056 charger circuit, ESP12e and some notify leds. This picture presents board with one wrong route - GPIO2 is connected here to TP4056 CHRG pin 7, this was a mistake, I've corrected this on schema at top of this post. Connecting GPIO2 from ESP12e to GND or VCC is a bad idea, because this pin is used to enter other ESP boot mode, and when I've connected usb cable to the board ESP he did not respond.

Also I've damaged toner transfer routes with a scalpel by accident, you can see that one route and pin is cut down. I connected the via's with thin wire and used a metal file to saw them down, but finally ESP12e needed to be 0.5mm above the routes.

Etched bottom layer

Top side of PCB with FT232R and usb socket mounted. I've decided to make a solder mask using my soldering iron all over the board for better soldering smaller parts. This was a good call.

After soldering of come parts and tinning

Soldering mask is all over the routes (except ones under FT232R), some of resistors are mounted too.

More parts on top layer

First I've needed to remove OLED display from old board, also moved some resistors and capacitors from this to my newly created one.

OLED SSD1306 board without display

Only part of the res/cap where needed. I've used SPI lines of the SSD1306 to communicate with ESP12e, found out that SPI interface is less power consuming than I2C (some paper on the net about it).

Original OLED board, back side

OLED is soldered to my wireless notifier PCB. Board could be smaller, because I've extended all OLED lines a little, I made this because didn't know how deep will cut down the PCB (right side on this picture). Finally I've cut the PCB and GND plane about 1-1.5mm, so next smartwatch PCB will be with smaller OLED lines and without additional 1.5mm ground plane.

Also for test I've connected different voltage stabilizer TJ3965, which was good too (LDO and max 1.5A), but TPS7533 had better dropout characteristics for smaller current (< 40mA). TPS can handle only 500mA of current, but my circuit will take about 300mA in worst conditions.

OLED display soldered without troubles

Bottom view with ESP12e connected, this time I've made first test with OLED and nodeMCU.

ESP12e from the other side

TPS79533 mounted, this almost final board.

80% parts of top layer soldered, also oled was glued to ESP12e

Board is quite thin, ESP12e is slightly 0.5mm above the board

Front view with TP04065 missing

Antenna is on the left
Left side view

Switch is quite big but it's needed in my case. The power could be fetched from USB socket or from battery pack. So when I want to switch it off running on battery, just move switch into USB power position. TPS79533 is connected then directly to 5V of USB socket, FT232R have 3.3v out too, but I use it only for it's logic reference voltage. ESP12e could sometimes eat > 200mA of current and I think FT232 wont handle it.

Finished board with additional unplanned red charging status led

Finished board with li-po 400mAh li-po battery pack

Battery pack suits perfectly, if you have a closer look you can see that red power cable on the left comes out from the left size of battery pack. This space (length of red curved cable) is filled up by micro usb socket, so and the end everything is thinner.

No comments:

Post a Comment