<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=NodeMCU</id>
	<title>NodeMCU - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=NodeMCU"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=NodeMCU&amp;action=history"/>
	<updated>2026-07-08T03:34:45Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=NodeMCU&amp;diff=2547177&amp;oldid=prev</id>
		<title>imported&gt;Innova 来自 2025年4月29日 (二) 05:14</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=NodeMCU&amp;diff=2547177&amp;oldid=prev"/>
		<updated>2025-04-29T05:14:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{howto|time=2015-04-02T09:53:12+00:00}}&lt;br /&gt;
{{expert|time=2015-04-02T01:37:54+00:00}}&lt;br /&gt;
{{NoteTA|G1=IT}}&lt;br /&gt;
{{Infobox computer&lt;br /&gt;
| name        = NodeMCU&lt;br /&gt;
| logo        = &lt;br /&gt;
| image       = NodeMCU DEVKIT 1.0 BETA.JPG&lt;br /&gt;
| caption     = NodeMCU DEVKIT 1.0 BETA&lt;br /&gt;
| developer   = ESP8266开源社区&lt;br /&gt;
| releasedate = &lt;br /&gt;
| type        = [[片上系统]]&lt;br /&gt;
| price       = &lt;br /&gt;
| cpu         = ESP8266&amp;lt;ref&amp;gt;Kumar, Abhijeet, and Apoorva Sharma. &amp;quot;Internet of Life (IOL).&amp;quot; (2015). ISBN 978-93-5156-328-0&amp;lt;/ref&amp;gt;(LX106&amp;lt;ref name=8266sdk&amp;gt;{{cite web|last1=Brian Benchoff|title=An SDK for the ESP8266 Wi-Fi chip|website=Hackaday|accessdate=2 April 2015}}&amp;lt;/ref&amp;gt;)&lt;br /&gt;
| graphics    = &lt;br /&gt;
| storage     = 4MBytes&amp;lt;ref&amp;gt;{{cite web|last1=Vowstar|title=NodeMCU Devkit|url=https://github.com/nodemcu/nodemcu-devkit|website=Github|publisher=NodeMCU Team|accessdate=2 April 2015|archive-date=2015-08-15|archive-url=https://web.archive.org/web/20150815044219/https://github.com/nodemcu/nodemcu-devkit|dead-url=no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| memory      = 20kBytes&lt;br /&gt;
| os          = XTOS&lt;br /&gt;
| power       = USB&lt;br /&gt;
| website     = http://www.nodemcu.com&lt;br /&gt;
}}&lt;br /&gt;
[[File:NodeMCU DEVKIT 1.0 BETA back.JPG|thumb|NodeMCU DEVKIT 1.0 BETA 背面]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NodeMCU&amp;#039;&amp;#039;&amp;#039;是一个开源&amp;lt;ref name=&amp;#039;NodeMCU Github&amp;#039;&amp;gt;{{Cite web |url=https://github.com/nodemcu/ |title=存档副本 |accessdate=2015-04-01 |archive-date=2015-08-12 |archive-url=https://web.archive.org/web/20150812091816/https://github.com/nodemcu |dead-url=no }}&amp;lt;/ref&amp;gt;的[[物联网]]平台。 它使用[[Lua]]脚本语言编程&amp;lt;ref name=&amp;#039;NodeMCU Github&amp;#039; /&amp;gt;。该平台基于[[eLua]] &amp;lt;ref name = &amp;#039;elua&amp;#039;&amp;gt;{{Cite web |url=http://www.eluaproject.net/ |title=存档副本 |accessdate=2015-04-01 |archive-date=2010-12-27 |archive-url=https://web.archive.org/web/20101227065731/http://www.eluaproject.net/ |dead-url=yes }}&amp;lt;/ref&amp;gt;开源项目,底层使用ESP8266 sdk 0.9.5版本。该平台使用了很多开源项目, 例如 lua-cjson&amp;lt;ref name=&amp;#039;lua-cjson&amp;#039;&amp;gt;{{Cite web |url=https://github.com/mpx/lua-cjson/ |title=存档副本 |accessdate=2015-04-01 |archive-date=2015-12-31 |archive-url=https://web.archive.org/web/20151231223413/https://github.com/mpx/lua-cjson |dead-url=no }}&amp;lt;/ref&amp;gt;, spiffs&amp;lt;ref name=&amp;#039;spiffs&amp;#039;&amp;gt;{{Cite web |url=https://github.com/pellepl/spiffs |title=存档副本 |accessdate=2015-04-01 |archive-date=2015-11-03 |archive-url=https://web.archive.org/web/20151103063952/https://github.com/pellepl/spiffs |dead-url=no }}&amp;lt;/ref&amp;gt;. NodeMCU包含了可以运行在 [[esp8266]] [[Wi-Fi]] [[SoC]]芯片之上的固件,以及基于ESP-12模组的硬件。&lt;br /&gt;
&lt;br /&gt;
{{transH}}&lt;br /&gt;
== History ==&lt;br /&gt;
NodeMCU is started after ESP8266 come out. In December 30, 2013, Espressif systems begin production of ESP8266.&amp;lt;ref&amp;gt;{{cite news|last1=Espressif system|title=IoT Wi-Fi 802.11b/g/n integrated SoC implementation of volume production|url=http://article.liepin.com/20140701/365564.shtml|accessdate=2 April 2015|publisher=中国上海讯|date=December 30, 2013|archive-url=https://web.archive.org/web/20150402133249/http://article.liepin.com/20140701/365564.shtml|archive-date=2015-04-02|dead-url=yes}}&amp;lt;/ref&amp;gt; ESP8266 is an Wi-Fi SoC and integrated with LX106 core, widely used in IoT applications(See related projects&amp;lt;ref name=&amp;quot;the button&amp;quot; /&amp;gt;&amp;lt;ref name = &amp;quot;node usb&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;ijwatch&amp;quot; /&amp;gt;). In 13 Oct 2014, Hong committed first file of nodemcu-firmware to github,&amp;lt;ref&amp;gt;{{cite web|last1=Hong|title=First commit of NodeMCU Firmware|url=https://github.com/nodemcu/nodemcu-firmware/commit/9c98808289d0863a41c695e03d4067424fc1cdec|website=Github|accessdate=2 April 2015|archive-date=2021-08-15|archive-url=https://web.archive.org/web/20210815231329/https://github.com/nodemcu/nodemcu-firmware/commit/9c98808289d0863a41c695e03d4067424fc1cdec|dead-url=no}}&amp;lt;/ref&amp;gt; NodeMCU project started. And then more and more developers from ESP8266 opensource community join in NodeMCU developer team. On 1 Dec 2014, Huang R commit the [[gerber]] file of an ESP8266 board, then NodeMCU project have the first open-hardware which named devkit 1.0,&amp;lt;ref name=&amp;quot;init devkit&amp;quot;&amp;gt;{{cite web|last1=Huang R.|title=Initial design of NodeMCU devkit|url=https://github.com/nodemcu/nodemcu-devkit/commit/3c155e5a9f24aa8463aef8c7b011c69e94fcd9c7|website=Github|accessdate=2 April 2015|archive-date=2021-08-15|archive-url=https://web.archive.org/web/20210815231915/https://github.com/nodemcu/nodemcu-devkit/commit/3c155e5a9f24aa8463aef8c7b011c69e94fcd9c7|dead-url=no}}&amp;lt;/ref&amp;gt; thus NodeMCU is not only a firmware, it becomes a platform. In 31 Dec 2014, Tuan PM port MQTT client library from [[Contiki]] to ESP8266 SoC platform,&amp;lt;ref name=&amp;quot;mqtt client&amp;quot;&amp;gt;{{cite web|last1=Tuan PM|title=MQTT client library for ESP8266|url=https://github.com/tuanpmt/esp_mqtt|website=Github|accessdate=2 April 2015|archive-date=2017-01-02|archive-url=https://web.archive.org/web/20170102213009/https://github.com/tuanpmt/esp_mqtt|dead-url=no}}&amp;lt;/ref&amp;gt; and commit to NodeMCU project, then NodeMCU can support MQTT IoT protocol, using Lua access MQTT broker, it is an important update of firmware. Another important update is in 30 Jan 2015, Devsaurus port u8glib&amp;lt;ref name=u8g&amp;gt;{{cite web|last1=Olikraus|last2=Daniel Sittig|title=Universal Graphics Library for 8 Bit Embedded Systems|url=https://code.google.com/p/u8glib/|website=Google code|accessdate=2 April 2015|archive-date=2015-04-06|archive-url=https://web.archive.org/web/20150406215024/http://code.google.com/p/u8glib/|dead-url=no}}&amp;lt;/ref&amp;gt; to NodeMCU project,&amp;lt;ref name=u8glib&amp;gt;{{cite web|last1=Devsaurus|title=U8glib for esp8266|url=https://github.com/devsaurus/nodemcu-firmware/commit/33601462efdcea189f1f20f2cece66581ee57951|website=Github|accessdate=2 April 2015|archive-date=2021-08-15|archive-url=https://web.archive.org/web/20210815232715/https://github.com/devsaurus/nodemcu-firmware/commit/33601462efdcea189f1f20f2cece66581ee57951|dead-url=no}}&amp;lt;/ref&amp;gt; and NodeMCU can drive LCD, Screen, OLED, even VGA display module easily.&lt;br /&gt;
{{transF}}&lt;br /&gt;
&lt;br /&gt;
== Pins腳 ==&lt;br /&gt;
NodeMCU 提供對 [[GPIO]]（通用輸入/輸出）的存取控制，並且引腳映射表是 API 文件的一部分。 &amp;lt;ref&amp;gt;{{Cite web|url=https://nodemcu.readthedocs.io/en/latest/en/modules/gpio/|title=gpio - NodeMCU Documentation|website=nodemcu.readthedocs.io|language=en|access-date=2018-11-11}}&amp;lt;/ref&amp;gt;   &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!I/O index&lt;br /&gt;
!ESP8266 pin&lt;br /&gt;
|-&lt;br /&gt;
|0 [*]&lt;br /&gt;
|GPIO16&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GPIO5&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|GPIO4&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|GPIO0&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|GPIO2&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|GPIO14&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|GPIO12&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|GPIO13&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|GPIO15&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|GPIO3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|GPIO1&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|GPIO9&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|GPIO10&lt;br /&gt;
|}&lt;br /&gt;
[*] D0 (GPIO16) 只能用於GPIO讀/寫。它不支援open-drain/interrupt/PWM/I²C 或 1-Wire。&lt;br /&gt;
&lt;br /&gt;
== 硬體連接 ==&lt;br /&gt;
如果使用 NodeMCU devkit, 只需要安裝 CH340G 驅動程式&amp;lt;ref name=&amp;#039;dev board&amp;#039; /&amp;gt;, 並且將開發模組使用micro-usb 線連接到電腦。 然後，將波特率設為9600, 並打開序列埠。若使用普通的esp8266模组, 則必須準備usb-ttl 轉接器。&lt;br /&gt;
&lt;br /&gt;
== 固件烧写 ==&lt;br /&gt;
nodemcu_latest.bin: 0x00000&amp;lt;br /&amp;gt; 对于大多数 esp8266 模块, 直接拉低 GPIO0 引脚的电平，并且重新上电或重启。&amp;lt;br /&amp;gt; 可以使用 [https://github.com/nodemcu/nodemcu-flasher nodemcu-flasher]{{Wayback|url=https://github.com/nodemcu/nodemcu-flasher |date=20160101001705 }} 烧写固件&amp;lt;ref name=&amp;#039;dev board&amp;#039;&amp;gt;{{Cite web |url=http://www.electrodragon.com/w/ESP8266_NodeMCU_Dev_Board |title=存档副本 |accessdate=2015-04-01 |archive-date=2015-04-02 |archive-url=https://web.archive.org/web/20150402132100/http://www.electrodragon.com/w/ESP8266_NodeMCU_Dev_Board |dead-url=no }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
特别的，如果你想编译/构建自己的固件，需要注意以下烧写地址：&amp;lt;br /&amp;gt; 0x00000.bin: 0x00000&amp;lt;br /&amp;gt; 0x10000.bin: 0x10000&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
注意，&amp;#039;&amp;#039;在烧写之后，最好执行 file.format() &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== 程式举例 ==&lt;br /&gt;
=== 连接Wi-Fi热点 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;    ip = wifi.sta.getip()&lt;br /&gt;
    print(ip)&lt;br /&gt;
    --nil&lt;br /&gt;
    wifi.setmode(wifi.STATION)&lt;br /&gt;
    wifi.sta.config(&amp;quot;SSID&amp;quot;,&amp;quot;password&amp;quot;)&lt;br /&gt;
    ip = wifi.sta.getip()&lt;br /&gt;
    print(ip)&lt;br /&gt;
    --192.168.18.110&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== 如同[[arduino]]般操作硬体 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;    pin = 1&lt;br /&gt;
    gpio.mode(pin,gpio.OUTPUT)&lt;br /&gt;
    gpio.write(pin,gpio.HIGH)&lt;br /&gt;
    print(gpio.read(pin))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== 使用 nodejs 风格网络编程 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;    -- A simple http client&lt;br /&gt;
    conn=net.createConnection(net.TCP, 0)&lt;br /&gt;
    conn:on(&amp;quot;receive&amp;quot;, function(conn, payload) print(payload) end )&lt;br /&gt;
    conn:connect(80,&amp;quot;115.239.210.27&amp;quot;)&lt;br /&gt;
    conn:send(&amp;quot;GET / HTTP/1.1\r\nHost: www.baidu.com\r\n&amp;quot;&lt;br /&gt;
        ..&amp;quot;Connection: keep-alive\r\nAccept: */*\r\n\r\n&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== 简易的HTTP伺服器 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;    -- A simple http server&lt;br /&gt;
    srv=net.createServer(net.TCP)&lt;br /&gt;
    srv:listen(80,function(conn)&lt;br /&gt;
      conn:on(&amp;quot;receive&amp;quot;,function(conn,payload)&lt;br /&gt;
        print(payload)&lt;br /&gt;
        conn:send(&amp;quot;&amp;lt;h1&amp;gt; Hello, NodeMcu.&amp;lt;/h1&amp;gt;&amp;quot;)&lt;br /&gt;
      end)&lt;br /&gt;
      conn:on(&amp;quot;sent&amp;quot;,function(conn) conn:close() end)&lt;br /&gt;
    end)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== 连接 MQTT Broker ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;-- init mqtt client with keepalive timer 120sec&lt;br /&gt;
m = mqtt.Client(&amp;quot;clientid&amp;quot;, 120, &amp;quot;user&amp;quot;, &amp;quot;password&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- setup Last Will and Testament (optional)&lt;br /&gt;
-- Broker will publish a message with qos = 0, retain = 0, data = &amp;quot;offline&amp;quot;&lt;br /&gt;
-- to topic &amp;quot;/lwt&amp;quot; if client don&amp;#039;t send keepalive packet&lt;br /&gt;
m:lwt(&amp;quot;/lwt&amp;quot;, &amp;quot;offline&amp;quot;, 0, 0)&lt;br /&gt;
&lt;br /&gt;
m:on(&amp;quot;connect&amp;quot;, function(con) print (&amp;quot;connected&amp;quot;) end)&lt;br /&gt;
m:on(&amp;quot;offline&amp;quot;, function(con) print (&amp;quot;offline&amp;quot;) end)&lt;br /&gt;
&lt;br /&gt;
-- on publish message receive event&lt;br /&gt;
m:on(&amp;quot;message&amp;quot;, function(conn, topic, data)&lt;br /&gt;
  print(topic .. &amp;quot;:&amp;quot; )&lt;br /&gt;
  if data ~= nil then&lt;br /&gt;
    print(data)&lt;br /&gt;
  end&lt;br /&gt;
end)&lt;br /&gt;
&lt;br /&gt;
-- for secure: m:connect(&amp;quot;192.168.11.118&amp;quot;, 1880, 1)&lt;br /&gt;
m:connect(&amp;quot;192.168.11.118&amp;quot;, 1880, 0, function(conn) print(&amp;quot;connected&amp;quot;) end)&lt;br /&gt;
&lt;br /&gt;
-- subscribe topic with qos = 0&lt;br /&gt;
m:subscribe(&amp;quot;/topic&amp;quot;,0, function(conn) print(&amp;quot;subscribe success&amp;quot;) end)&lt;br /&gt;
-- or subscribe multiple topic (topic/0, qos = 0; topic/1, qos = 1; topic2 , qos = 2)&lt;br /&gt;
-- m:subscribe({[&amp;quot;topic/0&amp;quot;]=0,[&amp;quot;topic/1&amp;quot;]=1,topic2=2}, function(conn) print(&amp;quot;subscribe success&amp;quot;) end)&lt;br /&gt;
-- publish a message with data = hello, QoS = 0, retain = 0&lt;br /&gt;
m:publish(&amp;quot;/topic&amp;quot;,&amp;quot;hello&amp;quot;,0,0, function(conn) print(&amp;quot;sent&amp;quot;) end)&lt;br /&gt;
&lt;br /&gt;
m:close();&lt;br /&gt;
-- you can call m:connect again&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== UDP 客户端与伺服器 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;-- a udp server&lt;br /&gt;
s=net.createServer(net.UDP)&lt;br /&gt;
s:on(&amp;quot;receive&amp;quot;,function(s,c) print(c) end)&lt;br /&gt;
s:listen(5683)&lt;br /&gt;
&lt;br /&gt;
-- a udp client&lt;br /&gt;
cu=net.createConnection(net.UDP)&lt;br /&gt;
cu:on(&amp;quot;receive&amp;quot;,function(cu,c) print(c) end)&lt;br /&gt;
cu:connect(5683,&amp;quot;192.168.18.101&amp;quot;)&lt;br /&gt;
cu:send(&amp;quot;hello&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 引用文献 ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
{{环境智能}}&lt;br /&gt;
&lt;br /&gt;
[[Category:开源硬件]]&lt;br /&gt;
[[Category:微控制器]]&lt;br /&gt;
[[Category:物联网]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Innova</name></author>
	</entry>
</feed>