首页 > 其他分享 >ESP8266模块上传温湿度传感器的数据到云平台(乐为物联)

ESP8266模块上传温湿度传感器的数据到云平台(乐为物联)

时间:2024-05-28 23:34:01浏览次数:35  
标签:String 乐为 温湿度 println espSerial Serial 数据 ESP8266

ESP8266相关AT指令

  1. AT:检测模块是否正常工作,返回“OK”表示正常。
  2. AT+RST:重启模块。
  3. AT+CWMODE=:设置Wi-Fi模式,可以是以下几种:
  • 1:Station模式,连接到一个Wi-Fi网络。
  • 2: SoftAP模式,创建一个Wi-Fi热点。
  • 3: SoftAP+Station模式,同时作为热点和连接到一个Wi-Fi网络。
  1. AT+CWJAP="","":连接到指定的Wi-Fi网络,为网络名称,为密码。
  2. AT+CWLAP:列出附近可用的Wi-Fi网络列表。
  3. AT+CIPSTART="","",:建立TCP或UDP连接,可以是"TCP"或"UDP",为目标IP地址,为目标端口号。
  4. AT+CIPSEND=:发送数据前设置发送数据的长度,为数据长度。
  5. AT+CIPCLOSE:关闭当前的TCP或UDP连接。
    ESP8266连线方式
arduino esp8266
3.3v 3v3
RX TX
TX RX
GND GND

RX和TX分别是接收端和发送端,arduino默认是数字引脚0和1,可以使用SoftwareSerial.h库的SoftwareSerial设置
SoftwareSerial esp8266(RX,TX)
当然,这里的RX和TX是对drduino板来说的
温度传感器的使用
以前的博客
云平台
乐为物联
官网地址
在上面添加设备和传感器,博客其他人有参见下面(我不生产知识,我只是...)
CSDNESP8266上传数据到乐联网简单教程
CSDNESP8266WiFi模块接入乐为物联平台
两都介绍了AT相关的指令,(还有下面最重要的一个东西)。第二个还有添加完成后模拟测试的教程,添加设备和API测试官网教程也有,但是没有HTTP的测试教程(第2个有)
上面测试做完了可以使用下面的串口调试助手和网络调试助手,串口调试助手和Arduino IDE的串口监视器差不多,通过串口发AT指令调试ESP模块;网络调试助手验证下面的
链接:https://pan.baidu.com/s/1Ziq3VPR8qVlcy51Jigesrw?pwd=yv9x
提取码:yv9x

传输格式
ESP8266除非烧录代码进去,不然一般是使用AT指令的方式来传数据到云平台;
步骤:设置STA模式(AT+CWMODE=1)->连WIFI(AT+CWJAP=)->和服务器建立连接(AT+CIPSTART=)->发送数据(AT+CIPSEND)

1.API格式
直接上图了,最开始是做这个,后面不知道是硬件的原因还是其他原因一会能传上数据一会直接挂掉,备注:使用这个要设置透传模式(AT+CIPMODE=1透明传输),透传模式发送数据不指定传输的字节数,也就是ESP连接好云平台后使用AT+CIPSEND指令直接传数据,这样传输的时候不好控制,看资料说传完数据后再传一个"+++"表示结束(待验证)

上面的信息在这个链接可以看见 一个在2013年发布的疑似用户写的通讯协议的说明指南

2.通过HTTP传数据,端口80,IP和上面相同,格式如下:
POST /api/V1/gateway/Updatesensors/02 HTTP/1.1
userkey: *********
Host: open.lewei50.com
Content-Length: 26
jonnection: close
[{"Name":"T1","Value":20}]

最后一行的数据叫做json格式,T1是你云平台上传感器的名字,20是值;在实现的时候可以传多个数据--温度&湿度,用DHT库读出来后强转为字符串,在把字符串整理成上面这种格式(需要使用c语言转义字符),发送就ok(在之前可以使用网络调试助手传一个固定数据试试,验证格式有没有弄错)

话不多说代码来罗

点击查看代码
#include <SoftwareSerial.h>
#include <DHT.h>
SoftwareSerial espSerial(9, 10);//rx,tx
DHT dht;
const String ssid = "ikun";
const String password = "ikun20022002";
const String userkey = "1dc9e265dd";
void setup() {
  Serial.begin(115200);
  espSerial.begin(115200);
  WiFi();
  dht.setup(3);//传感器
}

void loop() {

  int humidity = dht.getHumidity();
  int temperature = dht.getTemperature();
  String post = "[{\"Name\":\"temp\",\"Value\":\"" + String(temperature) + "\"},{\"Name\":\"humidity\",\"Value\":\"" + String(humidity) + "\"}]";
  send(post);
  delay(15000);
}

void WiFi() {
  bool wififlag = false;
  Serial.println("AT+CWJAP=\"" + ssid + "\",\"" + password + "\"" + "\r\n");
  espSerial.println("AT+CWMODE=1");
  while (!wififlag) {
    espSerial.println("AT+CWJAP=\"" + String(ssid) + "\",\"" + String(password) + "\"" + "\r\n");
    delay(2000);
    if (espSerial.find("OK")) {
      Serial.println("Connected to WiFi.");
      wififlag = true;
      break;
    } else {
      Serial.println("Connection failed. Retrying...");
      delay(2000);
    }
  }
}

