877|2

274

帖子

8

TA的资源

纯净的硅(初级)

楼主
 

【DigiKey创意大赛】环境温度监控网关 [复制链接]

  本帖最后由 manhuami2007 于 2024-1-11 12:12 编辑
环境温度监控网关
作者:manhuami2007
一、作品简介(100-200字)
本次设计的名称为“环境温度监控网关”,原本打算使用STM32MP157的开发板,但是网站上缺货,因此换成了树莓派4B。实现的主要功能为:网关上搭建MQTT服务器,接收传感器设备上传的温度数据,网关保存接收到的数据,并对温度进行判断,当检测到温度超过设定值时,向制定邮箱发送邮件,告知用户超限传感器的ID和当前温度。同时在网关上搭建WEB服务器,使得用户能够通过网页查看各传感器的历史数据,也可以通过网页设置报警温度和目标邮箱。
图1 树莓派4B
图2 自制ESP32温度传感器设备
二、系统框图(图文结合)
下图显示的是整个系统的层次结构,本次的设计就是要实现处于中间位置的网关。树莓派作为网关,处于传感器设备和用户之间。网关接收和保存传感器设备上传的温度数据并保存到数据库中。网关判断温度数据是否超限,如果超限则通过邮件发送到指定的邮箱中。同时在网关中搭建web服务器,web服务器会读取数据库的数据,显示到网页上。
图3 系统层次图
网关上搭建的服务如下图所示,包括mqtt的服务器和客户端、sqlite数据库、web服务器,以及发送邮件的功能。在本设计里主要使用python编程语言实现。mqtt客户端使用python的paho包开发,负责订阅mqtt相关主题的消息,并将数据解析后保存到数据库中。web服务器使用python的flask框架,web服务器也会访问数据库的数据,并通过网页显示相关的数据。
图4 树莓派部署服务框图
三、各部分功能说明(图文结合)
本系统主要包括:MQTT服务、数据保存、发送邮件和WEB服务器功能。
  1. MQTT服务
    MQTT服务包括MQTT服务器和客户端。
    在树莓派上部署mosquitto服务,实现MQTT服务器的功能。传感器设备通过wifi向该服务器的主题”sensor/temperature”发送消息,消息格式是json格式,包含设备的ID和温度数据。数据示例如下图所示。

    图5 mqtt消息示例
    同时在树莓派上使用python的paho库编写MQTT的客户端,该客户端订阅”sensor/temperature”主题的消息,这样当传感器设备发送数据时,该客户端也能收到数据。收到数据之后,将json数据解析出来,获得设备的ID和温度数据,然后将数据放入sqlite数据库的相应的表中,然后读取设置的上限温度,判断当前温度是否超过了上限温度,如果超过上限温度则向用户发送邮件。流程图见下图:

    图6 mqtt客户端流程图
  2. 发送邮件
    该部分使用python的smtp库发送邮件,因此需要事先开通发件箱的smtp服务功能。发送的邮件内容为超限传感器的设备ID和当前温度。邮件见下图所示:

    图7 邮件内容
  3. 数据保存
    需要保存的数据包括两大类:传感器的温度数据和设置参数。
    传感器的温度数据使用的是sqlite保存,不同传感器设备使用不同的表进行保存,根据mqtt消息里的ID参数区分不同的传感器设备。每张表包含3列的数据:ID、温度和时间。该部分使用python编程

    图8 传感器列表

    图9 表数据
    设置参数主要是“上限报警温度”,这个则是通过python的dbm进行保存的。
  4. web服务器
该功能使用python的flask框架实现,主要用到flask的路由功能和模板功能。包含4个页面:首页、设置页、传感器列表页、单个传感器数据页。各页面的跳转关系如下图所示:
图10 网页关系
首页如下图所示,可以跳转到设置页和传感器列表页。
图11 首页
设置页如下图所示,用于设置“上限报警温度”。该页面包含一个表单,在其中输入温度后,点击提交,将会向web服务器发送POST请求。服务器收到该请求后将设置的参数通过python的dbm保存下来。每次进入该界面的时候都会自动加载保存到dbm中的数据。点击返回按键则返回首页。
图12 设置页
传感器列表页显示所有的传感器,如下图所示。传感器通过无序列表呈现,每一项均为一个链接,点击后跳转到该ID设备的数据页面。
图13 传感器列表页
各传感器数据页如下图所示,以列表的方式呈现对应ID的传感器数据。
图14 传感器数据页
  1. 作品源码
    作品源码已经上传下载中心,下载链接如下:
    2023年DigiKey创意大赛-源代码及文件-嵌入式开发相关资料下载-EEWORLD下载中心
    该源码使用python编程语言,实现功能主要包括:mqtt客户端、发送邮件、sqlite数据库操作、dbm数据保存、python+flask的web服务器等。
    源码使用注意事项:
    1. 使用mqtt客户端时,需要先在树莓派上部署mosquitto服务,作为mqtt的服务器。同时按照服务器的IP地址修改文件”save_sensor_data.py”里的mqtt_server参数。
    2. 文件”send_email.py”中的发件邮箱的账户名和密码,以及收件邮箱的账号名都已去掉,请修改为自己的邮箱参数。
    3. 该代码中需要创建数据库文件和dbm文件,因此可能涉及到用户权限的问题,请使用sudo运行代码。
    4. 需要运行的文件有2个,分别是:”save_sensor_data.py”和“web.py"。同样可能涉及用户权限的问题,请使用sudo运行代码。
