当前位置: 首页 > article >正文

玩转树莓派Pico(20): 迷你气象站6——软件整合改进

前言

        上次写的代码虽然能达到预期效果,但还是有很多问题的:

  • 主程序main.py包含太多的内容,比较凌乱,因此整体设计要重新调整;
  • 没有日志功能,脱离电脑运行时根本不知道情况。比如有时断电重启后就不发送数据了;
  • wifi没有断线重连功能;
  • 没有状态指示灯,不能直观的了解运行状态。

        因此在正式使用前,必须先将上面的问题解决。

整体设计改进

        drivers目录中仍放置各外设的驱动,是独立的,不依赖于其他模块;

        supports目录仍放置额外支持用的模块,这次增加状态指示灯模块、日志模块;

        新建外设模块peripherals.py,用于创建各外设的对象,不再在主程序中创建。也创建一些函数供任务模块调用; 

        任务模块也做了调整,分为系统任务、esp01s的任务(wifi相关、校时、mqtt相关)、传感器任务;

        这样主程序就大大简化,只要创建并启用定时器、初始化、启用主循环。

设置功能

        可以将部分配置信息放在ini文件中,比如需要远程设置的以及敏感信息。

        为此在supports中创建ini_file_io.py,用来操作ini文件

状态指示灯闪烁功能

        为了能一边执行任务,一边控制指示灯的闪烁以表示状态,我想到使用多线程。不过micropython的多线程不是太完善,在AI的帮助下,经过几次改版,终于完成。

        在supports下新建status_led.py,里面有StatusLed类,可以在另一个线程控制led的闪烁。缺点是只能通过一个变量来控制子线程的运行情况,可能会带来新问题。目前的问题是连电脑调试时,停止主线程前,必须先停止子线程,否则设备会掉线,必须拔掉usb再插上。

日志功能

        搜索到一个日志模块ulogger,基本能满足需求。缺点是没有轮转功能, 日志文件达到上限就清空重新开始。

源代码

        源代码还没完全改好,尚未上传到gitcode。        

参考文章

ESP32 MicroPython多线程控制LED闪烁频率_esp32多线程-CSDN博客

micropython-ulogger:为MicroPython量身定制的轻量级日志库-CSDN博客


http://www.kler.cn/a/457517.html

相关文章:

  • 初学STM32 ---高级定时器互补输出带死区控制
  • 吐卡机开发——指令合集—未来之窗行业应用跨平台架构
  • 计算机的错误计算(二百)
  • Leetcode打卡:我的日程安排表II
  • JVM实战—9.线上FGC的几种案例
  • 【Rust自学】9.3. Result枚举与可恢复的错误 Pt.2:传播错误、?运算符与链式调用
  • Unity3D仿星露谷物语开发9之创建农场Scene
  • Facebook广告优化新知:如何使用即时体验
  • C# dynamic 类型详解
  • 鸿蒙next RCP网络请求工具类进阶版来了
  • 【机器学习】Transformer
  • 代码随想录算法训练营第六十天 | 图 | A星算法
  • Bash语言的并发编程
  • 算法排序算法
  • 【每日学点鸿蒙知识】worker线程数量、判断用户是否进行权限决定、图片上传类型错误、request锁释放时机、H5问题
  • Zynq PS端外设之中断控制器
  • FFmpeg来从HTTP拉取流并实时推流到RTMP服务器
  • 自学记录鸿蒙API 13:实现智能文本识别Core Vision Text Recognition
  • Django中使用 `formfield_for_choice_field` 和 `get_form` 方法自定义管理后台表单
  • 26、使用StreamPark管理Flink作业中,关于flink on k8s部分的提交处理
  • driftingblues6靶机
  • Oracle数据库高级应用与优化策略
  • 2-194基于matlab的四足机器人行走程序设计
  • [ffmpeg]编译 libx264
  • FFmpeg:详细安装教程与环境配置指南
  • 【Rust自学】7.4. use关键字 Pt.1:use的使用与as关键字