600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > ESP8266的PC客户端和Arduino两种方式的连接及使用笔记

ESP8266的PC客户端和Arduino两种方式的连接及使用笔记

时间:2023-05-30 22:17:56

相关推荐

ESP8266的PC客户端和Arduino两种方式的连接及使用笔记

Arduino UNO上连接esp8266

连接电路

正常供电后蓝灯闪两下,红灯常亮,模块正常启动。

注意使用的是3.3V的电源

编写连接程序

1. Arduino引用软串口库

由于UNO只有Serial,没有Serial1,所以为实现相关功能必须使用软串口的方式进行连接,这里我们将Digital 的10、11两个口配置成软串口,10为RX,11为TX口。

❗❗❗注意连接的时候要跟模块的针脚交叉连接

从程序上配置软串口,

#include <SoftwareSerial.h>//软串口配置SoftwareSerial mySerial(10, 11); //RX--10;TX--11;两针脚交叉连接

第一次使用或者测试的时候仅用上面的程序即可,再往后的学习中可以再加上一些程序用来进行一些常规性的检测。

2. 初始化

在setup函数中的一些初始化设定。

❗❗❗注意波特率的设定值,Arduino 的串口波特率要与ESP8266的WiFi模组波特率相同,波特率不一致时就会出现乱码或者丢包现象。

⭐有种特殊的情况是ESP8266的WiFi模组的出厂默认波特率过高超过了Arduino 最高支持的波特率,

👉解决办法:

执行下面的AT指令可修改默认波特率

AT+UART_DEF=57600,8,1,0,0

void setup() {// 硬件串口 Serial.begin(9600);while (!Serial) {}//判断串口是否打开// 软串口 mySerial.begin(9600);// mySerial.println("AT+UART_DEF=9600,8,1,0,0");//解决特殊情况,或者先连接后在串口监视器中输入AT指令// delay(1000);while (!mySerial) {}//判断串口是否打开}

3. AT指令集使用说明

使用Arduino IDE的串口监视器

直接在arduino IDE中的串口监视器中进行AT指令的发送,实现程序如下,是将IDE的串口监视器输入内容连接到ESP8266的串口上,将ESP8266的打印连接到IDE的监视器上。

void loop() // run over and over{if (mySerial.available())Serial.write(mySerial.read());//IDE的串口监视器输入内容输入ESP8266中;if (Serial.available())mySerial.write(Serial.read());//ESP8266串口打印的东西打印到IDE的串口监视器上;}

AT指令使用例子:

在Arduino的程序中直接进行AT指令执行

可以自己编写封装函数,也可以直接使用一些网上已经有的封装函数,这个官方是没有的,网上的也都基本没有什么大问题。

这里使用找到的一个封装公共函数–飘易封装的公共函数,使用以下函数在程序中直接进行AT指令的执行。

封装函数👇

/*执行AT指令返回值:类型为布尔型,包含false和true;参数值:String cmd:AT指令;String flog: 返回值包含flag则true(2个以|分割);long timeout:超时时间ms(200的整数倍);*/bool doCMD(String cmd, String flag, long timeout) {String str = "";mySerial.println(cmd); //发送AT指令delay(300);flag.toLowerCase();// 小写// 限期时间long deadline = millis() + timeout;while (millis() < deadline){str = "";while (WIFISerial.available()) {str += (char)WIFISerial.read();delay(2);}if (str != "") {Serial.println(str);// 打印输出str.toLowerCase();// 小写// 判断 flag 是否需要切割,以 | 切割,逻辑或关系String flag1 = "", flag2 = "";int commaPosition = flag.indexOf('|');if (commaPosition > -1){flag1 = flag.substring(0, commaPosition);flag2 = flag.substring(commaPosition + 1, flag.length());}if (flag1 != "" && flag2 != "") {if (str.indexOf(flag1) > -1 || str.indexOf(flag2) > -1 ) {return true;}}if (str.indexOf(flag) > -1) {return true;}}delay(100);}return false;}

AT指令使用例子:

//AT指令实行:AT+RST,延时2sdoCMD("AT+RST","OK",2000);

实例

执行的业务逻辑是:每50秒为一个循环,在每个循环的第5秒上报传感器的温度和湿度值给云端。当用户按下wifi配网按钮时,wifi模组进入一键配网流程重新设置wifi的ssid和密码信息。

set up 函数参考上面的,这里直接给出loop函数

void loop() {String info = "";// 定时上报给服务器 - TCP长连接if (millis() - lastTime == 5000) {// 判断wifi是否连接上if (!wifiLinked) {Serial.println(F("!!WIFI NOT CONNECTED!!"));} else {//连接TCP服务器if (!serverLinked) {connectTcp();//连接TCP服务器} else {// 上报传感器值 - 定时上报,可代替心跳包(1分钟内1次)String temp = String(random(10, 40));// 模拟温度String humi = String(random(40, 90));// 模拟湿度if (true) {String s1(F("{\"method\": \"upload\",\"data\":[{\"Name\":\"temp\",\"Value\":\""));// 字符串存入FLASHString s2(F("\"},{\"Name\":\"humi\",\"Value\":\""));// 字符串存入FLASHString s3(F("\"}]}&^!"));// 字符串存入FLASHinfo = s1 + temp + s2 + humi + s3;Serial.println(info);doCMD("AT+CIPSEND=" + String(info.length()), ">", 3000);if (!doCMD(info, SENDOK, 3000)) {serverLinked = false;} else {}}}}}// 恢复计时,云端限制提交频率不能低于20秒if (millis() - lastTime >= 50000) {lastTime = millis();}// 读取WIFI配网按钮是否接通boolean val = digitalRead(WIFIPIN);if (val && WIFIPINAvailable) {WIFIPINAvailable = false;Serial.println(F("WIFIPIN pressed"));smartConfig();// 启动一键配网WIFIPINAvailable = true;}// PC串口转发给wifi软串口while (Serial.available()) {WIFISerial.write(Serial.read());}// wifi软串口发送过来的信息String str = "";while (WIFISerial.available()) {str = str + (char)WIFISerial.read();}if (str != "") {Serial.println(str);}}

PC客户端连接esp8266

连接介绍

硬件设备:

USB转TTL模块

ESP8266模块

杜邦线若干

电脑

USB转TTL模块☝

与ESP8266的连接示意图:

线路后,接电脑上,这时无线模块的蓝灯会闪两下,红灯会常亮。用手机搜索wifi网络,会看到一个ESP_******的无线信号源,说明模块正常启动了。

软件客户端初始化

1.检测设备及软件准备

连接完成后,在电脑的设备管理器中能看到该串口设备,这时候打开串口助手软件,这里使用的是sscom v5.13.1(点击下载)

2. 初始化软件参数

调整如下图所示进行波特率的调整

2.AT 指令执行的方式

---------------------

作者:meetslowly

来源:CSDN

原文:/meetslowly/article/details/107919652

版权声明:本文为作者原创文章,转载请附上博文链接!

内容解析By:CSDN,CNBLOG博客文章一键转载插件

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。