DFRobot模块物联网演示项目整合
简介
本文是此次物联网项目的终结篇。本文将演示如何整合之前的文章中的模块和代码,来简单的完成一个物联网项目。最终的实现效果是:利用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=; //上一次发布温湿度的时间
uint8_t temperature ,humidity ; //保存温度和湿度 const String server = "www.lulipro.com"; //MQTT服务器的IP或者主机名
const String port= ""; //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(,); // 创建一个软串口,用于和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(); //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 > ) //每隔2s发布一次温湿度数据
{ if(DHT11_read(&temperature,&humidity))
{
olq.publish(topic_dht11,String(temperature)+"&"+String(humidity)); //格式 :温度&湿度
prev_time=millis();
}
} }
DFRobot模块物联网演示项目整合的更多相关文章
- 如何构建多模块的SpringBoot项目
通过阅读本文你将了解到:如何将已有SpringBoot项目改成多模块 & 如何新构建多模块SpringBoot项目 以下示例基于我正在使用的order(订单服务)进行演示,无论你用的是什么项目 ...
- 【转】Nutz | Nutz项目整合Spring实战
http://blog.csdn.net/evan_leung/article/details/54767143 Nutz项目整合Spring实战 前言 Github地址 背景 实现步骤 加入spri ...
- (转)Nutz | Nutz项目整合Spring实战
http://blog.csdn.net/evan_leung/article/details/54767143 Nutz项目整合Spring实战 前言 Github地址 背景 实现步骤 加入spri ...
- (转) shiro权限框架详解06-shiro与web项目整合(上)
http://blog.csdn.net/facekbook/article/details/54947730 shiro和web项目整合,实现类似真实项目的应用 本文中使用的项目架构是springM ...
- Nutz | Nutz项目整合Spring实战
Nutz项目整合Spring实战 前言 Github地址 背景 实现步骤 加入springMvc与Spring 相关配置 新增Spring相关配置 新增SpringIocProvider 重写Nutz ...
- Spring与Web项目整合的原理
引言: 在刚开始我们接触IOC时,我们加载并启用SpringIOC是通过如下代码手动加载 applicationContext.xml 文件,new出context对象,完成Bean的创建和属性的注入 ...
- PMP 第四章 项目整合管理
1.什么是整合管理,整合什么?如何整合? 项目整合管理包括识别 定义 组合 统一与协调项目管理过组的个过程及项目管理活动二进行的各种过程和活动. 整合兼具统一 合并 连接和一体化的性质,对 ...
- 分模块创建maven项目(一)
maven是一个项目构建和管理的工具. 我们可以通过maven仓库可以实现管理构建(主要是JAR还包括:WAR,ZIP,POM等等). 我们可以通过maven插件可以实现编译源代.产生Javadoc文 ...
- Angularjs 异步模块加载项目模板
ng-lazy-module-seed(Angularjs 异步模块加载项目模板) 相信做过SPA项目的朋友都遇到过这个问题:页面初始化时需要加载文件太大或太多了,许多文件加载后很可能不会运行到,这是 ...
随机推荐
- 十三道Python练习题
一.完美立方 编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, b, c, d),使得a^3= b^3 + c^3 + d^3,其中a,b,c,d 大于 1, 小于等于N. 输入 ...
- sql基础语句50条
curdate() 获取当前日期 年月日 curtime() 获取当前时间 时分秒 sysdate() 获取当前日期+时间 年月日 时分秒 */ order by bonus desc limit ( ...
- php从数据库里取出的数据列表里添加一个属性实战例子
php从数据库里取出的数据列表里添加一个属性实战例子:$opendata = $this->omitmodel->getHistory(1,1);var_dump($opendata);f ...
- dtd的引入方式
dtd三种引入方法 //第一种引入方式: //1.dtd <?xml version="1.0" encoding="UTF-8"?> <!E ...
- 「白帽挖洞技能提升」ThinkPHP5 远程代码执行漏洞-动态分析
ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的,在保持出色的性能和至简代码的同时,也注重易用性.但是简洁易操作也会出现漏洞,之前ThinkPHP官方修复了一个严重的远程代码执行漏 ...
- Scrum 冲刺第一篇
我们是这次稳了队,队员分别是温治乾,黄思扬,莫少政,余泽端,江海灵 码云地址为:https://gitee.com/sixers/activityWall-Web 一.各个成员在 Alpha 阶段 ...
- vue全家桶项目应用断断续续的记录
一.引用axios插件报错 axios使用文档 Cannot read property 'protocol' of undefined 解决方法:在mainjs文件中把axios引入vue的原型函数 ...
- visudo: /etc/sudoers is busy, try again later
启动visudo时,报错"visudo: /etc/sudoers is busy, try again later" 解决思路:杀掉visudo进程 ps -ef|grep vi ...
- [MySQL] 为什么要给表加上主键
1.一个没加主键的表,它的数据无序的放置在磁盘存储器上,一行一行的排列的很整齐. 2.一个加了主键的表,并不能被称之为「表」.如果给表上了主键,那么表在磁盘上的存储结构就由整齐排列的结构转变成了树状结 ...
- Windows下使用mingw+cmake编译C/C++程序
按照正常流程安装好mingw和cmake后,仍然是无法直接使用cmake编译处MakeFile文件的,我们需要在CMakeLists.txt中做一些配置. 首先,在PROJECT之前,设置: SET( ...