36363| 58
|
[官方案例教程] 阿里云IoT温湿度监测 |
IoT温湿度监测 哈哈,DF新推出了一套阿里云IoT入门套件,忍不住玩了一遍,使用过后,真的觉得实在是太强大,太方便了,只需要进行简单的设置,即可轻松搭建物联网环境,简直是我们这些小白用户的福音啊~ 撒花!! 好了废话不多说,接下来就把我捣鼓的温湿度检测分享给大家吧! 嘿嘿!上图 所需材料 FireBeetle ESP32-Board主控 x1 FireBeetle Gravity扩展板 x1 DHT11温湿度传感器 x1 3.7V锂电池 x1 智能手机 x1 当然有需要的朋友可以直接购买阿里云IoT入门套件,自己制作更多好玩有趣的项目哦~,好了接下来让我们进入正题吧! 制作步骤 在制作之前,先下载并安装下列依赖库: DFRobot_Aliyun.rar DFRobot_DHT11.rar pubsubclient.rar ArduinoJson-master.rar 一、硬件连接 将焊接了排针的FireBeetle传感器扩展板直插在焊接排了排母的ESP32上,将DHT11温湿度传感器用数字线连接到扩展板的D2数字口,接上锂电池。 二、接下来,我们需要在阿里云IoT平台上和Arduino 平台上进行一系列的操作,来关联DHT11设备和阿里云IoT平台。 (1)准备工作 在操作之前,我们需要注册一个阿里云账号(已有账号的宝宝可以忽略此步哦~),打开网页,输入网址https://iot.aliyun.com,点击右上角的登录按钮,进入账号登录页面,再点击免费注册,即可进入阿里云账号注册界面,按要求注册即可,如下列图所示: (2)进入物联网管理控制台。 输入网址https://iot.aliyun.com,登录阿里云IoT平台,点击设备接入,点击管理控制台(第一次次进入该页面,显示的是立即开通,按要求开通即可,是免费的)。 接下来,即可进入物联网平台管理控制台页面了,如下图所示,我们可以在该页面完成产品、设备、项目、服务的创建与开发。 (3)创建产品及添加设备。 我们需要在刚才的管理控制台页面创建一个虚拟设备,来关联物理设备DHT11和阿里云平台。 由于设备必须挂载在产品下,所以创建设备之前,我们必须为设备创建相应的产品,并为产品添加相应的属性(如DHT11能够检测温度和湿度,那么我们需要在该产品下添加2个名为温度检测和湿度检测的属性),这样在该产品下添加名为DHT11的设备时,该设备即可自动继承该产品的属性。 创建一个名为“温湿度监测”的产品,并为其添加名为“温度监测”和“湿度监测”的属性。 Step1:产品创建。进入物联网平台页面,在左侧导航栏选择设备管理->产品选项,点击创建产品,在弹出的页面选择高级版,单击下一步, 根据页面提示,填写产品信息。单击完成,该产品会自动出现在产品列表栏中。 Step2:添加属性。在产品列表中,找到刚才创建的“温湿度监测”产品,单击其项后的查看按钮,即可进入产品详情页,单击功能定义,在自定义功能栏中,单击添加功能。 在弹出的选项框中,按提示完成功能属性的添加相应的属性。这个属性的设置与DHT11这个物理设备的特性有关系,例:DHT11的温度范围为0~50摄氏度;湿度范围为20~90%RH(相对湿度)。单击确认后,该功能会自动出现在自定义功能栏中。用户可在此处查看产品表示符。 注:这里的标识符(支持大小写字母、数字和下划线、不超过50个字),是用户自定义的,是关联物理设备同阿里云平台的重要参数之一。 (4)为温湿度监测产品添加名为DHT11的设备。 Step1:添加设备并获取设备证书信息。 选择物联网平台页面左侧导航栏的设备管理->设备选项,单击添加设备 选择“温湿度监测”产品,设备名可自定义也可不填,根据页面提示,填写完毕后,单击确认完成设备添加,此时会弹出一个设备证书。添加完成后,DHT11设备会自动出现在产品列表中。 注:这里的DeviceName支持英文字母、数字和特殊字符-_@.:,长度限制4~32 该设备证书信息是是关联物理设备同阿里云平台的重要参数,还可以通过以下方式查看该证书信息:在设备列表栏找到DHT11设备,点击该项后的“查看”按钮,进入设备详情页,在设备信息栏即可看到设备证书的三个参数(ProductKey、DeviceName、DeviceSecret) Step2:获取TOPIC订阅和上报信息。 进入DHT11的设备详情页,点击Topic列表,即可看到设备的上报和订阅TOPIC信息。 (4)关联物理设备和阿里云IoT平台。 打开Arduino IDE软件,将上述步骤得到的产品标识符、设备证书信息、订阅和上报Topic等信息复制粘贴到附件所示的代码中,在设置好WiFi名和密码。编译上传至ESP32主控中即可。 以上几步完成了物理设备同阿里云IoT的连接,接下来就需要开发相应的App来操作该设备了。 三、在将物理设备DHT11连接到阿里云IoT平台上后,接下来,就需要在阿里云IoT平台上开发相应的App服务来实现手机App对DHT11的操作了。 (1)创建一个名为智能家居管理的项目。 服务和产品都必须挂载在某个项目下。才能实现某个产品和某个服务的连动,即通过操纵某个服务来改变或获取某个产品下某个设备的信息,从而获取或改变物理设备。 选择物联网平台页面左侧导航栏的开发服务->IoT Studio选项,点击新建项目。 根据页面提示,完成项目创建,单击确定,该项目会自动出现在项目列表栏中。 (2)导入产品。 将刚才创建的温湿度监测产品导入智能家居管理项目中。在项目列表栏,找到“智能家居管理”项目,单击查看,点击导入产品 (3)在左侧导航栏选择推荐->移动应用开发,点击新增可视化应用 根据页面提示,填写信息,单击完成。 (4)App开发。 Step1:双击左侧导航栏的自定义新增页1,将其改为“温湿度检测”; Step2:点击左侧导航栏的UI组件->图标,将实时曲线拖动到中间的App页面中,拖2次。 在App页面中,选中其中一个实时曲线1,将其配置为室内温度,点击右侧栏的数据选项 根据页面提示完成数据配置,单击确定 点击样式,编辑名称,将其改为室内温度 将实时曲线2设置为室内湿度,设置方式同实时曲线1一样,如下图所示,点击保存。 Step3:配置列表页。点击左侧导航栏首页模块->列表页,点击新增页面入口,根据提示,完成列表页配置,点击配置,将跳转链接链接到温湿度监测页面上。 Step4:添加用户账号。点击左侧导航栏的账号,点击添加用户,根据提示完成账号的添加,若以前已经添加则无需再次添加账号。 Step4 App发布。点击左侧导航栏的编辑,点击右上角的构建,根据手机系统选择Andriod构建或iOS构建。选择我想自己使用,点击随机生成,单击下一步,等待构建完成。 构建完成后,会生成如下所示二维码,使用手机微信二维码下载安装即可 打开智能家居控制台App,登录后页面如下所示; 至此,就可以在手机App上观察室内温湿度状态了 代码如下: [mw_shl_code=cpp,true]#include <WiFi.h> #include <PubSubClient.h> #include <ArduinoJson.h> #include "DFRobot_Aliyun.h" #include "DFRobot_DHT11.h" #define DHT11_PIN D2 /*配置WIFI名和密码*/ const char * WIFI_SSID = "WIFI_SSID"; const char * WIFI_PASSWORD = "WIFI_PASSWORD"; /*配置设备证书信息*/ String ProductKey = "you Product Key"; String ClientId = "12345"; String DeviceName = "you Device Name"; String DeviceSecret = "you Device Secret"; /*配置域名和端口号*/ String ALIYUN_SERVER = "iot-as-mqtt.cn-shanghai.aliyuncs.com"; uint16_t PORT = 1883; /*需要操作的产品标识符(温度和湿度两个标识符)*/ String TempIdentifier = "you Temp Identifier"; String HumiIdentifier = "you Humi Identifier"; /*需要上报和订阅的两个TOPIC*/ const char * subTopic = "you sub Topic";//****set const char * pubTopic = "you pub Topic";//******post DFRobot_Aliyun myAliyun; WiFiClient espClient; PubSubClient client(espClient); DFRobot_DHT11 DHT; void connectWiFi(){ Serial.print("Connecting to "); Serial.println(WIFI_SSID); WiFi.begin(WIFI_SSID,WIFI_PASSWORD); while(WiFi.status() != WL_CONNECTED){ delay(500); Serial.print("."); } Serial.println(); Serial.println("WiFi connected"); Serial.print("IP Adderss: "); Serial.println(WiFi.localIP()); } void callback(char * topic, byte * payload, unsigned int len){ Serial.print("Recevice ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < len; i++){ Serial.print((char)payload); } Serial.println(); } void ConnectAliyun(){ while(!client.connected()){ Serial.print("Attempting MQTT connection..."); /*根据自动计算的用户名和密码连接到Alinyun的设备,不需要更改*/ if(client.connect(myAliyun.client_id,myAliyun.username,myAliyun.password)){ Serial.println("connected"); client.subscribe(subTopic); }else{ Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } void setup(){ Serial.begin(115200); /*连接WIFI*/ connectWiFi(); /*初始化Alinyun的配置,可自动计算用户名和密码*/ myAliyun.init(ALIYUN_SERVER,ProductKey,ClientId,DeviceName,DeviceSecret); client.setServer(myAliyun.mqtt_server,PORT); /*设置回调函数,当收到订阅信息时会执行回调函数*/ client.setCallback(callback); /*连接到Aliyun*/ ConnectAliyun(); } uint8_t tempTime = 0; void loop(){ if(!client.connected()){ ConnectAliyun(); } /*一分钟上报两次温湿度信息*/ if(tempTime > 60){ tempTime = 0; DHT.read(DHT11_PIN); Serial.print("DHT.temperature="); Serial.println(DHT.temperature); Serial.print("DHT.humidity"); Serial.println(DHT.humidity); client.publish(pubTopic,("{\"id\":"+ClientId+",\"params\":{\""+TempIdentifier+"\":"+DHT.temperature+",\""+HumiIdentifier+"\":"+DHT.humidity+"},\"method\":\"thing.event.property.post\"}").c_str()); }else{ tempTime++; delay(500); } client.loop(); }[/mw_shl_code] |
本帖最后由 L9 于 2020-12-13 11:53 编辑 请问为啥烧录进去是这样的啊项目使用了 473719 字节,占用了 (36%) 程序存储空间。最大为 1310720 字节。 全局变量使用了36260字节,(12%)的动态内存,余留258652字节局部变量。最大为294912字节。 esptool.py v2.1-beta1 Connecting........_ Chip is ESP32D0WDQ6 (revision (unknown 0xa)) Uploading stub... Running stub... Stub running... Changing baud rate to 921600 Changed. Configuring flash size... Auto-detected Flash size: 4MB Compressed 8192 bytes to 47... Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 5957.7 kbit/s)... Hash of data verified. Flash params set to 0x022f Compressed 12272 bytes to 8102... Wrote 12272 bytes (8102 compressed) at 0x00001000 in 0.1 seconds (effective 962.5 kbit/s)... Hash of data verified. Compressed 474864 bytes to 311677... Wrote 474864 bytes (311677 compressed) at 0x00010000 in 4.3 seconds (effective 887.6 kbit/s)... Hash of data verified. Compressed 3072 bytes to 122... Wrote 3072 bytes (122 compressed) at 0x00008000 in 0.0 seconds (effective 3071.9 kbit/s)... Hash of data verified. Leaving... Hard resetting... |
wuji 发表于 2019-4-30 08:56 编译上传成功后有提示信息:"找到无效库在C:\Program Files (X86)\Arduino\libraries\pubsubclient:no headers files (.h) found in C:\Program Files (X86)\Arduino\libraries\pubsubclient"。我的电脑上就一个版本的Arduino |
歐拉學派 发表于 2019-3-14 18:11 DFRobot_Aliyun.rar不好意思,阿里云的依赖库传错了,用这个就有HMAC_SHA1.h文件了 |
破风而来 发表于 2019-3-16 21:19 DFRobot_Aliyun.rar不好意思,上传失误,用这个库就有HMAC_SHA1.h文件了 |
DFlc 发表于 2019-4-28 17:27 ClientId 随便填都可以 这个MQTT连接失败,以前已经回复了,你可以看这个 https://mc.dfrobot.com.cn/thread-275846-1-1.html |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed