Arduino+ESP8266一键配置连网

看过波波之前博客的朋友都知道之前写的项目是直接将WIFI的信道和密码写入Arduino内部的,这样做虽然对于个人项目并没有什么影响,但是如果涉及到项目商业化则明显不行。所以波波也一直在探索如何让用户更加便捷的配置开发板上网。功夫不负有心人,在简书上看到乐鑫提供了一个SmartConfig的方案感觉很不错,所以分享一下。

Arduino一键配置上网

 

所谓的smartconfig就是手机APP端发送包含WIFI 用户名 WIFI密码的 UDP 广播包或者组播包,智能终端的WIFI芯片可以接收到该UDP包,只要知道UDP的组织形式,就可以通过接收到的UDP包解密 出WIFI 用户名 密码,然后智能硬件 配置受到的WIFI 用户名 密码到指定的WIFI AP 上。

这种方式尤其适合对没有屏幕的外设进行相关配置。

smartconfig

配置步骤:

  1. ESP8266 端调用 WiFi.beginSmartConfig() 等待手机端发出的用户名与密码。
  2. 手机端填写当前网络的密码发送到UDP端口。
  3. ESP8266 自动收到连接信息并调用 WiFi.smartConfigDone() 退出等待。

是不是很简单呢?

附:ESP8266固件代码

  1. #include <ESP8266WiFi.h>;
  2. void setup() {
  3.   Serial.begin(115200);
  4.   delay(10);
  5.   // 必须采用 AP 与 Station 兼容模式
  6.   WiFi.mode(WIFI_AP_STA);
  7.   delay(500);
  8.  // 等待配网
  9.   WiFi.beginSmartConfig();
  10.  // 收到配网信息后ESP8266将自动连接,WiFi.status 状态就会返回:已连接
  11.   while (WiFi.status() != WL_CONNECTED) {
  12.     delay(500);
  13.     Serial.print(".");
  14.     // 完成连接,退出配网等待。
  15.     Serial.println(WiFi.smartConfigDone());
  16.   }
  17.   Serial.println("");
  18.   Serial.println("WiFi connected");
  19.   Serial.println("IP address: ");
  20.   Serial.println(WiFi.localIP());
  21. }
  22. int value = 0;
  23. void loop() {
  24. }

如果使用NodeMCU Lua 的话代码会更简单一些:

  1. wifi.setmode(wifi.STATION)
  2. wifi.startsmart(0,function(ssid, password)
  3.        print(string.format("Success. SSID:%s ; PASSWORD:%s", ssid, password))
  4.        end )

参考文档:https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_cn#wifistartsmart

手机端

上述固件烧录完毕后,在手机上只需启动乐鑫提供的ESP-Touch应用输入WIFI信道和密码即可配置让开发板联网了。

视频教程:http://www.electrodragon.com/smartconfig-nodemcu/

 

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!