01 DIFI板的基本功能

(2018/09/04)

此部份修改之前所做的測試(13-16DIFI板的基本功能測試),之前採用MotoBlockly來寫程式,但在題目九之後就發生錯誤了!如今Motoduino針對ESP8266推出了iotBlockly,所以今天我們就利用iotBlockly來寫程式,並測試DIFI與iotBlockly是否能成功結合!

  • 題目一:點亮Difi ESP8266旁的LED燈(integrated LED)

  • 題目二:點亮Difi上的三色LED燈

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

  • 題目四:讀取Difi上按鍵的值,並顯示在序列埠監控視窗

  • 題目五:讀取Difi上紅外線開關的值,並顯示在序列埠監控視窗

  • 題目六:當Difi上按鍵被按下時,啟動繼電器

  • 題目七:測試 伺服馬達

  • 題目八:測試 超音波測距模組

  • 題目九:測試 蜂鳴器 (音不準有雜音)

  • 題目十:測試 DHT11溫濕度感測器

  • 題目十一:測試 紅外線遙控器(編譯錯誤,告知motoduino,請他們再做修改,註:此部份已於9/18修改完成)

  • 題目十二:測試 4位數七段顯示器

  • 題目十三:測試 I2C 1602 LCD顯示器

  • 題目十四:測試 空氣品質感測器(PMS5003T) (溫濕度顯示有問題)

  • 題目十五:測試 LED點矩陣 (目前僅提供16X8 LED的積木,尚無8X8 LED的積木,但Motoblockly已有8X8 LED點矩陣(MAX7219)的積木可用,這部份再請Motoduino提供出來!註:此部份已於9/18修改完成))

一、認識 Motoduino的iotBlockly

      • 安裝完成後會在桌面出現motoblockly_broker的捷徑,並在arduino/libraries下產生Motoduino_v11及Motoesp_v1的資料夾

        • Arduino的安裝說明: (ARDUINO 1.8.7下載)

          • 打開ARDUINO軟體,檔案>>偏好設定,在下方額外的開發板管理員網址:輸入http://arduino.esp8266.com/stable/package_esp8266com_index.json

        • 接著到工具>>開發板>>開發板管理員

          • 拉到最下一欄會多一項ESP8266,需在欄內點一下才會出現安裝訊息

        • 安裝好後會顯示INSTALLED

        • 接下來到工具>>開發板>>選 Generic ESP8266 Module

          • 但我們這次採用DIFI板子,但選擇 NodeMCU 1.0

二、認識DIFI腳位

  • 外觀

    • (Difi腳位 ) 13 12 14 16 ADC 5 4 0 15 2 Rx(3) Tx(1)

    • (NodeMCU 腳位) 7 6 5 0 A0 1 2 3 8 4 9 10

三、利用簡單程式(題目一)來測試是否可成功自動燒錄

  • 題目一:點亮Difi ESP8266旁的LED燈(integrated LED)

  • 程式如下:

    • 直接燒錄

    • 自動燒錄失敗 (很顯然目前自動燒錄程式只針對ESP-01的板子,並不適用NodeMCU及DIFI的板子!!)

    • 直接複製程式碼到Arduino IDE環境下來執行(板子採用NodeMCU 1.0則可成功燒錄)

    • 接下來,如果要採用DIFI板來測試,則要請Motoduino修改程式來支援NodeMCU或自己直接利用Arduino的環境來燒錄!

      • integrated LED在HIGH的時侯是暗燈、在LOW的時侯是亮燈

題目二:點亮Difi上的三色LED燈

  • 說明:三色LED(綠、紅、藍)的使用腳位為13、12、14,記得跳線區的這些針腳要用jumper連接

  • 利用拖曳的方法,完成如下作業:綠、紅、藍 循環亮燈

    • 成果

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

  • 說明:光敏電阻的使用腳位為ADC(A0),記得跳線區的這個針腳要用jumper連接

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

    • 但積木中類比輸入腳位只有腳位17,所以先用此腳位,程式碼轉到IDE後再改為腳位0

    • 小朋友,如果要摸擬天黑開燈的機制,你會嗎?試著做遮光時(天黑時)會點亮三色LED燈的紅燈

題目四:讀取Difi上按鍵的值,並顯示在序列埠監控視窗

  • 說明:按鍵的使用腳位為0,記得跳線區的這個針腳要用jumper連接

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

    • 但積木中數位輸入腳位沒有腳位0,所以先用其他腳位,程式碼轉到IDE後再改為腳位0

    • 發現,【右下角的按鍵】要將跳線區的針腳用jumper連接才有作用,但【右上角按鍵】沒有用jumper也有作用!

    • 小朋友,如果要按下按鍵時,點亮三色LED燈的紅燈,你會做嗎?

