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);
  }

}
ESP8266作为UDP连接的服务器时,需要进行以下设置: 1. 将ESP8266设置为AP模式,即作为一个独立的无线网络。可以通过设置SSID(WiFi名称)、密码、加密方式等参数来配置AP模式。 2. 使用espconn库中的函数进行UDP通信的初始化,例如espconn_create()函数。 具体的代码示例如下: ```c #include "ip_addr.h" #include "espconn.h" #define ESP8266_AP_SSID "LOVEYOU" #define ESP8266_AP_PASS "Be Happy" // 初始化AP模式,设置WiFi名和密码 void AP_mode_init() { struct softap_config ap_config; wifi_set_opmode(0x02); // 设置为AP模式,并保存到Flash os_memset(&ap_config, 0, sizeof(struct softap_config)); // AP参数结构体 = 0 os_strcpy(ap_config.ssid, ESP8266_AP_SSID); // 设置SSID(将字符串复制到ssid数组) os_strcpy(ap_config.password, ESP8266_AP_PASS); // 设置密码(将字符串复制到password数组) ap_config.ssid_len = os_strlen(ESP8266_AP_SSID); // 设置ssid长度(和SSID的长度一致) ap_config.channel = 1; // 通道号1~13 ap_config.authmode = AUTH_WPA2_PSK; // 设置加密模式 ap_config.ssid_hidden = 0; // 不隐藏SSID ap_config.max_connection = 4; // 最大连接数 ap_config.beacon_interval = 100; // 信标间隔时槽100~60000 ms wifi_softap_set_config(&ap_config); // 设置soft-AP,并保存到Flash } // 初始化UDP通信 void init_UDP_communication() { // 在这里进行UDP通信的初始化操作 // 例如使用espconn_create()函数创建一个UDP连接 } // 主函数 void main() { AP_mode_init(); // 初始化AP模式 init_UDP_communication(); // 初始化UDP通信 } ``` 以上代码是一个简单的示例,通过设置ESP8266AP模式并初始化UDP通信,可以将ESP8266作为UDP连接的服务器。 #### 引用[.reference_title] - *1* *2* *3* [ESP8266_AP模式、UDP的服务器or客户端](https://blog.csdn.net/E2242/article/details/124904269)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值