简介

以温湿度传感器DHT11为采集节点,通过对IO管脚的读写,读取传感器数据,并通过WIFI API将数据上传到ONENET平台。实现便携式的远程监控温湿度采集功能,制作一个小型物联网模块

硬件

  1. esp8266-01s
  2. DHT11温湿度采集模块
  3. 3.7V锂电池

开发软件

arduino IDE

接线

esp8266 dht11
GPIO_2 信号引脚

程序

烧录方式请参照:
https://blog.csdn.net/m0_37738838/article/details/83999561

#include <ESP8266WiFi.h>
#include <dht11.h>              //引用dht11库文件
#define DHT11PIN 2              //定义温湿度针脚号为2号引脚
dht11 DHT11;
int tem;
int hum;
const char *ssid     = "test";//这里写入网络的ssid
const char *password = "12345678";//wifi密码
const char *host = "183.230.40.33";//修改为Server服务端的IP,即你电脑的IP,确保在同一网络之下。WiFiClient client;
const int tcpPort = 80;//修改为你建立的Server服务端的端口号,此端口号是创建服务器时指定的。void setup()
{Serial.begin(115200);    delay(10);pinMode(DHT11PIN,INPUT); Serial.println();Serial.print("Connecting to ");//会通过usb转tll模块发送到电脑,通过ide集成的串口监视器可以获取数据。Serial.println(ssid);WiFi.begin(ssid, password);//启动//在这里检测是否成功连接到目标网络,未连接则阻塞。while (WiFi.status() != WL_CONNECTED){delay(500);}//几句提示Serial.println("");Serial.println("WiFi connected");Serial.println("IP address: ");Serial.println(WiFi.localIP());}void loop()
{static unsigned long sensortStamp = 0;while (!client.connected())//若未连接到服务端,则客户端进行连接。{if (!client.connect(host, tcpPort))//实际上这一步就在连接服务端,如果连接上,该函数返回true{Serial.println("connection....");delay(500);}}if(millis()-sensortStamp>1000){int chk = DHT11.read(DHT11PIN);                 //将读取到的值赋给chktem=(int)DHT11.temperature;               //将温度值赋值给temhum=(int)DHT11.humidity;                   //将湿度值赋给humclient.println("POST http://api.heclouds.com/devices/521170759/datapoints?type=3 HTTP/1.1");     //打印出http协议post命令client.println("api-key: YE6bMZ=PbSe=cAxq=j1iVLUzn5M="); //apikey OneNet提供的keyclient.println("Host:api.heclouds.com");                //主机client.println("Connection:close");                     //断开连接  client.println("Content-Length:20");                    //传送的字节client.print("\r\n{\"TEM\":");                          //换行 传送格式{"TEM":tem,"HUM":hum}client.print(tem);                                //打印温度数据client.print(",\"HUM\":");                              //传送格式client.print(hum);                                //打印湿度数据client.print("}");                                      //打印出}client.println();}while (client.available())//available()表示是否可以获取到数据{//控制led
//        char val = client.read();//read()表示从网络中读取数据。
//        if(val=='a'){//pc端发送a和b来控制
//           digitalWrite(led, LOW);
//        }
//        if(val=='b')
//        {
//            digitalWrite(led, HIGH);
//        }//透传数据uint8_t c = client.read();Serial.write(c);}}

效果

https://v.youku.com/v_show/id_XNDExOTUzNjIyNA==.html?spm=a2h3j.8428770.3416059.1

https://v.youku.com/v_show/id_XNDExOTYxOTc4NA==.html?spm=a2h3j.8428770.3416059.1

Arduino AT指令上传温度数据

#include <dht11.h>              //引用dht11库文件
dht11 DHT11;
int tem;
int hum;
#define DHT11PIN 9              //定义温湿度针脚号为9号引脚String WiFiName= "test";                          //WIFI模块连接的热点的名字
String WiFIPasswd = "12345678";                 //WIFI模块连接的热点的密码
String DeviceID = "500259133";                  //Onenet创建的设备的ID
String DataStreamName="TEM";               //Onenet创建的数据流
String APIKey = "sWydCX=jX3RfgT3bYxaorgEbZ9o="; //Onenet创建的产品的秘钥
String ServerIP="183.230.40.33";                //Onenet服务器的IP(无需更改)
String ServerPost="80";                         //Onenet服务器的端口号(无需更改)
String data_tem = "";                               //用于存储Onenet回发的数据 温度
String data_hum = "";                               //用于存储Onenet回发的数据 湿度void ConnectSetup()   //初始化ESP8266,连接WiFi
{Serial.begin(115200);Serial.println("AT+CWMODE=1");    //配置为Station模式,连接热点delay(500);Serial.println("AT+RST");         //复位ESP8266模块delay(1000);Serial.println("AT+CWJAP=\""+WiFiName+"\",\""+WiFIPasswd+"\"");//配置为Station模式,连接热点delay(2500);
}
void PostOnenet(int data)
{String str = "POST  http://api.heclouds.com/devices/"+DeviceID+"/datapoints?type=3 HTTP/1.1"+"\r\napi-key:  "+APIKey+"\r\nHost:api.heclouds.com\r\nConnection:close\r\nContent-Length:15\r\n\r\n{\""+DataStreamName+"\":"+String(data)+"}\r\n";Serial.println("AT+CIPSTART=\"TCP\",\""+ServerIP+"\","+ServerPost);         //连接服务器delay(100);Serial.println("AT+CIPSEND="+(String)str.length());         //设置发送数据长度delay(200);Serial.println(str);//POST Onenet的数据
}
void setup()
{Serial.begin(115200);pinMode(DHT11PIN,INPUT);ConnectSetup();
}void loop()
{static unsigned long sensortStamp = 0;if(millis()-sensortStamp>1000){sensortStamp=millis();int chk = DHT11.read(DHT11PIN);                 //将读取到的值赋给chktem=(int)DHT11.temperature;               //将温度值赋值给temhum=(int)DHT11.humidity;                   //将湿度值赋给hum
//    Serial.print(F("Real Time tem: "));
//    Serial.println(tem);
//    Serial.print(F("Real Time hum: "));
//    Serial.println(hum);  PostOnenet(tem);}}

ESP8266制作便携式温湿度检测系统相关推荐

  1. 单片机课程设计——基于51单片机温湿度检测系统的设计与实现

    本文主要介绍了怎么使用51单片机最小系统板和温湿度传感器制作一个温湿度检测系统. 本次设计主要涉及了温湿度的测量.显示以及实现简单控制.硬件方面有五个模块,即STC89C52单片机主控模块.传感器模块 ...

  2. 基于ESP8266的智能家庭检测系统

    基于ESP8266的智能家庭检测系统 利用空暇时间,做了一个软硬件结合的项目,项目结束了,写篇文章来记录下吧! 目录 基于ESP8266的智能家庭检测系统 绪论 项目背景 项目方法 应用场景 系统总体 ...

  3. 基于STC89C51单片机的温湿度检测系统

    基于STC89C51单片机的温湿度检测系统 摘 要:设计一种计算机教室温度.湿度检测系统,用于控制机房的温.湿度.整个系统采用STC89C51微处理器作为主控系统,硬件电路主要包括51单片机.DHT1 ...

  4. 【无标题】基于51单片机和DHT11的温湿度检测系统

    基于51单片机的温湿度检测系统 摘 要:设计一款能够实时检测当前空气温度和湿度的装置.主控芯片采用STC12C5A60S2芯片,温湿度传感器采用DHT11数字温湿度传感器,显示屏幕采用OLED屏幕.整 ...

  5. 基于 STM 32 的温湿度检测系统

    STM32 最小系统不含外设控制,原理简单,分析最小系统是嵌入式入门的基础.我 们通过课程设计能够综合运用所学嵌入式系统课程和其他先修课程的理论和实际知识, 以及利用 Altium Designer. ...

  6. 基于多传感器的温湿度检测系统

    基于多传感器的温湿度检测系统 李群林 (湖南大学 电气与信息工程学院,长沙,410082) 摘 要:为了准确可靠的监测温湿度的变化情况,弥补了单一传感器的不足,使用了多传感器的方法,运用自适应加权融合 ...

  7. 2022-4-25 基于单片机的大棚温湿度检测系统(风吹摇铃 奔赴星海)

    基于单片机的大棚温湿度检测系统  (具有环境温湿度的实时检测,读取电能系统的日期和时间.可自行写入时间.超温降温.超湿除湿.低温加温.低湿加湿功能) 温湿度测量采用DHT11温湿度传感器 日期时间采用 ...

  8. HasS Python 温湿度检测系统及小程序实现 (一) 温湿度检测及数据上云

    前言 偶然的机会接触到阿里云的HaaS Python物联网开发框架,几天的使用下来发现使用起来开发速度非常快,数据采集,上云,应用开发一气呵成.即使对硬件不熟悉的程序员也可以快速地完成物联网全流程的开 ...

  9. T045基于51单片机温湿度检测系统无线蓝牙传输Proteus仿真原理图PCB

    功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.系统内采用DHT11作为湿度传感器,支持温湿度检测上传 2.系统具备无线蓝牙模块,支持定时循环发送手机端当前的温湿度状态 3.采用 ...

最新文章

  1. 禁止 Python 子类覆盖父类方法
  2. 测试计划和自动化测试思考
  3. 图解Redis之数据结构篇——压缩列表
  4. CentOS系统时间同步(NTP)
  5. @echo off是什么意思_为什么执行自己的程序要在前面加./
  6. keras模型保存和加载
  7. 导入导出oracle数据库表的dmp文件
  8. 给Teams消息附加图片的三种方式
  9. KVM 虚拟机自动克隆脚本
  10. oracle安装卡在create inventory_滴滴云服务器上安装Oracle12cR2单实例数据库
  11. 数据可视化系列(四):文字图例尽眉目
  12. 【vs调试】PDB 文件:每个开发人员都必须知道的
  13. 中缀表达式转换为后缀表达式算法
  14. 【算法/C语言】01背包问题(动态规划DP)
  15. Git - git push origin master 报错的解决方法 出现[rejected] master -」 master (non-fast-forward)问题解决
  16. 带你走进Choerodon猪齿鱼的知识管理
  17. chm文件打不开的办法
  18. 中标麒麟系统邮件客户端使用方法
  19. 主机名 域名 网站名 URL
  20. JavavEE中网络编程Socket套接字Ⅱ(TCP)

热门文章

  1. WINDOWS10服务器端如何开启SSH服务
  2. apicloud+融云实现即时通讯
  3. vue如何实现记住密码功能?
  4. 电机模组发出噪音怎么办?
  5. 【微前端】手把手带你从零开始搭建一个qiankun+vue微前端应用
  6. OpenHarmony应用签名 - 厂商私有签名
  7. 图像卷积(物理意义)
  8. ossec主要功能介绍
  9. win10:我们无法创建新的分区,也找不到现有的分区,
  10. VMware 虚拟化集群