使用的是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的服务器,连接需要知道它的IPserver.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开发板,然后连线:

esp8266 RX TX GND 5V
mega2560 10 11 GND 5V

连线如下:

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

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

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

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

esp8266与mega2560开发板串口通信相关推荐

  1. linux与开发板串口通信

    研究了一天的linux串口,结果改了树莓派的系统配置文件config.txt给改了导致系统崩溃....其实我感觉网上的大多数方法都是不符合新版本树莓派的,网上的方法是通过修改系统配置文件后安装mini ...

  2. Android开发板串口(SerialPort)通信

    Android开发板串口(SerialPort)通信 Roy88关注 22017.09.07 18:01:22字数 1,618阅读 28,511 前言: 最近在总是看见有人在群里面问一些串口通信相关的 ...

  3. 乐鑫esp8266模块MicroPython开发板MQTT物联网人工智能最小系统

    简 介: ※对于购买自网络的基于ESP8266的实验模块进行了初步的测试,它其中的一些示例进行了练习.特别是对于基于ESP8266的特殊的一些外设的测试. 关键词: ESP8266,MicroPyth ...

  4. 安信可 ESP8266机智云开发板:编译与烧录

    安信可 ESP8266机智云开发板:编译与烧录 编译:1.SDK 开发环境搭建见 安信可ESP系列一体化开发环境搭建                        下载地址:http://pan.ba ...

  5. 嵌入式开发板CAN通信编程——伺服电机驱动

    嵌入式开发板CAN通信编程--伺服电机驱动 在实际的嵌入式项目开发过程中,若不涉及上位机与开发板的通信传输数据,那最关键的无非就是两个内容,读取传感器的数据并处理,驱动硬件设备工作.传感器数据的读取内 ...

  6. STM32开发板串口 ISP 方式下载程序

    STM32开发板无下载电路也可以下载程序方法 自己设计的stm32开发板,手上无下载器,也没有板载的一键下载电路的情况下解决下载程序方法? 必须具备的条件:USB-TTL模块一个,板上预留有boot0 ...

  7. 【极创】arduino入门之ESP8266和ESP32开发板的arduino环境配置

    一.前言 在这个万物智联时代,廉价的ESP系列芯片与开发板成为众多开发者首选,其内包含强大的无线通讯功能,可以满足开发者们绝大部分的开发需求. 二.ESP8266与ESP32开发板的arduino环境 ...

  8. RuilongMaker ESP8266物联网开发板 串口WIFI模块无线收发 Mini版

    ESP8266 IOT MiniBoard 物联网迷你开发板,是一款以ESP8266-12F为核心的物联网开发板,采用ESP8266-12F为主控,使用稳定性较高的CH340USB串口转换芯片,板载3 ...

  9. 漫谈LiteOS之开发板-串口(基于GD32450i-EVAL)

    [摘要] ​主要讲解物联网的技术积累,本期我们先带领大家学习漫谈LiteOS之漫谈开发板第一集-串口,本文基于GD32450i-EVAL对串口以及其通信做了一个简要的分析,以及开发过程中遇到的一些技术 ...

最新文章

  1. 【ACM】杭电OJ 2015
  2. datetime 和 smalldatetime
  3. leetcode算法题--剪绳子
  4. 企业级Java应用最重要的4个性能指标
  5. 【工具收藏】golang 开发工具包,json、sql 转 struct
  6. Java黑皮书课后题第7章:7.26(完全相同的数组)如果两个数组list1和list2的对应元素都相等,认为完全相同。编写一个测试程序,提示用户输入两个整数列表,然后显示这两个列表是否完全相同
  7. 类的带参方法有哪几部分构成?
  8. WordPress环境配置与安装
  9. update mysql php_PHP的MySQL的更新update
  10. [外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.quartz 简单配置使用)...
  11. First flight, Let's do it!
  12. 服务器磁盘会影响应用么,想了解服务器磁盘的IO吞吐量,用sqlio 工具会不会对当前服务器有影响...
  13. Failed to load registry 错误
  14. Win10重复按键盘经常按不出?Win10关闭筛选键步骤
  15. Ubuntu系统录屏webm格式mp4格式方法
  16. 基于影像基因的肺结节分割、肺癌分类分期、CT影像预测基因突变 --董云云 论文阅读
  17. php模拟QQ登录获得skey码,php模拟qq登录代码
  18. 如何查看电脑是否支持Wi-Fi 6
  19. unicode 生僻字_[微软拼音小技巧] 如何用Unicode输入生僻字
  20. Wavosaur音频编辑软件: 功能专业,体积超小(500KB)

热门文章

  1. Google浏览器打开axure产品原型的解决方案
  2. 一文解析推特上最常见的加密骗局
  3. 7-5 偶数位特殊序列和 (40分)
  4. DB2性能调整优化问题
  5. Angular Img标签自定义请求header Authorization
  6. 微信朋友圈广告怎么做?
  7. 用css3属性如何来做一个动态螺旋丸
  8. 苹果删除照片不释放内存_手机内存不足又卡顿,别瞎清理,删除这些文件夹,轻松释放几个G!...
  9. UE4带Alpha通道透明效果贴图的相关问题
  10. 吡啶及吡啶衍生物废水处理