精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何將ESP8266變成智能家居設(shè)備

李泳瑜 ? 來源:我不吃魚 ? 作者:我不吃魚 ? 2022-07-28 08:02 ? 次閱讀

智能家居設(shè)備正變得越來越普遍,這要?dú)w功于遠(yuǎn)程控制的可能性和配置的便利性。燈、智能插頭、恒溫器和氣象站只是智能家居設(shè)備中最常見的一些例子,如今主要配備 WiFi 通信接口。任何有機(jī)會使用眾多智能 WiFi 燈或燈泡之一的人都知道將設(shè)備連接到 WiFi 網(wǎng)絡(luò)并遠(yuǎn)程控制其操作是多么快速和簡單。我們?nèi)绾卧谛⌒?a href="http://www.nxhydt.com/v/tag/590/" target="_blank">ESP8266設(shè)備上重現(xiàn)這種行為,將其變成智能家居設(shè)備?

介紹

在本文中,將解釋嵌入式設(shè)備如何在不知道其憑據(jù)的情況下連接到 WiFi 網(wǎng)絡(luò)(通常是安全的)。由于智能設(shè)備沒有任何鍵盤或觸摸屏顯示器,用戶無法輸入 WiFi SSID 和密碼。那么,商業(yè)設(shè)備如何在無需上傳新固件的情況下連接到 WiFi 網(wǎng)絡(luò)呢?

德州儀器Texas Instruments) 為簡化嵌入式設(shè)備與家庭 WiFi 網(wǎng)絡(luò)的連接而開發(fā)的SmartConfig技術(shù)解釋了這個明顯的謎團(tuán):此操作只需一次,并且由一個簡單的步驟組成。在本文的后續(xù)部分,我們將介紹在 Espressif Systems 開發(fā)的ESP8266系列設(shè)備上激活 SmartConfig 功能的必要程序,這是一款提供 WiFi 接口并適合支持智能家居應(yīng)用的廉價(jià)板。

工作原理

盡管德州儀器尚未發(fā)布任何真正的 SmartConfig 公有文檔,但其操作原理相對簡單。連接到家庭 WiFi 網(wǎng)絡(luò)的主機(jī)設(shè)備(智能手機(jī)、平板電腦或 PC)向虛構(gòu)的接收者發(fā)送 UDP 數(shù)據(jù)包,其中包含用于訪問 WiFi 網(wǎng)絡(luò)的 SSID 和密碼。仍未連接的智能設(shè)備正在偵聽和監(jiān)視網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包的流量。

當(dāng)客戶端識別到主機(jī)發(fā)送的數(shù)據(jù)包時(shí),它會對其進(jìn)行解碼,提取用于訪問 WiFi 網(wǎng)絡(luò)的憑據(jù),并將它們存儲在自己的非易失性存儲器中,以便在每次上電時(shí)重復(fù)使用。從這一刻起,智能設(shè)備將能夠連接到 WiFi 網(wǎng)絡(luò),而無需任何外部干預(yù)。如果設(shè)備隨后將被移動到另一個 WiFi 網(wǎng)絡(luò)的范圍內(nèi)(例如在另一個房子中),則應(yīng)重復(fù)相同的過程以獲取新的憑證。

圖 1所示的移動設(shè)備配備了一個特殊的應(yīng)用程序,該應(yīng)用程序連接到家庭 WiFi 網(wǎng)絡(luò),將一系列 UDP 數(shù)據(jù)包傳輸?shù)?WiFi 接入點(diǎn) (AP)。在這些數(shù)據(jù)包的長度字段中,應(yīng)用程序?qū)?WiFi 網(wǎng)絡(luò)的 SSID 和密碼進(jìn)行編碼。在智能設(shè)備上啟用 SmartConfig 功能時(shí),對長度字段的內(nèi)容進(jìn)行解碼以提取訪問網(wǎng)絡(luò)的憑據(jù)。

通過網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)包的結(jié)構(gòu)符合IEEE 802.3 標(biāo)準(zhǔn)。具體而言,數(shù)據(jù)鏈路頭由 14 個字節(jié)組成:6 個字節(jié)用于目標(biāo)地址,6 個字節(jié)用于源地址,2 個字節(jié)指定數(shù)據(jù)字段的長度。之所以選擇在 2 字節(jié)長度字段中輸入有關(guān) WiFi 網(wǎng)絡(luò)的信息的原因非常簡單:即使在接入點(diǎn)上激活了安全連接,該字段也不會被編碼。

