【开源小项目】室内环境远程监测系统

目录

    • 一、前言
    • 二、通过此开源项目能学到什么
    • 三、效果展示
    • 四、源码

一、前言

此开源小项目纯属个人需求突发奇想,适用于以下场合:
1.需要获取室内温湿度、空气质量;
2.需要远程获取;
3.室内没有电源,没有wifi热点;
基于以上3个需求,指定了以下方案:
1.温湿度采集使用DHT11传感器,空气质量使用SGP30传感器;
2.远程获取,需要搭建云服务器,刚好双十一花50买了个linux百度云服务器,正好可以在这上边写server端;同时,为了方便远程获取数据,基于QtforAndroid编写手机APP,只要能上网,即可通过TCP/IP连接至云服务器拉取数据;
3.没有电源的解决方案是采用18650锂电池+太阳能板供电的方式,硬件设计和软件处理均要考虑低功耗;没有wifi热点,还想连接TCP/IP,只能选择2G、4G、NB-IOT之类的模组,其中NB-IOT非常适合这个场合,但考虑到太贵了=_=,最后选择了有方N10的2G模组。

====2021年7月更新=
由于搬家了,于是乎设备有了wifi热点可以用,于是乎又做了ESP8266的支持,通过修改宏定义即可完成GPRS和ESP8266的切换。

二、通过此开源项目能学到什么

利用业余时间,基本按照项目级的编程思路对云服务器、设备、手机程序进行编写,层次分明模块化较好。
一开始在裸机下采用<分时段执行>方法进行程序编写;后来又添加了操作系统版本,移植了FreeRTOS操作系统。
其中设备端利用手头上的STM32F103C8T6核心板作为MCU,对于各传感器、各外设的编写均符合项目级的可移植性。
总结一下,通过本开源项目,大家可以学习到以下几点:
1.基于linux的云服务器TCP/IP网络编程;
2.基于linux的数据库操作;
3.自定义的工业通讯协议;
4.项目级的监测模块程序设计;
5.裸机、操作系统下的程序实现方法;
6.QtforAndroid的UI美化
等等等等…就不一一细说了。

三、效果展示

直接上手机APP的截图吧,在手机APP上连接设备、拉取数据是最终需求。
其中数据都是监测模块定点唤醒采集并上传的,每个监测模块均有一固定的设备ID,每次和服务器通讯时,设备将会表明自己的ID,服务器将采集上传的数据存放在与ID相关的数据库中;
设备ID、某ID下的所有数据等都保存在云服务器的数据库中,当然,按时间段查询数据也包含了数据库操作。
最终,通过手机APP连接到服务器,按设备ID拉取对应的数据并显示。
【开源小项目】室内环境远程监测系统_第1张图片

四、源码

监测模块、云服务器、手机APP的源码均在GitHub代码仓中进行了版本控制,有兴趣的朋友可以自行克隆。
https://github.com/381171634/
最近发现国内GitHub经常登不进去,需要经常更换host文件中的DNS才可以正常登录,且每次更换后不定什么时候又失效了,往往好用十几分钟,DNS又失效了,种种原因使得我不得不放弃Github。其实国产的基于git版本管理的Gitee是GitHub的良好替代品,所以我在Gitee中也进行了版本控制。后期的更新将在gitee中进行,放弃github。
https://gitee.com/a381171634/projects

你可能感兴趣的:(嵌入式,Linux,Arm,Qt,物联网,linux,stm32)