小伙花800元做了一个环境气象检测仪,获得了3倍回报!
成功拿下2500元奖金。
你可能觉得2500元奖金其实不多?
注意啦!
小伙参加的活动是立创开源硬件平台举办的星火计划_外包赛道比赛。

每一个这样的外包项目,都设置了2000-10000元不等的奖金。
每个项目只对接一人,且只对接其中最有实力完成项目的那个人。
因此,你总能看到,一个项目,3-9个人竞争。
另外,外包项目的奖金其实是随着项目的难易程度上下浮动的。
像是这个毫米波无线HDMI投屏器,明明有8000元奖金,却只有寥寥一人竞争。就是因为太难了!
从这两个角度,你就知道,能成功拿下2500元的奖金,也不容易呀!
而作为在读大学生,作者的实力,也是相当可以的!
目前,经过2个月的制作时间,环境气象监测仪已完全结项并开源!
我们一起来看看,它究竟好在哪?
项目涉及技能本次开源硬件项目涉及的知识点与技能如下表所示。
功能
①支持USB type-C接口供电输入
②支持太阳能光伏发电板供电输入
③支持风速,风向,空气温度,湿度、太阳辐射检测,太阳辐射可以
④支持(485)通信接口的数据采集
⑤支持土壤水分温湿度检测
⑥支持通过4G实时通讯把数据上传到云端服务器
⑦支持通过微信小程序显示气象仪数据
⑧适合应用场景:
下面根据项目设计过程,分享项目开源资料。
设计产品3D外观模型完成电路设计主框架
USB type-C和6V光伏板利用简单的二极管隔离实现双电源输入,向三只并联的18650锂电充电。
其中一路经过HT7533稳压输出3.3V供CPU,OLED屏,SD卡等。
另一路经过TC6291升压成5V,向外端口输出,供风向,风速度传感器电源。
对外接口
C5157152_TP5000移动电源方案验证板
主控CPU用STM32F407。在这里显得大才小用,但我的目的是想通过这个小项目熟悉单片机的python编程。
CPU_TF卡
传感器
4G模块采用EC800MCNGA,它内置了GPS,并且也支持python编程,与主控之间用串口通信。
EC800M_4G_GPS
PCB
软件部分设计本文主要讲解7个部分——STM32F405RG刷micropython固件、移远EC800M CNGA模块刷固件、MicroPython 调试工具Thonny、STM32F405RG部分的程序流程图、EC800M模块软件、云端、设计微信小程序。
1.STM32F405RG刷micropython固件
首先下载.dfu固件。
①打开DfuSeDemo软件。
②点击Choose 按钮。
③找到 .dfu 固件。
④点击 Upgrade 按钮。
2.移远EC800M CNGA模块刷固件
下载 python固件、下载QPYcom工具。
①选对串口。
②找到下载回来的固件 .bin。
③注意核对模块与固件尾缀是否一致。
3.MicroPython 调试工具Thonny
下载软件thonny,选择中文安装。
①运行->配置解释器。
②选MicroPython(通用)。
③选pyborad板或者移远Quecpython串口。
④确认。
⑤选对串口,按Ctrl+F2 Shell就会有 REPL调试信息输出。
⑥接下来就可以用micropython对STM32,EC800编写程序了。
4.STM32F405RG部分的程序流程图
①程序先是初始化RTC,ADC,IIC,UART等对象。
②搜索SD卡根目录是否存在以今天日期命名的.CSV文件,如果没有则新建文件。
③设置1秒定时中断,在中断里对各功能模块计时器计时。(micropython也有支持多线程序的固件在这没用到)
④while()大循环
轮询标记位,分别去采集温湿度,紫外线光照强度,风速风向,上传、保存数据,显示。
5.EC800M模块软件
①上电先检测网络状态,如果网络正常了就解析域名获取IP。
②创建UDP的SOCK,启动多线程序。
③while()大循环
根据标记位分别向服务器发数据,给单片机STM32F405RG(pyboard)返回GPS坐标。
串口接收线程:接收到单片机STM32F405串口送来的数据,立标记 udp_up = 1
GPS线程:初始化后,5秒为间隔从GNSS数据流中抓取"$GNRMC"帧中的GPS坐标,立标记gps_up = 2
6.云端
import threading # 打开三个线程t1 get_weather # 获取本地气象数据 t2 udp_recv # UDP协议监听port = 2048端口,接收气象仪的数据 t3 udp_back # 返回气象信息给手机
程序已打包,放在开源主页里。
7.设计微信小程序
微信界面:
①顶部显示GPS坐标
②中间显示气象仪数据,和本地天气预报
③底部显示通信数据。
程序打包开源了,因为是现学现卖的,不好在这码字误导大家,请见谅。
注意事项注意!
!
EC800先不要直接保存main.py文件到模块,因为:
①将脚本文件命名为 main.py 后,模块在上电开机后会自动运行该文件。
②由于串口(UART)交互等功能均需要模块端配合执行相应的代码,而 main.py 被自动运行,阻碍了这些代码的执行,导致这些功能受到影响无法正常使用。
③强烈建议用户在功能开发和调试完成,无需再对代码进行频繁修改,仅需测试其开机自启动功能时,再将文件名改为 main.py。
④请勿在前期开发阶段将文件名修改为 main.py,否则将严重影响开发效率。
结语如果你能看到这,那你值得一个点赞!
众所周知,开源从来是站在巨人的肩膀上进行创作、创新。
不论是伟大的开源作品,还是普通的开源作品,都促使着创作者们一步一个脚印,迈向科技创新之巅。
希望国内的开源环境能越来越好!
希望星火计划外包赛道中的一对一项目,能为国内的开源环境提供优质的养料!
至此,愿你喜欢这篇文章,也欢迎大家在评论区表达你对于开源的看法。
开源主页:环境气象监测仪2 - 嘉立创EDA开源硬件平台