ESP8266联网测试-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3475|回复: 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


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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:39 , Processed in 0.086880 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表