ESP32 Web Server and IoT

用 ESP32 WiFi 開發版,透過繼電器 Relay,控制 110 伏特的燈泡。

家用電器 物聯網 IoT

簡介

本專題用 ESP32 WiFi 開發版及 Arduino IDE 程式,透過繼電器 Relay,控制 110 伏特的燈泡,示範家用電器物聯網 IoT。

這個專題和程式,原始創作,來自: http://randomnerdtutorials.com

繼電器 Relay

工具機及家電廣泛的使用繼電器。機器上的控制面板,是小功率電路,不可以和 110 或 220 伏特的大功率電路連接或接觸。如何用小功率電路板,操控大功率機器?繼電器提供了解決方案。

繼電器的操作原理,如下圖:

當繼電器 Relay 開關 S 關上時,其內部 5 伏特電流導通。電磁鐵激磁,產生磁力,吸引大電路開關從 NC 打至 NO。如此大功率電路導通,燈泡點亮。但如果繼電器開關 S 打開時,繼電器內部沒有電流,電磁鐵無法產生磁力,則大電路開關重新彈回 NC,造成大功率電路斷路,燈泡則不亮。 繼電器用簡單的電磁鐵磁吸原理,就可讓小功率電路控制大功率的機器。

先來看看專題成果影片:

材料

ESP32S WiFi 開發版

2 路 5V 繼電器,本專題使用的繼電器型號為 Tongling JQC-3FF-S-Z

110 伏特燈泡及燈泡座,家用電源插座,電線

接線圖如下:

因專題使用 110 伏特電源,接線時請務必小心。專題上傳程式前後,先不要接上 110 伏特電源,待確認繼電器正確運作,才接上 110 伏特燈泡電源。

上傳程式

步驟一: 請先安裝 ESP 32 板子在 Arduino IDE 裡面。如未安裝,請參閱 ESP32 WiFi 專題

步驟二: 上傳下方程式前,點選 工具 > 開發板,確認你的 Arduino 開發板是否正確,序列埠 COM Port是否接上。本專題開發版請選擇 "DOIT ESP32 DEVKIT V1"。

步驟三: 至程式第 10 及第 11 行,輸入你要 ESP32 連上的 WiFi 網路名稱 SSID 及密碼 password。

步驟四: 按下 Arduino 上傳程式鈕後,再按住 ESP32 BOOT 鈕。待程式編驛訊息出現 "Connecting..." 後,再鬆開 BOOT 鈕。如此可讓程式順利上傳到 ESP 32。

步驟五: 待程式成功上傳後,打開 Arduino 序列埠螢幕,調整 baud rate 為 115200。再按一下板子上的 ENABLE 按鈕,應該從序列埠螢幕上看到 ESP32 web server 的 IP address,長的像這樣: 192.168.0.113。

步驟六: 打開手機、電腦、或 pad 上的瀏覽器,輸入步驟五所看到的 IP address,就會出現控制二個 LED 的網頁。 本專題只用第一個按鈕 GPIO 26。當按鈕按下時,會聽到繼電器 “搭“ 的一聲,表示繼電器從接頭 NC 打至接頭 NO。再按一次按鈕,當接頭彈回 NC 時,也會聽到同樣的聲音。

步驟七:接上 110V 伏特電源,燈泡即可運作。

創客點子

  1. 專題中,繼電器只用了一路,另一路是空著的。試著將另外一路聯接其他的電器、馬達、或喇叭。用網頁上的第二個按鈕 GPIO 27 來控制。


  1. 目前你所建立的 ESP32 伺服器,是屬於地區性的,範圍大概只是300公尺。如果要在全世界各地,都可透過無線網路,下指令或存取 ESP32 何服器,操控本專題的燈泡,您可試試免費的ngrok。ngrok 的作用,是讓外網連接本機。步驟如下:

a. Arduino 程式中的第10和第11行,輸入您的Wi-Fi SSID 以及密碼 password。程式中的第13行改變 port number 為任何四位數的數字,如 8888。上傳此程式於 ESP32 開發板。

b. 待程式成功上傳後,打開 Arduino 序列埠螢幕,調整 baud rate 為 115200。再按一下板子上的 ENABLE 按鈕,應該從序列埠螢幕上看到 ESP32 web server 的 IP address,長的像這樣: 192.168.0.113。打開電腦的瀏覽器,鍵入你的 IP address 以及 port number。以我的電腦為例,鍵入 http:// 192.168.0.113:8888

c. 到 ngrok 官方網站 http:// ngrok.com。建立您的帳號並登錄進去網站。點擊 “Auth”,複製您專屬的 Tunnel Authtoken。

d. 選擇你的操作系統 window or Mac OS ,並下載 ngrok 程式。解壓縮並執行你所下載的程式。你會看到一個 window 視窗,在視窗內下指令

ngrok tcp YOUR_ESP_IP_ADDRESS : 8888 - - authtoken YOUR_TUNNEL_AUTHTOKEN

(指令中,英文大寫的部分,是您自己專屬的 IP Address 以及 Tunnel Authtoken。Port number 如果不是 8888,則改成您自己設定的 port number。

e. 如果一切順利,您將會看到您專屬的 URL,以我的為例: http:// 0.tcp.ngrok.it:34789/

打開您電腦的瀏覽器,進入此 URL,大功告成。注意:電腦要保持開啟,ngrok 才能保持運作。