【arduino】nodemcu连接阿里云上传PZEM-004T数据

本博客讲解nodemcu使用arduino编写代码,连接阿里云并上传PZEM-004T的数据。

设备

  • PZEM-004T 10A v3模块, 测量负载的电压、电流、功率、用电量等。
  • nodemcu 不多说
  • 插座电线等

用到的库

库的链接在文章末尾。

#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
//设备连接阿里云的库,非常好用
#include <AliyunIoTSDK.h>
//解析PZEM-004T数据的库
#include <PZEM004Tv30.h>

设备连接图

主要参考这个图进行连接
实物图
在这里插入图片描述

这个接入方式可以按照

代码


#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include <AliyunIoTSDK.h>//连接阿里云用到的库
static WiFiClient espClient;
AliyunIoTSDK iot;
//这个库用来解析数据
#include <PZEM004Tv30.h>
//设备三元组
#define PRODUCT_KEY "xxxxxxxxxx"
#define DEVICE_NAME "xxxxxxxxxx"
#define DEVICE_SECRET "xxxxxxxxxxxxxxxxxxxxxxxx"
#define REGION_ID "cn-shanghai"
//wifi信息
#define WIFI_SSID "xxxxx"
#define WIFI_PASSWD "xxxxxxxxxxxxxx"

//定义rx、tx两个接口。pzem的tx连接D1、rx连接D2
PZEM004Tv30 pzem(D1,D2);
//初始化wifi信息
void wifiInit(const char *ssid, const char *passphrase)
{
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, passphrase);
    WiFi.setAutoConnect (true);
    WiFi.setAutoReconnect (true);
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(1000);
        Serial.println("WiFi not Connect");
    }
    Serial.println("Connected to AP");
}

unsigned long lastMsMain = 0;

DynamicJsonDocument doc(1024);
void setup() {
  Serial.begin(115200);
  wifiInit(WIFI_SSID, WIFI_PASSWD);
  AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
}

void loop() {
    AliyunIoTSDK::loop();
    if (millis() - lastMsMain >= 3000)
    {
      lastMsMain = millis();
      //获取数据
      doc["voltage"] = pzem.voltage();
      doc["current"] = pzem.current();
      doc["power"] = pzem.power();
      doc["energy"] = pzem.energy();
//      if( !isnan(voltage)&&!isnan(current)&&!isnan(power)&&!isnan(energy)&&!isnan(frequency)&&!isnan(pf)){
//          doc[""voltage"]
//      } else {
//          Serial.println("Error reading voltage");
//      }
      String output;
      serializeJson(doc, output);
      const char *str = output.c_str(); 
      //发送数据,又有send方法的参数为const char*类型,则需要把数据转化为char类型的json数据。
      AliyunIoTSDK::send(str); 
    }
}

库链接

arduino-aliyun-iot-sdk
🔗链接

PZEM-004T数据分析
🔗链接

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Arduino NodeMCU 是一款基于ESP8266开发的开源物联网平台,它可以通过Wi-Fi模块连接到网络。要将数据透传到阿里云,首先需要进行以下几个步骤: 1. 确定阿里云IoT平台的产品和设备:在阿里云IoT平台上创建一个产品,并为产品添加一个设备,获取设备的三元组信息(设备标识、设备密钥和设备证书)。 2. 安装并配置Arduino IDE:在Arduino IDE中安装ESP8266开发库并配置相应的开发环境,确保NodeMCU可以与IDE正常通信。 3. 编写Arduino代码:在Arduino IDE中编写代码,包括连接Wi-Fi和阿里云服务器的相关参数配置以及数据的收集和上传。可以使用ArduinoJson库来处理和封装数据。 4. 上传代码到NodeMCU:将编写好的代码上传NodeMCU开发板上,可以通过USB线连接并烧录固件。 5. 连接阿里云IoT平台:在代码中使用设备的三元组信息连接阿里云IoT平台,并进行身份验证。 6. 数据透传:通过阿里云IoT平台提供的MQTT协议,订阅需要接收数据的Topic,并将NodeMCU收集到的数据发布到相应的Topic上。 7. 数据接收与处理:在阿里云IoT平台上,可以配置数据流转规则,将数据进行过滤、存储和处理,并将结果通知到相应的服务端。 通过以上步骤,就可以实现Arduino NodeMCU透传数据阿里云IoT平台。这样,你可以从任何地方远程监控和控制NodeMCU,并对数据进行分析和利用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值