树莓派+DS18B20+Canal 实现 温度报警系统
本文所使用到的所有技术与对应的版本号如下:
树莓派:Raspberry Pi 4B;温度传感器:DS18B20;Python:3.7.3;数据库:MariaDB-10.0.28;Canal(Server/Client):1.1.3;Java:1.8;Javax mail:1.5.4
项目所在地址:
Gitee:Temperature Alarm System: 基于 树莓派+DS18B20+Canal 实现 温度报警系统
(gitee.com)
1、系统架构
最近突然想到一种温度报警系统的简单实现思路:大概就是通过DS18B20采集室内温度,树莓派循环读取室内温度值,达到温度报警阈值后,向数据库中写入报警信息。同时搭建一台简单服务器并且在其上部署一台Canal实时监听树莓派中数据库的数据变更事件,获取后发送邮件提醒温度预警。
整个系统可以分为采集层、通信层、告警层。系统结构如下图所示:
由于整个过程都是线性处理的,因此整个系统理解起来也非常轻松。
2、系统拆解
有了系统架构和简单实现思路后,让我们来思考下如何将系统拆解成一个个小任务并逐个解决。
2.1、数据采集层
对于数据采集层来说,难点在于树莓派如何读取传感器采集的温度信息。
玩过单片机的都知道,对于模拟信号(温度),我们需要一个AD芯片将模拟信号转换成8位、12位或16位的数字信号以高低电平的形式发送给单片机进行相应处理。温度采样精度取决于AD芯片的位数。这种方式处理非常复杂。
而DS18B20这种常用的温度传感器直接输出数字信号,体积小,抗干扰能力强。并且封装好后只有三根引脚,能够极大节省处理器的IO资源。与树莓派集成使用时,可以通过驱动将温度直接写入树莓派的设备文件中,节省大家的硬件驱动开发成本,也不用困扰在各种时序处理逻辑上。
因此,树莓派与DS18B20集成使用,我们可以使用Python读取设备文件的方式获取温度信息。
2.2、通信层
系统的通信层我选用了Canal监听MySQL数据库变更的方案(不要问我为什么搞这么麻烦 (~ ̄▽ ̄)~ ,问就是最近工作中用到了
树莓派+DS18B20+Canal 实现 温度报警系统相关推荐
- 树莓派DS18B20温度传感器获取温度
目录 树莓派使能DS18B20 C程序获取DS18B20温度 树莓派使能DS18B20 sudo raspi-config 进行配置树莓派,启动1-Wire完成使能 sudo reboot 重启树莓 ...
- 基于51单片机的温度报警系统
目录 前言 一.温控系统是什么? 二.设计目的 1.环境需求 2.设计基础 三.设计 1.C51程序设计 2.Proteus仿真 (1).元器件如下 (2).原理图. 总结 前言 微型计算器自20世纪 ...
- 监控安装ESXi on Arm的树莓派4b的CPU温度
在传统的x86服务器上,ESXi可以监控该服务器的cpu温度,如图: cpu温度显示 我们平时玩树莓派时,是可以获取到cpu温度,并且可以通过程序来联动启停风扇的.(网络上教程很多) 当ESXi on ...
- 51单片机驱动DS18B20温度传感器测量温度
51单片机驱动DS18B20温度传感器测量温度 1.DS18B20温度传感器介绍: 2.51单片机驱动DS18B20测量温度 1.DS18B20温度传感器介绍: ①引脚定义 引脚 符号 说明 1 GN ...
- 基于51单片机的温度报警系统(程序分装)
文章目录 目录 前言 一.程序结构 1.1.1 全局变量 1.1.2 静态本地变量 1.2 预处理命令 1.3.1 函数原型 1.3.2 头文件 标准头文件结构. 1.4 *声明和定义* 二.错误示 ...
- 基于FPGA的 DS18B20多功能温度显示
基于FPGA的 DS18B20多功能温度显示 实现功能: 1.实时温度显示在数码管上,更新速率1-2s一次 2.按下按键显示最近30s内的最高温和最低温 不包含板子, 3.按下按键可以存储当前温度,最 ...
- 第三十五篇、基于Arduino uno,获取DS18B20温度传感器的温度值——结果导向
0.结果 说明:先来看看串口调试助手显示的结果,第一个值是空气温度值.如果是你想要的,可以接着往下看. 1.外观 说明:虽然DS18B20温度传感器形态各异,但是原理和代码都是适用的,就是接线可能有点 ...
- 树莓派下DS18B20获取实时温度
文章目录 1. DS18B20温度传感器 2. DS18B20安装及配置 3.基础代码逻辑分析 3.1 逻辑分析 3.2 阶段代码示例 4. 代码及运行结果 4.1 全部代码 4.1 运行结果 1. ...
- Linux系统编程:树莓派 ds18b20温度获取(文件IO相关操作)
文章目录 问题 解答 linux文件io操作文件夹 1.opendir() 2.readdir() 3.closedir() 4.open() 5.read()函数 问题 当树莓派配置好ds18b20 ...
最新文章
- FineReport报表和FineBI的差别和各自的优势在哪
- 北斗导航 | 卫星导航基础知识(卫星通信调制技术:信号调制、解调:ASK、FSK、PSK:FDMA、TDMA、CDMA、SDMA)
- java虚拟机内存空间
- php 批量更新死锁,php – 在尝试获取锁定时,哪个查询导致死锁;尝试重新启动事务...
- php支付密码控件,Android高仿微信支付密码输入控件实例代码
- C/C++指针和取地址操作
- LINUX下载编译opusfile/opus-tools
- 如何彻底关闭FF新推荐弹出广告
- 为何架设好服务器不显示补丁,WSUS补丁服务器分发后,客户端不在管理控制台显示 - winServer论坛 - 51CTO技术论坛_中国领先的IT技术社区...
- 2021系统架构设计师考试知识点
- arcgis 经纬度转大地坐标_ArcGIS的地理坐标系与大地坐标系
- 汇编语言基础知识(二)
- google 搜索语法总结
- html简单边框制作--特效文字制作及代码,HTML音画介绍之一--基本原理和边框的制作...
- iOS 自动生成各种尺寸的App Icon 和 Launch Image( App Icon Gear)
- input文本框输入溢出的时候,鼠标悬停显示全部信息
- python读取csmar_wind数据转为国泰安数据 stata命令
- Win 10系统安装3ds max 2014
- 关于pycharm中html在页面访问的记录(授权问题)
- word/ppt中如何插入11以上带圆圈的数字序号