題目五:讀取Difi上紅外線開關的值,並顯示在序列埠監控視窗

  • 說明:紅外線開關的使用腳位為4,記得跳線區的這個針腳要用jumper連接

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

    • 到IDE下燒錄

    • 小朋友,同上一題,如果遮光時要點亮三色LED燈的紅燈,你會做嗎?

題目六:當Difi上按鍵被按下時,啟動繼電器

  • 說明:按鍵的使用腳位為0,繼電器使用的腳位為16,記得跳線區的這些針腳要用jumper連接

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

    • 註:發現未按下按鍵時Relay的燈(D2)亮,當按下按鍵時,Relay的燈(D2)不亮

    • 小朋友,如果要再做天黑請開燈,但這時侯是要點亮接市電的抬燈,你會做嗎?

    • 認識【繼電器】

        • COM(Common)表示共接點。

      • NO(Normally Open)表示常開接點(俗稱a接點)。平常處於開路,線圈通電後才與共接點COM接通。

        • NC(Normally Close)表示常閉接點(俗稱b接點)。平常處於閉路(與共接點COM接通),線圈通電後才成為開路(斷路)。

  • 自製「繼電器插座」,並測試按下按鍵,啟動電扇

題目七:測試 伺服馬達

  • 說明:伺服馬達(SG90)可自行選擇空腳位來使用(像本例是接在13)

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

  • 這有很多應用可以做

題目八:測試 超音波測距模組

  • 說明:超音波測距模組使用的腳位為可自行找空的腳位,這邊用Trig接13腳位、Echo接12腳位,先不理會下圖的LCD顯示器

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

題目九:測試蜂鳴器

  • 說明:蜂鳴器使用的腳位為15,記得跳線區的這個針腳要用jumper連接

  • 頻率表

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

    • 測試結果:有發出聲音,但音不準有雜音,效果很不好!!有空再來調整看看!!

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

題目十:測試 DHT11溫濕度感測器

  • 說明:DHT11溫濕度感測器使用的腳位為5,記得跳線區的這個針腳要用jumper連接

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

    • 應該這個DHT11的設備有問題,導致濕度不準!!測試另一塊DIFI板子,濕度比較正常。

    • 小朋友,可以結合溫度的測量值與上面教過的繼電器來設計,當溫度大於32度時,就啟動電扇,設計看看吧!

題目十一:測試 紅外線遙控器

  • 說明:紅外線接收器(IR_R)及發射器(IR_E)可自行選擇空腳位來使用(像本例是分別接在15及0)

  • 測試出問題,訊息如下:(編譯錯誤,告知motoduino,請他們再做修改,註:此部份已於9/18修改完成)

    • Arduino:1.8.3 (Windows 7), 開發板:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

    • D:\TEMP\temp\Temp1_Air_Quality_Test_Box-master.zip\Air_Quality_Test_Box-master\Air_monitor\Air_monitor.ino:6:26: fatal error: esp_IRremote.h: No such file or directory

    • #include <esp_IRremote.h>

    • ^

    • compilation terminated.

    • exit status 1

    • 開發板 NodeMCU 1.0 (ESP-12E Module) 編譯錯誤。

  • 利用拖曳的方法,完成如下的程式,測試成功(9/19)

題目十二:測試 4位數七段顯示器

  • 說明:4位數七格顯示器可自行選擇空腳位來使用(像本例是CLK接在12、DATA接在13)

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

    • 註:若輸入的數字未達四位數,則前方的數字會補上0

題目十三:測試 I2C 1602 LCD顯示器

  • 說明: I2C 1602 LCD顯示器使用的腳位為4(NodeMCU的D2)、5,所以SDA接腳位4、SCL接腳位5!

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

題目十四:測試 空氣品質感測器(PMS5003T)

  • 說明:由於手上沒有PMS5003T,但有PMS5003ST(PMS5003ST攀藤測PM2.5的感測器,可以偵測PM2.5、甲醛及溫濕度的值,比PMS5003T多了甲醛偵測),所以就拿PMS5003ST來測試

  • 之前利用Arduino與NodeMCU的接法

  • 與DIFI的接法

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

    • 註:發現溫度、濕度的值有問題,都呈現0!另外,沒有校正也不知PM2.5的值準不準確?

題目十五:測試 LED點矩陣

  • 說明: 目前僅提供16X8 LED的積木,尚無8X8 LED的積木,但Motoblockly已有8X8 LED點矩陣(MAX7219)的積木可用,這部份再請Motoduino提供出來!(9/5)

  • 註:此部份已於9/18修改完成

  • 說明: 8X8 LED點矩陣使用的腳位為 CLK接13、CS接12、DIN接14

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