物联网入门教程【中】

  • 硬件平台
  • 云平台
  • 微信小程序
    dht11头文件
    链接:https://pan.baidu.com/s/14yQu2jqUWP7ZQU_rNw7a4Q?pwd=bg33
    提取码:bg33

  在上一篇的文章中,我们已经完成了硬件开发环境的搭建,并顺利通过了编译,在这篇教程中,我们将开始在云平台中创建物联网应用。

云平台使用

 在浏览器中搜索阿里云,注册完账号登陆后打开控制台,并在搜索栏中搜索物联网平台,并点击打开第一个搜索结果物联网入门教程【中】_第1张图片
 进入物联网控制台后,打开公共实例,找到设备管理菜单栏下的产品,并点击创建产品

物联网入门教程【中】_第2张图片
 进入产品创建页面后,我们先输入产品名称,eg:智能花盆 然后选择产品所属品类,这一步没有太严格的要求,然后节点类型选择直连;联网方式为WiFi,ICA数据格式,保持默认即可,最后点击确认,在弹出的页面选择返回产品列表 物联网入门教程【中】_第3张图片
在产品列表中找到我们刚创建的产品,点击查看,将产品信息中的productKey复制到自己的记事本中,记录下来,productKey是使用阿里云进行物联网所需的三元组信息的一组

物联网入门教程【中】_第4张图片
接下来,我们点击设备管理菜单栏的设备选项,找到添加设备,产品选择我们刚才创建的产品,DeviceName不能输入中文,之后点击确认即可
物联网入门教程【中】_第5张图片
创建完成后,我们同样点击查看,复制设备信息中的DeviceName和DeviceSecret,保存到记事本中。此时,阿里云平台的物联网产品已经基本创建完成。
 再次打开ardunio程序,将刚才保存的三元组信息即productKey、DeviceName、DeviceSecret复制对应位置,代码中定义WIFI信息的位置,填入自己手机热点的信息,wifi名称建议不要用中文,wifi频段选为2.4Ghz
物联网入门教程【中】_第6张图片
 然后我们需要定义订阅消息的topic,此处我们填入get

#define ALINK_TOPIC_PROP_SET      "get" //这个就是我们接收消息的TOPIC  

 下面还有一个发布数据的topic,格式如下

#define ALINK_TOPIC_PROP_POST      "/productKey/DeviceName/user/update" //这个是上传数据的TOPIC

 修改完成之后,就可以成功连接到物联网平台,并订阅topic,我们可以通过打开串口,查看打印信息。下面是dht11传感器数据读取函数,可以粘贴到程序最后

void dht11() {
  Serial.println("\n");
  int chk = DHT11.read(DHT11PIN);
  // 测试 DHT 是否正确连接
  Serial.print("Read sensor: ");
  switch (chk)
  {
    case DHTLIB_OK: 
    Serial.println("OK"); 
    break;
    case DHTLIB_ERROR_CHECKSUM: 
    Serial.println("Checksum error"); 
    break;
    case DHTLIB_ERROR_TIMEOUT: 
    Serial.println("Time out error"); 
    break;
    default: 
    Serial.println("Unknown error"); 
    break;
  }
  // 获取测量数据
  Serial.print("Humidity (%): ");
  Serial.println((float)DHT11.humidity, 2);
  Serial.print("Temperature °C): ");
  Serial.println((float)DHT11.temperature, 2);
  delay(1000);
}

 我们还需要在定义三元组信息的下面定义一下dht11的连接引脚,下图为nodemcu原理图,从原理图找到我们定义的引脚位置

// 设置 DHT 引脚 为 Pin 8
#define DHT11PIN 5

物联网入门教程【中】_第7张图片

 在void loop()函数中添加对dht11数据读取函数的调用

void loop()
{
   if (millis() - lastMs >= 5000){
    lastMs = millis();
    mqtt_check_connect();
    mqtt_interval_post(0);
   }
   dht11();
    mqttClient.loop();  
}

 完成这一步之后,dht11已经可以正常读取数据了,我们还需要将数据进行上报到云端,找到void mqtt_interval_post ( ) 上传数据到云端函数,更改上传数据的格式

//上传数据到云端
void mqtt_interval_post(int a)
{
    char param[512];
    char jsonBuf[1024];
        sprintf(param, "{\"temp\":%2d,\"humi\":%2d}",(int)DHT11.temperature,(int)DHT11.humidity);
    Serial.println(param);
    mqttClient.publish(ALINK_TOPIC_PROP_POST, param); //这个是上传数据的topic,jsonBuf这个是上传的数据
}

 代码的改动已经基本完成,实现将温湿度传感器数据上传的功能,再次点击编译,编译通过后,将代码下载到板子上,连接好传感器,打开热点,数据就能自动上传阿里云物联网平台。

你可能感兴趣的:(大学时代,物联网,iot,阿里云)