20230506高科大
主題:HaloCode與物聯網入門
時間:112年5月6、7日(六、日)13:00-17:30
地點:建工校區 資訊大樓8樓 809教室
本教材網址:http://gg.gg/0506nkust
講師:黃文玉老師
認識ESP32
前一代晶片是ESP8266(可以連上網的晶片)
參考文章:
各開發板所使用的模組
樂鑫科技(ESPRESSIF):開發ESP32晶片 (工作電壓:3.0~3.6V)
主要特色:雙核心、32位元、支援Wi-Fi(2.4GHz)與藍牙低功耗通訊(4.2版)
樂鑫科技(ESPRESSIF):整合【ESP32-D0WDQ6雙核心系統單晶片】+【石英震盪器】+【4MB快閃記憶體(flash)】,組成一個【ESP32-WROOM-32模組】
最高階是ESP32-WROVER,主要是比ESP32-WROOM多了8MB的PSRAM的設定
各開發商:將【各類WROOM模組】+【直流電源降壓元件】+【UART轉USB通訊晶片】,就能組成一個基本的ESP32開發板。
Web:Bit:ESP32-WROOM-32
PocketCard:ESP32-WROOM-32D
DOIT NodeMCU:ESP32-WROOM-32
NodeMCU-32S:ESP32-WROOM-32
HaloCode:ESP32-WROVER
...
晶片/模組/開發板的關係,可從下面腳位那張圖中看出
二、mBlock 5程式學習
認識mblock5 (內容參考https://sites.google.com/site/wenyunotify/07-halocode%E5%85%89%E7%92%B0%E6%9D%BF/02-%E8%AA%8D%E8%AD%98halocode )
基於Scratch3所修改的軟體,增加硬體的支援
下載及安裝mblock5
下載網址:https://mblock.cc (目前最新的版本為V5.4.0版)
另外提供一個下載網址 https://educase.kh.edu.tw/navigate/a/#/s/B2BBFD45BF7F4E36AC26D0D747719E0E6BL
安裝(都按下一步即可)
使用的USB晶片為CH340晶片,最後要安裝此的驅動程式 (下載:https://educase.kh.edu.tw/navigate/a/#/s/DD4DC31A1D644C08ABA3F695BC1F63506BL )
簡單玩一下Scratch (重溫一下Scratch)
跳恐龍遊戲
兩個角色:
熊貓(內建):按空白鍵向上跳
一顆樹(自選一內建角色,如Tree48):自舞台右方向左方水平移動
程式:
熊貓:按空白鍵時,從(-170,-120)移動到(-170,40),等個0.6秒,再回到原位
一顆樹:一開始位於(240,-110),接下來一直重複X座標改變-10,直到X座標小於-220
互動部份:如果熊貓碰到了樹就GAME OVER,如果跳過一顆樹就得1分
程式下載:https://drive.google.com/file/d/1UuQEVpqVkCUG5WSe1EVrfjqjfue8mSpY/view?usp=drive_web
三、Halocode的使用
Halocode與電腦連接
添加硬體設備(找到Halocode,並設為常用設備)
連接硬體
更新韌體 (設定/更新韌體,最新韌體 25.01.009 )
【韌體】就是官方針對Halocode硬體所寫的程式,因此當官方有新功能或發現漏洞時,就會提出新的韌體,我們就要進行更新!
有兩種方式來互動:
即時:先要安裝廠商提供的韌體,開發板可以與舞台上的角色互動,達到虛實互動,不可離線操作。
上傳:
把寫好的程式,直接寫入開發板內,可離線操作
也可利用【上傳模式廣播】積木與舞台互動 !(設備與角色都要去擴展【上傳模式廣播】積木)
以【即時方式】玩遊戲
跳恐龍遊戲:(虛實互動)
利用按Halocode的【按鍵】來向上跳
利用【廣播】的方式,按下按鍵時,讓熊貓往上跳
利用【變數】的方式,按下按鍵時,讓熊貓往上跳
射擊遊戲:下載https://scratch.mit.edu/projects/537277191
利用【左右傾斜】來控制飛碟左右移動
利用按按鍵來發射子彈
自己練習看看
檔案:https://drive.google.com/file/d/1XomnZKPB0UoYlejrpegdzNT4xPuL8uH7/view?usp=share_link
四、Halocode硬體的基本使用
【照明】積木的使用
播放彩虹動畫 (即時模式下)
讓亮燈順時針或逆時針跑動 (第1顆燈的位置在1點鐘方向)
呼吸燈
【偵測】積木的使用
按鍵的使用
鍵按下按鍵開燈
按一下按鍵開燈、再按一下按鍵關燈(方法有很多種)
麥克風的使用
LED光環顯示 %
0~100%,每顆燈約8.3%,所以超過8.3%會亮第1顆燈,以此類推,如果99%,只亮11顆燈,100%才亮12顆燈
觸控點的使用
顥示各觸點的值
利用觸摸觸控點來點亮不同顏色或不同地方的燈
陀螺儀的使用
顯示翻轉時傾斜的角度值
平放時,各個值均為0,各方向都一樣,翻轉到垂直時為90 (或顯示0)
水往低處流
不管如何翻轉,讓最下方的三顆燈亮起
【腳位】積木的使用
認識數位、類比、輸入、輸出
數位:0或1(不連續訊號) ,就像開關燈,不是開燈就是關燈
類比:0與1間,還有其他值(連續訊號) ,就像開關瓦斯,還可以調開關大小
輸入:外面設備提供給控制器感測到的值,如偵測到光亮度
輸出:控制器控制外面設備,如點亮一顆燈
可外接很多元件,如
按鍵模組 (數位、輸入)
光敏電阻 (類比、輸入) (接腳位2或3)
實作【天黑請開燈】
LED燈 (數位、輸出)
蜂鳴器(XX、輸出)
播放全家便利商店歡迎音樂(測試時,腳位2無法出聲音!?)
簡譜:3 1 5(低音) 1 / 2 5~ 2 / 3 2 5(低音) 1
所使用的頻率:330、262、196、262、294、392、294、330、294、196、262
繼電器 (數位、輸出)
用小電壓(如3V或5V)控制大電壓(如市電110V)
伺服馬達 (PWM、輸出)
可外接很多mBuild模組
mBuild模組就是Halocode可外接的感應器或元件
五、Halocode的進階使用
【WIFI】積木
連接WIFI網路
需要註冊帳號才會有很多功能可用(如語音辨識、AI、雲訊息...等)
有分大陸帳號及國際帳號,兩者不互通!!【因為是大陸網站,暫時先不註冊】
連網的基本程式,如下
【雲訊息】的使用
什麼是帳號雲廣播?
可以實現同帳號作品間跨設備和跨作品的互相通信(收發消息和附加值)。不受物理距離的限制,不管在哪裡,只要登錄同一個慧程式設計帳號,進入上傳模式,連接上Wi-Fi後,就可以實現光環板和舞臺角色之間、不同光環板之間的遠距離控制。
這雲訊息就類似MQTT的功能
MQTT在物聯網上的應用非常廣,後續再做詳細介紹
雲訊息就是主題(Topic)
附加數值就是payload
發現makeblock有自己的MQTT Broker:mq.makeblock.com (埠號為1883),測試此Broker,但無法與此雲訊息互通,不知是不是另外用別的Broker?
使用帳號雲廣播功能前請做如下準備:
1、慧程式設計切換到上傳模式。
2、登錄慧程式設計帳號。 (由於沒有註冊帳號,僅做示範)
3、連接 Wi-Fi。
使用【雲訊息】(或MQTT),自己可以同時當接收端及發送端,所以可以寫下面程式來測試
自己發送讓自己來接收,如下
虛實互動
Halocode與舞台、角色間的互動,除了之前使用【即時模式】來互動外,在【上傳模式】也可做互動
方法一:由於上傳模式的【設備】已有【雲訊息】的積木,所以在角色裡再擴展【使用者雲訊息】的積木即可通信(收發消息和附加值)。
方法二:在【設備】及【角色】上,同時都擴展【上傳模式廣播】的積木
不用登入帳號
不能離線,上傳程式後,一樣要【連接】,如果程式已寫入,斷線後,按【連接】,選擇【COM號】即可,不能關閉mblock5
設備並沒有連上網,所以可能採用【區域網路】的方式來連線
自己不會接收到自己發送的資料
下載:https://drive.google.com/file/d/1c2LMji_uw0T5xVLrnEAVtXyZ8acU9Kqe/view?usp=share_link
上傳資料到Google 試算表
發現【設備】及【角色】都有【谷哥表格】,但設備上的非官方釋出,角色上的才是官方釋出
使用Google試算表要先把【共用】改為【知道連結者都可以編輯】,然後複製網址
發現:
設備下的【谷哥表格】(非官方),沒有成功
採用上面介紹的【上傳模式廣播】及角色的【谷哥表格】積木,將【聲音值】上傳到Google試算表
Google試算表的共用設為所有知道連結者都可以編輯
不能離線,上傳程式後,一樣要【連接】,如果程式已寫入,斷線後,按【連接】,選擇【COM號】即可,不能關閉mblock5
下載:https://drive.google.com/file/d/1QfFMkwr7YcqE400i9aGlPCAU805EWVTR/view?usp=share_link
取得氣象資料
設備的【天氣資訊】積木要帳號登入才可使用
可擴展角色的【天氣資訊】積木,先找到城市
如果要使用這些氣象資訊,可利用熊貓角色來顯示,也可透過【上傳模式廣播】來互動
區域網路的使用
什麼是區域網路(局域網)?
局域網是指在某一區域內由多台計算機組成的電腦組,電腦組內的電腦可以相互通信來交換資訊。
光環板之間可以組成局域網,由一個光環板建立局域網,其餘光環板都需要加入這個局域網,然後就可以用一個光環板就可以控制其他所有光環板了。
我發現這好像就是【ESP NOW】
一開始的設定:
不用登入官網帳號
第一塊建立局域網,第二塊(、第三塊...)加入局網
最多可連線64塊光環板
開始的宣告:
【區域網】名稱請自訂獨一無二的名稱,只有第1個人(或老師)用設定,其他人都用加入
兩塊板子間的互動:觸摸觸控板0亮紅燈、觸摸觸控板1亮綠燈、觸摸觸控板2亮藍燈、觸摸觸控板3關全部燈
發現:自己不會廣播給自己!
六、MQTT再介紹
MQTT介紹:
這是目前物聯網最夯的應用
相當於youtube的訂閱機制(youtuber為【發布者】、youtube網站為【Broker】、你我為【訂閱者】)
MQTT由三種角色構成,分別是Publisher(發布者)、 Broker(代理人)和Subscriber(訂閱者)
MQTT的主題(Topic)名稱:MQTT主題名稱是UTF-8(萬國碼)編碼的字串,我們可以自行決定主題名稱,例如,傳送溫度的訊息主題可命名成「溫度」、傳送亮度的訊息主題叫做「照度」…等等。主題名稱也支援類似檔案路徑的階層式命名方式 ,如: wenyu/home/1f/led
MQTTGO.io:mqttgo.io 、TCP Port:1883
HiveMQ:broker.hivemq.com 、TCP Port:1883
EMQX:broker.emqx.io、TCP Port:1883 / 8883(TLS)
MakeBlock:mq.makeblock.com、TCP Port:1883
利用MQTTgo.io網頁工具來控制遠端設備的開關燈
利用電腦網頁當【發布者】 http://mqttgo.io/
Halocode當【訂閱者】
Broker:mqttgo.io 、TCP Port:1883
主題:wenyu38(獨一無二即可)
Payload(訊息)為ron時,Halocode的全部LED燈亮紅燈
Payload(訊息)為gon時,Halocode的全部LED燈亮綠燈
Payload(訊息)為bon時,Halocode的全部LED燈亮藍燈
Payload(訊息)為off時,Halocode的全部LED燈滅掉
Halocode除了當【訂閱者】外,也可以當【發布者】
當按下按鍵時,發送Payload(訊息)為off發送
當觸摸觸控板0時,發送Payload(訊息)為ron發送
當觸摸觸控板1時,發送Payload(訊息)為gon發送
當觸摸觸控板2時,發送Payload(訊息)為bon發送
添加MQTT積木
選下圖的左邊那個MQTT(非官方)
利用電腦網頁當【發布者】 http://mqttgo.io/
安裝電腦版軟體MQTTBOX
MQTTBox - Chrome 線上應用程式商店
參考資料:https://sites.google.com/site/wenyunotify/05-esp32/03-%E7%B6%B2%E8%B7%AF%E6%87%89%E7%94%A8
安裝手機版APP-IoT OnOff APP
好處是:Android手機及Iphone手機均可使用
參考資料:https://sites.google.com/site/wenyunotify/05-esp32/03-%E7%B6%B2%E8%B7%AF%E6%87%89%E7%94%A8