How to use ESP8266 ESP-01 as a SENSOR web client



How to use ESP8266 ESP-01 as a SENSOR web client

width="560" height="315" class="youtube-player" src="https://www.youtube.com/embed/YLx7g4XThW4?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1&wmode=transparent" frameborder="0" allowfullscreen="true" type="text/html">

I’m not going to explain in detail what is ESP8266 because if you have found this post I’m sure you already know it. But just in case, it is an awesome cheap board (less than 4$) with built-in wifi communication (802.11 b/g/n), and SPI, UART. You can also use its processor to run your code.

Wiring: ESP8266 - reflash firmware

Use FTDI with 3V3 output. If you face problems with this running on Windows check this link:  Unbrick FTDI 232R

Burning LuaFirmware

Download Coolterm http://freeware.the-meiers.org/ (putty like app but much cooler)
Check that your ESP8266 has some firmware through coolterm
Enter with coolterm at 115200 (most probable default speed)
Once in, type AT+GMR, my firmware was based on 00160901

esp8266-update-01

Congrats, you’ve got a working ESP8266 with a espressif firmware in it. If you want to play with this firmware check this out: http://www.electrodragon.com/w/Wi07c#Other_firmware

Now to burn LUA firmware:
To Burn a firmware: CH_PD pin must be always connected to HIGH and GPIO0 pin to GROUND (LOW)

Download ESP8266 flasher: https://docs.google.com/file/d/0B3dUKfqzZnlwVGc1YnFyUjgxelE/edit
Download LUA Firmware: https://github.com/nodemcu/nodemcu-firmware
Execute ESP8266_flasher.exe and burn the bin inside LUA Firmware

esp8266-update-02

After burning it,  GPIO0 pin should be disconnected from ground in order to reboot in normal mode. Otherwise it will be reboot in UPLOAD mode. So power it OFF, disconnect GPIO0 pin  from ground… and voilà! you’ve got a ESP8266 with LUA Firmware


BasicCoding

Now with a burned LUA Firmware, we should reconfigure CoolTerm at 9600bps to be able to communicate with the board.
Connect and type this basic code to check the wifi connectivity:

1
2
3
4
5
6
print(wifi.sta.getip())
--0.0.0.0
wifi.setmode(wifi.STATION)
wifi.sta.config( "SSID" , "password" )
print(wifi.sta.getip())
--192.168.18.110

Congrats, now each time you power it on back again, it will remember last wifi connection wifi setup.


Coding the automatic script

For this example we have used the following wiring:

ESP8266 - Push button web

With this basic script we will be able to know the state of a push button from the web.
Firstly we will build a LUA script named door.lua

So boot the terminal and type the following:

1
2
3
4
5
6
7
8
9
10
11
12
13
file. remove (“door.lua”)
file.open(“door.lua”,”w”)
writeline([[srv=net.createServer(net.TCP) srv:listen(80,function(conn)]])
writeline([[conn:on( "receive" ,function(conn,payload)]])
writeline([[print(node.heap())]])
writeline([[door= "open" ]])
file.writeline([[ if gpio.read(8)==1 then door= "OPEN" else door= "CLOSED" end]])
file.writeline([[conn:send( "<h1> The door is " .. door .. ".</h1>" )]])
file.writeline([[end)]])
file.writeline([[conn:on( "sent" ,function(conn) conn:close() end)]])
file.writeline([[end)]])
file.close()<b>
</b>

After this, you will have written a door.lua script that it’s gonna be available in the ESP8266 after each power off and on.

To execute it type:

1
dofile(“door.lua”)

and if you don’t know the ip of ESP8266 type:

1
2
print(wifi.sta.getip())
--192.168.18.110

Now input the IP of the ESP8266 as a URL on your favorite browser and you will have the result you’ve been looking for!

An issue is that the script is stored on the circuit but it’s not loading automatically. To fix this, we have to modify the init.lua script. Type at console:

1
2
3
4
5
file. remove (“init.lua”)
file.open(“init.lua”,”w”)
writeline([[print( "Pete's LUA module 0.1" )]])
file.writeline([[tmr.alarm(4000, 0, function() dofile( "door.lua" ) end )]])
file.close()

Reboot, and now each time will be automatically executing the code. Plug the esp8266 to two 1.5V battery, remove FTDI and voilà! Automatic DOOR Sensor IOT!!!

REFERENCES:
http://www.nodemcu.com/
http://www.esp8266.com/
http://blog.electrodragon.com/cloud-updating-your-wi07c-esp8266-now/
http://scargill.wordpress.com/
http://www.electrodragon.com/w/Wi07c

Thanks to everyone who has spend many hours developing and sharing.

Bonus

ESP8266 range test with awesome results!

width="560" height="315" class="youtube-player" src="https://www.youtube.com/embed/7BYdZ_24yg0?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1&wmode=transparent" frameborder="0" allowfullscreen="true" type="text/html">
About these ads

