ESP8266 arduino IDE模式 使用smartconfig配置WIFI,连接物联网

作者:wangbo0727 | 更新时间:2018-12-11 | 浏览量:5646

一直想试用ESP8266做一个和商业WIFI能媲美的项目但是总是做不好。网上看了很多例程后来还是觉得arduino IDE好懂一点;

想要达到商业WIFI项目基本上要能有以下功能:

设备开机之后默认进入smartconfig模式,手机打开APP能很快配网;

配网结束之后,进入连接WiFi模式,联网结束之后,连接服务器,之后就能传输数据,还有发送指令了,

目前网上很多代码都是基本里程,没有很完整的,那个大神能写一个完整的啊;

 

 


评论:共5条

wangbo0727 评论于:2018-12-11 16:52:00
我附上我写的源代码,基本上开机之后默认配网,还可以按键强制配网;之后都是大家熟悉的连接方式
wangbo0727 评论于:2018-12-11 16:53:03
#include <ESP8266WiFi.h>
WiFiClient client;
#define relay1 2
#define key 5//将dht11的data口接在8266的GPIO2上
const char *ssid = "Charlie Testing AP";
const char *password = "11111111";
const char *host = "121.42.180.30";
char flag=0;

bool autoConfig()
{
int a=0;
pinMode(key,INPUT);
if(digitalRead(key) == LOW)
flag=1;
else
flag=0;
while(!digitalRead(key));

if(flag==1)
{
return false;
}
else
{
WiFi.begin();
while (WiFi.status() != WL_CONNECTED)
{
Serial.println("AutoConfig Success");
Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
WiFi.printDiag(Serial);
delay(1000);
a++;
if(a==30)
{
a=0;
return false;
break;
}
}
if(false)
{
Serial.println("");
Serial.println("wifi line faild !");
}
else
{
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
return true;
}
}
}

void smartConfig()
{
WiFi.mode(WIFI_STA);
Serial.println("\r\nWait for Smartconfig");
WiFi.beginSmartConfig();
while (1)
{
Serial.print("Wait soft line..\r\n");
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;
}
delay(1000);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void line_tcp()
{
Serial.println(WiFi.localIP());
const int httpPort =8181;
if (!client.connect(host, httpPort))
{
Serial.println("connection failed");
return;
}
Serial.print("connecting to ");
Serial.println(host);
client.write("{\"M\":\"checkin\",\"ID\":\"****\",\"K\":\"**********\"}\r\n");//登陆设备,修改成自己的ID和key
delay(100);
}
void setup()
{
Serial.begin(115200);
if (!autoConfig())
{
Serial.println("Start AP mode");
smartConfig();
}
line_tcp();
}

void loop()
{
char valueread;
while(client.available())
{
String line = client.readStringUntil('\r');
Serial.print(line);
int i;
for(i=0;i<=150;i++)
{
if((line[i]=='p') &&( line[i+1]=='l'))
{
digitalWrite(relay1,HIGH);
client.write("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"LED1 is on\",\"SIGN\":\"ok\"}\r\n");
}

if((line[i]=='s') && (line[i+1]=='t'))
{
digitalWrite(relay1,LOW);
client.write("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"LED1 is off\",\"SIGN\":\"ok\"}\r\n");
}


}
}
client.write("{\"M\":\"say\",\"ID\":\"****\",\"C\":\"123456\"}\r\n");//修改自己的ID,向设备发送信息,防止掉线
delay(6000);
}
xupengju110 回复于:2018-12-16 17:24:46
回复 @wangbo0727:dht11数据接口的ID填写到哪里么?
wangbo0727 评论于:2018-12-19 08:11:56
DHT还没写上去
zjnbzm 评论于:2019-04-16 12:03:57
这个源代码能用NodeMCU Studio 2015 LUA 编辑,写入ESP8266内吗?
返回顶部