arduino-esp32接入腾讯云物联网开发平台
ESP32是一系列低成本,低功耗的单晶片微控制器,集成了Wi-Fi和双模蓝牙,所以在物联网领域应用广泛。arduino是一个广受欢迎的开源硬件平台,借助arduino-esp32,我们可以使用arduino开发esp32。今天这篇文章介绍下如何通过arduino将esp32连接到腾讯云物联网开发平台
准备
- esp32-devkit-v1/v4
- arduino IDE
接下来安装esp32_arduino的开发库,官网给了通过Arduino IDE,platform IO或者手动安装方式,这里介绍下通过Arduino IDE安装:
一. 打开文件>首选项
二. 将下面的地址添加到附加开发板管理器网址
https://dl.espressif.com/dl/package_esp32_index.json,http://arduino.esp8266.com/stable/package_esp8266com_index.json
三. 打开开发板管理器
四. 搜索 esp32,然后选择安装
安装好后,我们可以在开发板中找到 esp32的开发板
安装其他依赖
由于esp32是通过MQTT协议连接到物联网平台的,所以我们需要一个实现了mqtt client的库,帮助我们发布订阅相关的topic,需要一个JSON库,帮我们解析JSON。具体步骤是,在工具>管理库中,查找PubSubclient
和EspMQTTclient
,并安装
下面是我安装好之后的截图:
此外,同样按照上面的方式来安装ArduinoJSON
,用来序列化和反序列化物模型的JSON数据
编写代码
上面的库安装好之后,在物联网平台创建设备之后,我们就可以开始连到MQTT broker了。直接上代码,这里要注意的一点是username和password是在连接到云端mqtt broker的时候需要填入的,可以通过这个在线工具生成。
#include "EspMQTTClient.h"
#include <ArduinoJson.h>
#include <TimeLib.h>
#define tempPin 34
// https://esp32io.com/tutorials/esp32-lm35-temperature-sensor
#define ADC_VREF_mV 3300.0 // in millivolt
#define ADC_RESOLUTION 4096.0
// 定义温度 https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-devkitc.html
//int tempPin = IO36;
DynamicJsonDocument doc(1024);
String device_id = "PL0RB5H8QV/dev1";
EspMQTTClient client(
"wifi_name",
"wifi_pwd",
"PL0RB5H8QV.iotcloud.tencentdevices.com", // MQTT Broker server ip
"your_user_name", // username
"your_pwd", // pwd
"TestClient" // Client name that uniquely identify your device
);
void setup() {
Serial.begin(115200);
setTime(1652609537);
}
void onConnectionEstablished() {
Serial.println("connect to mqtt success ");
// client.subscribe("$thing/down/property/" + device_id, [] (const String &payload) {
// Serial.println(payload);
// DeserializationError error = deserializeJson(doc, payload);
//
// // Test if parsing succeeds.
// if (error) {
// Serial.print("deserializeJson() failed: ");
// Serial.println(error.f_str());
// return;
// }
// if (doc["params"]["temperature"] == 1) {
// digitalWrite(LED_BUILTIN, HIGH);
// } else {
// digitalWrite(LED_BUILTIN, LOW);
// }
// });
// client.publish("$thing/down/property/Z9R4GLTFW4/dev1", "This is a message");
}
void publish() {
// Convert the voltage into the temperature in degree Celsius:
float temperature = random(100);
doc["method"] = "report";
doc["clientToken"] = "123";
doc["timestamp"] = now();
doc["params"]["temperature"] = String(temperature, 2);
char output[1024];
serializeJson(doc, output);
client.publish("$thing/up/property/" + device_id, output);
// Print the temperature in the Serial Monitor:
Serial.println(output);
delay(1000); // wait a second between readings
}
void loop() {
client.loop();
publish();
}
烧录
在工具>开发板中选择正确的开发板esp32-devkit-v1, 在工具>端口中选择正确的串行端口,最后点击上传即可
在串口监视器中,我们可以看到:
在物联网平台中我们可以看到上报的数据:
总结
本文主要讲了如何通过arduino将esp32连接到腾讯云物联网平台,如有错误,还望指正