Try   HackMD

創客產品

相關資料

所有資料都可以參考旗標創客的 hackmd,大多數產品都有以書號為標籤的服務專區筆記,因為筆記數量較多,從服務專區看比較不會亂。其餘有些筆記可能沒有歸到個別產品,就自行篩選查看,有任何問題都可以隨時找我。

使用的技術

  • 主要的開發程式語言以 MicroPython 撰寫 Python 程式為主,Arduino C++ 次之,FlagsBlock 基本上已經棄用

  • 如果開發板需要跨外網與電腦、手機傳遞資料,會使用 mqtt,由於是以 mqtt broker 為中介,可以突破需要傳遞資料的兩端位於內網無法直接互相連線的問題。mqtt 主要以 Adafruit IO 為平台,選用 Adafruit IO 主要是註冊簡易,使用上除了 mqtt 外,也提供 HTTP API,在不同平台上都可以使用。

    ​​​​                       +--------+
    ​​​​                       |        |
    ​​​​                       |  mqtt  |
    ​​​​           +---------> | broker |<---------+
    ​​​​           |           |        |          |
    ​​​​           |           +--------+          |
    ​​​​           |                               |
    ​​​​           V                               V
    ​​​​    +------------+                  +------------+
    ​​​​    |            |                  |            |
    ​​​​    | ESP32/8266 |                  |  其他裝置   |
    ​​​​    |            |                  |            |
    ​​​​    +------------+                  +------------+
    ​​​​                        雙向傳輸
    
  • 如果是單純區網內開發板與電腦、手機傳輸資料,就可以採用 ESPWebServer 模組在開發板這端建置 HTTP 伺服器。這是我們自己撰寫的模組,功能單純,但不提供 HTTPS,所以某些情境下無法使用,像是要在電腦、手機上瀏覽器的網頁內使用裝置的麥克風或是攝影機,都需要 HTTPS 才行。

    ​​​​    +--------------+                  +------------+
    ​​​​    |              |                  |            |
    ​​​​    |  ESP32/8266  |<-----------------|  其他裝置   |
    ​​​​    | ESPWebServer |                  |            |
    ​​​​    +--------------+                  +------------+
    ​​​​                        單向請求
    

    不過因為是 web server,因此只能由其他裝置向開發板發出請求,如果開發板想要傳送資料給其他裝置,就要等待裝置發出請求索取資料,會比較不即時。

  • 如果需要能在公開網域運作的 web server,也可以使用 Google 的 App Scripts:

    ​​​​                       +---------+
    ​​​​                       |         |
    ​​​​                       |   App   |
    ​​​​           +---------> | Scripts |<---------+
    ​​​​           |           |         |          |
    ​​​​           |           +---------+          |
    ​​​​           |                                |
    ​​​​           |                                |
    ​​​​    +------------+                   +------------+
    ​​​​    |            |                   |            |
    ​​​​    | ESP32/8266 |                   |  其他裝置   |
    ​​​​    |            |                   |            |
    ​​​​    +------------+                   +------------+
    ​​​​                        
    
  • 如果需要串接其他服務的 API,若 API 本身只需要單純的 HTTPS 加上金鑰或權杖,可以考慮直接在 MicroPython 內進行:

    ​​​​    +------------+                  +------------+
    ​​​​    |            |                  |            |
    ​​​​    | ESP32/8266 |----------------->|  HTTP API  |
    ​​​​    |            |                  |            |
    ​​​​    +------------+                  +------------+
    
  • 如果是 make.com 本身已經有串接的 API 服務,也可以透過它的 webhook 讓開發板觸發:

    ​​​​                       +----------+
    ​​​​                       |          |
    ​​​​                       | make.com |
    ​​​​           +---------> | webhook  |----------+
    ​​​​           |           |          |          |
    ​​​​           |           +----------+          |
    ​​​​           |                                 |
    ​​​​           |                                 V
    ​​​​    +------------+                    +------------+
    ​​​​    |            |                    |            |
    ​​​​    | ESP32/8266 |                    |  HTTP API  |
    ​​​​    |            |                    |            |
    ​​​​    +------------+                    +------------+
    

    原本這項功能使用 IFTTT 的 webhook,但該功能已經改成要付費,所以棄用。

  • 如果 make.com 沒有現成串接要使用的 API,或是 API 使用上比較複雜,不適合利用 make.com 或是直接在開發板手工串接,也可以使用剛剛提到的 App Scripts 當中介包裝其他服務的 API,提供比較簡單的介面給開發板使用:

    ​​​​                       +---------+
    ​​​​                       |         |
    ​​​​                       |   App   |
    ​​​​           +---------> | Scripts |----------+
    ​​​​           |           |         |          |
    ​​​​           |           +---------+          |
    ​​​​           |                                |
    ​​​​           |                                V
    ​​​​    +------------+                   +------------+
    ​​​​    |            |                   |            |
    ​​​​    | ESP32/8266 |                   |  HTTP API  |
    ​​​​    |            |                   |            |
    ​​​​    +------------+                   +------------+
    

注意事項

  • 我們目前使用的 ESP32/ESP8266 開發板都只能連接 2.4GHz 的無線網路,如果是手機分享熱點,要開最大相容型,或有些手機要開啟 2.4GHz 頻段。
  • 我們的開發板使用的 USB 通訊晶片主要是 ch340,這在 mac 上不需驅動程式,Windows 11 理論上也會自動安裝,唯一要注意的是很久以前有一批 ESP8266 上的晶片使用新版的驅動程式無法正常運作,一定要降版。