- 整合 UniversalTelegramBot 函式庫,以簡化與 Telegram API 的 HTTPS 通訊。
- 遠端控制 GPIO 引腳以操作 LED 等執行器並讀取開關狀態。
- 透過聊天 ID 驗證和使用 SSL 憑證來實施安全措施。

你有沒有想過舒舒服服地坐在沙發上,用手機控製家裡的智慧家庭設備?其實,透過 Telegram 設定一個系統來控制 ESP32,是進入智慧家庭世界最簡單、最強大的方法之一,無需昂貴的外部伺服器或複雜的配置,就能輕鬆實現智慧家庭。
訣竅在於將你的開發板變成一個小型伺服器,監聽來自機器人的指令。你不需要是程式設計高手,只需幾個函式庫和一點耐心,就能讓你的裝置透過即時簡訊即時控制燈光或提醒你感應器的狀態。
您將需要的材料
入門並不需要花費太多。最重要的是擁有一塊ESP32 開發板;無論是舊款還是最新款都無所謂,因為完全相容。除了專案的核心部件之外,你還需要一些基本的測試組件:
- 使用發光二極體 (LED) 檢查一切是否正常運作。
- 使用 220 歐姆電阻,以避免燒毀 LED。
- 用於讀取物理狀態的按鈕或開關。
- 連接線和麵包板,這樣一開始就不用焊接任何東西了。
電子電路組件
在編輯程式碼之前,您需要先準備好硬體。在本例中,我們將 LED 連接到GPIO 腳位 33,開關連接到GPIO 腳位 14。請務必記住,您可以根據需要更改這些引腳,但之後需要在程式的常數中反映這些變更。
為了保護LED,它與對應的電阻器相連;按鈕則內建電路,無需額外接線。電路在麵包板上組裝完成後,就可以開始編寫軟體部分了,所有功能都是在這裡實現的。
在 Telegram 中設定機器人
為了讓 ESP32 知道該監聽誰,我們首先必須在 Telegram 應用程式中建立機器人的身份。這個過程至關重要,因為它提供了兩個關鍵訊息:機器人的令牌(一長串數字和字母)以及您的個人用戶 ID。如果沒有這兩個金鑰,設備將無法進行身份驗證,也無法確定誰有權向其發出命令。
如果您覺得聊天變得混亂,請記住您可以隨時從右上角的選單清除聊天記錄。這樣做會重啟機器人,並使其返回主頁按鈕和可用命令,讓您重新開始。
開發環境準備
為了讓程式碼正常運行,我們需要安裝一個能簡化我們工作的工具:UniversalTelegramBot函式庫。有了這個函式庫,我們就不用寫數百行程式碼來處理 Telegram API 了,它幾乎可以幫我們完成所有工作。
要安裝它,只需打開 Arduino IDE 的庫管理器,輸入庫名稱,然後點擊安裝即可。此外,請確保已安裝WiFi 和 WiFiClientSecure庫,因為這些庫允許 ESP32 連接到網際網路並使用 HTTPS 協定進行安全通訊。
控製程式碼分析
程式首先會定義您的WiFi網路憑證和機器人的金鑰。務必將範例值替換為您自己的值。 SSID 和密碼以及令牌和聊天 ID。為了實現交互,我們定義了一個名為“ info 其中包含機器人將識別的命令列表,例如 /led_on 或 /sw_state。
訊息和命令管理
系統的核心是檢查新訊息的功能。 ESP32 所使用的方法 getUpdates 為 檢查訊息佇列 來自 Telegram。為了防止陌生人控制您的家庭網絡,程式碼包含一個過濾器,用於驗證發送者的 ID 是否與您的 ID 完全匹配。 預定義的 CHAT_ID.
用戶驗證通過後,機器人會分析接收到的文字:如果它偵測到 /led_on它向引腳 33 發送數位訊號以打開燈;如果接收到該訊號 /led_off將其關閉。也可以選擇… /led_toggle這非常實用,因為 反轉目前狀態 無需知道 LED 燈之前是開著還是關著,即可控制其亮滅狀態。
感測器讀數和完成
除了發出命令外,該機器人還可以提供資訊。使用命令 /sw_stateESP32 讀取引腳 14 的狀態。由於我們已將該引腳配置為 輸入上拉該設備將檢測按鈕是否被按下,並向我們發送簡訊確認。
啟動過程中,裝置以鎖定方式連接 Wi-Fi,這表示在連線穩定之前,裝置不會執行任何操作。為了進一步增強安全性,系統使用了 Telegram 的根證書,確保資料傳輸經過加密。主循環每秒重複執行一次訊息檢查,以保持系統的敏捷性和反應速度。
利用這套系統,我們成功地將硬體和軟體整合在一起,建構了一個無線通訊橋樑。我們配置了一個機器人,使用ID和憑證管理安全,並對GPIO引腳響應進行了編程,使其能夠從任何有網路連線的地方與物理世界進行互動。
Preguntas frecuentes
將 ESP32 連接到 Telegram 需要哪個函式庫?
應該使用 UniversalTelegramBot 庫,它可以簡化與 Telegram API 的交互,並方便發送和接收訊息。
如何確保只有我能控制這個機器人?
程式碼實作了一個過濾器,將接收到的訊息的聊天 ID 與預先定義的 CHAT_ID 進行比較,忽略來自其他使用者的任何命令。
與機器人通訊是否必須使用HTTPS?
是的,Telegram 需要安全連接,因此使用了 WiFiClientSecure,並且必須在 ESP32 上設定 Telegram 根憑證。
程式碼中 /led_toggle 指令的作用是什麼?
此命令用於反轉 LED 的當前狀態,如果 LED 是熄滅的,則將其開啟;如果 LED 是亮的,則將其關閉。
為什麼開關要使用 INPUT_PULLUP?
它用於激活電路板的內部電阻,從而避免在按鈕電路中添加外部物理電阻。
我從哪裡取得機器人令牌和用戶ID?
令牌是透過 Telegram 上的 BotFather 創建機器人獲得的,用戶 ID 可以透過專門用於獲取個人資料身份的機器人獲得。



