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项目的朋友都遇到过这个问题:页面初始化时需要加载文件太大或太多了,许多文件加载后很可能不会运行到,这是 ...
随机推荐
- C#和Java的对比
C#和Java的对比 C#是微软公司在2000年6月发布的一种面向对象的高级程序设计语言:Java是Sun公司在1996年1月发布的一种面向对象的.平台独立的高级程序设计语言.它们是现在最流行的面向对 ...
- java--set,Collections,map
set 特点: 无序, 不允许重复 没有索引 Set<String> set = new HashSet<String>(); set.add("hello" ...
- wc项目(node.js实现)
一.github地址:https://github.com/Jasminejiamei/homework-wc 二.PSP PSP Personal Software Process Stages 预 ...
- Scrum冲刺第一篇
一.各个成员在 Alpha 阶段认领的任务 负责人和协作者 任务内容 陈嘉欣 设计编码规范 邓镇港 UI设计 肖烈涛 数据库设计 林德泽 设计测试计划 余晓东 用户注册登陆验证模块 陈嘉欣 余晓东 林 ...
- RDD源码分析
RDD源码解析 一. RDD.scala - Resilient Distributed Dataset (RDD) 弹性分布式数据集 弹性: 体现在计算上面 - the basic abstract ...
- composer install 出现“Please provide a valid cache path”
本文背景:通过deployer部署PHP项目[deployer部署工具:https://deployer.org/] 问题:Php 的laravel框架中执行 composer install 后, ...
- Invalid utf8mb4 character string: '"'
将CSV格式数据导入 mysql,报错: load data infile 'f:/nmg.csv' into table nmg fields terminated by ',' optionall ...
- dstat 系统监控命令
tat 命令很强大,可以实时监控CPU,磁盘,网络,IO,内存等. yum install -y dstat 例: dstat #查看全部监控信息 dstat -c #查看cpu 使用情况
- requests---自动写博客
前两天写过一个关于session的博客,session登录过后,可以进行一系列的操作,今天通过模拟登录博客园,自动写博客 自动写博客 我们先理下书写的思路: 1.通过request访问博客园: 2.通 ...
- Springboot的entity,dao,controller,service层级理解
1.Dao层:持久层,主要与数据库交互 DAO层首先会创建Dao接口,接着就可以在配置文件中定义该接口的实现类:接着就可以在模块中调用Dao的接口进行数据业务的处理,而不用关注此接口的具体实现类是哪一 ...