ESP8266+UDP(AP)

//###############################################
//                 WIFI配置
//###############################################
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

const char *ssid = "ESP82666";
const char *password = "12345678";
//*********设置固定IP*************//
IPAddress local_IP(192, 168, 43, 5);
// Set your Gateway IP address
IPAddress gateway(192, 168, 43, 1);
IPAddress subnet(255, 255, 0, 0);
IPAddress primaryDNS(8, 8, 8, 8); //optional
IPAddress secondaryDNS(8, 8, 4, 4); //optional

WiFiUDP Udp;                      //创建UDP对象
unsigned int localUdpPort = 2333; //本地端口号
char incomingPacket[255];  //存储Udp客户端发过来的数据
//###############################################
//                 舵机
//###############################################
#include <Servo.h>
 
#define PIN_SERVO 14
Servo myservo;
void setup()
{
  Serial.begin(115200);
  Serial.println();
//###############################################
//                 WiFi配置
//###############################################
if(!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
  Serial.println("STA Failed to configure");
}
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (!WiFi.isConnected())
  {
    delay(500);
    Serial.print(".");
  }

  Serial.print("Camera Ready! Use 'http://");
  Serial.print(WiFi.localIP());
  Serial.println("' to connect");

  Udp.begin(localUdpPort); //启用UDP监听以接收数据
//###############################################
//                 舵机
//###############################################

      myservo.attach(PIN_SERVO);  //servo.attach():设置舵机数据引脚

    myservo.write(0);  //servo.write():设置转动角度 作者:笺若曦宁 https://www.bilibili.com/read/cv17366013 出处:bilibili
}

void loop()
{
udp();
}
int a=0;
int b=0;
int c=0;
int d=0;
void udp(){
  /*接收发送过来的Udp数据*/
  int Data_length=Udp.parsePacket();  //获取接收的数据的长度
  if(Data_length)  //如果有数据那么Data_length不为0,无数据Data_length为0
  {
    int len = Udp.read(incomingPacket, 255);  //读取数据,将数据保存在数组incomingPacket中
    if (len > 0)  //为了避免获取的数据后面乱码做的判断
    {
      incomingPacket[len] = 0;
    }
    /*将接受到的数据发送回去*/
    
    Serial.print(String(incomingPacket));
    if(String(incomingPacket)=="B1C2" or String(incomingPacket)=="C2B1"){Serial.println("启动+驻车取消");}
    if(String(incomingPacket)=="A"){Serial.println("A");a=1;}if(String(incomingPacket)=="I"){Serial.println("I");a=0;}//口罩
    if(String(incomingPacket)=="B"){Serial.println("B");b=1;}if(String(incomingPacket)=="F"){Serial.println("F");b=0;}//健康吗
    if(String(incomingPacket)=="C"){Serial.println("C");c=1;}if(String(incomingPacket)=="G"){Serial.println("G");c=0;}//门禁卡
    if(String(incomingPacket)=="D"){Serial.println("D");d=1;}if(String(incomingPacket)=="H"){Serial.println("H");d=0;}//温度
    if(a==1 and b!=1 and c!=1 and d!=1){Serial.println("1");}
    if(a==1 and b==1 and c!=1 and d!=1){Serial.println("2");}
    if(a==1 and b==1 and c==1 and d==1){Serial.println("3");}
    if(String(incomingPacket)=="E"){Serial.println("E");myservo.write(90);delay(3000);myservo.write(0);}
  }
  }

#include <ESP8266WiFi.h>  
#include <WiFiUdp.h> //引用以使用UDP

const char* wifi_SSID="ESP";  //存储AP的名称信息
const char* wifi_Password="12345678";  //存储AP的密码信息
WiFiUDP Udp; 
uint16_t udp_port=2333;  //存储需要监听的端口号

char incomingPacket[255];  //存储Udp客户端发过来的数据

void setup()
{
  Serial.begin(115200);
  Serial.println();

  WiFi.mode(WIFI_AP);                         //设置为AP模式
  WiFi.softAP(wifi_SSID, wifi_Password);                //配置AP信息,并开启AP
  
  IPAddress softLocal(192,168,4,1);           //IP地址,用以设置IP第4字段
  IPAddress softGateway(192,168,4,1);         //IP网关,用以设置IP第3字段
  IPAddress softSubnet(255,255,255,0);
  //配置自定义的IP信息
  WiFi.softAPConfig(softLocal, softGateway, softSubnet);  
  IPAddress IP = WiFi.softAPIP();           //用变量IP接收AP当前的IP地址
  Serial.println(IP);                       //打印输出IP的IP地址

  Udp.begin(udp_port);//启动UDP监听这个端口

}

void loop()
{
  /*接收发送过来的Udp数据*/
  int Data_length=Udp.parsePacket();  //获取接收的数据的长度
  if(Data_length)  //如果有数据那么Data_length不为0,无数据Data_length为0
  {
    int len = Udp.read(incomingPacket, 255);  //读取数据,将数据保存在数组incomingPacket中
    if (len > 0)  //为了避免获取的数据后面乱码做的判断
    {
      incomingPacket[len] = 0;
    }
    Serial.print(incomingPacket);
  }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值