SmartConfig 功能由用于通過Arduino IDE開發(fā)草圖的ESP8266 WiFi 庫完全集成和支持。API 接口非常簡單:在“站”模式下配置 WiFi 收發(fā)器后,草圖中唯一要使用的功能如下:

? bool beginSmartConfig() – 在設(shè)備上啟用 SmartConfig 功能。如果成功,則返回 true,否則返回 false;

? bool smartConfigdone() – 它是更相關(guān)的函數(shù):當(dāng)設(shè)備已通過Sm??artConfig 協(xié)議正確配置并已建立WiFi 連接時(shí),它返回true;

? bool stopSmartConfig() – 此函數(shù)禁用設(shè)備上的SmartConfig 功能。此功能的使用是可選的,在我們的草圖中根本不會使用。

草圖

所有處理都在setup函數(shù)內(nèi)部執(zhí)行。最初,WiFi 連接配置為站模式,并初始化串行線路波特率。隨后,如果設(shè)備在 10 秒超時(shí)后未能使用其非易失性存儲器中包含的信息連接到 WiFi 網(wǎng)絡(luò),則調(diào)用beginSmartConfig函數(shù)以啟用此功能。然后,草圖進(jìn)入一個循環(huán),無限期地等待應(yīng)用程序發(fā)送的 UDP 數(shù)據(jù)包的到達(dá)和隨后的解碼。

發(fā)生這種情況時(shí),smartConfigDone函數(shù)返回一個非零值,草圖退出循環(huán)并在串行線路上顯示一條消息,其中包含用于連接到 WiFi 網(wǎng)絡(luò)的憑據(jù)和 DHCP 服務(wù)器分配的 IP 地址。后續(xù)連接將使用相同的憑據(jù)。除了在串口線上發(fā)送的調(diào)試信息外,Sketch 還使用板載 LED 顯示程序所在的階段,根據(jù)以下方案:

? LED 亮起:設(shè)備嘗試連接到 WiFi 網(wǎng)絡(luò)的初始階段;

? LED 閃爍:設(shè)備正在等待主機(jī) UDP 數(shù)據(jù)包;

? LED 熄滅:設(shè)備已連接到 WiFi 網(wǎng)絡(luò)。

#include

#include

void setup()

{

int retry=0, config_done=0;

// 在站模式下配置 WiFi

WiFi.mode(WIFI_STA);

// 配置串口波特率

Serial.begin(9600);

// 將板載 LED 配置為輸出引腳

pinMode(16, OUTPUT);

// 打開 LED

digitalWrite(16, LOW);

// 檢查是否可以建立 WiFi 連接

Serial.println(“Attempt to connect to WiFi network.。.”);

而(WiFi.status()!= WL_CONNECTED)

{

Serial.print(“。”);

延遲(500);

if (retry++ 》= 20) // 連接超時(shí)為 10 秒

{

Serial.println(“連接超時(shí)已過期!啟動 SmartConfig.。.”);

WiFi.beginSmartConfig();

// 永遠(yuǎn)循環(huán):僅在接收到 SmartConfig 數(shù)據(jù)包時(shí)退出

while (true)

{

delay(500);

Serial.print(“。”);

if (WiFi.smartConfigDone())

{

Serial.println(“nSmartConfig 配置成功”);

配置完成=1;

休息; // 退出循環(huán)

}

切換LED();

}

if (config_done==1)

中斷;

}

}

// 關(guān)閉 LED

digitalWrite(16, HIGH);

// 等待 IP 地址分配

while(WiFi.status() != WL_CONNECTED)

{

delay(50);

}

// 顯示 WiFi 連接數(shù)據(jù)

Serial.println(“”);

WiFi.printDiag(串行);

// 顯示分配給我們設(shè)備的 IP 地址

Serial.println(WiFi.localIP());

}

void loop()

{

// 無事可做!

}

無效切換LED()

{

靜態(tài)int pinStatus = LOW;

如果(pinStatus==HIGH)

pinStatus=LOW;

否則

pinStatus=HIGH;

數(shù)字寫入(16,pinStatus);

}

必須將草圖加載并編譯到先前配置為支持ESP8266 系列板的Arduino IDE環(huán)境中。在啟動構(gòu)建之前,請確保工具菜單中的 Erase Flash:“Sketch+WiFi 設(shè)置”選項(xiàng)已啟用。此選項(xiàng)會刪除任何以前存儲的用于訪問 WiFi 網(wǎng)絡(luò)的憑據(jù)。