19 Comments on “How to use ESP8266 ESP-01 as a SENSOR web client”

  1. […] firmware, opening the doors to an Internet of Things based around an ESP8266. [Marc] and [Xavi] just wrote up a quick tutorial on how to turn the ESP8266 into a WiFi sensor platform that will relay the state of a GPIO pin to […]

  2. […] firmware, opening the doors to an Internet of Things based around an ESP8266. [Marc] and [Xavi] just wrote up a quick tutorial on how to turn the ESP8266 into a WiFi sensor platform that will relay the state of a GPIO pin to […]

  3. geonomad says:

    Attempting to write your firmware, everything starts OK, but then I always end up with:

    Writing at 0x00007000… (5 %)
    Invalid head of packet

    Any ideas?

    • geonomad says:

      So, after trying different ESP8266 boards, power supplies, etc. I tried using a different USB port on the computer and the problem solved itself. Go figure.

      Now… “The door is open” “The door is closed” Brilliant!

      Thanks guys! This is great stuff!

      Molt be!

  4. […] firmware, opening the doors to an Internet of Things based around an ESP8266. [Marc] and [Xavi] just wrote up a quick tutorial on how to turn the ESP8266 into a WiFi sensor platform that will relay the state of a GPIO pin to […]

  5. uminded says:

    Anybody have luck modifying the network firmware into a mesh setup? Once this chip runs LUA scripts on a mesh topology the IOT will bloody explode!

    p.s – There needs to be some encryption, and a heartbeat to be secure or else someone could DDOS the router and gain entrance to the building is this was the only security sensor on that door.

  6. […] by Mark and Xavi’s How to use ESP8266 ESP-01 as a SENSOR web client post, I decided to use Lua for this quick […]

  7. geonomad says:

    Thanks guys! You saved me a lot of time with this afternoon’s project:

    Using the ESP8266 as a Power Monitor.

    Not knowing the chip or Lua, I couldn’t have done it without this post. You showed me what I needed to know to get going.

  8. Anonymous says:

    Hi, are those " meant to be there or are they supposed to be “”?

    • Anonymous says:

      Correction:
      Are those & quot ; meant to be there or are they supposed to be “”?

      • geonomad says:

        You need to un-html them to single quotes like ‘ (although that would screw up the Pete’s line) so maybe ” is needed sometimes.

        I hope the code on my posting (above) is more readable, but browsers and WordPress can play havoc with this stuff.

  9. […] večer jsem objevil přímo neuvěřitelnou věc – existuje alternativní FW, který obsahuje interpreter jazyka LUA (učebnici LUA mám ve svém Kindlu tuším od začátku roku…). Pro účely přehrávání […]

  10. Is it possible for you to create a simple temperature reporter using a TMP36 sensor.
    Using a identity for the individual board to be able to use several at the same time but identify the reported temperatures.
    Having it to report the temperature every 10 minutes.
    Configuring the WLAN ssid in a changable way ( maybe over the serial)

    • That was my plan next summer. Create a bunch of solar charged temp, humidity, water meters for my greenhouse. Make each sensor create a random SSID and an app to connect to each for naming, pairing. I was originally using the Synaptics python mondules but they where bloody expensive at $50 a pop.

  11. @OP Would you consider running a smaller scale test and measure power consumption over a 10m/100m/250m distances? I ordered my boards but with Christmas coming and new Hong Kong export regs im afraid I will be waiting a long while…

  12. mosheen says:

    The code shows “writeline” without the file.writeline, and there is a at the end.

    Here’s a corrected version of it (hopefully):

    file.remove(‘door.lua’)
    file.open(‘door.lua’,’w’)
    file.writeline([[srv=net.createServer(net.TCP) srv:listen(80,function(conn)]])
    file.writeline([[conn:on(‘receive’,function(conn,payload)]])
    file.writeline([[print(node.heap())]])
    file.writeline([[door=’open’]])
    file.writeline([[if gpio.read(8)==1 then door=’OPEN’ else door=’CLOSED’ end]])
    file.writeline([[conn:send(‘ The door is ‘ .. door ..’.’)]])
    file.writeline([[end)]])
    file.writeline([[conn:on(‘sent’,function(conn) conn:close() end)]])
    file.writeline([[end)]])
    file.close()

    • mosheen says:

      Sorry, I posted some mistakes. This code works:

      file.remove(‘door.lua’)
      file.open(‘door.lua’,’w’)
      file.writeline([[srv=net.createServer(net.TCP) srv:listen(80,function(conn)]])
      file.writeline([[conn:on(“receive”,function(conn,payload)]])
      file.writeline([[print(node.heap())]])
      file.writeline([[door=’open’]])
      file.writeline([[if gpio.read(8)==1 then door =”OPEN” else door=”CLOSED” end]])
      file.writeline([[conn:send(” The door is ” .. door ..”.”)]])
      file.writeline([[end)]])
      file.writeline([[conn:on(“sent”,function(conn) conn:close() end)]])
      file.writeline([[end)]])
      file.close()

      Then:
      dofile(‘door.lua’)

      • mosheen says:

        Also note too, that if you leave GPIO connected to the switch setup in the example, it will boot into flash mode next time power is cycled. I pulled my hair out thinking it was a power supply issue!

  13. […] firmware, opening the doors to an Internet of Things based around an ESP8266. [Marc] and [Xavi] just wrote up a quick tutorial on how to turn the ESP8266 into a WiFi sensor platform that will relay the state of a GPIO pin to […]


Leave a Reply Cancel reply

Fill in your details below or click an icon to log in:

  • name="googleplus-sign-in" width="24" height="24" id="googleplus-sign-in" src="https://public-api.wordpress.com/connect/?googleplus-sign-in=https%3A%2F%2Fimporthack.wordpress.com" frameborder="0" scrolling="no" allowtransparency="true" seamless="seamless">
WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

name="likes-master" id="likes-master" src="https://widgets.wp.com/likes/master.html?ver=20141028#ver=20141028&mp6=1" scrolling="no" style="display: none;">
    &lt;img src="https://pixel.wp.com/b.gif?v=noscript" style="height:0px;width:0px;overflow:hidden" alt="" /&gt;
    • 0
      点赞
    • 1
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值