This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
nodemcu [2015/04/01 17:29] vowstar Fix format |
nodemcu [2016/02/13 12:50] terrye |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== NodeMCU ====== | ====== NodeMCU ====== | ||
+ | |||
+ | The name **NodeMCU** refers to two separate components: | ||
+ | |||
+ | * The NodeMCU **firmware** which provides a Lua development and execution environment which can run on //any// ESP8266 module with a minimum of 512Kb Flash Memory. | ||
+ | * The NodeMCU Inc manufactured **development kits**. These are low-cost breadboard-friendly modules which are aimed at providing a simple to configure and set up, hardware platform for developing ESP8266-based Lua IoT applications. | ||
+ | |||
+ | ===== Firmware ===== | ||
+ | |||
+ | This is hosted on Github in the [[https://github.com/nodemcu/nodemcu-firmware|Nodemcu Firmware Repository]] with the [[https://nodemcu.readthedocs.org/en/dev/#nodemcu-documentation|NodeMCU Documentation]] online, and an [[nodemcu-unofficial-faq|nodeMCU Unofficial FAQ]] maintained on this wiki for answers to your "Frequently Asked Questions". | ||
+ | |||
+ | ===== Hardware ===== | ||
+ | NodeMCU devkit is a development kit for NodeMCU firmware. It's aim is to make NodeMCU firmware development 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. | ||
+ | |||
+ | ==== Devkit 0.8 ==== | ||
+ | This was the original design of NodeMCU devkit which never released on general sale. | ||
+ | |||
+ | ==== 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. This uses CP2102 as UART bridge, and can flash firmware automatically by using nodemcu-flasher. It also supports Apple's MAC OS. | ||
+ | |||
+ | {{:devkit_1.0.jpg?600|}} | ||
===== Introduction ===== | ===== Introduction ===== | ||
Line 16: | Line 42: | ||
* Build-in json, file, timer, pwm, i2c, spi, 1-wire, net, mqtt, coap, gpio, wifi, adc, uart and system api. | * 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. | * GPIO pin re-mapped, use the index to access gpio, i2c, pwm. | ||
- | * Both Integer(less memory usage) and Float version firmware provided. | + | * Both Floating Point and Integer versions of the firmware can be built. |
===== Dependencies ===== | ===== Dependencies ===== | ||
- | * Build on ESP8266 sdk 0.9.5 | + | * Build on ESP8266 the current Espressif non-OS SDK. |
* Lua core based on eLua project | * Lua core based on eLua project | ||
* cjson based on lua-cjson | * cjson based on lua-cjson | ||
Line 33: | Line 59: | ||
//Better run file.format() after flash// | //Better run file.format() after flash// | ||
- | ===== Connect the hardware in serial ===== | + | ===== Connect to the hardware via serial interface ===== |
+ | Need to explain how to connect up serial portion. | ||
baudrate:9600 | baudrate:9600 | ||
Line 71: | Line 98: | ||
=== Or a simple http server === | === Or a simple http server === | ||
- | <source lang="lua"> | + | <code lang="lua"> |
- | --A simple http server | + | -- A simple http server |
- | srv=net.createServer(net.TCP) | + | srv=net.createServer(net.TCP) |
- | srv:listen(80,function(conn) | + | srv:listen(80,function(conn) |
- | conn:on("receive",function(conn,payload) | + | conn:on("receive",function(conn,payload) |
- | print(payload) | + | print(payload) |
- | conn:send("<h1> Hello, NodeMcu.</h1>") | + | conn:send("<h1> Hello, NodeMcu.</h1>") |
- | end) | + | end) |
- | conn:on("sent",function(conn) conn:close() end) | + | conn:on("sent",function(conn) conn:close() end) |
- | end) | + | end) |
- | </source> | + | </code> |
=== Connect to MQTT Broker === | === Connect to MQTT Broker === | ||
- | <source lang="lua"> | + | <code lang="lua"> |
- | --init mqtt client with keepalive timer 120sec | + | -- init mqtt client with keepalive timer 120sec |
- | m = mqtt.Client("clientid", 120, "user", "password") | + | m = mqtt.Client("clientid", 120, "user", "password") |
- | --setup Last Will and Testament (optional) | + | -- setup Last Will and Testament (optional) |
- | --Broker will publish a message with qos = 0, retain = 0, data = "offline" | + | -- Broker will publish a message with qos = 0, retain = 0, data = "offline" |
- | --to topic "/lwt" if client don't send keepalive packet | + | -- to topic "/lwt" if client don't send keepalive packet |
- | m:lwt("/lwt", "offline", 0, 0) | + | m:lwt("/lwt", "offline", 0, 0) |
- | m:on("connect", function(con) print ("connected") end) | + | m:on("connect", function(con) print ("connected") end) |
- | m:on("offline", function(con) print ("offline") end) | + | m:on("offline", function(con) print ("offline") end) |
- | --on publish message receive event | + | -- on publish message receive event |
- | m:on("message", function(conn, topic, data) | + | m:on("message", function(conn, topic, data) |
- | print(topic .. ":" ) | + | print(topic .. ":" ) |
- | if data ~= nil then | + | if data ~= nil then |
- | print(data) | + | print(data) |
- | end | + | end |
- | end) | + | end) |
- | --for secure: m:connect("192.168.11.118", 1880, 1) | + | -- for secure: m:connect("192.168.11.118", 1880, 1) |
- | m:connect("192.168.11.118", 1880, 0, function(conn) print("connected") end) | + | m:connect("192.168.11.118", 1880, 0, function(conn) print("connected") end) |
- | --subscribe topic with qos = 0 | + | -- subscribe topic with qos = 0 |
- | m:subscribe("/topic",0, function(conn) print("subscribe success") end) | + | 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) | + | -- 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) | + | -- 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 | + | -- publish a message with data = hello, QoS = 0, retain = 0 |
- | m:publish("/topic","hello",0,0, function(conn) print("sent") end) | + | m:publish("/topic","hello",0,0, function(conn) print("sent") end) |
- | m:close(); | + | m:close(); |
- | --you can call m:connect again | + | -- you can call m:connect again |
- | </source> | + | </code> |
=== UDP client and server === | === UDP client and server === | ||