該應(yīng)用程序

要配置設(shè)備,我們將使用可從 Google Play 免費(fèi)下載的ESP8266 SmartConfig 應(yīng)用程序。安裝后,確保移動設(shè)備連接到您要連接 ESP8266 的同一 WiFi 網(wǎng)絡(luò)。在應(yīng)用程序的主窗口中,檢查網(wǎng)絡(luò) SSID 是否正確,然后在下面的文本框中輸入密碼。然后按頁面底部的 CONFIRM 按鈕,將幀長度字段中編碼的 SSID 和密碼信息發(fā)送到如上所述的 ESP8266。

幾秒鐘后,我們將獲得智能設(shè)備成功配置的確認(rèn),如應(yīng)用程序和串行監(jiān)視器上的日志所示。

此時(shí)您可以按下確認(rèn)按鈕并關(guān)閉應(yīng)用程序,除非您想將智能設(shè)備連接到另一個 WiFi 網(wǎng)絡(luò)或更改訪問憑據(jù)(SSID 和/或密碼),否則將不再需要此操作。從現(xiàn)在開始,ESP8266 可以獨(dú)立連接到 WiFi 網(wǎng)絡(luò),使用通過 SmartConfig 接收并存儲在內(nèi)部 eeprom 內(nèi)存中的信息。

項(xiàng)目跟進(jìn)

本文中的草圖旨在作為開發(fā)完整智能家居設(shè)備項(xiàng)目的基礎(chǔ)。雖然這些方面將在后面的文章中更詳細(xì)地討論,但我們已經(jīng)可以突出顯示我們可以對項(xiàng)目進(jìn)行的一些擴(kuò)展。首先,可以通過在 WiFi 連接之后的階段插入能夠處理來自遠(yuǎn)程客戶端的連接請求的 Web 服務(wù)器來修改草圖。因此,可以通過任何智能手機(jī)、平板電腦或 PC 與智能設(shè)備進(jìn)行交互:我們只需使用互聯(lián)網(wǎng)瀏覽器連接到設(shè)備即可。下一步可能是將繼電器連接到 ESP8266 板并遠(yuǎn)程控制連接到它們的負(fù)載的開/關(guān),添加溫度、濕度、亮度、RGB 或其他傳感器。所有這些設(shè)備都將以簡單有效的方式遠(yuǎn)程控制。以同樣的方式操作,我們可以構(gòu)建一個智能插座或 WiFi 燈。

結(jié)論

我們在本文中已經(jīng)看到,通過幾個簡單的步驟,可以通過 SmartConfig 協(xié)議配置普通的 ESP8266 卡,使其連接到所需的 WiFi 網(wǎng)絡(luò),而無需修改電路板上的固件。該操作構(gòu)成了構(gòu)建完整智能家居應(yīng)用程序的基礎(chǔ)和基本要求。在以后的文章中,我們將看到如何通過創(chuàng)建一個完整的操作智能設(shè)備來擴(kuò)展這個項(xiàng)目。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7455

    瀏覽量

    163623
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5291

    瀏覽量

    203320
  • 智能家居
    +關(guān)注

    關(guān)注

    1926

    文章

    9523

    瀏覽量

    184374
