【關鍵詞】Wokwi平臺;巴法云平臺;ESP32
隨著科技的飛速發展,物聯網技術已經成為連接物理世界與數字世界的橋梁,極大地推動了智能家居、智慧城市等領域的變革。在這一波技術浪潮中,遠程開關燈系統作為智能家居的基本組件之一,體現了物聯網技術的實際應用價值,成為教育和培訓領域的重要教學內容。通過設計和實現遠程開關燈教學案例,教師能夠幫助學生深入理解物聯網技術的核心原理,并激發他們的創新思維和實踐能力。
近年來,Wokwi仿真平臺和巴法云平臺因其強大的功能和靈活性,在物聯網教學和項目開發中得到了廣泛應用。Wokwi平臺以其直觀的圖形化界面和豐富的硬件模擬功能,為學習者提供了一個無需實際硬件即可進行物聯網系統設計和測試的虛擬環境。而巴法云平臺以其強大的數據處理能力、靈活的API接口和便捷的開發工具,為物聯網應用的云端部分提供了堅實的支撐。教師將這兩個平臺結合起來,可以構建一個完整的遠程開關燈系統教學案例,既包含硬件層面的設計,又涵蓋軟件層面的開發,為學生提供了一個全面、系統的學習路徑。
設計基于Wokwi和巴法云平臺的遠程開關燈教學案例,旨在通過實踐操作,幫助學生深入理解物聯網系統的構成和工作原理。在這個案例中,學生將學習如何選擇合適的硬件組件,如ESP32微控制器、傳感器、執行器等,并了解它們之間的連接方式和通信協議。同時,通過Wokwi平臺的模擬環境,學生可以直觀地看到硬件組件的工作狀態和相互之間的交互過程,這對于理解物聯網系統的運行邏輯至關重要。
在軟件層面,學生將學習如何使用巴法云平臺提供的開發工具,編寫網頁,實現遠程開關燈的功能。這個過程涉及TCP/IP協議的理解和應用,以及如何通過云端服務器實現數據的傳輸和處理。通過編寫和調試程序,學生不僅能夠掌握編程技能,還能深入理解物聯網系統中數據流動和處理的機制[1]。
(一)選用Wokwi仿真平臺進行仿真
在物聯網和嵌入式系統開發的浪潮中,Wokwi仿真平臺以其獨特的優勢脫穎而出,成為廣大電子愛好者、學生和專業開發者的得力助手。作為一個在線硬件仿真平臺,Wokwi致力于提供一個無需實際硬件即可進行電路設計和代碼調試的虛擬環境,極大地降低了學習和開發的門檻,同時也提高了效率和靈活性。
Wokwi平臺的核心優勢在于其強大的仿真能力。用戶可以在瀏覽器中直接運行硬件仿真,無需安裝任何額外的軟件。這種在線仿真的方式不僅方便快捷,而且能夠跨平臺使用,無論是在Windows、Mac還是Linux系統上,都能獲得一致的使用體驗。此外,Wokwi還支持多種常見的開發板和單片機,如Arduino Uno、ESP32、STM32以及Raspberry Pi等,這意味著用戶可以根據自己的需求選擇合適的硬件進行仿真[2]。
在Wokwi平臺上,用戶可以直觀地創建電路、添加組件,并對微控制器進行編程。平臺提供了豐富的電子元件庫,用戶可以通過拖拽的方式輕松搭建電路圖。同時,Wokwi還集成了代碼編輯器,支持多種編程語言,如C、C++、Rust以及MicroPython等,使得用戶可以在一個統一的界面中完成電路設計、代碼編寫和調試。這種一體化的設計極大地提高了開發效率,減少了在不同工具之間切換的時間成本。
實時反饋是Wokwi平臺的另一大亮點。在仿真過程中,平臺會實時顯示電路的工作狀態和輸出結果,幫助用戶快速發現和解決問題。這種即時反饋機制不僅有助于提升調試效率,還能增強用戶對電路工作原理的理解。此外,Wokwi還提供了豐富的示例項目和教程,涵蓋了從基礎到進階的多個層次,幫助用戶學習和掌握不同的硬件和編程技術。
(二)選用ESP32開發板進行仿真
ESP32是一款由樂鑫信息科技推出的高度集成的低功耗系統級芯片,自問世以來,便以其強大的功能和靈活的應用場景,在物聯網領域掀起了一股技術創新的浪潮。這款芯片不僅集成了雙核處理器、無線通信模塊和低功耗特性,還配備了豐富的外設接口,使其成為物聯網應用中的明星產品[3]。
ESP32內置了Wi-Fi和藍牙功能,支持IEEE 802.11 b/g/n的Wi-Fi標準以及藍牙4.2。這使得ESP32能夠輕松連接到無線局域網絡,進行Internet訪問、局域網通信和遠程控制。同時,它也能與各種藍牙設備,如智能手機、平板電腦等,進行通信,進一步拓寬了其應用場景。
(三)選用巴法云平臺的TCP創客云開光燈
巴法云平臺是一個專注于物聯網的設備云平臺,提供了豐富的功能和接口,支持TCP長連接、發布/訂閱模式等。TCP創客云是巴法云平臺的一個重要組成部分,它為用戶提供了一個基于TCP協議的通信環境,使用戶可以通過TCP連接實現數據的上傳和下發控制[4]。巴法云平臺具有如下優勢:

