01 NodeMCU與物聯網入門

(2021/03/26)

教材:http://gg.gg/0410nkust

上課地點:國立高雄科技大學 楠梓校區(原 海科大) 寰宇樓 2104教室(一樓,需脫鞋)

上課時間:

    • 110年04月10日(六) 13:00-18:00

  • 110年04月11日(日) 13:00-17:00

講師:黃文玉老師 (shspswenyu@gmail.com)

  • 高雄市新上國小電腦老師

  • 高雄市SCRATCH推廣教師

  • 教育部中小學教師運算思維增能研習種子教師

  • Facebook S4A社團管理員之一

  • 致力Scratch、Arduino、micro:bit、Web:Bit、凱比機器人等程式教育及創客教育的推廣(分享一系列的文章)

主題:NodeMCU與物聯網入門

認識NodeMCU練習題:

  • 題目一:點亮NodeMCU ESP8266旁的內建LED燈(integrated LED)

  • 題目二:點亮接在NodeMCU上的三色LED燈

  • 題目三:讀取光敏電阻的值,並顯示在序列埠監控視窗

  • 題目四:按鍵的使用

  • 題目五:蜂鳴器的使用

  • 題目六:LCD顯示器的使用

  • 題目七:溫濕度感測器的使用

  • 題目八:超音波測距模組的使用

  • 題目九:伺服馬達的使用

  • 上面題目使用motoblockly來寫程式的教材:01 NodeMCU入門課程

零、 NodeMCU(硬體)及bDesigner(軟體)介紹

  • 認識 NodeMCU

    • Ai-Thinker原裝產品,採用樂鑫原廠Espressif ESP8266之Wi-Fi SoC、CP2120 USB轉UART,原裝品質保證非其他山寨產品可比擬。

    • NodeMCU本身就是一顆包含ESP8266 Wi-Fi的微控制器,本身就可以做到控制、資料處理、運算,不要再用ESP8266 + Arduino Uno做應用了

    • NodeMCU官方內建的是eLua的韌體,為直譯語言,可以用ESplorer開發,也可以用Arduino IDE進行開發。常用的感測器及模組(如: 溫濕度感測、OLED螢幕、三軸感測器等…)大多能直接支援,並包含完整的網路協議,能迅速開發進行物聯網相關應用

    • 特點:

      • 採用內建 WiFi 通訊功能之 ESP8266

      • 新板 ESP-12E 具備大容量 4MB Flash

      • 基於 eLua 之開源專案、可自行編譯

      • 交談式開發與除錯使用者自訂之應用程式

      • 可燒錄使用者自自訂之應用 scripts

      • 低成本、簡單、智慧、好玩

      • 豐富的中、英文資料,輕易進入物聯網開發

      • 第二代電路板設計特別適合進行麵包板實驗

      • NodeMCU Lua v2 之 USB to TTL 晶片,已改用功能更完整、穩定的 SiLab CP2102,可隨插即用

    • 技術規格:

      • 支持無線802.11 b/g/n 標準;

      • 支持STA/AP/STA+AP 三種工作模式;

      • 內置TCP/IP協議棧,支持多路TCP Client連接(5 MAX);

      • HSPI,UART,I2C,I2S,紅外遙控器,PWM,GPIO;

      • D0~D8,SD1~SD3:用作GPIO,PWM,IIC等,端口驅動能力15mA;

      • AD0:1路ADC;

      • 電源輸入:4.5V~9V(10VMAX),支持USB供電,提供USB調試接口;

      • 工作電流:持續發送:≈70mA(200mA MAX),待機:<200uA;

      • 傳輸速率:110-460800bps;

      • 支持UART/GPIO數據通信接口;

      • 支持遠程固件升級(OTA);

      • 支持Smart Link 智能聯網功能;

      • 支持Smart Config 功能(包括Android 和iOS 設備);

      • 工作溫度:-40℃~+125℃;

      • 驅動形式:雙路大功率H橋驅動

      • 尺寸:48.26mm(長)、25.4mm(寬)、3mm(高)

      • 重量:約5g

    • 腳位圖

  • 認識 bDesigner

    • 官網:https://bdesigner1.webnode.tw/

    • 說明:bDesigner是一套由桃園市八德國小蔡佳倫老師自行研發之Scratch擴充積木軟體以及blockly程式,目前開放給中小學老師自由使用。bDesigner的scratch有別於其他的擴充積木軟體,它具有網頁控制、支援多組arduino uno和nodeMCU板子、micro:bit板子的特性,而blockly目前正朝向可以編譯出nodeMCU....

    • 檔案下載:

    • 軟體安裝:點擊下載檔即可安裝

    • 主畫面:點擊桌面上的bDesigner捷徑即可進入主畫面

    • 本文的主角為NodeMCU,本課程為介紹如何用bDesigner來撰寫NodeMCU的程式

    • 前置作業

    • 安裝NodeMCU的驅動程式,讓電腦認識NodeMCU

      • 下載NodeMCU(ESP8266)的函式庫,讓Arduino IDE認識NodeMCU

      • 偵測使用的PORT

      • 也可從【裝置管理員】去查得

    • 進入寫NodeMCU積木程式

    • 前置作業完成,可以開始寫程式來控制NodeMCU了

