2514| 0
|
[讨论交流] IoT套件测评:【二】温湿度传感器模块测试 |
本帖最后由 DFSyBK4KmYN 于 2019-5-13 00:56 编辑 温湿度传感器测试: 按照示例教程进行配置,温湿度传感器按照教程配置也很顺利,产品创建步骤可以用之前led模块测评是创建的产品上添加属性来代替。 这边做了一点小偷懒,把灯光操作和温湿度传感器配置在同一个产品和app中进行控制。另外代码中的传感器上报是半分钟一次,我将其改为了5s一次。 本来希望能将两段代码合并一下,做个根据温湿度数据进行报警的小示例,但是在连接温湿度传感器之后,灯的控制似乎也出现了问题;串口没法进行输出的情况下也不是很好进行调试,因此暂时还未成功。 (在没有上云的情况下本地调试,灯也没能亮起。由于开发经验较少,暂时还没能搞懂是哪里出了问题….) 代码如下: [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 #define BEDROOD_LIGHT D7 /*配置WIFI名和密码*/ const char * WIFI_SSID = "11111111"; const char * WIFI_PASSWORD = "11111111"; /*配置设备证书信息*/ String ProductKey = "a168bbrZwdr"; String ClientId = "12345";/*自定义ID*/ String DeviceName = "nnEZ5evyhV39V6TnnfxF"; String DeviceSecret = "sIlZ7d0fSqK3XrLDdpF3ffgC44Wvlu39"; /*配置域名和端口号*/ String ALIYUN_SERVER = "iot-as-mqtt.cn-shanghai.aliyuncs.com"; uint16_t PORT = 1883; /*需要操作的产品标识符(温度和湿度两个标识符)*/ String TempIdentifier = "IndoorTemperature"; String HumiIdentifier = "Humidity"; String LightIdentifier = "light_stat"; /*需要上报和订阅的两个TOPIC*/ const char * subTopic = "/sys/a168bbrZwdr/nnEZ5evyhV39V6TnnfxF/thing/service/property/set";//****set const char * pubTopic = "/sys/a168bbrZwdr/nnEZ5evyhV39V6TnnfxF/thing/event/property/post";//******post DFRobot_Aliyun myAliyun; WiFiClient espClient; PubSubClient client(espClient); DFRobot_DHT11 DHT; static void openLight(){ digitalWrite(BEDROOD_LIGHT, HIGH); } static void closeLight(){ digitalWrite(BEDROOD_LIGHT, LOW); } 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(); /*开机先关灯*/ closeLight(); /*上报关灯信息*/ client.publish(pubTopic,("{\"id\":"+ClientId+",\"params\":{\""+LightIdentifier+"\":0},\"method\":\"thing.event.property.post\"}").c_str()); } uint8_t tempTime = 0; void loop(){ if(!client.connected()){ ConnectAliyun(); } if(tempTime > 3){ 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{ //digitalWrite(LED_BUILTIN, HIGH); if(DHT.humidity>50 || DHT.temperature>30){ int i=0; for(i=0;i<2;++i){ openLight(); delay(400); closeLight(); delay(400); } } else{ openLight(); delay(1000); //digitalWrite(LED_BUILTIN, LOW); closeLight(); delay(1000); } tempTime++; client.loop(); } } [/mw_shl_code] 套件来源:DFRobot创客商城 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed