Arduino与掌控板通过软串口通信将数据上传阿里云
在Mind+上使用 Arduino UNO上云的话,需要购买DFRobot的OBLOQ物联网模块,由于我和我的同伴手头上并没有这款通信模块,所以这里采用的方法是将Arduino采集的温湿度数据通过软串口传给掌控板,掌控板接收数据后将其上传至阿里云。
一、软件准备
二、硬件准备
三、硬件连线
四、项目过程
1、Arduino采集数据并将数据传给掌控板
#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) {
; // wait for serial port to connect. Needed for native USB port only
}
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、掌控板接收数据实现数据上云
3、阿里云部署
①访问以下链接登录阿里云物联网平台,若没有账户,可使用支付宝扫码快速注册。 ②进入产品管理界面,创建产品: ③在产品详情页面上方找到功能定义,定义产品属性: (注意属性的标识符与代码中属性的命名一致) ④进入设备管理页面,添加设备: ⑤单击确认后,会弹出设备的三元组信息窗口: (三元组就如同公民身份证一样,全球唯一,绝不重复) 这三个参数需要记下来,在Mind+编程时的MQTT初始化参数那里需要正确填写。 设备在阿里云物联网平台登记后就有了身份证,但是状态显示是“未激活”“离线”和“在线”。 如果设备从未联网,就显示“未激活”,如果连接阿里云了,就显示“在线”,如果未连接就显示“离线”: 更多关于阿里云的使用说明请看
五、实验效果
六、实验结论
1、通过这次实验,重新回忆了Arduino的硬串口与软串口之间的区别与联系。硬串口可与电脑通信,软串口就是用程序模拟硬串口实现通信的功能,可以在主控板的引脚进行模拟实现。 本次实验就是用到了两台电脑,分别通过两台电脑的USB接口连接Arduino和掌控板,实现硬串口连接,再利用Arduino上的3号引脚和掌控板上的8号引脚实现软串口通信。 2、掌控板是使用十进制的ASCII码进行通信的,所以我们需要将接收到的数据从十进制的ASCII码转为ASCII码字符。 3、发布到云的消息一定要注意JSON格式是否正确。 4、Arduino和掌控板进行串口通信时,为了保证数据传输的准确性,两边的GND要相连。
至此,本实验已全部完成。如有不妥之处,欢迎批评指正。
