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 aliexpress.com.

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 http://www.bpower.nl/ 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.


Conclusions:

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




33 comments:

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

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

    ReplyDelete
  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 ?

    ReplyDelete
  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 http://www.electrodragon.com/w/ESP8266_IoT
    For the AT commands you can see the linkhttp://wiki.iteadstudio.com/ESP8266_Serial_WIFI_Module. 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.

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

    ReplyDelete
  6. Hi Paolo,

    Hi Paolo, Good job! I've didn't work with nodemcu, but take a look on this link http://nodemcu.com/index_en.html#fr_5475f7667976d8501100000f

    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
    gpio.mode(pin,gpio.OUTPUT)
    gpio.write(pin,gpio.HIGH)

    tmr.alarm(0,1000,1,function()
    if gpio.read(pin) ==0 then
    gpio.write(pin,gpio.HIGH)
    else
    gpio.write(pin,gpio.LOW)
    end
    end)



    Alternatively you can use the http://myesp8266.blogspot.ro/2015/03/example-blink-led.html but this will be without nodemcu.

    ReplyDelete
  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

    function M.read(pin)
    local checksum
    local checksumTest
    humidity = 0
    temperature = 0
    checksum = 0

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

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

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

    tmr.delay(100)
    gpio.write(pin, gpio.LOW)
    tmr.delay(20000)
    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
    c=0
    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
    end
    bitStream[j] = bitlength
    bitlength = 0
    -- bus will always let up eventually, don't bother with timeout
    while (gpio_read(pin) == 0) do end
    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)
    end
    if (bitStream[i + 16] > 3) then
    temperature = temperature + 2 ^ (16 - i)
    end
    end
    for i = 1, 8, 1 do
    chk=chk.." "..tostring(bitStream[i+32])
    if (bitStream[i + 32] > 3) then
    checksum = checksum + 2 ^ (8 - i)
    end
    end
    checksumTest = (bit.band(humidity, 0xFF) + bit.rshift(humidity, 8) + bit.band(temperature, 0xFF) + bit.rshift(temperature, 8))
    checksumTest = bit.band(checksumTest, 0xFF)

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

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

    function M.getTemperature()
    return temperature
    end

    function M.getHumidity()
    return humidity
    end

    return M
    ------------------------------

    and

    -----------------------

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

    PIN = 2 -- data pin, GPIO0
    humi=0
    temp=0
    --load DHT module for read sensor
    function ReadDHT()
    dht=require("testdht")
    dht.read(PIN)
    chck=1
    h=dht.getHumidity()
    t=dht.getTemperature()
    if h==nil then h=0 chck=0 end
    if sensorType=="dht11"then
    humi=h/256
    temp=t/256
    else
    humi=h/10
    temp=t/10
    end
    fare=(temp*9/5+32)
    print("Humidity: "..humi.."%")
    print("Temperature: "..temp.." deg C")
    -- release module
    dht=nil
    package.loaded["testdht"]=nil
    end
    ReadDHT()

    ----------------------------

    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?

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

      Delete
  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
    http://scottsnowden.co.uk/?p=393
    In my case i install a newest NodeMCU firmware, and use a LuaLoader for the initial tests and some LUA scripts...
    http://benlo.com/esp8266/esp8266QuickStart.html

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

      Delete
  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

    ReplyDelete
  10. 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:
    https://dl.dropboxusercontent.com/u/5062915/Duino/ESP8266_modi1.jpg
    https://dl.dropboxusercontent.com/u/5062915/Duino/ESP8266_modi2.jpg
    https://dl.dropboxusercontent.com/u/5062915/Duino/ESP8266_modi3.jpg

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

      Delete
    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."

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

    ReplyDelete
    Replies
    1. I am using it, but with the C code, not with lua. See http://myesp8266.blogspot.ro/2015/03/esp201-dev-board-one-more-finding-2.html?m=1

      Delete
  12. 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

    ReplyDelete
  13. 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

    ReplyDelete
  14. 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.

    ReplyDelete
  15. 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.

    ReplyDelete
  16. What is the output current for your power supply ?

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

      Delete
    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 ?

      Delete
    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.

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

    ReplyDelete
  18. I appreciate your great work. Thanks for sharing. Keep me more update in future.

    Custom neon business signs
    Auto insurance led sign
    LED business sign
    LED writing boards

    ReplyDelete
  19. Great article ! I would buy this board but before I need to know the exact dimensions (height x width x depth) because of the constrains of the project. Could someone send me this infos ?
    Thank you

    ReplyDelete
  20. what board name and programmer should I choice in Arduino 1.8.2?

    ReplyDelete
  21. Board: Generic 8266 Module, Flash size: 512 (no SPIFFS) , Programmer AVRISP mkII

    ReplyDelete
  22. On my 201 board Mini and Micro USB Boards are in parallel - both can be used for power and communcation.

    ReplyDelete
  23. Uploading using the USB-Port (Mini or Micro) can be done with my board at 74800 bd, both K1 and K2 have to be ON during power-up for loading. I switch on the board when compile has finished and loading starts. Both switches my be set to OFF after loading has started. If only K1 is set, the board is in boot flash mode - used together with the espressif loader.

    ReplyDelete

  24. I really enjoyed reading your article. I found this as an informative and interesting post, so i think it is very useful and knowledgeable. I would like to thank you for the effort you have made in writing this article.13 Below

    ReplyDelete