0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将ESP8266变成智能家居设备

李泳瑜 来源:我不吃鱼 作者:我不吃鱼 2022-07-28 08:02 次阅读

智能家居设备正变得越来越普遍,这要归功于远程控制的可能性和配置的便利性。灯、智能插头、恒温器和气象站只是智能家居设备中最常见的一些例子,如今主要配备 WiFi 通信接口。任何有机会使用众多智能 WiFi 灯或灯泡之一的人都知道将设备连接到 WiFi 网络并远程控制其操作是多么快速和简单。我们如何在小型ESP8266设备上重现这种行为,将其变成智能家居设备?

介绍

在本文中,将解释嵌入式设备如何在不知道其凭据的情况下连接到 WiFi 网络(通常是安全的)。由于智能设备没有任何键盘或触摸屏显示器,用户无法输入 WiFi SSID 和密码。那么,商业设备如何在无需上传新固件的情况下连接到 WiFi 网络呢?

德州仪器Texas Instruments) 为简化嵌入式设备与家庭 WiFi 网络的连接而开发的SmartConfig技术解释了这个明显的谜团:此操作只需一次,并且由一个简单的步骤组成。在本文的后续部分,我们将介绍在 Espressif Systems 开发的ESP8266系列设备上激活 SmartConfig 功能的必要程序,这是一款提供 WiFi 接口并适合支持智能家居应用的廉价板。

工作原理

尽管德州仪器尚未发布任何真正的 SmartConfig 公有文档,但其操作原理相对简单。连接到家庭 WiFi 网络的主机设备(智能手机、平板电脑或 PC)向虚构的接收者发送 UDP 数据包,其中包含用于访问 WiFi 网络的 SSID 和密码。仍未连接的智能设备正在侦听和监视网络上传输的数据包的流量。

当客户端识别到主机发送的数据包时,它会对其进行解码,提取用于访问 WiFi 网络的凭据,并将它们存储在自己的非易失性存储器中,以便在每次上电时重复使用。从这一刻起,智能设备将能够连接到 WiFi 网络,而无需任何外部干预。如果设备随后将被移动到另一个 WiFi 网络的范围内(例如在另一个房子中),则应重复相同的过程以获取新的凭证。

图 1所示的移动设备配备了一个特殊的应用程序,该应用程序连接到家庭 WiFi 网络,将一系列 UDP 数据包传输到 WiFi 接入点 (AP)。在这些数据包的长度字段中,应用程序对 WiFi 网络的 SSID 和密码进行编码。在智能设备上启用 SmartConfig 功能时,对长度字段的内容进行解码以提取访问网络的凭据。

通过网络发送的数据包的结构符合IEEE 802.3 标准。具体而言,数据链路头由 14 个字节组成:6 个字节用于目标地址,6 个字节用于源地址,2 个字节指定数据字段的长度。之所以选择在 2 字节长度字段中输入有关 WiFi 网络的信息的原因非常简单:即使在接入点上激活了安全连接,该字段也不会被编码。

SmartConfig 功能由用于通过Arduino IDE开发草图的ESP8266 WiFi 库完全集成和支持。API 接口非常简单:在“站”模式下配置 WiFi 收发器后,草图中唯一要使用的功能如下:

• bool beginSmartConfig() – 在设备上启用 SmartConfig 功能。如果成功,则返回 true,否则返回 false;

• bool smartConfigdone() – 它是更相关的函数:当设备已通过Sm​​artConfig 协议正确配置并已建立WiFi 连接时,它返回true;

• bool stopSmartConfig() – 此函数禁用设备上的SmartConfig 功能。此功能的使用是可选的,在我们的草图中根本不会使用。

草图

所有处理都在setup函数内部执行。最初,WiFi 连接配置为站模式,并初始化串行线路波特率。随后,如果设备在 10 秒超时后未能使用其非易失性存储器中包含的信息连接到 WiFi 网络,则调用beginSmartConfig函数以启用此功能。然后,草图进入一个循环,无限期地等待应用程序发送的 UDP 数据包的到达和随后的解码。

发生这种情况时,smartConfigDone函数返回一个非零值,草图退出循环并在串行线路上显示一条消息,其中包含用于连接到 WiFi 网络的凭据和 DHCP 服务器分配的 IP 地址。后续连接将使用相同的凭据。除了在串口线上发送的调试信息外,Sketch 还使用板载 LED 显示程序所在的阶段,根据以下方案:

