• 上海合作组织青岛峰会举行 2019-04-20
  • 遭遇隐形歧视 就业权益谁来维护 2019-04-20
  • 杨立新解读2018年天津市《政府工作报告》--天津频道--人民网 2019-04-19
  • 【北京海之沃车型报价】北京海之沃4S店车型价格 2019-04-19
  • 让个体诚信有力推动社会诚信 2019-04-13
  • 习近平会见巴基斯坦总统侯赛因 2019-04-13
  • 罗亦农:“残躯何足惜,大敌正当前” 2019-03-21
  • 由进口至出口再至走向世界,这一路着实不易,其中少不了无数位科研人员的奉献与牺牲。 2019-03-21
  • 查看: 1564|回复: 10
    打印 上一主题 下一主题

    [阿里云IoT] 阿里云IoT温湿度监测

    [复制链接]
    IoT温湿度监测


            哈哈,DF新推出了一套阿里云IoT入门套件,忍不住玩了一遍,使用过后,真的觉得实在是太强大,太方便了,只需要进行简单的设置,即可轻松搭建物联网环境,简直是我们这些小白用户的福音啊~ 撒花??!
          好了废话不多说,接下来就把我捣鼓的温湿度检测分享给大家吧!
          嘿嘿!上图


    所需材料
    FireBeetle ESP32-Board主控 x1
    FireBeetle Gravity扩展板 x1
    DHT11温湿度传感器 x1
    3.7V锂电池 x1
    智能手机 x1
    当然有需要的朋友可以直接购买阿里云IoT入门套件,自己制作更多好玩有趣的项目哦~,好了接下来让我们进入正题吧!

    制作步骤
    在制作之前,先下载并安装下列依赖库:
    DFRobot_Aliyun.rar (3.01 KB, 下载次数: 17)
    DFRobot_DHT11.rar (17.85 KB, 下载次数: 14)
    pubsubclient.rar (32.13 KB, 下载次数: 13)
    ArduinoJson-master.rar (207.28 KB, 下载次数: 19)



    一、硬件连接
          将焊接了排针的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支持英文字母、数字和特殊字符[email protected]:,长度限制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上观察室内温湿度状态了

    代码如下:
    [C++] 纯文本查看 复制代码
    #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[i]);
      }
      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();
    }

    相关帖子

    推荐

    gray6666  高级技匠

    发表于 2019-3-13 10:42:26

    强大的物联网,前途无量
    板凳

    歐拉學派  见习技师

    发表于 2019-3-14 18:11:00

    C:\Users\Administrator\Desktop\ESP8266\Arduino-ESP32-IDE-1.8.1\Arduino-ESP32-IDE\libraries\DFRobot_Aliyun\DFRobot_Aliyun.cpp:2:23: fatal error: HMAC_SHA1.h: No such file or directory


    请问 版主 HMAC_SHA1.h: 是哪个库?
    地板

    破风而来  初级技师

    发表于 2019-3-16 21:19:58

    请问 版主 HMAC_SHA1.h: 是哪个库?
    点评回复 支持 反对
    5#

    wuji  中级技师
     楼主|

    发表于 2019-3-22 13:16:44

    歐拉學派 发表于 2019-3-14 18:11
    C:%users\Administrator\Desktop\ESP8266\Arduino-ESP32-IDE-1.8.1\Arduino-ESP32-IDE\libraries\DFRobot_A ...

    DFRobot_Aliyun.rar (10.88 KB, 下载次数: 8) 不好意思,阿里云的依赖库传错了,用这个就有HMAC_SHA1.h文件了
    6#

    wuji  中级技师
     楼主|

    发表于 2019-3-22 13:21:48

    破风而来 发表于 2019-3-16 21:19
    请问 版主 HMAC_SHA1.h: 是哪个库?
    点评回复 支持 反对

    DFRobot_Aliyun.rar (10.88 KB, 下载次数: 3) 不好意思,上传失误,用这个库就有HMAC_SHA1.h文件了
    7#

    cgc444  见习技师

    发表于 2019-3-30 12:07:44

    强烈鼓掌
    8#

    rzegkly  版主

    发表于 3 天前

    很详细的教程
    9#

    rzegkly  版主

    发表于 前天 15:52

    很好的物联网例子,掌控板和阿里云可以结合起来?

    截图201904101552096422.png (174.64 KB, 下载次数: 0)

    截图201904101552096422.png
    10#

    rzegkly  版主

    发表于 前天 15:52

    很好的物联网例子,掌控板和阿里云可以结合起来?
    11#

    wuji  中级技师
     楼主|

    发表于 昨天 08:54

    rzegkly 发表于 2019-4-10 15:52
    很好的物联网例子,掌控板和阿里云可以结合起来?

    没用过,不太清楚
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    为本项目制作心愿单
    购买心愿单
    心愿单 编辑
    wifi气象站

    硬件清单

    btnicon
    我也要做!
    点击进入购买页面
    上海智位机器人股份有限公司 沪ICP备09038501号-4

    © 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

    浙江6加1开奖结果
  • 上海合作组织青岛峰会举行 2019-04-20
  • 遭遇隐形歧视 就业权益谁来维护 2019-04-20
  • 杨立新解读2018年天津市《政府工作报告》--天津频道--人民网 2019-04-19
  • 【北京海之沃车型报价】北京海之沃4S店车型价格 2019-04-19
  • 让个体诚信有力推动社会诚信 2019-04-13
  • 习近平会见巴基斯坦总统侯赛因 2019-04-13
  • 罗亦农:“残躯何足惜,大敌正当前” 2019-03-21
  • 由进口至出口再至走向世界,这一路着实不易,其中少不了无数位科研人员的奉献与牺牲。 2019-03-21