6ISpVZRJDF

Environmental Meteorological Monitor 2

 
Overview

项目说明
不锈钢的铁架子,可架设在户外屋顶,水塔。
同时支持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,否则将严重影响开发效率
 
 
 
参考设计图片
×
 
 
Search Datasheet?

Supported by EEWorld Datasheet

Forum More
Update:2025-06-20 10:45:34

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
community

Robot
development
community

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号