arduino-esp32接入腾讯云物联网开发平台

ESP32是一系列低成本,低功耗的单晶片微控制器,集成了Wi-Fi和双模蓝牙,所以在物联网领域应用广泛。arduino是一个广受欢迎的开源硬件平台,借助arduino-esp32,我们可以使用arduino开发esp32。今天这篇文章介绍下如何通过arduino将esp32连接到腾讯云物联网开发平台

准备

  1. esp32-devkit-v1/v4
  2. 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。具体步骤是,在工具>管理库中,查找PubSubclientEspMQTTclient,并安装

下面是我安装好之后的截图:

此外,同样按照上面的方式来安装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连接到腾讯云物联网平台,如有错误,还望指正

posted @ 2022-05-29 17:26  饭特稠  阅读(2430)  评论(2编辑  收藏  举报