07 AI應用及MQTT積木

(2022/03/25)

最近在上課後社團的AI課程,玩了Google的Teachable Machine,不想只玩玩預覽,想利用此來做一些簡單應用,想說能不能控制電燈的亮或滅,又不想給學生玩實體的燈泡,因此想到能不能點亮Web:Bit模擬器的燈!剛好昨天法蘭斯新增了Web:Bit教育版的MQTT積木,再利用洪銘恩大師的TM2MQTT,因此就完成了此作品,內容如下,供參

一、在Web:Bit教育版安裝法蘭斯的MQTT積木

  • 先進入安裝版的 Web:Bit教育版,點擊左上角的【系統】/以瀏覽器開啟】

  • 在程式碼右邊的空白處按右鍵 / 【檢查】

  • 這時在積木區就會出現【MQTT】的積木了

、簡單寫一個測試程式

  • 先利用法斯預設的Broker,寫一測試程式,如下

    • 按A鍵,屏幕會呈現笑臉及綠色怪獸說話(1)

    • B鍵,屏幕會呈現臉及綠色怪獸說話(2)

  • 利用其他Broker進行測試

    • 可參考我另一篇文章:常見MQTTBroker測試

    • 測試成功的主機網址如下:

      • EMQX

        • ws://broker.emqx.io:8083/mqtt

        • wss://broker.emqx.io:8084/mqtt (加密)

      • Webduino (官方)

        • ws://mqtt1.webduino.io/mqtt 帳號:webduino 、密碼:webduino

        • wss://mqtt1.webduino.io/mqtt 帳號:webduino 、密碼:webduino (加密)

      • HIVEMQ

        • ws://broker.hivemq.com:8000/mqtt 或 ws://broker.mqttdashboard.com:8000/mqtt

      • Mosquitto

        • ws://test.mosquitto.org:8080

        • wss://test.mosquitto.org:8081 (加密)

      • Eclipseprojects

        • ws://mqtt.eclipseprojects.io:80/mqtt

        • wss://mqtt.eclipseprojects.io:443/mqtt (加密)

  • 利用其他MQTT平台進行測試

    • 利用HiveMQ網頁工具(只適用Websocket) http://www.hivemq.com/demos/websocket-client/

      • 測試成功的如下:

        • EMQX (沒成功,下面資料無法連線成功,真奇怪!)

          • broker.emqx.io8083

          • broker.emqx.io8084、SSL加密

        • Webduino (成功)

          • mqtt1.webduino.io 、 80 帳號:webduino 、密碼:webduino

          • mqtt1.webduino.io 、 443 帳號:webduino 、密碼:webduinoSSL加密

        • HIVEMQ (成功)

          • broker.hivemq.com 或 broker.mqttdashboard.com 、8000

        • Mosquitto (成功)

          • test.mosquitto.org、8080

          • test.mosquitto.org、8081、SSL加密

        • Eclipseprojects (成功)

          • mqtt.eclipseprojects.io、80

          • mqtt.eclipseprojects.io、443SSL加密

      • 利用洪銘恩老師的TM2MQTT網頁 https://github.com/YisrealHung/TM2MQTT

        • EMQX (成功)

          • Server: broker.emqx.io、Port:8083

          • Server: broker.emqx.io、Port:8084

        • Webduino (官方) (沒成功,因為此平台無法輸入帳、密)

          • Server: mqtt1.webduino.io、Port:80 帳號:webduino 、無輸入密碼的地方

          • Server: mqtt1.webduino.io、Port:443 帳號:webduino 、無輸入密碼的地方

        • HIVEMQ(成功)

          • Server: broker.hivemq.com 或broker.mqttdashboard.com、Port:8000

        • Mosquitto (成功)

          • Server: test.mosquitto.org、Port:8080

          • Server: test.mosquitto.org、Port:8081 (加密)

        • Eclipseprojects (成功)

          • Server: mqtt.eclipseprojects.io、Port:80

          • Server: mqtt.eclipseprojects.io、Port:443 (加密)

      • 利用MQTTBOX

        • EMQX (成功)

          • tcp、broker.emqx.io:1883

          • ws、broker.emqx.io:8083/mqtt

          • wss、broker.emqx.io:8084/mqtt (CA signed server certificate)

        • Webduino (官方) (成功)

          • wsmqtt1.webduino.io/mqtt 帳號:webduino 、密碼:webduino

          • wssmqtt1.webduino.io/mqtt 帳號:webduino 、密碼:webduino (CA signed server certificate)

        • HIVEMQ (成功)

          • tcp 、 broker.hivemq.com:1883

          • ws broker.hivemq.com:8000/mqtt 或 broker.mqttdashboard.com:8000/mqtt

        • Mosquitto

          • tcp 、 test.mosquitto.org:1883 (成功)

          • wstest.mosquitto.org:8080 (成功,真奇怪,不為何無法連線成功)

          • wsstest.mosquitto.org:8081 (沒成功,真奇怪,不知為何無法連線成功)

        • Eclipseprojects (成功)

          • tcp 、mqtt.eclipseprojects.io:1883

          • wsmqtt.eclipseprojects.io:80/mqtt

          • wss://mqtt.eclipseprojects.io:443/mqtt (CA signed server certificate)

、製作簡易應用

  • 偵測有無戴口罩,並在Web:Bit的模擬器閃燈或發出聲音

  • 使用的工具及軟體

  • 先利用Teachable Machine來訓練模型

    • 訓練如下:先蒐集樣本(有3類),再進行訓練

  • 點擊右上角的【匯出模型】

  • 並在Tensorflow.js下,點擊【上傳模型】

  • 最後,將模型網址複製下來,如下:https://teachablemachine.withgoogle.com/models/hctD4PyM4/,待會到TM2MQTT下使用

  • 執行Index-image.html網頁

    • 先建立MQTT伺服器的資料

  • 再到Web:Bit教育版寫程式

    • 新增法蘭斯的MQTT積木(如上面的說明)

    • 寫一簡單程式,如下:

  • 完成後,執行時,看TM2MQTT有沒有收到相關的訊息

  • 回到TM2MQTT進行測試

    • 點擊TM2MQTT下的【Webcam】,開啟攝影機

    • 測試如下:

      • 在TM中的第1個類別其發送的值(payload)為1

      • 在TM中的第2個類別其發送的值(payload)為2

      • 在TM中的第3個類別其發送的值(payload)為3

  • 測試成功,發現同一個狀態只會發送5筆資料