Wednesday, March 4, 2015

ESP8266 Wireless Wifi Module Develop Board 8266 SDK Development Chip

Other interesting board is this board from Electronic Gadget World, a shop on

If you can not find this board you can buy other good development boards like:

1. Development board with ESP8266 module and power supply.
2. Battery operated development board
3. Small form factor development board

The parcel contained one ESP201  an SDK Development board and a DHT11 sensor. No cables or power supply. I've ordered two extra ESP201 so I've replaced the faulty one with a good ESP201.

As you can see in the image there are two USBs. The microUSB located on the top right is just for powering the board. The other usb, a type B USB can be used to power the board, and to write firmware to ESP201 flash. The usb to serial on board is a CH340G chip. My win7 didn't complain about it, I was able to write the flash to ESP201.
The only problem is that the transfer was done at 9600 or less (like 5 minute for 200k), after I've modified in the DeviceManager the speed for the port, the transfer rate was increased. But this happened only once, so I gave up using the CH340G chip for now. I've removed the red jumpers and I used my old Prolific USB/serial.

I'll reinstall the drivers for CH340G chip with this one  later and I'll see if helps.

ESP201 SDK development board

Now let's talk about the connections. As you can see the dev board has:

  • a relay
  • a RGB led
  • a white led ( almost under the RGB led which is above the buzeer)
  • DHT11 
  • buzzer
  • two switched S2 and S3
  • a variable rezistor for ADC ( on the left of relay ) connected to ADC pin.
  • a 5v to 3v3 convertor 
  • a main switch in the right upper corner (this switch is just for ESP201 board I guess, I have the impression that the CH340G is still receiving power even the switch is off).

DIP functionality
On the PCB near the DIP switch there are the values :

  • R - should be the RED led from the RGB connected to the IO15 pin. Putting the R DIP to ON will light RED if the GPIO15 is HIGH.
  • G - GREEN led from RGB led is connected to IO13. Putting the G DIP to ON will light GREEN if the GPIO13 is HIGH.
  • B - BLUE led from RGB led is connected to IO12. Putting the B DIP to ON will light BLUE if the GPIO12 is HIGH
  • W - WHITE led located almost under RGB led is connected to the IO14 pin. Putting HIGH on GPIO14 and DIP switch on ON will light the WHITE led
  • J - relay pin connected to IO16 ( which is always HIGH - I have no idea why . This behavior and the RED led that is not working can be because I have a bad board or the design for all the boards is wrong. Connecting the IO16 to GND (not recommended) will stop the relay, otherwise it will be ON all the time the J DIP pin is ON.
  • B - BUZZER connected to IO5 pin throuch B DIP switch. Having GPIO5 HIGH and B on DIP switch ON will prove that the buzzer is working.
  • K1 - I assume is connected to S2
  • K2 - I assume is connected to S3.

A schematics on a napkin will look like this one:

Napkin schematics :-)

And thanks to Scott Snowden and jwbr from there is a complete schematics of the board.

Wifi Module Develop Board 8266 schematics

On IO4 is connected the DHT11 sensor. I didn't use it because I have a DHT22 which is more accurate.

How to write flash.

1.Power off the board.

2.Keep S2 pressed and power on the board using the switch located in the right top of the board.
3.Now you can write the flash from the ESP201 board.


It is a very good board, no issues found. If you want a rapid development board you can buy this one.

And the final config will look like in this picture (2 external relays, 2 external LEDs DHT22). Pretty crowded. Breadboard is just for GND.

UPDATE1: See what to do to have access on the GPIO15 ( Red led from RGB) - HERE

UPDATE2: See what to do for controlling the relay connected on the XPD / GPIO16 - HERE

UPDATE3: A IoT plug based on ESP-01 - HERE.   A lawn irrigation IoT based on this board is coming soon.

UPDATE4: Now I have a unix cron functionality on my ESP8266 chips.