收藏 人收藏

    評論

    相關(guān)推薦

    ESP8266 太空人動畫的 OLED 顯示

    ESP8266 太空人動畫的 OLED 顯示
    的頭像 發(fā)表于 10-08 15:06 ?218次閱讀
    <b class='flag-5'>ESP8266</b> 太空人動畫的 OLED 顯示

    esp32和esp8266代碼共用嗎

    本文介紹ESP32和ESP8266兩款流行的微控制器在代碼共用性方面的可能性與差異性。 一、引言 隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,越來越多的智能設(shè)備
    的頭像 發(fā)表于 08-19 18:23 ?1003次閱讀

    esp8266esp32區(qū)別是什么

    以下是關(guān)于ESP8266ESP32的主要區(qū)別: 處理器和架構(gòu) : ESP8266 :使用一個Tensilica L106 80MHz的處理器,屬于Xtensa架構(gòu)。 ESP32 :使
    的頭像 發(fā)表于 08-19 18:16 ?4507次閱讀

    esp8266不燒錄可以使用嗎

    ESP8266是一款非常流行的Wi-Fi模塊,廣泛應(yīng)用于物聯(lián)網(wǎng)項(xiàng)目中。然而,如果不進(jìn)行燒錄,ESP8266無法正常工作。 1. ESP8266簡介
    的頭像 發(fā)表于 08-19 17:28 ?657次閱讀

    esp8266wifi模塊怎么連接手機(jī)

    ESP8266 : 使用USB轉(zhuǎn)TTL模塊ESP8266模塊與電腦連接。 通過串口調(diào)試助手發(fā)送AT指令配置ESP8266,包括設(shè)置WiFi模式為STA模式(客戶端模式),連接指定的W
    的頭像 發(fā)表于 08-19 17:27 ?2304次閱讀

    機(jī)智云ESP8266開發(fā)板RGB彩燈控件

    用戶帶來了全新的家居體驗(yàn)。無論是個性化的燈光設(shè)置,還是智能化的遠(yuǎn)程管理,這款產(chǎn)品都展現(xiàn)了其在智能家居領(lǐng)域的引領(lǐng)地位。機(jī)智云esp8266開發(fā)板RGB彩燈控件1、
    的頭像 發(fā)表于 08-09 08:10 ?353次閱讀
    機(jī)智云<b class='flag-5'>ESP8266</b>開發(fā)板RGB彩燈控件

    如何將多個ESP8266與移動設(shè)備連接?

    我有三個ESP8266模塊。所有這些都被用作網(wǎng)絡(luò)服務(wù)器,作為透明的串行鏈接。 通過一對一連接,它工作正常。 如何使用一個移動應(yīng)用程序連接到所有三個模塊?
    發(fā)表于 07-19 11:55

    如何讓ESP8266變成AP模式?

    請問除了smartconfig之外,我想讓ESP8266變成AP模式,再用手機(jī)APP與ESP8266對連后由手機(jī)輸入家中的路由器的SSID與Password給ESP8266 然后讓
    發(fā)表于 07-15 08:16

    如何將AP憑據(jù)從移動設(shè)備發(fā)送到ESP模塊?

    ESP8266 SDK 0.9.5 中,提供了智能配置 API。查看smartconfig_start功能,我可以看到它支持 ESP-TOUCH 協(xié)議。現(xiàn)在,我的問題是它如何將 A
    發(fā)表于 07-12 15:33

    如何使用ESP8266WiFi嵌入到設(shè)備中?

    我們考慮使用ESP8266 WiFi 嵌入到我們的設(shè)備中。
    發(fā)表于 07-12 10:41

    如何將atoi與esp8266 sdk一起使用?

    有誰知道如何將 atoi 與 esp8266 sdk 一起使用?我似乎找不到可以提供它的頭文件。 I\'m using \"ESP8266_NONOS_SDK_V1.5.4_16_05_20\"
    發(fā)表于 07-09 07:59

    請問如何將cURL庫添加到ESP8266_RTOS_SDK項(xiàng)目中?

    我想使用 curl api,但我不知道如何將庫添加到我的項(xiàng)目中,這樣當(dāng)我將該庫的頭文件包含在我的項(xiàng)目中時(shí)它就不會抱怨。 有誰知道如何正確地第三方庫添加到ESP8266_RTOS_SDK項(xiàng)目中?
    發(fā)表于 07-09 07:52

    ESP8266如何將uart0的txd和rxd交換到其他引腳?

    大家好,我需要使用 ESP8266 的串口與其他設(shè)備通信. 但是 ESP8266 的 boot 啟動時(shí)會從 UART0 輸出一些調(diào)試信息,這會影響我的正常通信. ESP8266 的文檔
    發(fā)表于 07-08 07:56

    ESP8266網(wǎng)絡(luò)天氣時(shí)鐘OLED顯示

    基于ESP8266實(shí)現(xiàn)網(wǎng)絡(luò)獲取天氣和時(shí)鐘并OLED顯示
    的頭像 發(fā)表于 06-28 04:46 ?1006次閱讀
    <b class='flag-5'>ESP8266</b>網(wǎng)絡(luò)天氣時(shí)鐘OLED顯示

    國產(chǎn)低成本W(wǎng)i-Fi SoC解決方案芯片ESP8266ESP8285對比差異

    ESP8266ESP8285對比差異 ESP8285相當(dāng)于在ESP8266基礎(chǔ)上多加了1/2MB Flash, ESP8285與
    的頭像 發(fā)表于 05-17 11:44 ?1189次閱讀
    國產(chǎn)低成本W(wǎng)i-Fi SoC解決方案芯片<b class='flag-5'>ESP8266</b>與<b class='flag-5'>ESP</b>8285對比差異