• LED 亮起:设备尝试连接到 WiFi 网络的初始阶段;

• LED 闪烁:设备正在等待主机 UDP 数据包;

• LED 熄灭:设备已连接到 WiFi 网络。

#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) // 连接超时为 10 秒

{

Serial.println(“连接超时已过期!启动 SmartConfig.。.”);

WiFi.beginSmartConfig();

// 永远循环:仅在接收到 SmartConfig 数据包时退出

while (true)

{

delay(500);

Serial.print(“。”);

if (WiFi.smartConfigDone())

{

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

配置完成=1;

休息; // 退出循环

}

切换LED();

}

if (config_done==1)

中断;

}

}

// 关闭 LED

digitalWrite(16, HIGH);

// 等待 IP 地址分配

while(WiFi.status() != WL_CONNECTED)

{

delay(50);

}

// 显示 WiFi 连接数据

Serial.println(“”);

WiFi.printDiag(串行);

// 显示分配给我们设备的 IP 地址

Serial.println(WiFi.localIP());

}

void loop()

{

// 无事可做!

}

无效切换LED()

{

静态int pinStatus = LOW;

如果(pinStatus==HIGH)

pinStatus=LOW;

否则

pinStatus=HIGH;

数字写入(16,pinStatus);

}

必须将草图加载并编译到先前配置为支持ESP8266 系列板的Arduino IDE环境中。在启动构建之前,请确保工具菜单中的 Erase Flash:“Sketch+WiFi 设置”选项已启用。此选项会删除任何以前存储的用于访问 WiFi 网络的凭据。

该应用程序

要配置设备,我们将使用可从 Google Play 免费下载的ESP8266 SmartConfig 应用程序。安装后,确保移动设备连接到您要连接 ESP8266 的同一 WiFi 网络。在应用程序的主窗口中,检查网络 SSID 是否正确,然后在下面的文本框中输入密码。然后按页面底部的 CONFIRM 按钮,将帧长度字段中编码的 SSID 和密码信息发送到如上所述的 ESP8266。

几秒钟后,我们将获得智能设备成功配置的确认,如应用程序和串行监视器上的日志所示。

此时您可以按下确认按钮并关闭应用程序,除非您想将智能设备连接到另一个 WiFi 网络或更改访问凭据(SSID 和/或密码),否则将不再需要此操作。从现在开始,ESP8266 可以独立连接到 WiFi 网络,使用通过 SmartConfig 接收并存储在内部 eeprom 内存中的信息。

项目跟进

本文中的草图旨在作为开发完整智能家居设备项目的基础。虽然这些方面将在后面的文章中更详细地讨论,但我们已经可以突出显示我们可以对项目进行的一些扩展。首先,可以通过在 WiFi 连接之后的阶段插入能够处理来自远程客户端的连接请求的 Web 服务器来修改草图。因此,可以通过任何智能手机、平板电脑或 PC 与智能设备进行交互:我们只需使用互联网浏览器连接到设备即可。下一步可能是将继电器连接到 ESP8266 板并远程控制连接到它们的负载的开/关,添加温度、湿度、亮度、RGB 或其他传感器。所有这些设备都将以简单有效的方式远程控制。以同样的方式操作,我们可以构建一个智能插座或 WiFi 灯。

结论

我们在本文中已经看到,通过几个简单的步骤,可以通过 SmartConfig 协议配置普通的 ESP8266 卡,使其连接到所需的 WiFi 网络,而无需修改电路板上的固件。该操作构成了构建完整智能家居应用程序的基础和基本要求。在以后的文章中,我们将看到如何通过创建一个完整的操作智能设备来扩展这个项目。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7366

    浏览量

    163089
  • WIFI
    +关注

    关注

    81

    文章

    5256

    浏览量

    201706
  • 智能家居
    +关注

    关注

    1924

    文章

    9397

    浏览量

    182147
收藏 人收藏

    评论

    相关推荐

    esp32和esp8266代码共用吗

    本文介绍ESP32和ESP8266两款流行的微控制器在代码共用性方面的可能性与差异性。 一、引言 随着物联网技术的飞速发展,越来越多的智能设备
    的头像 发表于 08-19 18:23 599次阅读

    esp8266esp32区别是什么

    以下是关于ESP8266ESP32的主要区别: 处理器和架构 : ESP8266 :使用一个Tensilica L106 80MHz的处理器,属于Xtensa架构。 ESP32 :使
    的头像 发表于 08-19 18:16 1398次阅读

    esp8266不烧录可以使用吗

    ESP8266是一款非常流行的Wi-Fi模块,广泛应用于物联网项目中。然而,如果不进行烧录,ESP8266无法正常工作。 1. ESP8266简介
    的头像 发表于 08-19 17:28 348次阅读

    esp8266wifi模块怎么连接手机

    ESP8266 : 使用USB转TTL模块ESP8266模块与电脑连接。 通过串口调试助手发送AT指令配置ESP8266,包括设置WiFi模式为STA模式(客户端模式),连接指定的W
    的头像 发表于 08-19 17:27 662次阅读

    机智云ESP8266开发板RGB彩灯控件

    用户带来了全新的家居体验。无论是个性化的灯光设置,还是智能化的远程管理,这款产品都展现了其在智能家居领域的引领地位。机智云esp8266开发板RGB彩灯控件1、
    的头像 发表于 08-09 08:10 192次阅读
    机智云<b class='flag-5'>ESP8266</b>开发板RGB彩灯控件

    如何让ESP8266变成AP模式?

    请问除了smartconfig之外,我想让ESP8266变成AP模式,再用手机APP与ESP8266对连后由手机输入家中的路由器的SSID与Password给ESP8266 然后让
    发表于 07-15 08:16

    如何将AP凭据从移动设备发送到ESP模块?

    ESP8266 SDK 0.9.5 中,提供了智能配置 API。查看smartconfig_start功能,我可以看到它支持 ESP-TOUCH 协议。现在,我的问题是它如何将 A
    发表于 07-12 15:33

    如何使用ESP8266WiFi嵌入到设备中?

    我们考虑使用ESP8266 WiFi 嵌入到我们的设备中。
    发表于 07-12 10:41

    如何将atoi与esp8266 sdk一起使用?

    有谁知道如何将 atoi 与 esp8266 sdk 一起使用?我似乎找不到可以提供它的头文件。 I\'m using \"ESP8266_NONOS_SDK_V1.5.4_16_05_20\"
    发表于 07-09 07:59

    请问如何将cURL库添加到ESP8266_RTOS_SDK项目中?

    我想使用 curl api,但我不知道如何将库添加到我的项目中,这样当我将该库的头文件包含在我的项目中时它就不会抱怨。 有谁知道如何正确地第三方库添加到ESP8266_RTOS_SDK项目中?
    发表于 07-09 07:52

    ESP8266如何将uart0的txd和rxd交换到其他引脚?

    大家好,我需要使用 ESP8266 的串口与其他设备通信. 但是 ESP8266 的 boot 启动时会从 UART0 输出一些调试信息,这会影响我的正常通信. ESP8266 的文档
    发表于 07-08 07:56

    ESP8266网络天气时钟OLED显示

    基于ESP8266实现网络获取天气和时钟并OLED显示
    的头像 发表于 06-28 04:46 605次阅读
    <b class='flag-5'>ESP8266</b>网络天气时钟OLED显示

    国产低成本Wi-Fi SoC解决方案芯片ESP8266ESP8285对比差异

    ESP8266ESP8285对比差异 ESP8285相当于在ESP8266基础上多加了1/2MB Flash, ESP8285与
    的头像 发表于 05-17 11:44 893次阅读
    国产低成本Wi-Fi SoC解决方案芯片<b class='flag-5'>ESP8266</b>与<b class='flag-5'>ESP</b>8285对比差异

    基于ESP8266的机智云平台控制系统设计

    项目摘要:本项目以智能家居为主题,基于ESP8266的机智云平台控制系统,利用机智云平台和ESP8266WiFi模块、红外发射模块、STM32核心板、DHT11温湿度传感器模块,完成了与手机APP
    的头像 发表于 11-07 08:10 1207次阅读
    基于<b class='flag-5'>ESP8266</b>的机智云平台控制系统设计

    nodemcu和esp8266是什么关系?

    是芯片在esp8266芯片加上4MB spi flash变成esp-12模块;再在esp-12模块加上底板,加上USB转串口就变成NodeM
    的头像 发表于 10-20 14:53 3296次阅读
    nodemcu和<b class='flag-5'>esp8266</b>是什么关系?