void send(const String& postData) {
  String host = "www.lewei50.com";
  int port = 80;
  espSerial.println("AT+CIPSTART=\"TCP\",\"" + host + "\"," + String(port));
  delay(2000);
  if (espSerial.find("CONNECT")) {
    Serial.println("TCP Connect Succesfully");

    String cmd = "AT+CIPSEND=";
    cmd += String(postData.length() + 164);
    espSerial.println(cmd);
    if (espSerial.find(">")) {
      Serial.println("Ready,sending");
      espSerial.println("POST /api/V1/gateway/UpdateSensors/01 HTTP/1.1");
      espSerial.println("userkey: " + userkey);
      espSerial.println("Host: " + host);
      espSerial.println("Content-Length: " + String(postData.length()));
      espSerial.println();
      espSerial.print(postData);
      Serial.println("SUCCESS");
    } else {
      Serial.println("CIPSEND Erro");
    }
  } else {
    Serial.println("Failed CIPSTART.");
  }
}

总结
原理:连接Arduino uno、ESP8266、温湿度传感器,然后通过代码把需要发送的数据整理成固定数据,再通过SoftwareSerial.h库通过串口发送AT指令给ESP,用AT指令来完成连接WIF、连接云平台、发送数据的功能。只要数据格式没错,乐为物联会根据你传的数据把湿度和温度更新到你的云设备上

后续实验的思考
自己做一个简易云平台思路:Web页面展示数据+数据库存储历史温湿度+支持HTTP传输+后端发简单数据给ESP8266(实现控制小灯)

特别鸣谢:方委员

标签:String,乐为,温湿度,println,espSerial,Serial,数据,ESP8266
From: https://www.cnblogs.com/wsndyuilbyy/p/18214082

相关文章

  • 用ESP8266-NodeMCU开发板显示一下我的QQ头像
    诶,说好的自己写esp8266的开发板固件的我回来了。20年说好的,今天回来还愿了ESP8266串口WiFi模块-WiFi杀手今天我们把OLED显示屏也接上,我此次买的是4脚的OLED(128*64),不支持彩色显示的。NodeMCU开发板NodeMCU是一个开源的IoT物联网硬件开发板,由于它支持WIFI功能且使用方法十......
  • 基于51单片机家庭烟雾红外温湿度报警设计
    **单片机设计介绍,基于51单片机家庭烟雾红外温湿度报警设计文章目录一概要二、功能设计设计思路三、软件设计原理图五、程序六、文章目录一概要  基于51单片机家庭烟雾红外温湿度报警设计概要如下:一、设计背景与目的本设计旨在构建一个能够实时监测家庭......
  • 基于arduino uno的DHT11温湿度传感器的使用
    安装DHT库由于arduinoIDE本身无法直接下载DHT库,在网上寻找第三方库,链接是gitee的,国内能直接访问https://gitcode.com/markruys/arduino-DHT下载为zip包后导入IDE中,具体步骤:项目->管理库->添加.zip库->选择下载的zip包使用示例按照下面图示使用即可出于某种原因如果无法使......
  • 基于STM32的环境检测温湿度大气参数上传阿里云的论文
    基于STM32的环境检测温湿度大气参数上传阿里云的论文可以从多个方面来展开,以下是一个论文的概要结构及其内容的建议:一、引言介绍环境检测在现代化生活中的重要性和应用场景。阐述STM32微控制器在环境检测系统中的优势。简述阿里云物联网平台的特点和其在环境检测数据管理中的......
  • esp8266-01 使用介绍
    一、直接使用接线esp8266USB转TTl说明TXRX------RXTX------EN3.3V  AT命令需要拉高------3V33.3V------IO0不接IO0接地进入烧录模式GNDGND------二、固件烧写前提说明一般是模块固件损坏或者买回来里面可能被别人刷过固件需要擦除或者......
  • ESP8266串口WiFi模块 - WiFi杀手
    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解`ESP8266串口WiFi模块-WiFi杀手日期:2020-2-3阿珏折腾代码浏览:2635次评论:21条前段时间买了个ESP8266,准备拿来耍耍。实际吃灰数月,然后就拖到......
  • VKL060/076 SSOP24/28 超低功耗LCD液晶段码屏驱动芯片适用水电表/温湿度计,FAE技术支持
    VKL060概述: VKL060是一个点阵式存储映射的LCD驱动器,可支持最大60点(15SEGx4COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。功能特点:•  工......
  • (VKL系列)超低功耗LCD液晶显示驱动IC-VKL76 SSOP28,19*4 76点阵,超低工作电流约7.5微安,
    VKL076概述:VKL076是一个点阵式存储映射的LCD驱动器,可支持最大76点(19SEGx4COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。功能特点:•  工......
  • STM32、ESP8266与MQTT连接阿里云物联网的串口通信异常解析
    STM32、ESP8266与MQTT协议连接阿里云物联网平台时常见的串口通信异常介绍在构建物联网应用时,STM32、ESP8266与MQTT协议的结合是实现设备与网络间稳定通信的关键。然而,在连接阿里云物联网平台的过程中,串口通信异常成为了一个常见的挑战。本文将探讨这些异常现象及其可能的原因,并给......
  • stm32采集烟雾和温湿度+ESP8266转发解析+python构造http
      https://www.cnblogs.com/gooutlook/p/16061136.html  http://192.168.1.103/Control_SensorPin?sensor=sensor_all&action=GetDatapython#-*-coding:utf-8-*-importrequestsimporturllib.parse#pipinstallrequestsdefSendHttp():#ht......