查看: 4448|回复: 7

《博哥ESP8266系列6》- ESP8266 一键配置

[复制链接]
  • TA的每日心情
    开心
    2018-10-20 15:52
  • 签到天数: 503 天

    [LV.9]以坛为家II

    发表于 2017-9-17 22:02 | 显示全部楼层 |阅读模式
    本帖最后由 单片机菜鸟 于 2018-8-27 20:14 编辑

    一、前言      
           前几篇我们都是把Wifi账号和密码写死在代码中,实际生活中,我们应该支持可配置,由用户自己去配置Wifi账号和密码,这就引出了本篇的内容。
           为了解决这个连接问题,乐鑫在其SDK加入了SmartConfig功能,所谓SmartConfig就是手机App端发送包含WIFI用户名以及密码的UDP广播包,智能终端的WIFI芯片可以接收到该UDP包,只要知道UDP包的组织形式,就可以通过接收到的UDP包解密出WIFI用户名密码,然后智能硬件配置收到的用户名密码到指定的WIFI AP上。至于具体原理,楼主也不懂。反正,我们就直接调用乐鑫提供的SDK。
            简洁点,有以下基本步骤:
            1.8266 端调用 WiFi.beginSmartConfig() 等待手机端发出的用户名和密码。
            2.手机端把填写当前网络的密码发送到UDP端口;
            3.8266自动收到连接信息并调用 WiFi.smartConfigDone() 退出等待。

    二、撸上代码


            我们把以下代码直接烧录进8266,
            
    [C] 纯文本查看 复制代码
    #include <ESP8266WiFi.h>
    
    void smartConfig()
    {
      WiFi.mode(WIFI_STA);
      Serial.println("\r\nWait for Smartconfig");
      delay(2000);
      // 等待配网
      WiFi.beginSmartConfig();
    
     while (1)
      {
        Serial.print(".");
        delay(500);
        if (WiFi.smartConfigDone())
        {
          Serial.println("SmartConfig Success");
          Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
          Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
          WiFi.setAutoConnect(true);  // 设置自动连接
          break;
        }
      }
    
      Serial.println("");
      Serial.println("WiFi connected");  
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
    }
    
    void setup()
    {
      Serial.begin(115200);
      smartConfig();
    }
    
    void loop()
    {
      delay(100);
      Serial.println("loop");
    }

             然后在安卓端安装一个由乐鑫提供的ESPTouch App,就可以开始一键配置了。
          App链接地址  乐鑫
          楼主的测试结果:
           4PZ`7S(8PXW8SW%PQK$(%OQ.png

            有了一键配置的功能,以后再也不用写死账号和密码了,So Easy。
         不足之处:
          1. 因为这个实验需要用到乐鑫开发的app,那么我们是否可以把app的功能集成到自己开发的app上呢?
              肯定可以,后面楼主把乐鑫app的代码集成成一个sdk式的module,供Android Studio直接引入使用。
          2.每次启动8266,都需要重新配置,我们是否可以写入到flash中呢?后面研究一下。

    博哥自建qq交流群:869920142



    打赏作者鼓励一下!

    1人打赏

  • TA的每日心情
    开心
    2018-10-20 15:52
  • 签到天数: 503 天

    [LV.9]以坛为家II

     楼主| 发表于 2017-9-17 22:02 | 显示全部楼层
    楼主一如既往做好冷板凳
    打赏作者鼓励一下!
  • TA的每日心情
    擦汗
    2017-9-19 13:29
  • 签到天数: 88 天

    [LV.6]常住居民II

    发表于 2017-9-17 23:13 | 显示全部楼层
    本帖最后由 敢问路在何方 于 2017-9-17 23:15 编辑

    好!楼主厉害。能够把乐鑫app的代码集成成一个sdk式的module,供Android Studio直接引入使用。
  • TA的每日心情
    开心
    2018-10-20 15:52
  • 签到天数: 503 天

    [LV.9]以坛为家II

     楼主| 发表于 2017-9-18 08:15 | 显示全部楼层
    敢问路在何方 发表于 2017-9-17 23:13
    好!楼主厉害。能够把乐鑫app的代码集成成一个sdk式的module,供Android Studio直接引入使用。
    ...

    这方面工作已经能够做完了  准备改造一下前面的wifi灯 加入一键配置以及eeprom写入功能
    打赏作者鼓励一下!

    1人打赏

    该用户从未签到

    发表于 2018-2-3 17:05 | 显示全部楼层
    单片机菜鸟 发表于 2017-9-18 08:15
    这方面工作已经能够做完了  准备改造一下前面的wifi灯 加入一键配置以及eeprom写入功能 ...

    打赏了一波~楼主可以把这个SDK分享给我吗~我最近也在弄ESP,初学安卓~~十分感谢
  • TA的每日心情
    开心
    2018-10-20 15:52
  • 签到天数: 503 天

    [LV.9]以坛为家II

     楼主| 发表于 2018-2-3 18:26 | 显示全部楼层
    蛇幼 发表于 2018-2-3 17:05
    打赏了一波~楼主可以把这个SDK分享给我吗~我最近也在弄ESP,初学安卓~~十分感谢 ...

    看后面的帖子
    打赏作者鼓励一下!
  • TA的每日心情
    郁闷
    2018-4-25 17:21
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2018-3-26 20:57 | 显示全部楼层
    8266支持at指令把配置存进flash的
  • TA的每日心情
    开心
    2018-6-18 23:49
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2018-3-26 22:29 | 显示全部楼层
    好!楼主厉害。能够把乐鑫app的代码集成成一个sdk式的module,供Android Studio直接引入使用。
    打赏作者鼓励一下!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    Arduino MEGA 与UNO 通过nRF24L模块通讯
    Arduino MEGA 与UNO 通过n
    之前在深水宝很“实惠”的店铺买了一些原件,随手砍了esp8266以及nRF24L*3 因为缺
    原创 drawbot平面关节机械臂 教程直播贴
    原创 drawbot平面关节机械
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太懒,一直没来得及
    求助大神!
    求助大神!
    我想在函数中返回指针,但不知道为什么系统报错,请问大神们是什么原因呢
    ATMEGA2560板子下载不进去程序
    ATMEGA2560板子下载不进去
    有没有大佬知道,附图
    手机端发送数据通过蓝牙(HC06)给变量赋值的问题探讨
    手机端发送数据通过蓝牙(
    up这两天在弄个程序,具体实现功能为手机端发送一个数据,通过蓝牙串口读取,
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表