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要相连。
至此,本实验已全部完成。如有不妥之处,欢迎批评指正。