前言
网上方法繁多,各有各的不同,本文章为方便新手上手直接用最简单的点灯展示,关于ESP8266-01s的AT指令类就上网搜有很多这就不多讲了。新的模块是自带出厂固件,若是需要刷固件可参考上一篇文章51接ESP8266-01s模块通讯点灯
接线
ESP-01S | Arduino |
VCC | 3.3V |
GND | GND |
EN | 3.3V |
TX | RX |
RX | TX |
二、ESP8266-01S接Arduino
注意Arduino烧录文件的时候需要拔掉TX和RX,不然会冲突无法烧录,烧录完成后插回去,然后按下复位键即可。
三、所用到AT指令
AT+CWMODE=2
AT+CWSAP="8266","123456789",1,3
AT+CIPMUX=1
AT+CIPSERVER=1,8080
四、具体流程
AT指令部分
方法一
可像51单片机一样用USB转TTL接ESP82660-01s在用串口助手发送
AT+CWMODE=2
AT+CWSAP="8266","123456789",1,3
这两条即可,因前两条可不会被ESP82660-01s断电重置掉,后两条会被重置所以代码发即可。
方法二
上传完代码后可直接在Arduino串口这输入前两条代码,后两条按下复位键自动发送
因NL和CR模式的格式,所以会看到些乱码但是不影响正常发送出去的指令。
烧录
切记上传时需要吧RX和TX拔掉,上传成功后插回按下复位键即可。
代码
#include <SoftwareSerial.h>
SoftwareSerial mySerial(13,12); //(13(RX),12(TX))接ESP8266的(TX,RX)
String comdata;
void setup() {
pinMode(11,OUTPUT);
Serial.begin(9600);
while (!Serial) {
}
Serial.println("Hello World");
mySerial.begin(115200);
mySerial.println("AT+CIPMUX=1");//向8266发送的指令
delay(1000);
mySerial.println("AT+CIPSERVER=1,8080");
}
void loop() {
while (mySerial.available() > 0)
{
comdata += char(mySerial.read());
delay(2);
}
if (comdata.length() > 0)
{
comdata.trim();
Serial.println(comdata);
if (comdata.endsWith("A")){
digitalWrite(11,HIGH);
Serial.println("Buzz ON");
}
if (comdata.endsWith("a")){
digitalWrite(11,LOW);
Serial.println("Buzz OFF");
}
comdata = "";
}
if (Serial.available()) {
mySerial.write(Serial.read());
}
}
网络串口测试
可以看到网络串口这边发送的,Arduino串口这边可以看到信息,网络中的无线设备发送到ESP-01S的数据信息固定格式+IPD,<客户ID>,<信息长度>:<信息内容>。切记Arduino串口这边右下角要改为NL和CR模式,和波特率9600。