ESP8266 Support WIKI

User Tools

Site Tools


nodemcu

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
nodemcu [2015/04/01 16:56]
vowstar Add description of hardware and flasher.
nodemcu [2015/05/08 04:03]
emoon
Line 1: Line 1:
-NodeMCU ​is under very active development.+====== ​NodeMCU ​======
  
-Firmware: [[https://​github.com/​nodemcu/​nodemcu-firmware]]+===== Hardware ===== 
 +NodeMCU devkit is a development kit for NodeMCU firmware.\\ It will make NodeMCU more easy. With a micro USB cable, you can connect NodeMCU devkit to your laptop and flash it without any trouble, just like Arduino.\\ It is an open hardware, with ESP-12 core with 32Mbits(4MBytes) flash.
  
-Hardware: [[https://​github.com/​nodemcu/​nodemcu-devkit]]+==== Devkit 0.8 ==== 
 +It is the original design of NodeMCU ​devkit. Very old and never sell on shop. It can't automatic flash firmware.
  
-Flasher: [[https://​github.com/​nodemcu/​nodemcu-flasher]]+{{:​devkit_0.8.jpg?​600|}} 
 + 
 +==== Devkit 0.9 ==== 
 +It is the second design of NodeMCU devkit. It uses CH340G as UART bridge, and can flash firmware automatically by using nodemcu-flasher. 
 + 
 +{{:​devkit_0.9.jpg?​300|}} 
 +{{:​devkit_0.9_B.jpg?​300|}} 
 + 
 +==== Devkit 1.0 ==== 
 +It is the 5th design of NodeMCU devkit. It uses CP2102 as UART bridge, and can flash firmware automatically by using nodemcu-flasher. It support apple'​s MAC OS. 
 + 
 +{{:​devkit_1.0.jpg?​600|}} 
 + 
 +===== Introduction ===== 
 + 
 +  * Website: [[http://​www.nodemcu.com/​index_en.html]] 
 +  * Forum: [[http://​www.esp8266.com/​viewforum.php?​f=17]] 
 +  * Firmware: [[https://​github.com/​nodemcu/​nodemcu-firmware]] 
 +  * Hardware: [[https://​github.com/​nodemcu/​nodemcu-devkit]] 
 +  * Flasher: [[https://​github.com/​nodemcu/​nodemcu-flasher]] 
 + 
 +===== Summary ===== 
 + 
 +  * Easy to access wireless router 
 +  * Based on Lua 5.1.4 (without debug, os module.) 
 +  * Event-Drive programming preferred. 
 +  * Build-in json, file, timer, pwm, i2c, spi, 1-wire, net, mqtt, coap, gpio, wifi, adc, uart and system api. 
 +  * GPIO pin re-mapped, use the index to access gpio, i2c, pwm. 
 +  * Both Integer(less memory usage) and Float version firmware provided. 
 + 
 +===== Dependencies ===== 
 + 
 +  * Build on ESP8266 sdk 0.9.5 
 +  * Lua core based on eLua project 
 +  * cjson based on lua-cjson 
 +  * File system based on spiffs 
 + 
 +===== Flash the firmware ===== 
 + 
 +nodemcu_latest.bin:​ 0x00000\\ for most esp8266 modules, just pull GPIO0 down and restart.\\ You can use the [[https://​github.com/​nodemcu/​nodemcu-flasher|nodemcu-flasher]] to burn the firmware. 
 + 
 +Or, if you build your own bin from source code.\\ 0x00000.bin:​ 0x00000\\ 0x10000.bin:​ 0x10000 
 + 
 +//Better run file.format() after flash// 
 + 
 +===== Connect the hardware in serial ===== 
 + 
 +baudrate:​9600 
 + 
 +===== Start play ===== 
 + 
 +=== Connect to your ap === 
 + 
 +<code lang="​lua"> ​    
 +ip = wifi.sta.getip() 
 +print(ip) 
 +-- nil 
 +wifi.setmode(wifi.STATION) 
 +wifi.sta.config("​SSID","​password"​) 
 +ip = wifi.sta.getip() 
 +print(ip) 
 +-- 192.168.18.110 
 +</​code>​ 
 +=== Manipulate hardware like a arduino === 
 + 
 +<code lang="​lua"> ​    
 +pin = 1 
 +gpio.mode(pin,​gpio.OUTPUT) 
 +gpio.write(pin,​gpio.HIGH) 
 +print(gpio.read(pin)) 
 +</​code>​ 
 +=== Write network application in nodejs style === 
 + 
 +<code lang="​lua"> ​    
 +-- A simple http client 
 +conn=net.createConnection(net.TCP,​ 0) 
 +conn:​on("​receive",​ function(conn,​ payload) print(payload) end ) 
 +conn:​connect(80,"​115.239.210.27"​) 
 +conn:​send("​GET / HTTP/​1.1\r\nHost:​ www.baidu.com\r\n"​ 
 +    .."​Connection:​ keep-alive\r\nAccept:​ */​*\r\n\r\n"​) 
 +</​code>​ 
 +=== Or a simple http server === 
 + 
 +<code lang="​lua">​ 
 +-- A simple http server 
 +srv=net.createServer(net.TCP) 
 +srv:​listen(80,​function(conn) 
 +  conn:​on("​receive",​function(conn,​payload) 
 +    print(payload) 
 +    conn:​send("<​h1>​ Hello, NodeMcu.</​h1>"​) 
 +  end) 
 +  conn:​on("​sent",​function(conn) conn:​close() end) 
 +end) 
 +</​code>​ 
 +=== Connect to MQTT Broker === 
 + 
 +<code lang="​lua">​ 
 +-- init mqtt client with keepalive timer 120sec 
 +m = mqtt.Client("​clientid",​ 120, "​user",​ "​password"​) 
 +-- setup Last Will and Testament (optional) 
 +-- Broker will publish a message with qos = 0, retain = 0, data = "​offline"​ 
 +-- to topic "/​lwt"​ if client don't send keepalive packet 
 +m:​lwt("/​lwt",​ "​offline",​ 0, 0) 
 +m:​on("​connect",​ function(con) print ("​connected"​) end) 
 +m:​on("​offline",​ function(con) print ("​offline"​) end) 
 +-- on publish message receive event 
 +m:​on("​message",​ function(conn,​ topic, data) 
 +  print(topic .. ":"​ ) 
 +  if data ~= nil then 
 +    print(data) 
 +  end 
 +end) 
 +-- for secure: m:​connect("​192.168.11.118",​ 1880, 1) 
 +m:​connect("​192.168.11.118",​ 1880, 0, function(conn) print("​connected"​) end) 
 +-- subscribe topic with qos = 0 
 +m:​subscribe("/​topic",​0,​ function(conn) print("​subscribe success"​) end) 
 +-- or subscribe multiple topic (topic/0, qos = 0; topic/1, qos = 1; topic2 , qos = 2) 
 +-- m:​subscribe({["​topic/​0"​]=0,​["​topic/​1"​]=1,​topic2=2},​ function(conn) print("​subscribe success"​) end) 
 +-- publish a message with data = hello, QoS = 0, retain = 0 
 +m:​publish("/​topic","​hello",​0,​0,​ function(conn) print("​sent"​) end) 
 +m:​close();​ 
 +-- you can call m:connect again 
 +</​code>​ 
 +=== UDP client and server === 
 + 
 +<code lang="​lua">​ 
 + 
 +-- a udp server 
 +s=net.createServer(net.UDP) 
 +s:​on("​receive",​function(s,​c) print(c) end) 
 +s:​listen(5683) 
 +-- a udp client 
 +cu=net.createConnection(net.UDP) 
 +cu:​on("​receive",​function(cu,​c) print(c) end) 
 +cu:​connect(5683,"​192.168.18.101"​) 
 +cu:​send("​hello"​) 
 +     
 +</​code>​
  
-And the website for the project: [[http://​nodemcu.com/​index_en.html]] 
nodemcu.txt · Last modified: 2016/02/13 12:50 by terrye