查看: 2167|回复: 0

ESP8266联网测试

[复制链接]

该用户从未签到

发表于 2018-10-7 15:37 | 显示全部楼层 |阅读模式
在文章《Arduino+ESP8266连接WiFi》中,测试了通过ESP8266的AT命令来连接WiFi的功能,实际的使用过程中这种连接方式需要查找复杂的命令行,所以我们尝试自动的WiFi连接。即通过将固定的AT命令行加载到Arduino控制器中,然后由控制器自主独立的控制ESP8266的WiFi连接。
1.PNG

源代码

#include <stdlib.h>
#include <SoftwareSerial.h>
#define WIFI_TX 9
#define WIFI_RX 8
#define SERIAL_TX_BUFFER_SIZE 2048
#define SERIAL_RX_BUFFER_SIZE 2018
String _comdata_wifi = "";
String wifiName = "D********d";  //wifi名

String wifiPassword ="d********n"; //wifi密码

char tempChar;
boolean DebugStart = true; //测试运行标识
boolean WifiStart =true; //wifi运行标识

SoftwareSerial wifi(WIFI_RX,WIFI_TX); // 定义软串口RX, TX

//初始化-----------------------------------------
void setup()
{
   wifi.begin(115200);
   Serial.begin(9600);
   sendDebug("AT");       //指令测试
   delay(5000);                     
}

//主循环-----------------------------------------
void loop()
{
getWifiSerialData();

//获取ESP8266反馈给Arduino的消息,如果消息不为空,则将消息打印到串口

  //Debug 测试
if(_comdata_wifi!="" & DebugStart){
   Serial.println(_comdata_wifi);
   delay(1000);
   if(_comdata_wifi.indexOf("OK")) // 在setup中发送测试指令AT,如果收到OK则说明ESP8266能够正常通信,于是连接WiFi
    {
       Serial.println("收到OK,测试指令成功。开始连接WIFI");
       delay(1000);   //在串口输出的时候,加一点等候时间
       connectWiFi(wifiName,wifiPassword);
       DebugStart = false;// 测试指令只运行一次即可
   }else{
       Serial.println("未收到OK,测试指令不成功成功。无法连接WIFI");
    }
    _comdata_wifi=String("");
  }


  //连接WIFI测试
  if(_comdata_wifi!="" & WifiStart){
   Serial.println(_comdata_wifi);
   delay(1000);
   if(_comdata_wifi.indexOf("WIFI GOT IP")){
        Serial.println("接收到WIFI GOT IP,WIFI 连接成功");
        delay(1000);
        WifiStart = false;
   }else{
        Serial.println("WIFI 连接不成功");
        delay(1000);
    }
   _comdata_wifi=String("");
   }
}

void sendDebug(String cmd)
{
   Serial.println("sendDebug测试指令输入:wifi.println(AT)");
   wifi.println(cmd);   
}

boolean connectWiFi(String Name,StringPassword)
{
   String cmd="AT+CWJAP=\"";
   cmd+=Name;
   cmd+="\",\"";
   cmd+=Password;
   cmd+="\"";
   wifi.println(cmd);
   delay(2000);                //在输送指令的时候,加一点等候时间。
}

void getWifiSerialData(){
   while(wifi.available()>0){
     tempChar = wifi.read();
     delay(10);
     _comdata_wifi += char(tempChar);
     delay(10);
    }
}

2.PNG

2018/7/1


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

5分钟带你快速了解新一代开发板:M5STACK
5分钟带你快速了解新一代
一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
创客火首发无人机编队套装,开启不一样的人工智能教育
创客火首发无人机编队套装
2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
[2019-4-20]RPG无人世界
[2019-4-20]RPG无人世界
剧情:主角玄影,为了逃避██的追杀迫不得已发动████在濒死状态来到█
Arduino串口监视器出现乱码
Arduino串口监视器出现乱
我用Arduinio Due将GNRMC数据Serial.prinln出来,通过串口监视器,我们可以发现有时GN
为什么单击开关按键后会调用其他控件的函数
为什么单击开关按键后会调
BlinkerButton Kelvinator_power("btn-pwr"); BlinkerButton Kelvinator_Light("btn-d
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表