最后的整合
Posted lulipro
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最后的整合相关的知识,希望对你有一定的参考价值。
简介
本文是此次物联网项目的终结篇。本文将演示如何整合之前的文章中的模块和代码,来简单的完成一个物联网项目。最终的实现效果是:利用Iphone手机上的MQTTool App,来获取DHT11的温湿度数据,以及控制继电器的开合。
在阅读本文前,你可能需要阅读下面的文章:
注备工作
- 将DHT11库安装到Arduino的开发环境中
- 将Obloq库安装到Arduino的开发环境中
- 已经搭建好MQTT服务器,且能完成MQTT通信
- 按照前面文章中的电路图连接好所有的模块 ,引脚可以根据需要调整
- 手机上安装MQTT客户端软件,例如ios平台的MQTTool
代码
需要修改下面的server、port等相关参数,以适配自己实际的使用环境。然后下载到Arduino板中。
#include <stdint.h> #include <Obloq.h> #include <SoftwareSerial.h> #include <dht11.h> #define RELAY_PIN 8 //驱动继电器模块的引脚 #define DHT11_PIN 9 //驱动DHT11传感器的引脚 unsigned long prev_time=0; //上一次发布温湿度的时间 uint8_t temperature ,humidity ; //保存温度和湿度 const String server = "www.lulipro.com"; //MQTT服务器的IP或者主机名 const String port= "1883"; //MQTT服务器的端口 const String iotId = "user1"; //MQTT服务器的用户名 const String iotPwd = "abcd1234"; //MQTT服务器的密码 const String topic_led = "home/led_ctrl"; //订阅的主题 const String topic_dht11 = "home/temp_hum"; //订阅的主题 const String wifiSSID = "TP-LINK12345"; //obloq模块连接的WIFI名,改成你用的WIFI名,最好不要有中文 const String wifiPwd = "aaaabbbb"; //obloq模块连接的WIFI密码,改成你用的WIFI密码 SoftwareSerial obloqModuleSerial(10,11); // 创建一个软串口,用于和obloq模块进行通信:10是其RX(接Obloq的TX) , 11是其TX(接Obloq的RX) Obloq olq(&obloqModuleSerial,wifiSSID,wifiPwd,server,port,iotId,iotPwd); //如果你需要使用自己的MQTT服务器的话,就使用这个构造函数,并指定MQTT服务器的IP和通信端口。 //已监听设备的消息回调函数,可以在这个函数里面对接收的消息做判断和相应处理,需要用setMsgHandle()来设置这个回调函数 void msgHandle(const String& topic,const String& message) { if(topic==topic_led) { if(message == "off") //如果收到了关于topic1主题的"off"消息,则关闭继电器 { digitalWrite(RELAY_PIN,LOW); } else if(message == "on") //如果收到了关于topic1主题的"on"消息,则打开继电器 { digitalWrite(RELAY_PIN,HIGH); } } } void setup(void) { obloqModuleSerial.begin(9600); //obloq模块的串口通信波特率是9600,所以要把软串口的波特率也设置为9600 olq.setMsgHandle(msgHandle);//注册消息回掉函数 olq.subscribe(topic_led); //订阅主题 DHT11_init(DHT11_PIN); pinMode(RELAY_PIN,OUTPUT); digitalWrite(RELAY_PIN,LOW); } void loop(void) { olq.update(); //轮询 if(millis() - prev_time > 2000) //每隔2s发布一次温湿度数据 { if(DHT11_read(&temperature,&humidity)) { olq.publish(topic_dht11,String(temperature)+"&"+String(humidity)); //格式 :温度&湿度 prev_time=millis(); } } }
以上是关于最后的整合的主要内容,如果未能解决你的问题,请参考以下文章