· 2 分鐘閱讀
用 Arduino 與 ESP32 打造空氣品質監測應用(4)- WiFi 篇
本篇文章為系列文第四篇:
- 感測器介紹篇 - DHT11 與 MH-Z14A
- 資料溝通篇 - UART(實作是用 UART,所以只講 UART)
- Arduino 踩雷篇
- WiFi 篇:為了省下 Debug 的時間,我額外購買了 ESP32 開發版,本身已經含有 WiFi 跟藍芽功能
- (未上映)MQTT 篇:為了把資料傳給其他設備,使用了 MQTT 這個輕薄短小的通訊協定
- (未上映)Grafana / Web 篇:資料存在資料庫當然要用炫炮的方式顯示出來啊!這裡使用了 Grafana + Promethus 以及 Svelte 來顯示資料。
前言
一般要在 Arduino 上實作 WiFi 功能需要其他延伸模組,比較常見的晶片為 ESP8266。不過如果只購買 ESP8266 的話,全部的接腳都要自己焊接,Datasheet 也要自己啃完。如果想了解 WiFi 底層運作的話這是個很棒的練習,不過我們這次的目的是將整個點子實現,因此我購買了已經有內建 WiFi 與藍牙功能的 ESP32 開發版。
ESP32 開發版其實不只有 WiFi 功能,像是 GPIO 接腳、Serial 介面、UART 都有,也可以兼容 Arduino IDE 上傳程式碼,開發起來也很方便。所以其實就算不用 Arduino,光用 ESP32 也可以完成全部的功能。
WiFi 連接
#include "WiFi.h"
WiFiClient client;
void setup()
{
WiFi.mode(WIFI_STA);
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("Wifi is connected!");
}
void loop()
{
}
搭配 WiFi 函式庫的話,要建立 WiFi 連線還蠻簡單的,只要直接在 setup 裡頭呼叫 WiFi.mode 以及 WiFi.begin 就可以了。在這邊我沒有設定重新連線機制,所以失敗的話可能就要重新跑一次 Arduino。
連上 WiFi 之後能夠做的事情就很多啦!像是跑 HTTP Server、打 API 給伺服器、傳送感測資料給資料庫、實時監控等等。
在這邊我們想要做的事是透過 MQTT 傳送感測資料(溫濕度、二氧化碳濃度)給伺服器,剩下的邏輯全部交給伺服器處理。關於 MQTT 的部分我們下篇文章會一併介紹!
相關文章
- 當測量變成目標:從窗戶稅到 Pull Request 數 我曾寫小工具統計自己一季貢獻了多少 PR、留了多少 review、解了多少 ticket,想拿數字向主管證明產出。主管只淡淡說績效不只看產出。幾年後我才懂——當測量變成目標,它就不再是一個好的測量了。從英國窗戶稅、河內滅鼠賞金,到今天用 PR 數評估開發者,機制一模一樣。
- 用 Cloudflare Images 當作圖片儲存、轉檔方案 在網頁放一張圖片是前端最簡單的事,但要把它做完整,包含縮放、生出各種格式、還要擋住流量,其實是一整個解決方案。我後來一律交給 Cloudflare Images,只留一份原圖給它。
- 別再用 AWS Access Key 了 Access Key 是 AWS 上容易被忽略的安全風險。用 OIDC 搭配 IAM Role,讓 GitHub Actions 不需要任何 secret 就能安全操作 AWS 資源
- 資料庫主鍵:AUTO_INCREMENT、UUID 與 UUIDv7 後端開發常需要決定主鍵,要用 auto increment 還是 UUID?碰撞怎麼辦?UUIDv7 跟 created_at + index 的效能差多少?實際跑了 2000 萬筆資料與設計決策告訴你