ESP8266商业实战【esp8266基于arduino一键配网掉电保存WIFI账号密码】

简介:本人第一次发表文章,还望大神们指教,谢谢。此教程供大家参考学习交流。【版权声明:转载请注明原作者!】本人特别爱好电子技术,在此借助平台给各位初学者提供资料分享跟大家一起相互学习。废话不多说,先构思一个基本的框架。

首先这里就不给大家介绍如何安装和配置arduino IDE了,因为IDE是引用Gti来从GitHub上克隆开发板的,所以在国内的话下载速度可能也就10KB左右,太慢了,所以个人推荐大家使用这个OCROBOT
其次点击开发板管理器

安装好后言归正传,因为要保存WIFI名称和密码的话,我们当然要用到Flash了啦,先来简单的了解一下Flash的相关容量以及相关数据手册(据安信可官网提供资料ESP8266系列数据手册

接下来上代码,代码还有很多地方还需要改进,具体需要实现功能代码可以自己修改,本人技术能力有限,所以代码风格自然很有格调。还请喷子绕道呢。

#include <ESP8266WiFi.h> //导入WIFI功能库文件
#include <EEPROM.h> //导入Flash库文件String ssid;
String psw;#define MAX_SRV_CLIENTS 4 //定义TCP服务器最大允许4个连接数//创建server 端口号是9601
WiFiServer server(9601);WiFiClient serverClients[MAX_SRV_CLIENTS];struct config_type
{char stassid[32];//定义配网得到的WIFI名长度(最大32字节)char stapsw[64];//定义配网得到的WIFI密码长度(最大64字节)
};config_type config;//声明定义内容void saveConfig()//保存函数
{EEPROM.begin(1024);//向系统申请1024kb ROM//开始写入uint8_t *p = (uint8_t*)(&config);for (int i = 0; i < sizeof(config); i++){EEPROM.write(i, *(p + i)); //在闪存内模拟写入}EEPROM.commit();//执行写入ROM
}void loadConfig()//读取函数
{EEPROM.begin(1024);uint8_t *p = (uint8_t*)(&config);for (int i = 0; i < sizeof(config); i++){*(p + i) = EEPROM.read(i);}EEPROM.commit();ssid = config.stassid;psw = config.stapsw;
}void smartConfig()//配网函数
{// 等待配网WiFi.beginSmartConfig();while(1){digitalWrite(2, LOW);  //加个LED快闪,确认配网是否成功!成功就不闪了。delay(200);                    digitalWrite(2, HIGH);   delay(200);if (WiFi.smartConfigDone()){strcpy(config.stassid,WiFi.SSID().c_str());//名称复制strcpy(config.stapsw,WiFi.psk().c_str());//密码复制saveConfig();//调用保存函数WiFi.setAutoConnect(true);  // 设置自动连接break;}//启动serverserver.begin();//关闭小包合并包功能,不会延时发送数据server.setNoDelay(true);}
}void setup() {Serial.begin(115200);WiFi.mode(WIFI_STA);delay(500);pinMode(2, OUTPUT);//设定D4号脚为LEDpinMode(0, INPUT);//设定按钮输入脚为D3ESP.wdtEnable(10000);//设定看门狗loadConfig();//读取ROM是否包含密码//判断ROM是否有密码if(ssid!=0&&psw!=0){WiFi.begin(ssid,psw);//如果有密码则自动连接while(WiFi.status()!= WL_CONNECTED){if(digitalRead(0)== LOW){smartConfig();//如果配网按钮被按下则停止当前连接开始配网break;//跳出所有循环进入主程序}digitalWrite(2, LOW);  //加个LED慢闪,确认联网是否成功!成功就不闪了。delay(1000);                    digitalWrite(2, HIGH);   delay(1000);}//启动serverserver.begin();//关闭小包合并包功能,不会延时发送数据server.setNoDelay(true);}else{smartConfig();//如果ROM没有密码则自动进入配网模式}
}void loop() { ESP.wdtFeed();//先喂狗释放资源uint8_t i;if(digitalRead(0)== 0)delay(2000);if(digitalRead(0)==0)smartConfig();//如果配网按钮被按下则停止所有任务开始重新配网//检测是否有新的client请求进来ESP.wdtFeed();//再喂狗释放资源if (server.hasClient()) {for (i = 0; i < MAX_SRV_CLIENTS; i++) {//释放旧无效或者断开的clientif (!serverClients[i] || !serverClients[i].connected()) {if (serverClients[i]) {serverClients[i].stop();}//分配最新的clientserverClients[i] = server.available();break;}}//当达到最大连接数 无法释放无效的client,需要拒绝连接if (i == MAX_SRV_CLIENTS) {WiFiClient serverClient = server.available();serverClient.stop();}}//检测client发过来的数据for (i = 0; i < MAX_SRV_CLIENTS; i++) {if (serverClients[i] && serverClients[i].connected()) {if (serverClients[i].available()) {while (serverClients[i].available()) {//发送到串口调试器Serial.write(serverClients[i].read());}}}}if (Serial.available()) {//把串口调试器发过来的数据 发送给clientsize_t len = Serial.available();uint8_t sbuf[len];Serial.readBytes(sbuf, len);for (i = 0; i < MAX_SRV_CLIENTS; i++) {if (serverClients[i] && serverClients[i].connected()) {serverClients[i].write(sbuf, len);delay(1);}}}
}

可以试着用ESP8266-12F试试

esp8266基于arduino一键配网掉电保存WIFI账号密码相关推荐

  1. ESP8266 arduino 一键配网之后掉电不丢失wifi数据

    本文关注掉电丢失wifi数据和不丢失数据的异同点. 一.软硬件 所用硬件如下图,软件是arduino 1.8.9. 二.代码分析 代码如下: void smartConfig() {WiFi.mode ...

  2. ESP8266用EspTouch一键配网,断网自动恢复连接

    自动配网的实现 利用Arduino IDE自带的自动联网函数smartConfig() bool AutoConfig() {WiFi.begin();//如果觉得时间太长可改for (int i = ...

  3. esp8266 wifi模组手机一键配网,配置一次,下次重启设备后不需再进行配网

    编写时间:2018年9月2日 #define  ATCMDLEN   20 extern uint8_t usart3RecvEndFlag; extern UART_HandleTypeDef hu ...

  4. WIFI快连(一键配网)原理分析及优化建议

    一键配网说明 文章目录 一键配网说明 一键配网基本流程 说明 配网流程 EZ配网原理 组播 广播 EZ配网优缺点及优化建议 优点 缺点 优化建议 一键配网基本流程 说明 wifi快连也叫一键配网,也叫 ...

  5. ESP8266_21基于ESP8266的一键配网

    ESP8266_01搭建开发环境 ESP8266_02程序的编译与下载 ESP8266_03SDK与Makefile的基本用法 ESP8266_04管脚控制与软件定时器 ESP8266_05 ESP8 ...

  6. esp8266 接收udp广播_ESP8266_21基于ESP8266的一键配网

    这一节,说一下一键配网的用法.首先说为什么需要一键配网? 原因很简单,因为设备要上网.那,给那些设备配一个屏幕和一个输入设备行不行? 不是不可以,对那些成本没要求的设备是没问题的.但物联网设备大部分都 ...

  7. 安信可分享 | 分享一个基于airkiss协议的配网小程序,实现小程序一键配网安信可ESP32C3\ESP8266\ESP32\ESP32S2系列的模组。(附带源码)

    文章目录 一.关于 WeChatAirkiss 1.1 应用场景 二.airkiss 简介 三.开始使用 四.API说明 五.FAQ 六.开源微信物联网控制一览表 联系我们 一.关于 WeChatAi ...

  8. WiFi-ESP8266入门http(3-4)网页一键配网(1若为普通wifi直连 2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信...

    网页一键配网(1若为普通wifi直连  2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信 工程连接:https://github.com/Dongvdong/ESP8266_H ...

  9. Esp8266进阶之路17 esp8266自研的快速上电开关五次 (开-关为一次) ,无需按键触发则8266进去一键配网模式。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  10. ESP8266 SmartConfig一键配网

    ESP8266 SmartConfig一键配网   Wi-Fi 配网,指由外部向 Wi-Fi 设备提供 SSID 和密码(PSW),让 Wi-Fi 设备可以连接指定的热点或路由器,并加入后者所建立的 ...

最新文章

  1. “让Keras更酷一些!”:分层的学习率和自由的梯度
  2. 日跑几十万作业,唯品会HDFS是如何优化的
  3. C# 中的 in 参数和性能分析
  4. 身边的设计模式(一):单例 与 RedisCacheManager
  5. 全自动安装 linux光盘,CentOS 7.1全自动安装光盘制作详解
  6. python学生名片系统_python学生管理名片
  7. 使用dlib 进行人脸识别
  8. 未来 10 年的科技圈,将会因这 10 项技术而颠覆!
  9. 解决IE6中 PNG图片透明的终极方案-八种方案!
  10. [转载]赵匡胤做事有底线
  11. SQLServer实现将VARCHAR字符型对象转化为int/float数值型对象后排序、对VARCHAR对象截取指定部分再转化为数值对象进行排序
  12. 使用pynput模块监听用户键盘输入,保存至txt
  13. Linkedin第三方登录集成(android)
  14. IEEE-access 模板LaTeX Error: Something's wrong--perhaps a missing \item.
  15. 编程制作动态壁纸的思路_Android自定义动态壁纸开发详解
  16. 一个快播倒下去,千千万万个快播站起来
  17. H264码流中SPS PPS详解
  18. 身份证号码查询-完整提供 Demo 代码示例及数据专业且全面的 API 查询接口
  19. i18n国际语言代码对照表
  20. MySQL命令行中文显示乱码怎么办

热门文章

  1. 常见的几种加密方法和实现
  2. 家用无线路由器购买入门指南
  3. linux cpan 参数配置,Perl学习笔记之CPAN使用介绍
  4. android 豁免的广播及广播白名单,浅谈BLE地址、隐私机制、白名单、定向广播
  5. 专访王豫翔:编程道路上的“三少三多”
  6. 程序集版本号,文件版本号及发布版本号管理
  7. 飞行CSS3导航菜单
  8. 这次一定 | “学废” 正则表达式
  9. STM32F7--->SDRAM
  10. 共享单车被带到乡下私用,警方:或涉嫌盗窃