[转]WIFI智能配网 - SmartConfig - Ray Liang - 博客园
要开始IoT项目的第一步是什么?当然不是硬件,而是硬件与硬件的连接!即使有各种各样的通信协议没有好的连接方式绝对不行。那外设上没有的屏幕,没有键盘怎末输入密码怎末选择网络?对,这就是WIFI模块最重要解决的问题。
为了解决这个连接问题乐鑫在其SDK中加入了SmartConfig功能,所谓的smartconfig就是手机APP端发送包含WIFI 用户名 WIFI密码的 UDP 广播包或者组播包,智能终端的WIFI芯片可以接收到该UDP包,只要知道UDP的组织形式,就可以通过接收到的UDP包解密 出WIFI 用户名 密码,然后智能硬件 配置受到的WIFI 用户名 密码到指定的WIFI AP 上。
如果将其原理用简洁点的步骤来解说应该分为以下几步:
- ESP8266 端调用
WiFi.beginSmartConfig()
等待手机端发出的用户名与密码。 - 手机端填写当前网络的密码发送到UDP端口。
- ESP8266 自动收到连接信息并调用
WiFi.smartConfigDone()
退出等待。
就这么简单!
ESP8266 的固件代码
Arduino core for ESP8266 的代码示例:
#include <ESP8266WiFi.h>;void setup() { Serial.begin(115200); delay(10); // 必须采用 AP 与 Station 兼容模式 WiFi.mode(WIFI_AP_STA); delay(500); // 等待配网 WiFi.beginSmartConfig(); // 收到配网信息后ESP8266将自动连接,WiFi.status 状态就会返回:已连接 while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); // 完成连接,退出配网等待。 Serial.println(WiFi.smartConfigDone()); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP());}int value = 0;void loop() {}
如果使用NodeMCU Lua 的话代码会更简单一些:
wifi.setmode(wifi.STATION)wifi.startsmart(0, function(ssid, password) print(string.format("Success. SSID:%s ; PASSWORD:%s", ssid, password)) end )
手机端
将以上的代码写入到ESP8266之后,就要在安卓或者iOS上安装一个由乐鑫提供的ESP-Touch的App将当前WIFI中的用户名和密码告知ESP8266以完成SmartConfig连接。
小结
本文的配网只是用简单代码对原理进行解释,而至于要应用到的实际开发时则需要对App端进行开发。以后还会写一篇在App端的配网方式介绍。
相关资源
- nodemcu-devkit NodeMCU的模块说明
- SmartConfig ESP8266 for NodeMCU and AT-commands 内附视频演示
- Using Bonjour in Swift
---------------------
作者:Ray Liang
来源:CNBLOGS
原文:https://www.cnblogs.com/Ray-liang/p/9786929.html
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix