演示视频如下:

物联网项目案例-温湿度检测及mqtt实现控制(带双端显示)

代码资源可在我的资源中免费下载学习使用~

资源链接:https://download.csdn.net/download/qq_41662881/12918450

本系统实现的功能有:传感器采集、节点发送、网关接收通信、网关与esp32间mqtt的通信、mqtt实现Android客户端控制执行器执行和接收信息的功能以及存储数据库信息至云服务器发布数据至web端。

非功能需求分析

本系统运行响应时间较短,任务处理都能在2秒内响应,网关、节点上线时间也控制在5秒内;同时web端、手机端实时1~2秒打印一次传感器采集到的数据;本系统主要用到的硬件有一块esp32开发板、linux虚拟机、DHT11以及云服务器,应用需要考虑到节点供电问题以及wifi距离,结合mqtt通信快,数据量小的特点等,系统后期的运作成本不会很大,在可控的范围之内。

系统运行环境

Vmware(ubuntu19.04)、阿里云平台(ubuntu)、Android、vscode本地网页端口8000

采用开发技术框架信息

PC端网页开发(Django、bootstrap)
Android使用paho-mqtt框架开发
Mqtt服务器(mosquitto)搭建及使用
Linux下使用c开发网关

系统总体结构图


系统主要的组成结构分为数据采集接收执行和显示控制两部分;数据采集部分主要是由连接在终端节点的DHT11温湿度模块来完成,将采集到的信息发送到本地网关上再根据云上搭建的mqtt服务器传送到云数据库保存;显示控制部分较为复杂,需要使用MQTT通信实现双向通信达到收发功能,各部分的实时通信来保证这个网络能正常的运行,以达到数据监测及用户指令执行;具体为将DHT11传感器接收到信息通过转化得到数据后编译成可以被MQTT发送至显示端可被执行地形式后进行显示,手机端/PC端通过paho-mqtt实现Android显示、执行打开关闭开关功能,PC端由web实现网页显示云数据库内保存的温湿度数据。

系统功能说明

(1) 采集温湿度发送至服务器数据库

(2) 服务器数据库下发数据至双端

(3) 服务器搭建

(1)利用手机端app使用paho-mqtt框架的订阅主题实现温湿度监测,发布消息“1”或“0”,使云服务器上的mqtt服务器通过订阅主题来接收“1”或“0”,通过串口通信将mqtt收到的信息给写入串口传达给esp控制开关;
(2)利用网页访问django+bootstrap搭建的web站点,可以对数据进行实时查看,及历史数据访问工作。

系统硬件设计

使用阿里云ecs弹性服务器将mysql数据库和mqtt服务器搭建在上面,使用esp32+dht11实现温湿度采集以及发布上mqtt服务器,使用本地Linux作为网关实现消息收发以及数据上传云端存储。

系统软件设计


在使用环境中,硬件部分esp32将dht11采集得到的温湿度数据通过订阅云端mqtt服务器的方式发布到服务器上,然后使用本地网关订阅发布到mqtt服务器上的消息实现存储数据到云端数据库。Android端使用paho-mqtt框架实现温湿度数据的实时显示以及对esp32连接开关的打开关闭,网页端使用django框架底层搭建一个bootstrapUI作为读取云端数据库显示实时数据及历史数据。

系统的设计与实现

系统硬件的设计与实现

本系统要实现的功能有传感器采集、发送节点,节点与网关间的通信,服务器与手机端的通信,手机端控制执行器执行,网页显示云数据库历史内容。使用dht11分别作为节点采集,esp32作为节点协调器及执行器,进行远程通讯。

硬件系统结构

本系统包含的模块由数据采集模块和通信模块,功能分别是传感器采集数据;串口间的通信、esp32与mqtt服务器通信。

硬件选型

DHT11作为温湿度采集,小灯作为执行器,esp32负责数据接收上传,与服务器通信。

Esp32硬件模块

ESP-WR00M-32是一款通用型WiFi-BT-BLE MCU模组,功能强大,用途广泛。
此款模组的核心是ESP32芯片,具有可扩展、自适应的特点。两个CPU核可以被单独控制或上电。时钟频率的调节范围为80MHz到240MHz。用户可以切断CPU的电源,利用低功耗协处理器来不断地监测外设的状态变化或某些模拟量是否超出阈值。ESP32还集成了丰富的外设,包括电容式触摸传感器、霍尔传感器、低噪声传感放大器,SD卡接口、以太网接口、高速SDI0 / SPI、 UART、I2S和I2C等。
ESP-WR0OM- 32集成了传统蓝牙、低功耗蓝牙和Wi-Fi,具有广泛的用途: Wi-Fi 支持极大范围的通信连接,也支持通过路由器直接连接互联网;而蓝牙可以让用户连接手机或者广播BLE Beacon以便于信号检测。ESP32芯片的睡眠电流小于5mA,使其适用于电池供电的可穿戴电子设备。ESP-WR0OM-32支持的数据传输速率高达150 Mbps,经过功率放大器后,输出功率可达到22 dBm, 可实现大范围的无线通信。因此,这款芯片拥有行业领先的技术规格,在高集成度、无线传输距离、功耗以及网络联通等方面性能最佳。ESP32的操作系统是带有LWIP的freeRTOS, 还内置了带有硬件加速功能的TLS 1.2。芯片同时支持0TA加密升级。

dht11模块

DHT11在本系统中充当温湿度采集作用。DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比高等优点。

系统软件的设计与实现

系统软件架构

Android端使用paho-mqtt框架实现mqtt服务器间的订阅发布,django使用本地网关上传存储到数据库的数据实现实时显示跟历史数据显示。

Android设计如下:

“连接”界面主要用于连接MQTT服务器,客户端名称为私有定制的
“订阅”界面主要用于读取DHT11温湿度传感器发送过来的数据
“发布”界面主要用于客户端对CC2530协调器发布指令使执行器执行亮灯灭灯等指令操作。
“数据”界面主要用于数据库存储MQTT上传到客户端的温湿度数据及相对应的时间。

Web端设计如下:

Card样式显示当前实时数据,下方table列表显示历史数据。

系统测试

系统采用真机调试方法进行测试,对系统的控制功能进行了测试。 连接esp32,使用micro python开启调试
连接linux,开启网关程序查看是否有温湿度传入 连接Android查看是否显示温湿度成功 打开阿里云上的mysql查询是否有温湿度存储成功
因mqtt服务器为阿里云后台运行故不需要自己开启 打开站点127.0.0.1:8000查看网页是否显示温湿度以及历史数据





更多相关文章

  1. android连接小票打印机,打印小票数据的两种模式
  2. 【一步一个脚印】Tomcat+MySQL为自己的APP打造服务器(1)服务器环境
  3. Android(安卓)系统(102)---Android(安卓)APP耗电优化
  4. Android、iOS 市场份额下降?“奇怪数据”背后的原因
  5. 图书馆一游
  6. 使用MVP+Retrofit+RxJava实现的的Android(安卓)Demo (上)使用Nuclu
  7. 51 信用卡管家 Android(安卓)客户端内部数据库文件可被盗取
  8. Android平台上四种保存数据的方法
  9. Android即时通讯

随机推荐

  1. Android中m、mm、mmm、mma、mmma的区别
  2. [转]Android选项卡(TabWidget)例子
  3. Android(安卓)之Service
  4. android adb push 与 adb install的比较(
  5. android布局中layout_…
  6. Android笔记
  7. Android(安卓)EditText 为空提示 密码隐
  8. Android性能优化(2):常见内存泄漏与优化(二
  9. android listview 使用checkbox问题
  10. Android(安卓)webview调用js代码无效 web