UPDATE5: MQTT broker running on ESP8266


  1. Hi can you help me with the use of this board via wifi?
    regards Paolo

  2. Hi Paolo what is the problem. Do you have the board ?

  3. yes i have the board! I'm able to connect to its wifi , but how i canon a web service with browser? how i can send commands to boards ?

  4. If you didn't write a new software on the board, and the board has the AT code, you may check first this link
    For the AT commands you can see the link Also if tou have the latest SDK there is in it a directory name documents where there are manuals for AT commans. Personally I am not using AT commands, I am writing my own software that receive commands from via my broker. I am controlling plugs, security monitor with PIR, irrigation control with relays.

  5. hi,
    i have installed nodemcu firmware but i'm not ready to set pin high !!! can you help me?

  6. Hi Paolo,

    Hi Paolo, Good job! I've didn't work with nodemcu, but take a look on this link

    where there is an example how to work with GPIO on nodemcu

    I guess for a led blink the code should be ( IS NOT TESTED)

    pin = 2
    -- led connected on gpio 2

    if ==0 then

    Alternatively you can use the but this will be without nodemcu.

  7. Hi tank you for your answer. i'm able with this code to read temperature from dht11 sensor

    local moduleName = ...
    local M = {}
    _G[moduleName] = M

    local humidity
    local temperature

    local checksum
    local checksumTest
    humidity = 0
    temperature = 0
    checksum = 0

    -- Use Markus Gritsch trick to speed up read/write on GPIO
    local gpio_read =

    local bitStream = {}
    for j = 1, 40, 1 do
    bitStream[j] = 0
    local bitlength = 0

    -- Step 1: send out start signal to DHT22
    gpio.mode(pin, gpio.OUTPUT)
    gpio.write(pin, gpio.HIGH)

    gpio.write(pin, gpio.LOW)
    gpio.write(pin, gpio.HIGH)
    gpio.mode(pin, gpio.INPUT)

    -- Step 2: DHT22 send response signal
    -- bus will always let up eventually, don't bother with timeout
    while (gpio_read(pin) == 0 ) do end
    local c=0
    while (gpio_read(pin) == 1 and c < 500) do c = c + 1 end
    -- bus will always let up eventually, don't bother with timeout
    while (gpio_read(pin) == 0 ) do end
    while (gpio_read(pin) == 1 and c < 500) do c = c + 1 end

    -- Step 3: DHT22 send data
    for j = 1, 40, 1 do
    while (gpio_read(pin) == 1 and bitlength < 10 ) do
    bitlength = bitlength + 1
    bitStream[j] = bitlength
    bitlength = 0
    -- bus will always let up eventually, don't bother with timeout
    while (gpio_read(pin) == 0) do end
    hum=" "
    tem=" "
    chk=" "
    --DHT data acquired, process.
    for i = 1, 16, 1 do
    hum=hum.." "..tostring(bitStream[i])
    tem=tem.." "..tostring(bitStream[i+16])
    if (bitStream[i] > 3) then
    humidity = humidity + 2 ^ (16 - i)
    if (bitStream[i + 16] > 3) then
    temperature = temperature + 2 ^ (16 - i)
    for i = 1, 8, 1 do
    chk=chk.." "..tostring(bitStream[i+32])
    if (bitStream[i + 32] > 3) then
    checksum = checksum + 2 ^ (8 - i)
    checksumTest = (, 0xFF) + bit.rshift(humidity, 8) +, 0xFF) + bit.rshift(temperature, 8))
    checksumTest =, 0xFF)

    if temperature > 0x8000 then
    -- convert to negative format
    temperature = -(temperature - 0x8000)

    -- conditions compatible con float point and integer
    if (checksumTest - checksum >= 1) or (checksum - checksumTest >= 1) then
    humidity = nil
    --print("checksum ", checksum)
    --print("checksumTest ", checksumTest)
    --print("humidity - timing of bits ",hum)
    --print("temperat - timing of bits ",tem)
    --print("checksum - timing of bits ",chk)

    function M.getTemperature()
    return temperature

    function M.getHumidity()
    return humidity

    return M



    sensorType="dht11" -- set sensor type dht11 or dht22

    PIN = 2 -- data pin, GPIO0
    --load DHT module for read sensor
    function ReadDHT()
    if h==nil then h=0 chck=0 end
    if sensorType=="dht11"then
    print("Humidity: "..humi.."%")
    print("Temperature: "..temp.." deg C")
    -- release module


    but when i try to set high any pin i have no response from board. the deep switch work correctly. i don't understand!!! can you test it with me?

    1. Sure, send me an email and will continue discussion over there.

  8. Thanks for the informations provided in yours blog!
    My board (the same model as yours) was having trouble too in usb adaptador, I dislocate very carefully the crystal, and she had a significant improvement
    Another good link to get some information is the blog
    In my case i install a newest NodeMCU firmware, and use a LuaLoader for the initial tests and some LUA scripts...

    1. Cool. Let me know about your project with ESP8266 board. Please share with us your findings.

  9. Can someone explain the DHT22 code. How do I get this to work with the module. I understand the code is in. 2 parts. Does the first one need to be saved as init.lua and the second dht22.

    Unsure as to the process to make it work.

    Thank you in advance

  10. Hi,

    So do you simple code for this board? like a blink code or such? I am not even getting the correct gpio for the 201 circuit using the NodeMCU firmware for Lua Uploader. So basically i cant figure out the gpio's are correct or not. more info in the forums.

  11. Hi,

    So do you simple code for this board? like a blink code or such? I am not even getting the correct gpio for the 201 circuit using the NodeMCU firmware for Lua Uploader. So basically i cant figure out the gpio's are correct or not. more info in the forums.

  12. Hi.
    There is a bug on this board as the potentiometer can send 3.3V direct to the ADC wich must be 0 - 1.0V.
    I have modified the board by cutting a track an soldering a 22k resistor on the underside:

    1. You have right ! Cool finding. I'll modify my board too.

    2. According to Kelly from Espressif ( producer of the ESP8266 chip) the analog input can handle 3.3V.

      "Digital and IO Power Supply(Pin 11, Pin 17): 1.8V ~ 3.3V

      Analog and PA Power Supply(Pin 1, Pin 3, Pin 4, Pin 29, Pin 30):3.0V ~ 3.6V."

  13. The schematic of ESP-201 development board was updated, a more recent version is located @ :

  14. Has anyone found the resolve for GPIO16. LuaLoader says it does not exist???

    1. I am using it, but with the C code, not with lua. See

  15. how to flash esp201 for use AT Command ?
    what primary baud rate in esp201?
    how to connect esp201 to arduino and control led?
    thank you

  16. how to flash esp201 for use AT Command ?
    what primary baud rate in esp201?
    how to connect esp201 to arduino and control led?
    thank you

  17. esp201 is having the AT firmware by default. I am using 115K as baud rate. The init is at 75. Why do you need to control a led with arduino when you can do it with esp201 itself ? If you want to connect arduino with ESP connect the serial interfaces together.

  18. Hi, I have the same board. When I connect load to relays (220v), the relay flikers quickly between on and off a few times when I turn it off, then it turn off. Actually, all the board flickers (rgb led,...). It works as expected without load. Have you idea of the reason? Thanks a lot.

  19. What is the output current for your power supply ?

    1. I tried some power supply, 2A also. Thanks for your reply.

    2. Try to power the board not through USB connectors, but directly to pins around the ESP201 module. BE SURE THAT YOU ARE USING 3.3V NOT 5V. It is possible that the on board converter (5V to 3.3V) not supplying the current requested by the board and relay. Can you measure the current ?

    3. I digged better on internet and I found the problem could be the inductive load. The relay has to drive a electric valve (inductive load) and it could give spikes to the board (if there is no snubber). I used a light bulb instead and it works. Thanks! I tested the dht11 holes with ds18b20 (OneWire) and it works.

  20. thanks for the reply!
    I tried some power supply, even 2A...