1.簡單易用:巴法云平臺提供了清晰明了的接口文檔和豐富的示例代碼,用戶無需具備復雜的物聯網知識即可快速上手。
2.穩定可靠:平臺采用高性能的服務器和穩定的網絡連接,確保數據的實時傳輸和設備的可靠控制。
3.靈活可擴展:用戶可以根據自己的需求定制主題、訂閱消息,并輕松實現與其他設備的聯動控制。
4.安全可靠:平臺提供了完善的安全機制,包括數據加密、訪問控制等,確保用戶數據的安全性和隱私性。
第一步:打開Wokwi仿真平臺,選用ESP32開發板,添加燈和電阻組件,燈連接4引腳。遠程開關燈仿真連線效果圖如圖1所示。
第二步:在巴法云平臺創建TCP創客云的主題,主題名LED。
第三步:ESP32與巴法云連接部分作代碼分析,在.ino文件中設置ESP32與巴法云服務器的TCP連接所需的參數,包括Wi-Fi網絡信息、服務器地址和端口、用戶私鑰以及MQTT主題。這些參數設置完成后,ESP32設備就可以通過TCP協議與巴法云進行通信,實現發布或訂閱消息、控制或獲取遠程數據。具體代碼如下:
#include lt;WiFi.hgt;
#include lt;WiFiClient.hgt;
#define TCP_SERVER_ADDR \"bemfa.com\"http://(注:巴法云服務器地址,默認即可。)
#define TCP_SERVER_PORT \"8344\"http://(注:填寫服務器端口,tcp創客云端口8344。)
#define DEFAULT_STASSID \"Wokwi-GUEST\" //(注:仿真平臺模擬的Wi-Fi名是Wokwi-GUEST。)
#define DEFAULT_STAPSW \"\" //(注:仿真平臺模擬的WI-FI無密碼。)
String UID = \"12f7b......\"; //(注:填寫用戶私鑰,可在控制臺獲取,修改為自己的UID。)
String TOPIC = \"LED\"; //(注:LED是在巴法云上創建的TCP創客云主題名。)
const int LED_Pin = 4;//(注:ESP32的GPIO4引腳。)
第四步:用Hbuilderx編寫遠程開關燈教學案例的網頁。下面重點介紹script中controlLed函數的編寫思路,該函數用于通過向巴法云的API發送POST請求來控制LED燈的狀態。
函數接受一個參數on,如果這個參數的值是1,表示打開LED;非1表示關閉LED。選擇相應的JSON數據對象,如data1用于打開LED,data2用于關閉LED;通過fetch API發送包含這些數據的POST請求到巴法云的指定URL。
請求發送后,函數處理響應:如果響應成功,則嘗試將響應體解析為JSON并打印到控制臺;如果響應不成功,則拋出一個錯誤。在請求過程中發生任何錯誤,均會被捕獲并打印錯誤信息。
第五步:在.ino文件中編寫ESP32,接收巴法云下發指令的doTCPClientTick函數。
doTCPClientTick函數是一個用于TCP客戶端管理的綜合性函數,它負責處理連接管理、數據接收、心跳保持以及數據處理等多個方面,通過該函數可以實現與TCP服務器的穩定通信,并根據接收到的指令執行相應的操作[5]。
首先,該函數會檢查Wi-Fi和TCP客戶端的連接狀態。若Wi-Fi未連接,則函數直接返回;若TCP客戶端已斷開連接,則會記錄斷開狀態,并在一定延遲后嘗試重新連接。
當TCP客戶端處于連接狀態時,該函數會檢查是否有數據可讀。若有,則逐字符讀取并存儲到緩沖區中,同時更新緩沖區索引和最后接收時間。為避免緩沖區溢出,該函數會檢查緩沖區大小,并在必要時進行調整。
為維持TCP連接的有效性,該函數會定期檢查自上次心跳以來的時間。若時間超過設定的閾值,則向服務器發送心跳消息。
當緩沖區中有數據且自上次接收數據以來的時間超過一定閾值時,該函數會認為數據已準備好進行處理。它會從緩沖區中提取主題和消息內容,并根據消息內容執行相應的操作——打開或關閉LED。
在數據處理完畢后,該函數會清空緩沖區并重置緩沖區索引,為接收新數據做準備。
用戶在網頁上單擊開燈按鈕,串口接收區顯示接收Turn On信息,在仿真平臺上實現開燈;用戶在網頁上單擊關燈按鈕,串口接收區顯示接收Turn Off信息,在仿真平臺上實現關燈。遠程實現開燈效果圖如圖2所示。

為了讓學生更直觀地理解嵌入式系統和網絡通信的原理,本文利用Wokwi平臺和巴法云平臺構建了一個模擬的遠程開關燈系統。學生通過編寫網頁,結合巴法云平臺,利用TCP/IP協議,將控制指令發送到Wokwi平臺上的模擬設備,實現遠程開關燈的功能。這一過程不僅鍛煉了學生的編程能力,還讓他們對網絡通信的原理有了更深入的了解。
這一系統不僅為學生提供了一個低成本的實踐環境,還極大地豐富了他們的學習體驗。未來,我們將繼續探索更多創新的教學方式,以培養出更多具備實踐能力和創新思維的優秀人才。