IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> esp8266与mega2560开发板串口通信 -> 正文阅读

[嵌入式]esp8266与mega2560开发板串口通信

使用的是esp8266 nodemcu和mega2560开发板

mega2560连接esp8266的目的是:实现开发板网络通信。

它们的通信方式为串口通信,esp8266通过串口(RX、TX)将数据发送给mega2560,mega开发板通过串口接收消息。

mega2560具有软硬串口,其中硬串口(HardwareSerial)是指开发板上自带的串口,有四组UART串口。软串口(SoftwareSerial)是指利用程序定义生成的串口,具有串口功能,mega2560开发板可以作为软串口的引脚有:10、11、12、13、14、15、50、51、52、53、62、63、64、65、66、67、68、69共18个引脚。mega2560开发板如图:

一、esp8266设置

由于我们想要的是开发板有网络通信的功能,所以esp8266这里,我做了一个HTTP服务端,可以接收http消息,esp8266再通过串口发给mega开发板。

对esp8266的设置,用的是arduino,代码如下

#include<ESP8266WiFi.h>
const char* ssid = "***";//wifi设置换成自己的
const char*  password = "***";
String message = "";
WiFiServer server(80);
void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(WiFi.localIP());//打印IP地址,这是esp8266是作为http的服务器,连接需要知道它的IP
  server.begin();
}
String httpResponse = "HTTP/1.0 200 OK\r\n"
                      "Connection: close\r\n"
                      "Content-Type: application/json;\r\n"
                      "\r\n"
                      "{\"code\":1}";//发送响应部分,客户端发送HTTP消息,收到后给个响应
void loop() {
  WiFiClient incomingClient = server.available();
  if (incomingClient) {
    if (incomingClient.find("\r\n\r\n")) {//只读取message部分
      while (incomingClient.available()) {
        message = message + char(incomingClient.read());
      }
    }
    Serial.println(message);//打印消息,也是通过它进行串口发送
    delay(10);
    message = "";//清除message内容
    incomingClient.print(httpResponse);//给客户端响应
  }
}

注意esp8266我们波特率设置的是115200,mega开发板波特率也要相同哦。将以上代码上传到esp8266,效果如下:

?这里我们得到IP地址,利用IP地址发个消息看8266是否收到,这里我用的是apifox,可以去下载。

?选择新建一个接口,设置如下

?点击保存,运行如下:

?开发环境选择测试在里面写入消息,点击发送

?可以在串口这里看到esp8266收到了消息

?我们也可以子啊apifox上看到响应信息,如下:包括了响应时间

?对于代码中incomingClient.find("\r\n\r\n"),为什么要使用find筛选接收消息的伙伴们,可以把? if (incomingClient.find("\r\n\r\n")) {和下面的{注释掉,在上传一边程序,发个消息看效果:

?我们可以看到收到的消息不仅包含了我们想要发送的message内容,还包含一些http协议头部分,由下图,我们还可以看到响应时间边长了,这是因为8266接收的消息比之前大导致的给响应时间长了。如果不需要HTTP头部分,可以有find选择读取。

?到这里,esp8266部分设置完成。

二、mega2560软串口部分

我们先看程序,在说连线。

//mega2560硬串口代码
#include <SoftwareSerial.h>
SoftwareSerial arduinoSerial = SoftwareSerial(10, 11);
String  message = "";//定义字符串接收串口消息
void setup() {
  Serial.begin(115200);
  arduinoSerial.begin(115200);
  arduinoSerial.flush();
}

void loop()
{
  if (arduinoSerial.available() > 0) {
    while (arduinoSerial.available() > 0)
    {
      message = message + char(arduinoSerial.read());

    }

    Serial.println(message);//打印消息

    message = "";//清除消息,大家可以试下不清除,消息是一直累加的
  }
}

把这段程序上传到mega开发板,然后连线:

esp8266RXTXGND5V
mega25601011GND5V

连线如下:

?连线完成后再用apifox发消息测试。实验效果如下,mega开发板板收到了apifox发的HTTP消息

注:用到的库在库文件搜索下载,或者GitHub下载库。

第一次写博客,没什么经验,希望路过的小伙伴有什么问题,或者代码出问题可以评论问我。

写博客的目的就是想记录笔记,做开源的目的也是想分享一下,可能代码会有一些不足,也希望路过的大神可以指出呢,有啥问题大家一起讨论呀。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:25:15  更:2022-05-16 11:25:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:52:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码