
环境气象监测仪2
简介
环境气象监测仪可以检测空气温湿度,风向风速和太阳辐射等气象要素。广泛应用于农业,林业和气象行业,地质勘查等领域,操作简单,便捷小巧。
简介:环境气象监测仪可以检测空气温湿度,风向风速和太阳辐射等气象要素。广泛应用于农业,林业和气象行业,地质勘查等领域,操作简单,便捷小巧。开源协议
:GPL 3.0
描述
项目说明
不锈钢的铁架子,可架设在户外屋顶,水塔。
同时支持USB type-C接口和太阳能光伏发电板供电输入。
具备常规的风速,风向,空气温度,湿度检测外,还扩展485,比如土壤水分温湿度检测等,但485部分是扩展项,目前只有硬件。
4G实时通讯把数据上传到云端服务器。
微信小程序与服务器连接,显示气象仪数据。
本项目设计用到的工具软件覆盖面广,有些是多年积累的皮毛,有些是现学现卖。
SketchUp画3D外观效果图,
JLCEDA设计原理图、PCB,
MicroPython写STM32,
QuecPython写4G模块,
Python云端服务器程序,
微信小程序写手机端,
Proe设计不锈钢的铁架子、3D打印的塑料壳子
开源协议
GPL3.0
项目进度
04月01日,设计产品3D外观模型
04月09日,完成PCB并发出打样
04月10日,开始设计微信小程序,简易界面
04月15日,PCB打样回来,补缺件,调试硬件
04月16日,开始调试STM32程序。
04月17日,钣金设计铁架子
04月18日,简单测试EC800M,4G,GPS模块。
04月30日,打样的铁架子收货,组装铁架子。
05月07日,完成4G,GPS模块程序。
05月22日,完成云端,手机端微信小程序端。
05月28日,STM32,4G模块,云端,手机端联调完成。
项目介绍
1.系统框图
USB type-C和 6V光伏板利用简单的二极管隔离实现双电源输入,向三只并联的18650锂电充电,一路经HT7533稳压输出3.3V供CPU,OLED屏,SD卡等供电,
另一路经TC6291升压成5V,向外端口输出,供风向,风速度传感器电源。
主控CPU用STM32F407, 在这里显得大才小用,但我的目的是想通过这个小项目熟悉单片机的python编程,
4G模块采用EC800MCNGA,它内置了GPS,并且也支持python编程,与主控之间用串口通信,
云端则是以前双十一特惠租下的阿里云主机,安装WIN2019,python3.9
手机端用微信程序,现学现卖,
传感器之类无非都是些简单的IIC,ADC外设。
2.软件说明
2.1 STM32F405RG刷micropython固件
首先到这里https://micropython.org/download/pybv11/ 下载.dfu固件
单片机下载 dfu 固件
打开 DfuSeDemo 软件,点击Choose 按钮,找到下载回来的 .dfu 固件,然后点击 Upgrade 按钮即可。如下图所示:
2.2 移远EC800M CNGA模块刷固件
到这 https://python.quectel.com/download 下载 python固件、下载QPYcom 工具
EC800M模块下载固件
选对串口,找到下载回来的固件 .bin,注意核对模块与固件尾缀是否一致。
2.3 MicroPython 调试工具 Thonny
https://thonny.org/ 下载软件,选择中文安装
1、运行->配置解释器
2、选 MicroPython(通用)
3、选 pyborad板或者移远Quecpython串口
4、确认
5、选对串口,按Ctrl+F2 Shell 就会有 REPL调试信息输出
6、接下来就可以用micropython 对STM32,EC800编写程序了
2.4 MicroPython 基础语法,基础库,API使用 请移步下面链接
http://micropython.com.cn/en/latet/library/index.html
https://python.quectel.com/doc/
https://python.quectel.com/doc/API_reference/zh/index.html
2.5 STM32F405RG部分的程序流程图
程序先是初始化RTC,ADC,IIC,UART等对象,
搜索SD卡根目录是否存在以今天日期命名的.CSV文件,如果没有则新建文件,
设置1秒定时中断,在中断里对各功能模块计时器计时。(micropython也有支持多线程序的固件在这没用到)
while()大循环
轮询标记位,分别去采集温湿度,紫外线光照强度,风速风向,上传、保存数据,显示。
2.6 EC800M模块软件
上电先检测网络状态,如果网络正常了就解析域名获取IP,
创建UDP的SOCK,启动多线程序
while()大循环
根据标记位分别向服务器发数据,给单片机STM32F405RG(pyboard)返回GPS坐标。
串口接收线程:接收到单片机STM32F405串口送来的数据,立标记 udp_up = 1
GPS线程:初始化后,5秒为间隔从GNSS数据流中抓取"$GNRMC"帧中的GPS坐标,立标记gps_up = 2
2.7 云端
import threading # 打开三个线程
t1 get_weather # 获取本地气象数据
t2 udp_recv # UDP协议监听port = 2048端口,接收气象仪的数据
t3 udp_back # 返回气象信息给手机
(程序打包在附件里)
2.8 微信小程序
(程序打包在附件里,因为是现学现卖的东西不好在这码字误导大家,请见谅)
微信界面,顶部显示GPS坐标,中间显示气象仪数据,和本地天气预报,底部显示通信数据
实物展示
设计注意事项
注意:EC800先不要直接保存main.py文件到模块,因为
(1)将脚本文件命名为 main.py 后,模块在上电开机后会自动运行该文件
(2)由于串口(UART)交互等功能均需要模块端配合执行相应的代码,而 main.py 被自动运行,阻碍了这些代码的执行,导致这些功能受到影响无法正常使用。
(3)强烈建议用户在功能开发和调试完成,无需再对代码进行频繁修改,仅需测试其开机自启动功能时,再将文件名改为 main.py
(4)请勿在前期开发阶段将文件名修改为 main.py,否则将严重影响开发效率
设计图

BOM


评论