物联网模块--esp8266的wifi模块
物联⽹模块--esp8266的wifi模块
最新情侣网名⽂章⽬录
物联⽹模块–esp8266的wifi模块
学习前提:基于我参与⼈⼈卓越选题为智能家居,故选择学习ESP8266模块(以下简称为模块),该模块可将⽤户的物理设备连接到Wi-Fi ⽆线⽹络上,进⾏互联⽹或局域⽹通信,实现联⽹功能,对设备进⾏控制。
这是我选⽤的ESP8266
中国三八妇女节的来历
WIFI相关
esp8266与其他电⼦设备处于同⼀个⽹络下才能进⾏通信,故需要让模块连接⽹络或创建热点
第⼀种⽅法 我们可以使⽤⼿机创建开个热点让模块接上⽹络
打开Arduion烧录下⾯的代码
#include<ESP8266WiFi.h>
//SSID of your network
char* ssid ="WiFi名称";
//password of your WPA Network
char* pass ="WiFi密码";
int status = WL_IDLE_STATUS;
void setup()
{
while( status != WL_CONNECTED){
status = WiFi.begin(ssid, pass);
// wait 10 seconds for connection:
delay(1000);
}
}
void loop (){
delay(10000);
}
烧录完成后,模块就⾃动连上WiFi。
实际连接到Wi-Fi是通过调⽤:
status = WiFi.begin(ssid, pass);
连接热点⼀般需要⼏秒钟,我们就来个while循环和delay函数让模块连上热点:
while( status != WL_CONNECTED){
/
/ wait 10 seconds for connection:
delay(1000);
注意:如果连接被建⽴,然后由于某种原因丢失,模块将⾃动重新连接到最后使⽤的接⼊点,⼀旦它再次联机。这将由Wi-Fi库⾃动完成,⽆需任何⽤户⼲预。
第⼆种⽅法,我们可以让模块作为WiFi的热点
同样烧录下⾯的代码
#include<ESP8266WiFi.h>
void setup(){
Serial.begin (115200);
Serial.println("");
// 设置内⽹
IPAddress softLocal(192,168,128,1);// 1 设置内⽹WIFI IP地址
IPAddress softGateway(192,168,128,1);
IPAddress softSubnet(255,255,255,0);
WiFi.softAPConfig(softLocal, softGateway, softSubnet);
String apName =("ESP8266_"+(ChipId());// 2 设置WIFI名称
const char*softAPName = apName.c_str();
WiFi.softAP(softAPName,"adminadmin");// 3创建wifi  名称 +密码 adminadmin
IPAddress myIP = WiFi.softAPIP();// 4输出创建的WIFI IP地址
Serial.print("AP IP address: ");
Serial.println(myIP);
Serial.print("softAPName: ");// 5输出WIFI 名称
Serial.println(apName);
}
void loop(){
}
烧录完成后,模块就会产⽣热点,然后让⼿机接上WiFi即可。
这与之前的接上⼿机热点有些不同
这时候模块是需要⾃⼰创建热点,需要设置内⽹
即local_ip,⽹关和⼦⽹源码,这是计算机⽹络配置⽹络的⼀些过程,不作了解
Serial.println("");后会无期经典语录
国内化妆品品牌排名// 设置内⽹
IPAddress softLocal(192,168,128,1);// 1 设置内⽹WIFI IP地址
IPAddress softGateway(192,168,128,1);
IPAddress softSubnet(255,255,255,0);
WiFi.softAPConfig(softLocal, softGateway, softSubnet);
接着设置WIFI名称和WiFi密码:
String apName =("ESP8266_"+(ChipId());// 2 设置WIFI名称,其中getChipId())是获取模块的型号
const char*softAPName = apName.c_str();
WiFi.softAP(softAPName,"adminadmin");// 3创建wifi  名称 +密码 adminadmin
⼿机连接好热点后如下图
上述两种⽅法都让⼿机和模块处于同⼀个局域⽹下⾯,这时候两者就可以开始通信上
TCP
TCP是⽹络应⽤中常⽤的功能,很多⾼级功能也是建⽴在TCP的基础上的,学会使⽤TCP就可以开发很多⽹络应⽤了。TCP Socket Server
TCP Serve主要处理客户端发来的数据
使⽤说明
1. 绑定端⼝WiFiServer server(8266); 【变量定义】
2. 开始监听server.begin(); 【setup】
3. 获取⼀个已连接的 client 【loop】
晚婚婚假申请4. while(client == true ){ ad() server.write() } // 在while中进⾏读写,即利⽤⼿机控制LED的亮灭
效果
⼿机TCP客户端发送‘A’,LED亮
⼿机TCP客户端发送‘B’,LED灭
烧录模块代码如下:
#include<ESP8266WiFi.h>
#define led 4 //发光⼆极管连接在8266的GPIO2上
const char*ssid    ="whut";//这⾥写⼊⽹络的ssid
const char*password ="whut2017";//wifi密码
const char*host ="192.168.43.102";//修改为Server服务端的IP,即你电脑的IP,确保在同⼀⽹络之下。
WiFiClient client;
const int tcpPort =8266;
void setup()
{
Serial.begin(115200);
pinMode(led,OUTPUT);
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);·
WiFi.begin(ssid, password);//启动
//在这⾥检测是否成功连接到⽬标⽹络,未连接则阻塞。
while(WiFi.status()!= WL_CONNECTED)
{
delay(500);
}
/
/⼏句提⽰
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop()
{
while(!ted())//若未连接到服务端,则客户端进⾏连接。
{
if(!t(host, tcpPort))//实际上这⼀步就在连接服务端,如果连接上,该函数返回true {
Serial.println("");
delay(500);
}
}
while(client.available())//available()表⽰是否可以获取到数据
{
char val = ad();//read()表⽰从⽹络中读取数据。
if(val=='A'){//pc端发送a和b来控制
手机改自己家wifi密码digitalWrite(led, LOW);
}
if(val=='B')
{
digitalWrite(led, HIGH);
}
}
}
通过下⾯的代码,可以通过usb转tll模块发送到电脑,通过ide集成的串⼝监视器可以获取数据。
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
故直接打开串⼝监视器可以看到WiFi给模块分配的IP地址
如下代码修改为你建⽴的Server服务端的端⼝号,此端⼝号是创建服务器时指定的。
WiFiClient client;
const int tcpPort =8266;
烧录完以后,模块连接上⼿机热点,打开⼿机⽹络调试助⼿,在TCP客户端输⼊连接模块的 IP和设置的端⼝。⼿机热点给模块分配的IP 为
192.168.43.175,端⼝为⾃⼰设定的8266
即可连接上模块,开始通信
通过⼿机TCP客户端的效果测试
发送‘A’,如下D1蓝灯亮
发送‘B’,D1蓝灯灭
TCP Socket Client
TCP Client主要是⽤来访问服务器的,很多可以通过外⽹访问的物联⽹设备主要就是⼯作在TCP Client下。设备主动去访问外部的服务器,与服务器建⽴连接,⽤户的app也是去访问这个服务器,这样变相实现了⽤户对设备的访问。
使⽤说明
1. 设置Server服务端的IP和端⼝号
2. WiFiClient client;
3. 在loop函数中不断尝试连接
4. 往socket中读写数据
烧录模块代码如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。