Kalan's Blog

Kalan 頭像照片,在淡水拍攝,淺藍背景

四零二曜日電子報上線啦!訂閱訂起來

本部落主要是關於前端、軟體開發以及我在日本的生活,也會寫一些對時事的觀察和雜感
本部落格支援 RSS feed(全文章內容),可點擊下方 RSS 連結或透過第三方服務設定。若技術文章裡有程式碼語法等特殊樣式,仍建議至原網站瀏覽以獲得最佳體驗。

目前主題 亮色

我會把一些不成文的筆記或是最近的生活雜感放在短筆記,如果有興趣的話可以來看看唷!

用 Arduino 與 ESP32 打造空氣品質監測應用(4)- WiFi 篇

本篇文章為系列文第四篇:

  1. 感測器介紹篇 - DHT11 與 MH-Z14A
  2. 資料溝通篇 - UART(實作是用 UART,所以只講 UART)
  3. Arduino 踩雷篇
  4. WiFi 篇:為了省下 Debug 的時間,我額外購買了 ESP32 開發版,本身已經含有 WiFi 跟藍芽功能
  5. (未上映)MQTT 篇:為了把資料傳給其他設備,使用了 MQTT 這個輕薄短小的通訊協定
  6. (未上映)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 的部分我們下篇文章會一併介紹!

上一篇

隱性肥宅工程師重訓一個月後的心得

下一篇

React 17 更新重點 - useEffect 的 clean up 函數時機改變

如果覺得這篇文章對你有幫助的話,可以考慮到下面的連結請我喝一杯 ☕️ 可以讓我平凡的一天變得閃閃發光 ✨

Buy me a coffee