<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于PlatformIO IDE的家庭自動化系統設計方案實現

電子設計 ? 來源:電路城 ? 作者:電路城 ? 2021-05-28 16:42 ? 次閱讀

該項目使用丙烯酸板創建自定義的家庭自動化原型,并將ESP32設置為Web服務器,從而來控制不同負載組件。

接線圖:

基于PlatformIO IDE的家庭自動化系統設計方案實現

引腳接線表:

對于可調光的LED燈泡,只需將其連接到Robotdyn AC調光器的任何輸出引腳即可。

從繼電器輸出到交流負載的連接類似于上圖。只需將一根線直接連接到交流負載,然后將另一根交流線連接到繼電器的通用連接,然后將常開引腳連接到交流負載即可。

注意: 連接交流負載時要非常小心,如果連接不正確,可能會觸電。

ESP32 Web服務器:

為了控制交流負載,將ESP32配置為Web服務器,以便能夠響應來自瀏覽器的HTTP請求。因此,通過使用筆記本電腦手機中的瀏覽器,就可以控制該家庭自動化項目。(Web Server的工作原理

將應用程序部署在ESP32串行外設接口閃存文件系統(SPIFFS)中。應用程序用戶界面由帶有CSS和Javascript的HTML頁面組成,用于設計和處理用戶交互。使用SPIFFS比將所有頁面都放入arduino變量的效果要好得多。

PlatformIO中的代碼:

項目代碼:點擊查看

打開Visual Studio代碼,然后單擊“文件”-》“將文件夾添加到工作區”。然后,選擇已下載或復制的文件夾。

基于PlatformIO IDE的家庭自動化系統設計方案實現

應將代碼導入Visual Studio代碼中。單擊最左側的資源管理器選項卡以查看代碼。

基于PlatformIO IDE的家庭自動化系統設計方案實現

使用PlatformIO IDE,可以輕松配置依賴項。在Arduino IDE中,使用庫管理器配置依賴文件,而在PlatformIO中,使用platformio.ini文件設置依賴關系。

單擊platformio.ini文件,lib_deps部分中配置了以下庫。該ESP32家庭自動化項目特定于以下項目。使用PlatformIO,不需要手動添加任何內容,因為這些依賴項已自動下載并配置。

https://github.com/me-no-dev/ESPAsyncTCP.git

https://github.com/me-no-dev/ESPAsyncWebServer.git

https://github.com/bblanchon/ArduinoJson.git

https://github.com/RobotDynOfficial/RBDDimmer.git

基于PlatformIO IDE的家庭自動化系統設計方案實現

HTML / CSS / Javascript:

所有靜態文件(例如HTML,級聯樣式表(CSS)和Javascript文件)都位于PlatformIO項目的data文件夾內。所有這些文件都需要使用PlatformIO Upload Task上載到ESP32 SPIFFS 。

ESP32家庭自動化項目僅包含1個名為index.html的html頁面,并包含了需要的所有用戶界面。(文件)

基于PlatformIO IDE的家庭自動化系統設計方案實現

index.html:包含該項目的主要用戶界面。

基于PlatformIO IDE的家庭自動化系統設計方案實現

該部分包含對需要在移動瀏覽器正確渲染所有的meta標簽。它還包含標題標簽,以討論該項index.html需要3個其他文件來處理樣式和用戶交互。

wholeframework.min.css –是我使用流行的mincss庫使用的主要樣式表。

toggle-switchy –是一個CSS庫,可用于將復選框轉換為切換類型的界面

custom.css –是自定義樣式文件。

基于PlatformIO IDE的家庭自動化系統設計方案實現

在body標簽結束之前,導入custom.js文件,該文件用于在用戶切換復選框時處理事件。

基于PlatformIO IDE的家庭自動化系統設計方案實現

該代碼僅用于導航和顯示網站頁面。

基于PlatformIO IDE的家庭自動化系統設計方案實現

toggle-switchy CSS庫將每個復選框的樣式設置為看起來像一個切換框。還需注意以下“模板”構造。它們是模板變量,將由ESPAsyncWebServer的模板處理引擎替換。

%TUBE_TEMPLATE_STATUS%

%BULB_TEMPLATE_STATUS%

%SOCKET_TEMPLATE_STATUS%

%DIMMER_VALUE%

當瀏覽器處理HTML / CSS / Javascript時,它將如下面的用戶界面所示呈現。這就是ESP32家庭自動化項目進行交互并使用手機瀏覽器控制AC負載的方式。

custom.js:自定義javascript文件,它將處理網頁和用戶之間的交互。

如果用戶切換了燈泡復選框,則它應該更新用戶界面的值,并通過digitalWrite函數切換GPIO引腳的值。

該代碼使用Fetch API,而不是使用XMLHTTPRequest對象。在從DOM中選擇元素并將函數處理程序附加到事件之后,將向Web服務器發送JSON請求,然后處理響應并刷新網頁。另外,使用javascript async / await語法來處理JSON請求的等待/處理。

如果想查看用戶界面發送的JSON請求,在瀏覽器中單擊F12,然后轉到“網絡”選項卡。將應用程序部署到ESP32后,即可執行此操作。如果切換任何開關,那么在幕后就會有一個請求發送到具有對GPIO的控制權的ESP32異步Web服務器。

下面3個文件為ESP32家庭自動化項目提供了動力。它們是為ESP32 Web服務器提供動力的文件,它們執行以下操作:

創建一個Web服務器并偵聽來自瀏覽器的HTTP請求

保存AutomationProto類的當前狀態,以便即使在多個瀏覽器中訪問該類,也仍將獲得相同的狀態。

更新GPIO引腳的值

將代碼分為頭文件和cpp文件,以進一步清理代碼結構。頭文件將包含項目的框架,而cpp文件將顯示實現。如,automation.h是頭文件,Automation.cpp是cpp文件。

自動化:

在創建該項目時,嘗試遵循面向對象的編程,因此將AutomationProto表示為一個類。

此C ++頭文件包含將控制項目的類。

此外,它包含為調光燈供電所需的導入頭文件。已使用Robotdyn AC Dimmer庫,因此已將其導入此處。

此類還表示交流負載的狀態,因此可以看到每個交流負載的布爾屬性。一個屬性表示燈管光(m_tube),燈座(m_socket),燈泡(m_bulb)和調光燈值(m_dimValue)。

它還包含所有getters和setters屬性,以更改類的私有變量。在main.cpp文件中,可以看到如何導入此類。

Automation.cpp:包含代碼的實現。它還定義了ESP32引腳來控制功率繼電器。

引腳分配:

管腳– GPIO 16

燈泡引腳– GPIO 17

插座引腳– GPIO 18

調光器輸出引腳– GPIO 32

調光器過零引腳– GPIO 36

該代碼行導入了automation.h,并為AutomationProto類定義了C ++構造函數。已經將所有變量初始化為false來表示“ OFF ”狀態。如果將其設置為true,則表示“ ON ”狀態。

該代碼代表了GPIO引腳分配。

上面的代碼是一個自定義方法,它將初始化AutomationProto類,并使用arduino digitalWrite命令設置所有GPIO輸出。調光器類也在此方法中初始化。

基于PlatformIO IDE的家庭自動化系統設計方案實現

每個AC負載都由一個getter和setter方法表示,該方法將設置類的私有值。此外,在此處調digitalWrite代碼,以便根據需要打開或關閉GPIO。

main.cpp:負責服務來自瀏覽器的HTTP請求,并處理硬件的接口。

這些是include語句,這些語句將告訴所需的頭文件。

更新以下網絡連接用戶名和密碼,以匹配您的wifi網絡證書。

定義了ESP32 Web服務器,它將偵聽默認端口80并導入我們的AutomationProto類。

上面的代碼是“模板”處理器功能,并將在復選框上設置屬性“ checked ”。在上面有關index.html模板變量的討論中,此函數正在處理和替換它們。在“ /”根目錄或index.html調用上調用此函數。

當請求發送到服務器并且服務器不知道如何響應時,將調用上面的函數。

上面的代碼是setup()函數的開始。初始化串行對象,然后開始連接到wifi。之后,開始初始化SPIFFS。使用proto.init()函數調用來初始化類。

第2行:在此函數中映射“ / toggle / socket”

第4行:檢查“ status”參數是否設置為true或false。以下參數是由JavaScript代碼設置的。因此,如果將checbox切換為true,則發送“ true ”,否則發送“ false ”。

第6-8行:提取參數,然后將值設置為類AutomationProto

第9-10行:為JavaScript調用定義了一個返回值。

第12-16行:如果由于任何原因未定義參數,則將變量“ isError ”與消息一起設置為true

第18-20行:通過ArduinJSON庫將響應發送回調用瀏覽器

燈管和燈泡按鈕中也發生了類似的情況。唯一的區別是調光燈泡。

基于PlatformIO IDE的家庭自動化系統設計方案實現

第2行:偵聽請求“ / dimmer / change”,當擴展調光器的值時調用該請求。

第6-9行:通過調用proto.setDimmerValue(value.toInt());提取調光器輸入范圍的值,并設置AutomationProto類的值;

添加到ESP32:

如果要將其添加到ESP32,則可以從PlatformIO IDE執行以下操作。

首先,需要通過ESP32的SPIFFS將靜態文件上傳到項目的數據文件夾中。為此,單擊PlatformIO圖標,然后單擊“上傳文件系統映像”。如果看到消息“正在連接。..”??赡苄枰獑螕鬍SP32中的啟動按鈕。

基于PlatformIO IDE的家庭自動化系統設計方案實現

接下來,通過單擊“ Upload and Monitor”將代碼上傳到ESP32的閃存中。如果看到消息“正在連接。..”。再次,則可能需要再次單擊啟動按鈕。

一旦顯示了PlatformIO的監視器,然后等待顯示該消息。如果看到這樣的消息,請轉到手機瀏覽器并輸入以下ip地址?,F在,將被轉到index.html頁面。

如果看到“ WiFi失??!”消息,請單擊ESP32中的reset按鈕,等待一段時間以使其再次初始化,然后重試。
責任編輯:pj

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    8120

    瀏覽量

    82521
  • 調光器
    +關注

    關注

    4

    文章

    142

    瀏覽量

    23080
  • 瀏覽器
    +關注

    關注

    1

    文章

    974

    瀏覽量

    34420
  • 管理器
    +關注

    關注

    0

    文章

    233

    瀏覽量

    18319
收藏 人收藏

    評論

    相關推薦

    家庭自動化

    家庭自動化
    發表于 04-03 06:34

    饋線自動化通信系統怎么實現?

    饋線自動化是配電網自動化的重要組成部分。要實現饋線自動化,需要合理的配電網結構,具備環網供電的條件;各環網開關、負荷開關和街道配電站內開關的操作機構必須具有遠方操作功能;環網開關柜內必
    發表于 09-17 09:01

    基于GSM工業自動化系統設計方案

    ,用于通過GPRS進行互聯網數據傳輸?! SM調制解調器在基于GSM的工業自動化安全系統中的重要作用:  如今,一切都將通過智能MODEM技術實現自動化,利用這項技術,我們可以遠程訪
    發表于 09-01 18:03

    怎樣通過ZigBee技術去實現家庭自動化系統?

    怎樣通過ZigBee技術去實現家庭自動化系統?
    發表于 05-20 07:17

    求一種基于Android和Zigbee技術實現家庭環境監控系統設計方案

    齊全、運行穩定的家庭監控系統將具有非常大的市場競爭力。本文提出了一種基于Android和Zigbee技術實現家庭環境監控系統
    發表于 07-26 08:08

    家庭自動化控制如何實現

    家庭自動化控制系統怎么樣才能普及
    發表于 08-21 15:36

    如何去實現一種基于ZigBee的無線傳感網絡家庭自動化設計

    如何去實現一種基于ZigBee的無線傳感網絡家庭自動化設計?ZigBee數傳無線傳感器網絡在家庭自動化上的應用有哪些?
    發表于 09-24 08:47

    一個單房間家庭自動化解決方案

    描述單人房家庭自動化控制器家庭自動化 + LED 控制器Raspberry Pi 繼電器和 APA102 LED 控制器允許使用 Web GUI 控制和切換 APA102 可尋址 LE
    發表于 06-20 07:22

    基于Arduino制作藍牙家庭自動化系統

    描述首款適用于 Arduino 的藍牙家庭自動化擴展板如果您曾經想學習或使用 Arduino 制作藍牙家庭自動化系統,您一定在 youtub
    發表于 07-08 07:02

    分享一個不錯的家庭自動化項目

    描述家庭自動化我的項目是關于家庭自動化的,但是面包板連接不好,然后我看到了 pcbway 和如此高質量的 pcb,它們真是太棒了
    發表于 07-26 06:30

    如何使用MQTT和ESP8266的家庭自動化系統 ?

    在本視頻中,我們將看到在 ESP8266 上使用 MQTT 的家庭自動化系統。對于這個項目,我們將使用 Adafruit.io mqtt 服務器。 對于描述中共享的代碼、原理圖和 Gerber 文件鏈接。
    發表于 05-22 07:19

    基于Arduino的家庭自動化項目

    包含相關代碼、詳細圖文、物料表一個簡單的基于DIY Arduino的家庭自動化項目,它使用土壤濕度傳感器、泵和其他電子元件來自動澆水植物。它由一個適合室內園藝的混凝土花盆箱組成。自流式播種機也可作為水培
    發表于 09-26 08:16

    家庭自動化系統設計(3):利用片上系統技術實現

    關鍵詞:家庭自動化系統 , 片上系統 , IrDA解碼器 第2部分中,我們介紹了基于星形拓撲結構的家庭
    發表于 12-25 22:19 ?273次閱讀

    PlatformIO IDE物聯網集成開發環境

    platformio-atom-ide.zip
    發表于 04-20 09:44 ?2次下載
    <b class='flag-5'>PlatformIO</b> <b class='flag-5'>IDE</b>物聯網集成開發環境

    簡單家庭自動化或工業自動化物聯網解決方案

    電子發燒友網站提供《簡單家庭自動化或工業自動化物聯網解決方案.zip》資料免費下載
    發表于 12-01 09:30 ?2次下載
    簡單<b class='flag-5'>家庭</b><b class='flag-5'>自動化</b>或工業<b class='flag-5'>自動化</b>物聯網解決<b class='flag-5'>方案</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>