五、作品功能演示视频
视频链接:
该视频演示了”环境温度监控网关“的主要功能,包括:mqtt消息的订阅接收、数据保存到sqlite数据库、温度判断、发送邮件、各网页的展示、温度参数的设置、传感器数据在页面的呈现。
六、项目总结
这次的编程语言主要使用的python编程语言,并且使用了很流行的树莓派。在树莓派上成功的部署了MQTT服务和WEB服务。实现了python的数据库操作、dbm数据保存、paho库的使用,也实现了flask框架的使用。对web开发的前后端都有了进一步的了解。这次的设计虽然主体功能都实现了,但是还有一些细节可以优化和补充的地方,比如搭建完整的WEB服务器环境,美化页面设计,mqtt上传的数据加密等。
分享帖汇总
七、其它
通过这次活动,把物联网和web的内容都做了一遍,收获很多,学到了很多新的知识,感谢得捷和EEWORLD举办了这次活动。
digikey_iot_contest_2023_环境监控网关.doc (2.53 MB, 下载次数: 2)

最新回复

大佬这个项目,设计细致,要是再配个屏幕,那就完美了。再配个盒子,更加完美!   详情 回复 发表于 2024-1-11 12:45
点赞 关注
 
 

回复
举报

278

帖子

4

TA的资源

纯净的硅(初级)

沙发
 

大佬这个项目,设计细致,要是再配个屏幕,那就完美了。

 
 
 

回复

6872

帖子

11

TA的资源

版主

板凳
 

大佬这个项目,设计细致,要是再配个屏幕,那就完美了。再配个盒子,更加完美!

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

推荐帖子
变频器的选型及配置要点

1.前言 由于电力电子技术的不断发展和进步,伴随着新的控制理论的提出与完善,使交流调速传动,尤其是性能优异的变频调速传 ...

硬件工程师面试试题

11460

示波器基本搞好了,走,收拾包包回家去过年了

期末没事情干,走,做示波器耍, 从最开始下定决心做,到写程序,买元件 做了差不多两个月,紧到起是期末考试、课程设计 来烦 ...

msp430 LaunchPad 驱动9320TFT液晶(有图有代码)

本例使用MSP430G2553实现,其他型号一样适用,仅改下头文件就OK TFT的主控型号为ili9320 ;9325也可以,仅需在程序中改动型号。 ...

Thonny IDE 便携版

本帖最后由 dcexpert 于 2021-5-8 09:20 编辑 Thonny是一个面向初学者的IDE,集成了代码编辑、文件传输、串口终端、数据可视 ...

这篇文章把DC-DC和LDO的原理和区别,讲透了!

LDO: 低压差线性稳压器,故名思意为线性的稳压器,仅能使用在降压应用中,也就是输出电压必需小于输入电压。 优点: ...

华为内部硬件开发设计流程

2007年,以2年的工作经验去一家小公司去面试。当时笔试完,对方对我很认可。但当时他说:“我需要招一个,在大公司待过的, ...

[GD32L233C-START 评测] 三、1.5寸单色16级灰度OLED的多种刷图驱动方式对比

##**目录 (Table of Contents)** ## 一、挖宝 隔壁老王家总是有好多新奇的小玩意儿,稍不留神就没了。 这次运气好,赶 ...

34“万里”树莓派小车——Ubuntu系统ROS Noetic的安装

本帖最后由 lb8820265 于 2022-4-16 00:54 编辑 安装Ubuntu就是为了安装ROS,ROS在官网中有介绍如何安装,当前ROS的最新版本 ...

【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A+001开箱

感谢平头哥和EEWORLD论坛提供这次测试国产RISC-V开发板的机会。 平头哥发货还是很及时的,第一批名单公布没多久就发货了 ...

关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表