Arduino与掌控板通过软串口通信将数据上传阿里云

在Mind+上使用 Arduino UNO上云的话,需要购买DFRobot的OBLOQ物联网模块,由于我和我的同伴手头上并没有这款通信模块,所以这里采用的方法是将Arduino采集的温湿度数据通过软串口传给掌控板,掌控板接收数据后将其上传至阿里云。

一、软件准备

软件 Mind+ Arduino IDE

二、硬件准备

硬件 数量 Arduino UNO 1 掌控板 1 micro:bit掌控I/O扩展板 1 DHT11 1 Type-C数据线 1 杜邦线 若干

三、硬件连线

Arduino DHT11 5V VCC GND GND 4 DATA
Arduino 掌控板 D3(Tx) P8(Rx) GND GND

四、项目过程

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要相连。

至此,本实验已全部完成。如有不妥之处,欢迎批评指正。

经验分享 程序员 微信小程序 职场和发展