- ESP32 物聯網教程
- 首頁
- 物聯網 (IoT) 簡述
- ESP32 簡介
- 在 Arduino IDE 中安裝 ESP32 開發板
- 設定 RTOS 以實現雙核和多執行緒操作
- ESP32 與 MPU6050 介面連線
- ESP32 與模擬感測器的介面連線
- ESP32 首選項
- ESP32 SPIFFS 儲存器(晶片內建的迷你 SD 卡)
- ESP32 與 OLED 顯示屏介面連線
- ESP32 上的 WiFi
- 使用 HTTP 透過 WiFi 傳輸資料
- 使用 HTTPS 透過 WiFi 傳輸資料
- 使用 MQTT 透過 WiFi 傳輸資料
- 透過藍牙傳輸資料
- 使用 NTP 客戶端獲取當前時間
- 執行 ESP32 韌體的 (OTA) 更新
- ESP32 的應用
- 開發人員的後續步驟
- ESP32 物聯網實用資源
- 快速指南
- 實用資源
- 討論
物聯網 (IoT) 簡述
在軟體方面,您需要在您的計算機上安裝 Arduino IDE。請訪問 https://www.arduino.cc/en/software。
在硬體方面,您需要以下元件:
ESP32 開發板 — 必要
Micro USB 資料線 — 用於為 ESP32 供電和程式設計,必要
MPU6050 模組 — 可選(僅在 MPU6050 相關的章節中需要)
光敏電阻 (LDR) 和一個阻值相當的普通電阻或任何其他模擬感測器 — 可選(僅在 ADC 章節中需要)
OLED 顯示屏 — 可選(僅在 OLED 介面相關的章節中需要)
杜邦線 — 可選(將 ESP32 與 MPU6050、LDR 和/或 OLED 顯示屏連線時需要)
關於 GitHub 使用的說明
如概述部分所述,每個章節都提供了一個 GitHub 連結,其中包含程式碼演練。其中許多程式碼取自 Arduino 中 ESP32 開發板附帶的示例。因此,您無需額外努力即可在本地計算機上執行它們。安裝 ESP32 開發板到 Arduino 後(我們為此專門設定了一個章節),您可以在 Arduino IDE 中找到它們(檔案 -> 示例)。在使用示例程式碼的地方,都會註明示例程式碼的確切路徑。
所有不在示例中的程式碼都可以在以下倉庫中找到:https://github.com/yash-sanghvi/ESP32。現在,如果您想下載並在本地計算機上執行這些程式碼,您需要執行以下操作:
單擊顯示“程式碼”的綠色按鈕。
如果您不熟悉 Git,您可以簡單地下載 zip 檔案並將其解壓縮到您選擇的資料夾中。子資料夾包含所需的 Arduino (.ino) 檔案,您可以隨後在 Arduino IDE 中開啟這些檔案,然後編譯並將其燒錄到 ESP32 中。
如果您熟悉 Git 並在您的計算機上安裝了 Git,您可以複製 HTTPS 地址 https://github.com/yash-sanghvi/ESP32.git,導航到您希望克隆此倉庫的資料夾,開啟 Git 命令列並輸入 **git clone https://github.com/yash-sanghvi/ESP32.git**
如果您不熟悉 Git,您可能想知道為什麼我們應該努力克隆倉庫,而下載和解壓 zip 檔案會有相同的效果。答案是下載 zip 檔案是一次性過程。如果將來此倉庫發生某些更改,本地計算機上下載的版本無法直接反映這些更改。您需要再次下載 zip 檔案。如果您克隆了倉庫,您可以透過簡單地呼叫 **git pull** 來獲取所有將來的更改。使用克隆還可以執行更多操作。如果倉庫中有多個分支,您可以透過 **git checkout branch-name** 切換分支。如果您下載 zip 檔案,則需要為每個分支下載一個單獨的 zip 檔案。底線是克隆通常更方便。但是,對於這個特定用例,由於我們預計將來不會對這個倉庫進行重大更改,並且您只需要主分支,如果您不熟悉 Git,您可以繼續下載 zip 檔案。
您是否注意到最近很多日常用品都變得“智慧化”了?有智慧電視、智慧空調、智慧冰箱等等。這些裝置的“智慧化”指的是什麼?雖然答案對於每個裝置略有不同,但智慧化的一個共同要素是“互聯性”。您的電視連線到您的 WiFi,因此您可以播放以前只能在手機上觀看的節目。您的空調連線到網際網路。您可以從另一個城市透過手機發送命令,家裡的空調就會開啟/關閉。您的手錶連線到您的手機(透過 BLE),您可以使用手錶本身接聽電話。您通常使用的所有東西都是相互連線的,就像在一個網路中一樣。這是一個物聯網。
以上段落讓您對物聯網有了一些瞭解。根據維基百科的定義,物聯網的定義如下:
物聯網 (IoT) 描述的是物理物件的網路——“事物”——它們嵌入感測器、軟體和其他技術,目的是透過網際網路與其他裝置和系統連線和交換資料。
上述定義準確地概括了這一點。嵌入感測器幷包含軟體的事物透過網際網路與其他裝置/系統共享資料。此定義還清楚地突出了任何物聯網裝置的三個主要功能模組中的兩個:
感知
處理和儲存
傳輸
感知
物聯網裝置感知什麼?它們可以感知任何值得感知的東西。如果您的物聯網裝置安裝在垃圾場,它可能會檢查垃圾的填充水平。如果您的物聯網裝置安裝在工廠,它可能會感知電力消耗。如果您的物聯網裝置安裝在機器上,它可能會感知機器的振動特徵以確定機器是開著還是關著或者正在切割。如果您的裝置安裝在車輛上,它可能會感知車輛的運動和位置。
您的物聯網裝置將感知任何可以幫助您節省成本、增加利潤或警告您即將發生的災難的事情。您傳統的火災報警器非常接近於物聯網裝置。它感知煙霧,對其進行處理以確定煙霧濃度是否高於安全水平。它只是沒有將此資訊傳輸到任何地方。但是,如果您將建築物中的所有火災報警器連線到網際網路,並在安全室中有一個儀表板,顯示哪個房間發生了火災,那麼您的火災報警器將非常像一個物聯網裝置。
處理和儲存
物聯網裝置上會進行什麼處理/儲存?此答案很大程度上取決於您的用例。有些物聯網裝置不進行板載處理,而只是將原始感測器資料傳輸到伺服器。有些物聯網裝置在板載進行即時影片處理以識別物體/人員。這取決於您的資料量、可用記憶體、所需的最終輸出以及可用的傳輸頻寬。如果您的裝置每毫秒獲取一次機器的振動特徵,那麼您在一秒鐘內就會有 1000 次讀數。在這種情況下,將如此大量的資料傳送到伺服器可能沒有意義(特別是如果您使用的是低頻寬網路,如 NB-IoT)。在這種情況下,您可能希望在裝置上進行 FFT 處理,並只將振動頻率和振幅傳送到伺服器。如果您的裝置每 5 分鐘感知一次大氣中的溫度和溼度,您可能只需要一個公式來將原始讀數轉換為溫度和溼度並將其傳送出去。或者,您可以只發送原始讀數並讓伺服器進行轉換。在這種情況下,您可以傳送每次讀數。
幾乎所有物聯網裝置都有一些板載記憶體,用於在網路錯誤的情況下儲存丟失的資料包。有些裝置有配置檔案,也需要板載儲存。有些裝置將其記憶體中的最後 X 小時資料保留下來以供將來訪問。在板載執行大量處理的物聯網裝置肯定需要儲存空間來收集足夠的資料,然後才能開始處理。例如,如果您的裝置每 10,000 次讀數對振動資料執行 FFT,則它需要儲存傳入的讀數,直到數量達到 10,000。
傳輸
物聯網裝置如何傳輸資料?有很多解決方案可用。其中一些是:
選擇合適的傳輸方案本身就是一個重大決定,很大程度上取決於您可用的電源、頻寬需求、通訊距離、成本和可接受的延遲。您的智慧手錶可以使用 BLE 與您的手機通訊,您的智慧電視可以使用 WiFi,而安裝在車輛上的裝置可以使用蜂窩網路。用於農業應用(如土壤溼度測量)的物聯網裝置,尤其是在偏遠地區,可以使用 LoRa 與另一個裝置通訊,而另一個裝置又可能具有 WiFi 或乙太網連線。最終目標幾乎總是將資料放在伺服器上,和/或在儀表板/應用程式上將其顯示給使用者。
總結
如果您剛接觸物聯網 (IoT),本章將為您提供一個很好的概述,讓您瞭解其中的關鍵所在。如果您對此感到興奮,請繼續閱讀下一章,我們將討論 ESP32,這是一種系統級晶片 (SoC) 微控制器,本教程將圍繞它展開。我們將討論 ESP32 為什麼在物聯網領域如此受歡迎,以及它在感測、處理、儲存和傳輸領域提供的功能。敬請期待。