基于Arduino建立ESP的AP端实现

上一篇说了基于AT指令建立UDP透传的方案。除了AT指令外,使用Arduino来对ESP32进行开发也是比较常用及简单的一种方式,本文将如何使用Arduino来建立UDP AP端进行介绍:

#include<WiFi.h>    //    wifi功能需要的库

WiFiUDP Udp;    //    声明UDP对象

IPAddress staticIP(192.168.100.1);
IPAddress gateway(192.168.100.2);
IPAddress subnet(255.255.255.0);
IPAddress dns(192.168.100.2);


const char* wifi_SSID="ESP32_AP";//存储AP的名称信息
const char* wifi_Password="12345678";//存储AP的密码信息

uint16_t udp_port=2233;//存储需要监听的端口号

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

unsigned long time_flag;
uint8_t send_data[8];

void udp_ap_init(void)
{
    Serial.begin(115200);//开启串口,波特率设置为115200
    
    WiFi.softAPConfig(staticIP,gateway,subnet);
    WiFi.config(staticIP,gateway,subnet,dns,dns);
    WiFi.softAP(wifi_SSID,wifi_Password);

    Serial.print("\n开发板IP地址为:");
    Serial.print(WiFi.softAPIP());//串口输出模块IP地址

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

void setup()
{
    udp_ap_init();
}

void loop()
{

    send_data[0] = 0x01;
    send_data[1] = 0x02;
    send_data[2] = 0x03;
    send_data[3] = 0x04;
    send_data[4] = 0x05;
    send_data[5] = 0x06;
    send_data[6] = 0x07;
    send_data[7] = 0x08;

    Udp.beginPacket(WiFi.gatewayIP(),udp_port);    //准备发送数据
    Udp.write((const uint8_t*)senddata,8 );    //复制数据到发送缓存
    Udp.endPacket();    //发送数据

    if(milllis() - time_flag> 1000)
    {
        time_flag = millis();    //更新时间点
        Serial.print("STA number: ");
        Serial.println(WiFi.softApgetStationNum());
    }

    /*接收发送过来的Udp数据*/
    int Data_length = Udp.parsePacket();    //获取接收数据的长度
    
    if(Data_length)
    {
        int len = Udp.read(receive_data,255);    //读取数据,将数据保存在数组        incoming_packet中
        if(len > 0)    //为了避免获取的数据后面乱码做的判断
        {
            receive_data[len] = 0;
        }
        
        Serial.println();
        Serial.print("Received: ");
        Serial.println(receive_data);
        Serial.print("From IP: ");
        Serial.println(Udp.remoteIP());
        Serial.print("From port: ");
        Serial.println(Udp.remotePort());
        Serial.print("STA number: ");
        Serial.println(WiFi.softAPgetStationNum());

        /*将数据发送出去*/
        Udp.beginPacket(Udp.remoteIP(),Udp.remotePort());    //准备发送数据到目标IP和目标端口
        Udp.print("receive data:");    //将数据receive data:放入发送的缓冲区
        Udp.write((const uint8_t*)send_data,8);    //复制数据到发送缓存
        Udp.endPacket();    //向目标IP及端口发送数据
    }
}

esp8266\esp32开发者社区 - Powered by Discuz! (arduino.cn)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值