小白的DIY Arduino+ESP8266 WIFI 空气质量检测仪(1)- 串口通讯

介绍

基于离线版的Arduino 小白的 DIY 空气质量检测仪(1~5),这里将扩展实现一个 WIFI 联网版的 DIY 空气质量检测仪。

  • Arduino Nano 开发板作为传感器数据采集端,仓库在这里:
    arduino-air-monitor
  • ESP8266 NodeMcu 开发板作为数据中转端,仓库在这里:arduino-air-monitor-transfer
  • Linux Alpine + NodeJS 服务端作为数据接收、存储、分析端

在这里插入图片描述

接线图

主要就是在原来的接线基础上,增加了 ESP8266 开发板用作数据中转。

当然,这里有点“大材小用”了,其实可以使用其它更小ESP系列开发板,在这里,买了哪个就用哪个了,还带一个显示屏,方便一些。

在这里插入图片描述

串口通讯 - 单向

本章主要是解决 Arduino Nano 和 ESP8266 NodeMcu 两个开发板的通讯,基于 SoftwareSerial RX TX,本示例只需要实现 Arduino Nano 的 TX 到 ESP8266 NodeMcu 的 RX 即可。

本示例 Arduino Nano 使用它的 D11 作为 TX 引脚,而 ESP8266 NodeMcu 使用它的 D1 作为 RX 引脚,接一根线作为单向通讯线即可。

因此,下面将

arduino-air-monitor 中新增 tx.h 实现数据发送逻辑;

arduino-air-monitor-transfer 中新增 rx.h 实现数据接收逻辑。

数据帧定义

// 起始符 x 2 [2字节] 0XFF、0XFF
// display   [1字节] 显示屏是否显示
// hcho      [4字节]
// tvoc      [4字节]
// co2       [4字节]
// temp      [4字节]
// hum       [4字节]
// uv        [4字节]
// 检验位     [4字节] display ~ uv 的总和

这里传感器的数据都以 float 类型传递,均需要占用 4 个字节。

总得的下来,数据帧总长为 31 个字节。

数据发送

// arduino-air-monitor/tx.h
#include <SoftwareSerial.h>

// 实际可不接此引脚
#define _Pin_RX 10

// 实际只用此引脚
#define _Pin_TX 11

// 起始符
#define _Frame_Start 0XFF

// 数据帧长度:
#define _Frame_Len 31

namespace Transfer {
   

SoftwareSerial _serial(_Pin_RX, _Pin_TX);

uint8_t floatSize = sizeof(float);    // 4
uint8_t int32Size = sizeof(int32_t);  // 4

unsigned char floatBytes[4];
unsigned char int32Bytes[4];

struct _TX {
   
  void init() {
   
    _serial.begin(9600);
  }

  // display: 是否显示
  void send(uint8_t display, float hcho, float tvoc, float co2, float temp, float hum, float uv) {
   
    // 数据帧
    byte buffer[_Frame_Len] = {
   };

    // 下标
    uint8_t idx = 0;

    // 起始符
    buffer[0] = _Frame_Start;
    buffer[1] = _Frame_Start;

    idx += 2;

    // 是否显示
    buffer[2] = (unsigned char)display;

    idx += 1;

    // 4位/指标

    memcpy(floatBytes, &hcho, floatSize);
    for (uint8_t i 
您可以使用ESP8266模块作为WiFi模块,将其与Arduino一起使用,通过手机与ESP8266模块进行通信。以下是一些基本的步骤: 1. 安装Arduino IDE和ESP8266库。在Arduino IDE中,选择“文件”>“首选项”并在“附加开发板管理器网址”中添加“http://arduino.esp8266.com/stable/package_esp8266com_index.json”。然后,选择“工具”>“开发板”>“开发板管理器”,搜索“esp8266”并安装相应的库。 2. 连接ESP8266模块到Arduino。将ESP8266模块连接到Arduino串口(RX-TX)引脚,以便它可以通过串口Arduino通信。还需要将ESP8266的GPIO0引脚连接到Arduino的地引脚,以便可以将其放入固件更新模式。 3. 编写Arduino代码。使用Arduino IDE编写代码来控制ESP8266模块和与手机通信。您可以使用ESP8266WiFi库来配置ESP8266模块的WiFi连接,并使用Serial库来与ESP8266模块进行通信。 4. 编写手机应用程序。使用您选择的移动应用程序开发框架(如React Native或Flutter)编写应用程序,以便它可以通过WiFiESP8266模块进行通信。您可以使用HTTP请求或WebSocket通信协议来与ESP8266模块进行通信。 5. 测试通信。将ArduinoESP8266模块连接到计算机,并上传您的Arduino代码。将ESP8266模块与WiFi网络连接,并使用您的手机应用程序与其进行通信。测试通信是否正常。 希望这可以帮助您开始使用手机,ArduinoESP8266进行通信!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值