題目一:點亮NodeMCU ESP8266旁的內建LED燈(integrated LED)

  • integrated LED使用的腳位為D4(GPIO2)

  • 利用拖曳的方法,完成如下的程式

    • 燒錄程式(上傳程式到NodeMCU)

    • 程式上傳結束後,發現下圖的藍色LED燈會閃爍(integrated LED在高電位(1)的時侯是暗燈、在低電位(0)的時侯是亮燈

題目二:點亮接在NodeMCU上的三色LED燈

  • 三色LED燈的三腳分別接於 D0(GPIO16)、D1(GPIO5)、D2(GPIO4) ,負極接於GND(利用4條母母杜邦線),如下圖:

  • 程式如下:(先亮紅燈,再亮綠燈,再亮藍燈)

  • 先不拆掉,待會做天黑請開燈

題目三:讀取光敏電阻(或電位計)的值,並顯示在序列埠監控視窗

  • 光敏電阻的A0針腳接在A0上,VCC接在3.3V ,GND接在GND上(3條母母杜邦線),如下圖:

  • 程式如下:

    • 程式上傳後,監看如下:利用手去遮光敏電阻,A0的值會改變 (A0值介於1~1024間;亮時A0值較小,暗時A0值較大)

    • 天黑請開燈,要燒錄程式時,記得把監控視窗關掉(占到連接埠了)

  • 也可以使用在【電位計】(可變電阻器)上,中間的腳位接在A0,兩邊的腳位接在3.3V及GND上(兩腳位置可互換,旋轉電位計的值變化剛好相反),如下圖:

題目四:按鍵的使用

  • 將按鍵模組的S針腳接在D3(GPIO0)上,+接在3.3V ,-接在GND上,如下圖:

  • 程式如下:

    • 監看結果,如下

  • 按下按鍵開燈,放開時關燈

  • 按一下開燈、按一下關燈

    • 與其他積木比較不同的是:這邊變數的初始化積木要放在啟動之前

題目五:蜂鳴器的使用

  • 將蜂鳴器的一針腳接在D6(GPIO12)上,另一針腳接在GND上(沒有正負分,兩線可互換位置),如下圖:

  • 程式如下:

    • 下面是全家便利商店入店時的音樂 (簡譜:3 1 5(低音) 1 / 2 5~ 2 / 3 2 5(低音) 1)

      • C5為中音的Do,後方一定要有等待時間才會發出聲音

      • 音階--頻率對照表(單位:Hz)

題目六:LCD顯示器的使用

  • I2C 1602 LCD顯示器的GND接到(NodeMCU)的GND;VCC接到5V(如果接到3.3V會電力不足,顯示不清楚);SDA接到D2;SCL接到D1,如下圖:

  • 程式如下:先要確認顯示器位址是 0x27或0x3F,此顯示器有2列、16行

    • 燒錄時,雖然有出現如下的警告,但還是燒錄成功

題目七:溫濕度感測器的使用

  • 接線說明:

    • DHT11溫濕度感應器的-接到(NodeMCU)的GND;+ 接到3.3V;S接到D5(GPIO14)

    • I2C 1602 LCD顯示器的GND接到(NodeMCU)的GND;VCC接到5V;SDA接到D2;SCL接到D1

  • 程式如下:在LCD顯示器顯示溫濕度

題目八:超音波測距模組的使用,將距離顯示在LCD上

  • 接線說明:

    • 超音波測距模組 HC-SR04(要接5V電壓),HC-SR04P或HC-SR04+(可接3.3V電壓)

    • 將超音波測距模組

    • VCC接到(NodeMCU)的5V或3.3V;GND接GND;Trig接D7(GPIO13);Echo接D8(GPIO15)

    • I2C 1602 LCD顯示器的GND接到(NodeMCU)的GND;VCC接到5V;SDA接到D2;SCL接到D1

    • HC-SR04P(可接3.3V電壓)

    • HC-SR04(要接5V電壓):利用麵包板當5V及GND的延長線

    • 程式如下:在LCD顯示器顯示量測的距離

    • 再加上一顆蜂鳴器,如果量測的距離小於10公分時,會發出聲響

題目九:伺服馬達的使用

  • 接線說明:

    • 伺服馬達SG90的S針腳接在D7(GPIO013)上,+接在5V ,-接在GND上 (註:伺服馬達由外部供電會比較好)