Arduino 单片机之 ESP8266模块使用

本文介绍ESP8266 WiFi模块的特点及优缺点,并提供了一套基于Arduino平台的WiFi通信封装库实现方案,包括核心代码及测试实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Esp8266 Wifi模块 优点:
1. 价格便宜
2. 体积小
Esp8266 缺点:
1. 冗余单片机应答信号过多 导致在处理能力不够的单片机上运行速度慢
2. 丢包率相对较高
3. Github库不多 实测大多不能用

该模块支持 TCP、UDP和双工模式,但TCP 协议传输速率很低,在多机WIFI实时通信中 采用UDP更加合理

下面给出我开发的WIFI封装库程序:
wifi.h

#include <SoftwareSerial.h>
void wifiSend(String s);
String wifiGet();
void setWifi();

wifi.cpp (根据需要修改AT指令的UDP连接地址即可)

#include <SoftwareSerial.h>
#include "wifi.h"
#include <Arduino.h>
#define WIFI_TX       5
#define WIFI_RX       6
SoftwareSerial wifi(WIFI_RX, WIFI_TX);   //RX, TX
void wifiSend(String s);
String wifiGet();
void setWifi();
void getWifiSerialData();
String cutString(String s);
String _comdata_wifi = "";             //for incoming wifi serial data
void setWifi(){
  wifi.begin(115200);
  Serial.println("system is ready!");
  String order1="AT+CIPSTART=\"UDP\",\"192.168.0.100\",7300,1100,2"; 
  order1.trim();
  wifi.println(order1);
  delay(1000);
  Serial.println("wifi is done!");
}

void wifiSend(String s){
    String order="AT+CIPSEND="; 
    order=order+s.length();
    order.trim();
    wifi.println(order);
    delay(3);
    s.trim();
    wifi.println(s);
  }

String wifiGet(){
      getWifiSerialData();
      String res="";
      if(_comdata_wifi!=""){
          Serial.println(_comdata_wifi);
          res=cutString(_comdata_wifi);
          _comdata_wifi = String("");
        }
        return res;
 }

void getWifiSerialData(){
        while (wifi.available() > 0){
          _comdata_wifi += char(wifi.read());   //get wifi data
        }
}

String cutString(String s){
        //Serial.println(s.length());
        char target[]="X";
        int num=s.lastIndexOf(target);
        if(num!=-1){
          return s.substring(num-3,num);
        }
        else{
          return "0";
        }
}

最后给出测试代码

#include "wifi.h"
void setup() 
{
  Serial.begin(115200);
  setWifi();
  delay(10);
}
void loop(){
    wifiSend("Q");
    String s2=wifiGet();
    Serial.println(s2);
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值