狠狠撸

狠狠撸Share a Scribd company logo
NodeMCU導論
Revised on October 21, 2020
? 微控制器簡介
? ESP8266晶片
? ESP-XX開發板
? NodeMCU開發板
? 使用Arduino IDE開發ESP-XX程式
? 更新NodeMCU firmware
? 使用ESPlorer開發NodeMCU系統
? 自訂NodeMCU firmware
? 輸入單元(Input Unit)
用來接收外在資料的設備,例如:鍵盤、滑鼠、掃瞄器等
? 輸出單元(Output Unit)
將電腦內部的資料或運算的結果輸出到外界的設備,例如:螢幕、印表機、喇
叭等
電腦基本架構 1/3
2
控制單元
算術邏輯單元
主記憶體
外部儲存裝置
輸入單元 輸出單元
control bus
address bus
data bus
? 算術邏輯運算單元(Arithmetic & Logic Unit,ALU )
接收控制單元的命令,從記憶體取得資料作加、減、乘、除等各種算術運算
及大小比較,條件判斷等邏輯判斷工作,然後將處理後的結果存回記憶體
? 記憶單元(Memory Unit)
用來儲存程式和資料的地方。內部記體體主要為動態隨機存取記憶
(Dynamic Random Access Memory,DRAM),外部記憶體主要為硬
碟(Hard Disk)
? 控制單元(Control Unit,CU)
負責電腦的輸入、輸出、記憶、運算四大單元的聯繫與控制,由它負責協調
何時、何地,該由哪?個裝置進?工作
? CU與ALU在設計製造上是放?起的,稱為中央處理單元(CPU Central
Processing Unit)
電腦基本架構 2/3
3
? 位址匯流排(Address Bus)
? 在電腦系統中是CPU選擇記憶體儲存位址或I/O裝置埠的管道,像是寄信時
需要?個收件?地址?樣
? 資料匯流排(Data Bus)
? 資料匯流排在電腦系統中是傳送指令或資料的管道,當我們比喻位址匯流
排上的編碼為收件?地址時,資料匯流排上的信號則算是信件的內容
? 控制匯流排(Control Bus)
? 控制匯流排在電腦系統中包括了系統時脈、系統重置(Reset)、讀取控制
(RD)、寫入控制(WR)、無罩中斷(NMI)、可罩中斷(INTR)、中斷認可
(INTA)、停頓請求(HOLD)、停頓認可(HLDA)等等,不同款CPU,控制線
及命名也會有所差異,但皆統稱為控制匯流排
電腦基本架構 3/3
4
? 單晶片微電腦(single-chip microcomputer),又稱微控制器
(microcontroller unit,MCU),是把CPU、RAM、ROM、I/O介面等
全都整合在同?顆晶片上。也就是說?顆MCU晶片就可以看作是?部
超迷你型的電腦
? MCU最大的優點是體積小,可放在裝置內部,適合用來設計控制系統,
價格便宜,但儲存容量小,輸入輸出介面限制較多
? 商業級晶片0°? ~70°?
? 工業級晶片-40°? ~85°?
? 車用級晶片-40°? ~125°?
? 軍規級晶片-55°? ~125°?
單晶片微電腦
5
? ESP8266是上海樂鑫信息科技(Espressif Systems)開發的WiFi
MCU,可單獨當微控制器使用,也可以透過SPI/SDIO或I2C/UART介面
做為其它微控制器的Wi-Fi適配器
ESP8266 1/3
6
? 32-bit RISC CPU:
Tensilica Xtensa LX106 running at 80 MHz*
? 3.3V工作電壓
? 32 KB指令RAM
? 32 KB指令緩存RAM
? 96 KB資料記憶體
其中16 KB ETS系統數據RAM
? External QSPI flash - 512 KB to 4 MB*
(up to 16 MB is supported)
ESP8266 2/3
7
? IEEE 802.11 b/g/n Wi-Fi
可設定為AP、Station、或AP+Station模式
? 16 GPIO接腳,輸出電流約12mA
? SPI介面
? I?C介面
? I?S介面(支援DMA傳輸)
? UART on dedicated pins, plus a transmit-only UART can
be enabled on GPIO2
? 10位元ADC
ESP8266 3/3
8
? 安信可科技(AI-Thinker)使用ESP8266晶片設計WiFi開發板,分別
為ESP-01到ESP-14
ESP-XX系列開發板 1/7
9
ESP-01 ESP-07
金屬屏蔽罩
陶瓷屏天線
PCB天線
U-FL連接器
? ESP產品功能差異
? IO腳位數量
? 有無金屬屏蔽罩
? 具通過FCC CE認證的金屬屏蔽罩(ESP-06、ESP-07、ESP-12)
? 天線方式
? 可否留有U-FL連接器可自?換替天線?(如ESP-02、ESP-07)還是使
用板卡自身提供的印刷電路板佈線天線(如ESP-01)或陶瓷天線
(ESP-11)
? 韌體容量
ESP-XX系列開發板 2/7
10
? ESP-12E是ESP8266-12的增強版,完善外圍電路,增強阻抗匹配,信
號輸出更佳
? ESP-12F優化天線性能,相較於ESP-12E的通訊距離增加30%-50%
? ESP-12S為ESP-12F的更新版,在GPIO 0/2/15、EN、RST接腳內建提
升電阻
ESP-XX系列開發板 3/7
11
ESP-12S ESP-12F ESP-12E
? ESP-12N引出全部GPIO腳位, 4M位元組 SPI Flash,即NodeMCU開
發板所採用的晶片
ESP-XX系列開發板 4/7
12
GPIO6
GPIO8
GPIO7
GPIO11
RESET 低電位時重置模組
ADC 10位A/D轉換,輸入電壓0~1V
CHPD 模組工作時接高電位
D16 GPIO16或用來將模組從睡眠模式中喚醒
D14 GPIO14或HSPI_CLK
D12 GPIO12或HSPI_MISO
D13 GPIO13或HSPI_MOSI或UART0_CTS
VCC 3.3V電源供應(VDD)
ESP-XX系列開發板 5/7
13
D11 GPIO11或SPI_CS0
D7 GPIO7或SPI_MISO
D9 GPIO9
D10 GPIO8
D8 GPIO8或SPI_MOSI
D6 GPIO6或SPI_CLK
ESP-XX系列開發板 6/7
14
GND GND
D15 GPIO15或HSPICS或UART0_RTS
D2 GPIO2或UART1_TXD(內建LED)
D0 GPIO0(接低電位時,進入bootloader模式燒錄程式)
D4 GPIO4或I2C SDA(Serial Data Line)
D5 GPIO5或I2C SCL(Serial Clock Line)
D3 GPIO3或UART0_RXD
D1 GPIO1或UART0_TXD
ESP-XX系列開發板 7/7
15
? 目前有三種方式使用ESP8266模組
? 將ESP8266裝置當作Arduino相容硬體,使用Arduino IDE工具開發應用
程式
? 將ESP8266裝置當作Arduino平台的網路模組
? Arduino端使用ESP8266模組函式庫
? 在ESP8266安裝Lua RTOS即時作業系統(firmware),撰寫Lua應用程式上
傳至ESP8266
開發ESP8266應用系統
16
? 選單命令File>Preferences
? Additional Boards Manager URLs:欄輸入
http://arduino.esp8266.com/stable/package_esp8266com_index.json
使用Arduino IDE開發ESP-XX程式 1/3
17
? 選單命令Tools>Board>Boards Manager...,點選esp8266模組,
之後按下Install按鈕安裝ESP8266硬體套件
使用Arduino IDE開發ESP-XX程式 2/3
18
? 設定使用ESP8266模組
? 選單命令Tools>Board>Generic ESP8266 Module
使用Arduino IDE開發ESP-XX程式 3/3
19
? 有5V與3.3V二款, ESP8266需使用3.3V
FTDI USB to Serial轉接器
20
Mini-B USB (接PC)
? 每次燒錄要先斷開USB再重新連接USB
燒錄程式接線
21
VCC
RST
CH_PD
TXD
RXD
GPIO0
GPIO2
GND
RX>TX
TX>RX
GND
VCC
CH_PD
ESP8266(ESP-01) 3.3V FTDI USB/UART
GPIO 0
? 上傳程式後GPIO 0就可做為?般使用
測試程式接線
22
VCC
RST
CH_PD
TXD
RXD
GPIO0
GPIO2
GND
RX>TX
TX>RX
GND
VCC
CH_PD
ESP8266(ESP-01) 3.3V FTDI USB/UART
? 結合UART晶片提供micro USB介面,方便系統開發測試
NodeMCU開發板 1/3
23
? NodeMCU V2使用CP2102 UART晶片
NodeMCU開發板 2/3
24
? NodeMCU V3使用CH340G UART晶片,引出外接5V及GND接腳
NodeMCU開發板 3/3
25
? Arduino IDE選單命令File> Preferences
? Additional Boards Manager URLs:欄輸入
http://arduino.esp8266.com/stable/package_esp8266com_index.json
以Arduino相容模式開發應用程式 1/4
26
? 選單命令Tools> Board> Boards Manager...,點選esp8266模組,
之後按下Install按鈕安裝ESP8266硬體套件
以Arduino相容模式開發應用程式 2/4
27
? 選單命令Tools> Board> NodeMCU 1.0(ESP-12E Module)
以Arduino相容模式開發應用程式 3/4
28
以Arduino相容模式開發應用程式 4/4
29
NodeMCU Lua應用系統架構
30
Hardware
Firmware
Software
NodeMCUIoTPlatform
? 下載NodeMCU Firmware燒錄工具ESP8266 Flasher
? https://github.com/nodemcu/nodemcu-flasher
? 使用ESP8266 Flasher更新NodeMCU Firmware
? Advanced設定
燒錄NodeMCU firmware 1/5
31
? Config設定
? 勾選使用INTERNAL://NODEMCU (ESP8266 Flasher內建的firmware)
燒錄NodeMCU firmware 2/5
32
? Operation
? 點擊Flash按鈕即開始燒錄Firmware
燒錄NodeMCU firmware 3/5
33
? 也可下載NodeMCU最新預建的Firmware
? https://github.com/iotcafe/nodemcu-firmware-
lua5.3.0/tree/master/pre_build/latest
燒錄NodeMCU firmware 4/5
34
? 指定燒錄nodemcu_latest.bin
燒錄NodeMCU firmware 5/5
35
? 下載ESPlorer
? http://esp8266.ru/esplorer-latest/?f=ESPlorer.zip
? 開啟ESPlorer
? 點擊Open按鈕
NodeMCU Lua應用程式設計 1/3
36
? 按?下NodeMCU Reset按鈕
NodeMCU Lua應用程式設計 2/3
37
? 撰寫Lua程式
ledPin = 4 -- nodeMCU腳位編號D4,即GPIO2
gpio.mode(ledPin, gpio.OUTPUT) -- 設定D4為輸出
while true do
gpio.write(ledPin, gpio.HIGH)
tmr.delay(1000000)
gpio.write(ledPin, gpio.LOW)
tmr.delay(1000000)
end
? 按下Save to ESP按鈕
NodeMCU Lua應用程式設計 3/3
38
? https://nodemcu-build.com/index.php
自訂NodeMCU Lua Firmware 1/19
39
? 勾選firmware內建模組,各模組皆提供?組對應的APIs
自訂NodeMCU Lua Firmware 2/19
40
? ADC Module
? 提供存取內建ADC API
? ADS1115 Module
? ADS1115 (16-Bit)及ADS1015 (12-Bit)ADC控制API ,I2C介面
? ADXL345 Module
? ADXL345三軸加速度計控制API ,I2C介面
? AM2320 Module
? AM2320溫度、濕度感測器控制API,I2C介面
? APA102 Module
? APA102 RGB LED控制API,SPI介面
自訂NodeMCU Lua Firmware 3/19
41
? APA102 Module
? 提供位元運算API
? Bloom Module
? 提供實作布隆過濾器功能的API,需要crypto Module
? BME280 Module
? BME280/BMP280氣壓、溫度、濕度感測器控制API,I2C介面
? BME680 Module
? BME680空氣品質、氣壓、溫度、濕度感測器控制API,I2C介面
? BMP085 Module
? BMP085氣壓、溫度感測器控制API,I2C介面
自訂NodeMCU Lua Firmware 4/19
42
? CoAP Module
? 提供CoAP(The Constrained Application Protocol)傳輸協定API
? color utils Module
? 提供HSV與GRB顏色值轉換API
? Cron Module
? 提供實時時鐘(Real-time clock)運算API
? crypto Module
? 提供了用於加密演算法的API
? DCC module
? 提供國家鐵道模型協會(National Model Railroad Association,
NMRA)DCC數位控制解碼的API
自訂NodeMCU Lua Firmware 5/19
43
? DHT Module
? DHT 11/21/22/33/44溫度、濕度感測器控制API
? encoder Module
? 提供實作對位元組資料編碼、解碼的API
? enduser setup Module aka Captive Portal aka WiFi
Manager
? 提供配置ESP8266 WiFi的使用者介面,而無需使用串列埠或在程式中編
寫WiFi憑證
? file Module
? 提供存取檔案系統的API
自訂NodeMCU Lua Firmware 6/19
44
? gdbstub Module
? 提供韌體基本的原始碼偵錯功能
? GPIO Module
? 提供存取GPIO(General Purpose Input/Output)子系統API
? GPIO pulse Module
? 提供API在GPIO多個引腳上產生具有精確定時的脈衝序列
? HDC1080 Module
? HDC1080低功耗、高精度數位溫濕度感測器控制API,I2C介面
? HMC5883L Module
? HMC5883L三軸數位羅盤控制API,I2C介面
自訂NodeMCU Lua firmware 7/19
45
? HTTP Module
? 提供HTTP用戶端執?GET/POST/PUT/DELETE請求API
? HX711 Module
? HX711低價位的24位ADC,具有可編程128x,64x和32x增益的電子稱重感
測器控制API,I2C介面
? I2C Module
? 提供GPIO軟體式I2C傳輸API
? L3G4200D Module
? 三軸數位陀螺儀控制API,I2C介面
自訂NodeMCU Lua firmware 8/19
46
? MCP4725 Module
? MCP4725 12位元DA轉換器控制API,I2C介面
? mDNS Module
? 支援群播DNS服務(Bonjour/Zeroconf服務的?部分)API,可使系統可以
識別自己以及在局域網上提供的服務。客戶端隨後可以發現這些系統並連
接到它們。
? MQTT Module
? 提供MQTT 3.1.1協定用戶端API
? net Module
? 提供TCP/UDP協定API
自訂NodeMCU Lua firmware 9/19
47
? node Module
? 提供系統層級功能API,例如睡眠、重新啟動等
? 1-Wire Module
? 提供與1-Wire裝置資料傳輸API
? PCM Module
? 提供聲音輸出API,可透過內建的sigma-delta generator,搭配外接低
通濾波器來合成音頻
? perf Module
? 提供應用程式效能分析API,每50us對程式計數值採樣並儲存,可用來分
析應用程式效能
自訂NodeMCU Lua firmware 10/19
48
? PWM Module
? 提供PWM訊號輸出API,所有輸出腳位共用相同PWM頻率
? PWM2 Module
? 提供PWM訊號輸出API,允許設定不同PWM頻率
? rfswitch Module
? 433/315Mhz RF遙控模組控制API,支援SC5262/SC5272,
HX2262/HX2272,PT2262/PT2272,EV1527,RT1527,FP1527
或HS1527晶片組
? rotary Module
? 旋轉編碼開關控制API
自訂NodeMCU Lua firmware 11/19
49
? RTC FIFO Module
? 提供先進先出存儲API
? RTC User Memory Module
? 提供存取RTC(實時時鐘)記憶體的API
? RTC Time Module
? 提供進階存取RTC(實時時鐘)的API
? Si7021 Module
? Si7021溫度、濕度感測器控制API,I2C介面
? Sigma-delta Module
? 提供對sigma-delta元件控制API
自訂NodeMCU Lua firmware 12/19
50
? SJSON Module
? 提供JSON格式編碼/解碼API
? SNTP Module
? 提供SNTP(Simple Network Time Procotol)協定用戶端API
? SoftUART Module
? 提供使用GPIO做UART端口API
? Somfy Module
? Somfy窗簾遙控(透過433.42 MHz RF發射器)API
? SPI Module
? 提供SPI資料傳輸API
自訂NodeMCU Lua firmware 13/19
51
? struct Module
? 提供Lua值與C結構之間相互轉換的API
? Switec Module
? Switec X.27(或相容)步進馬達控制API
? TCS34725 Module
? TCS34725顏色感測器控制API,I2C介面
? TM1829 Module
? TM1829全彩LED控制API
? Timer Module
? 提供計時器作業API
自訂NodeMCU Lua firmware 14/19
52
? TSL2561 Module
? TSL2561光照強度感測器控制API,I2C介面
? u8g2 Module
? 提供通用8位元圖形顯示器的API
? UART Module
? 提供UART端口資料傳輸API
? ucg Module
? 提供彩色TFT顯示器的API
? Websocket Module
? 提供Websocket用戶端API
自訂NodeMCU Lua firmware 15/19
53
? WiFi Module
? 提供WiFi設定API
? WiFi.monitor Module
? 提供WiFi監控模式API
? WPS Module
? 提供無線網路WPS連線API
? WS2801 Module
? WS2801全彩LED控制API,I2C介面
? WS2812 Module
? WS2812全彩LED控制API,I2C介面
自訂NodeMCU Lua firmware 16/19
54
? WS2812 effects Module
? WS2812全彩LED特效控制API,I2C介面
? XPT2046 Module
? XPT2046觸控顯示器控制API
自訂NodeMCU Lua firmware 17/19
55
? LFS選項設定
Lua開發者必須設定LFS選項,才有儲存Lua程式的檔案區
? LFS size,預設為none表示不關閉LFS功能,最多256Kb
? SPIFFS base,對具備4Mb flash記憶體的模組,建議使用1024Kb;否則
保留預設值0即可
? SPIFFS size,保留預設值即可
自訂NodeMCU Lua firmware 18/19
56
? 按下Start your build按鈕,約10分鐘後就會收到NodeMCU
custom build finished通知郵件
? 有浮點運算及整數運算二種版本,保留24小時供下載
自訂NodeMCU Lua firmware 19/19
57
? ESP8266 Flasher程式之Config設定
? 指定燒錄nodemcu-master-17-modules-2020-08-27-14-58-48-
float.bin
更新NodeMCU firmware 1/3
58
? Operation
? 點擊Flash按鈕即開始燒錄Firmware
更新NodeMCU firmware 2/3
59
? ESPlorer測試
更新NodeMCU firmware 3/3
60
? https://nodemcu.readthedocs.io/en/master/
NodeMCU Documentation
61

More Related Content

nodeMCU IOT教學03 - NodeMCU導論