赞
踩
概述:本文(上)包含的内容有:ESP32端连接WIFI并分配静态IP地址并通过UDP通信接受小程序传来的消息
IPAddress staticIP(192, 168, 0, 113);
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 0,1);
WiFi.config(staticIP, gateway, subnet, dns, dns)
/***********************************
函数作用,配置WIFI的静态IP,掩码,子网和DNS
***********************************/
bool WiFiGenericClass::mode(wifi_mode_t m)
/*******************************************************
参数:WIFI_AP或WIFI_STA都可,根据自己情况选择。
AP模式:接入点,可以理解为路由器或手机热点,可以让别的设备访问。
STA模式:可以理解为手机,只能接入其他AP设备,而不能被其他设备接入。
*******************************************************/
WiFi.begin(ssid, password);
WiFi.isConnected()
/*******************************
函数作用:判断wifi是否连接,一般这么用:
while (!WiFi.isConnected())
{
delay(500);
Serial.print(".");
}
*******************************/
WiFi.localIP()
/*******************************
函数作用:获取ESP32分配到的IP地址
*******************************/
之后就可以连接WIFI了,可以在路由器内网查到连接的设备。
WiFiUDP Udp; //创建UDP对象
unsigned int localUdpPort = 2333; //本地端口号
char rxbuff; //数据缓冲区
Udp.begin(localUdpPort); //启用UDP监听以接收数据
int Udp.parsePacket()
/*****************************************
函数作用:返回获取到数据的长度(几个字节)
一般用法:在循环里判断缓存区是否有数据,然后开始解析
if(Udp.parsePacket){
//your code
}
*****************************************/
Udp.read(buf, packetSize);
/*******************************
函数作用:读取UDP数据缓存区的数据
参数:保存数据的地址 读取数据的长度
*******************************/
Udp.remoteIP() 与 Udp.remotePort()
/*******************************
函数作用:返回发送数据的IP地址和端口
*******************************/
Udp.print();
/*******************************
函数作用:和printf类似,
*******************************/
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
/*******************************
函数作用:设置Udp要发送的IP地址和端口
参数:接收端的地址和端口
*******************************/
Udp.write((const uint8_t*)buf, packetSize)
/*******************************
函数作用:将数据写入数据缓存区
参数:数据地址和写入大小
*******************************/
Udp.endPacket();
/*******************************
函数作用:将数据缓存区的数据打包发送
*******************************/
#include <WiFi.h>
#include <WiFiUdp.h> //引用以使用UDP
const char *ssid = "****";
const char *password = "**********";
WiFiUDP Udp; //创建UDP对象
unsigned int localUdpPort = 2333; //本地端口号
IPAddress staticIP(192, 168, 0, 113);
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 0,1);
void setup()
{
Serial.begin(115200);
Serial.println();
pinMode(2,OUTPUT);
if (WiFi.config(staticIP, gateway, subnet, dns, dns) == false)
{
Serial.println("Configuration failed.");
}
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (!WiFi.isConnected())
{
delay(500);
Serial.print(".");
}
Serial.println("Connected");
Serial.print("IP Address:");
Serial.println(WiFi.localIP());
Udp.begin(localUdpPort); //启用UDP监听以接收数据
}
void loop()
{
char rxbuff;
int packetSize = Udp.parsePacket();
if (packetSize)
{
char buf[packetSize];
Udp.read(buf, packetSize);
rxbuff=buf[0];
if(rxbuff=='1')
{
digitalWrite(2,HIGH);
}
if(rxbuff=='2')
{
digitalWrite(2,LOW);
}
if (packetSize > 0) //为了避免获取的数据后面乱码做的判断
{
buf[packetSize] = '\0';
}
Serial.println();
Serial.print("Received: ");
Serial.println(buf);
Serial.print("From IP: ");
Serial.println(Udp.remoteIP());
Serial.print("From Port: ");
Serial.println(Udp.remotePort());
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.print("Received: ");
Udp.write((const uint8_t*)buf, packetSize);
Udp.endPacket();
}
}
可以使用网络助手调试,向192.168.0.113 端口2333发送数据,若数据为1,则灯亮,若数据为2则灯灭
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。