Arduino UNO采集DHT11数据,与掌控板软串口通信并将数据上传到阿里云

本实验通过Arduino UNO采集DHT11传感器数据,利用软串口发送至掌控板,再经掌控板连接阿里云物联网平台,实现数据上云。项目涉及硬件连接、软串口通信、JSON格式数据处理及阿里云物联网平台的设备接入与数据可视化。
摘要由CSDN通过智能技术生成


前言

注:本文系湛江市第十七中学星火创客团队及岭南师范学院物联网俱乐部原创部分参赛项目,转载请保留声明。

本实验的内容是使用Arduino UNO R3和DHT11进行数据采集,然后将数据发送到掌控板,由掌控板将数据发送到阿里云的物联网平台,最后使用IoT Stdio做一个数据可视化界面。


提示:以下是本篇文章正文内容,下面案例可供参考

一、项目准备

1、硬件准备

硬件数量
Arduino UNO R31
掌控板1
micro:bit掌控I/O扩展板1
DHT111

由于在Mind+上使用Arduino UNO上传数据到云平台需要用到DFRobot的OBLOQ物联网模块,手头上并没有,就借助一下掌控板来实现上云功能。

2、软件准备

软件
Arduino IDE
Mind+

3、硬件连接

Arduino UNODHT11
5VVCC
4Data
GNDGND
Arduino UNO掌控板
2(RX)P9(TX)
3(TX)P8(RX)
GNDGND

本实验中Arduino UNO只用作发送数据,并没有用到数据接收的功能,所以2号引脚可接可不接,这里只是习惯性标注

(不要忘记将Arduino UNO和掌控板共地,也就是上面表格中的GND——GND,不然会影响掌控板接收数据的准确性)

二、实验过程

1、Arduino采集数据及软串口发送数据

若使用硬串口通信,则需要在每次上传代码的时候都要拔掉硬串口RX(0)与其他硬件的线路,不然会因为硬串口被占用而导致代码上传出错,使用软串口通信即可不用担心上述问题

这里使用了一个JSON格式的数据来进行发送,来方便掌控板端的数据提取

#define Msg "{\"Temperature\": \"%s\", \"Humidity\": \"%s\"}"

这里的数据格式使用了字符串型是因为使用浮点型的数据发送过去给掌控板的话,该数据会出现乱码,使用字符串型可以避免这个问题

代码中使用到的DHT库:https://github.com/adafruit/DHT-sensor-library

具体代码如下:

#include <SoftwareSerial.h>
#include "DHT.h"

SoftwareSerial mySerial(2, 3); // RX, TX
#define BUF_LEN 50
char SEND_BUF[BUF_LEN];
#define Msg "{\"Temperature\": \"%s\", \"Humidity\": \"%s\"}"

#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
float Temp, Humi;

void setup() {
  Serial.begin(115200);
  while (!Serial) {;}
  mySerial.begin(57600);
  dht.begin();
}

void loop() { // run over and over
  static unsigned long now = millis();
  if (millis() - now >= 10000) {
    now = millis();
    Get_Temp_Humi();
    
    snprintf(SEND_BUF, BUF_LEN, Msg, String(Temp).c_str(), String(Humi).c_str());
    mySerial.write(SEND_BUF);
  }
}

void Get_Temp_Humi() {
  Temp = dht.readTemperature();
  Humi = dht.readHumidity();

  if (isnan(Humi) || isnan(Temp)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }
}

2、掌控板获取数据并上云

在掌控板这端也同样是使用了软串口进行通信(接收数据),由于掌控板是使用十进制的ASCII码进行通信的,所以掌控板在接收到数据后,要将十进制ASCII码转为相对应的ASCII码字符
在这里插入图片描述
这里使用了字符串拼接,保证数据接收完整。并且顺便做了Wi-Fi和MQTT的自动重连,避免与Wi-Fi或MQTT断开后无法恢复正常。

(Ps:MQTT_Msg一定要注意JSON格式正确与否,这会直接导致数据上传的成功与失败)

在阿里云平台,设备上报属性所使用的JSON数据格式如下

{"id":12345,"params":{"Temperature":25.20,"Humidity":68.30},"method":"thing.event.property.post"}

具体代码如下:

在这里插入图片描述
掌控板串口打印展示:
在这里插入图片描述
实物效果图:
在这里插入图片描述

3、阿里云物联网平台

在阿里云物联网平台上创建产品、设备,配置好产品中的功能定义的属性“Temperature”、“Humidity”,将功能定义发布上线后,即可在物联网平台上正常接收设备发布的消息
在这里插入图片描述
接着就可以去IoT Studio中创建一个Web端完成数据可视化
在这里插入图片描述
简单配置一下后,基本上就完成了
在这里插入图片描述


三、总结

以上就是使用Arduino UNO采集数据传至掌控板,并由掌控板提取数据发送上云的小实验,简单的介绍了一下一些实验过程中要注意的点。如有写的不好的地方,欢迎大家提点宝贵的建议。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simply myself

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值