惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Microsoft Azure Blog
Microsoft Azure Blog
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
小众软件
小众软件
F
Fortinet All Blogs
Microsoft Security Blog
Microsoft Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Google DeepMind News
Google DeepMind News
Jina AI
Jina AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
宝玉的分享
宝玉的分享
有赞技术团队
有赞技术团队
J
Java Code Geeks
WordPress大学
WordPress大学
The Cloudflare Blog

博客园 - Ray Liang

吐血整理JSON-RPC2.0的原理与应用 一小时手搓轻量级可代替 Qdrant 的向量数据库 彻底治愈AI“失忆”和胡说八道的真正办法 AI基于Spec开发是巨坑? 用六边形架构与整洁架构对比是伪命题? 老兵不死,只是换了战场:从27年的企业开发转型AI应用开发 被低估的量化版模型,小身材也能干大事 概念设计在AI时代的重要性:我是这样设计仿生大脑的 Opus现实打脸GLM5“教课书“式架构 顶极模型大比拼,到底谁才是真正的编程之王? EvoMap 硬刚 OpenClaw!从基因胶囊到仿生大脑,AI 的尽头果然是生物学 吊打OpenClaw!国产AI助理MindX开源:Token消耗砍至10%,还能养出专属数字分身 老程序员的信仰 HAAR与DLib的实时人脸检测之实现与对比 Raspberry Zero 上实现平滑视频图传 ESP8266的低功耗方案-睡眠模式 Arduino Core For ESP8266 ESP8266-Arduino杀手? Arduino通过MAX9814实现录音 nrf2401 - 最廉价的2.4G无线通信方案
WIFI智能配网 - SmartConfig
Ray Liang · 2018-10-25 · via 博客园 - Ray Liang

要开始IoT项目的第一步是什么?当然不是硬件,而是硬件与硬件的连接!即使有各种各样的通信协议没有好的连接方式绝对不行。那外设上没有的屏幕,没有键盘怎末输入密码怎末选择网络?对,这就是WIFI模块最重要解决的问题。

为了解决这个连接问题乐鑫在其SDK中加入了SmartConfig功能,所谓的smartconfig就是手机APP端发送包含WIFI 用户名 WIFI密码的 UDP 广播包或者组播包,智能终端的WIFI芯片可以接收到该UDP包,只要知道UDP的组织形式,就可以通过接收到的UDP包解密 出WIFI 用户名 密码,然后智能硬件 配置受到的WIFI 用户名 密码到指定的WIFI AP 上。

如果将其原理用简洁点的步骤来解说应该分为以下几步:

  1. ESP8266 端调用 WiFi.beginSmartConfig() 等待手机端发出的用户名与密码。
  2. 手机端填写当前网络的密码发送到UDP端口。
  3. 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端的配网方式介绍。

相关资源