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 网络,而无需修改电路板上的固件。该操作构成了构建完整智能家居应用程序的基础和基本要求。在以后的文章中,我们将看到如何通过创建一个完整的操作智能设备来扩展这个项目。

审核编辑:郭婷

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

    关注

    39

    文章

    7714

    浏览量

    170817
  • WIFI
    +关注

    关注

    82

    文章

    5466

    浏览量

    211926
  • 智能家居
    +关注

    关注

    1941

    文章

    9943

    浏览量

    195471
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于芯源CW32 MCU智能家居照明控制系统设计与实现

    。 光照传感器:用于检测环境亮度,自动调节灯光亮度。 Wi-Fi模块(如ESP8266):实现与手机应用或智能音箱的无线通信,远程控制照明系统。 继电器模块:控制灯光的开关。 按键/触摸面板:用户在本地可以
    发表于 12-03 06:06

    晶科鑫 | 国产26MHz晶振匹配Espressif(乐鑫) ESP8285/ESP8266芯片案例

    【应用】国产26MHz频率晶振应用于物联网WIFI物联网模块(串口转WiFi模块),Espressif(乐鑫)ESP8285/ESP8266芯片匹配测试OKESP8285其实是ESP8266的升级版
    的头像 发表于 11-21 15:37 4043次阅读
    晶科鑫 | 国产26MHz晶振匹配Espressif(乐鑫) <b class='flag-5'>ESP</b>8285/<b class='flag-5'>ESP8266</b>芯片案例

    ESP8266ESP32开发板常见的2种下载方式

    ESP32和ESP8266是性价比很高而且使用较为广泛的的Wi-Fi模块,在物联网(IoT)领域的DIY项目中可以首先考虑这2款产品。 两款芯片都属于32位处理器。ESP32是低功耗双核80MHz
    的头像 发表于 11-10 20:30 316次阅读
    <b class='flag-5'>ESP8266</b>和<b class='flag-5'>ESP</b>32开发板常见的2种下载方式

    ESP8266ESP32开发板常见的2种下载方式

    协议,完整的 TCP/IP 协议栈以及蓝牙协议栈。用户可以使用这两款模块为现有的设备添加WIFI联网功能或蓝牙(ESP32),轻松的构建独立的网络控制器和远程控制监控设备ESP8266
    发表于 10-24 18:04

    智能家居体验升级关键!物联网云平台靠跨设备数据关联发力

    在数字浪潮席卷全球的今天,物联网云平台已成为智能家居的“大脑”与“中枢”,正以前所未有的深度和广度重新定义着我们的居住体验,连接起分散的智能设备,实现数据互通与指令协同,让智能家居从“
    的头像 发表于 09-22 15:06 382次阅读

    请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗

    请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
    发表于 09-17 12:06

    信号发生器在智能家居设备测试中的应用

    智能家居设备的测试面临诸多挑战。信号发生器作为电子测试领域的核心工具,在智能家居设备的研发、生产及质量验证中发挥着不可替代的作用。本文深入
    的头像 发表于 08-18 17:13 542次阅读
    信号发生器在<b class='flag-5'>智能家居</b><b class='flag-5'>设备</b>测试中的应用

    如何快速开发符合Matter标准的智能家居设备

    Matter是由亚马逊、苹果、谷歌等国际生态巨头携手CSA联盟(原Zigbee联盟)针对智能家居行业开发的一种开源性的互操作标准,其允许运行在不同通信协议下的、不同类别及品牌的智能家居设备能在同一
    的头像 发表于 08-07 17:35 2215次阅读
    如何快速开发符合Matter标准的<b class='flag-5'>智能家居</b><b class='flag-5'>设备</b>?

    基于智能家居项目 完结散花

    一、项目目标通过机智云平台,快速实现以下功能:MCU+ESP8266实现单点控制实现多点控制(如多个按键控制一个设备)实现MCU数据上报至云端实现获取网络时间(NTP)二、机智云平台简介机智云
    的头像 发表于 07-31 18:03 465次阅读
    基于<b class='flag-5'>智能家居</b>项目  完结散花

    STM32+esp8266连接机智云,上传温湿度数据并控制继电器开关(平台配置、代码生成、代码移植)

    本教程详细介绍如何将STM32微控制器与ESP8266Wi-Fi模块连接到机智云平台,实现温湿度数据的上传与继电器的远程控制。通过此过程,您将学会如何配置机智云平台,烧录ESP8266
    的头像 发表于 07-15 18:54 740次阅读
    STM32+<b class='flag-5'>esp8266</b>连接机智云,上传温湿度数据并控制继电器开关(平台配置、代码生成、代码移植)

    ESP8266烧录与机智云一键配网教程

    ESP8266模块因其低成本和高性能,广泛应用于智能家居和工业自动化等领域。机智云平台提供了一键配网功能,简化了设备的联网过程。本教程详细介绍如何使用
    的头像 发表于 05-24 11:04 1548次阅读
    <b class='flag-5'>ESP8266</b>烧录与机智云一键配网教程

    Matter 智能家居的通用语言

    企业正在测试 134 种独特的 Matter 产品。 在消费者对智能家居设备无缝互操作性需求的推动下,Matter的广泛采用吸引更多的开发者。
    发表于 05-19 15:35

    明远智睿SSD2351开发板:智能家居智能核心

    1.4GHz处理器具备强大的运算能力,能够快速处理智能家居系统中的各种数据和指令。在智能家居环境中,大量的设备需要进行实时监控和控制,如智能灯光、
    发表于 05-07 18:59

    智能家居Mesh组网方案:实现智能化生活的无缝连接NRF52832

    自组织的 Mesh 网络,各个智能设备连接在一起,实现了全屋智能家居的无缝连接。与传统的单点连接方式相比,Mesh 网络具有更强的稳定性和可靠性,同时能够穿越墙壁等障碍物,扩大了信号
    发表于 04-15 14:07

    零知开源——ESP8266+MPU6050 实现运动姿态检测

    零知ESP8266的I2C通信        在运动姿态检测、机器人平衡控制、VR头戴设备等应用中,MPU6050(三轴加速度计+三轴陀螺仪)是一个常见的姿态传感器。而ESP8266作为一款低功耗
    的头像 发表于 02-20 17:54 2801次阅读
    零知开源——<b class='flag-5'>ESP8266</b>+MPU6050 实现运动姿态检测