Advertisement

stm32太阳能追光储能系统V2

阅读量:
在这里插入图片描述

大家好!我是小杰学长~

前言:

追光储能系统=

stm32太阳能追光储能系统V2.

加入了基于命令行的操作界面以及内置的AT指令解析机制(该系统允许通过串口通信发送AT指令来控制其各种功能);更换掉了原有的SPI接口并采用硬件方案;重新配置了硬件电源配置;新增添加了PCB原理图文件,并附上了对应的PCB源代码;引入了基于FreeRTOS的操作系统支持互斥锁机制、内存池配置、消息队列处理以及任务管理流程;构建了一个基于UART通信的 shell 命令行界面框架,并提供了完整的命令序列列表


当前章节

请各位先初步了解最初版本的追光系统 追光系统初代链接跳转


复制代码
    仅保留了有修改的代码文件和CubeMX的ioc工程文件
    直接用cubeMX打开ioc后生成工程 
    再把对应位置的代码进行比较 然后拷贝进去就行

stm32追光储能系统实物功能演示视频

各组件实现原理博客网址

  1. 光敏adc采集:

  2. 舵机pwm控制:

  3. INA226功率监测I2C:

  4. TFT彩屏io模拟SPI原理:

  5. TFT彩屏驱动库解析:

  6. 硬件SPI控制TFT彩屏:会在本篇博客讲解
    也没啥好讲的
    把底层io模拟的接口换成hal_spi_transmit就行

  7. CLI-AT协议解析代码框架:在文章末尾

所使用的硬件

  • 如下图
在这里插入图片描述

相比一代 硬件有所改动,如下:

1 去掉了充电功能

因为这属于硬件领域的事。对于软件工程师而言,在测试设备时能够检测电流方向。只需了解充电与放电的状态即可。因此模拟出一个类似于太阳发电系统的模型。在面试中也可以这样表述。

2 电阻型号

可调电阻换成了1kΩ电阻

3 电源模块

换了个电源模块
能满足系统用电需求
支持2个18650电池输入

4 pcb底板

底板原理图pdf跳转

在这里插入图片描述

写代码的时候发现i2c1与spi1的内存地址映射冲突了
改成使用硬件spi2

在这里插入图片描述

嘉立输出的pcb原始数据采用JSON格式。
项目底板路径跳转已设置为图片 2024年6月6日发布(在我gitee上)。
本人不具备拉线工程师资质 也不太熟悉相关技术细节。

cubeMX初始化

在cubeMX系统中,我对所有外设的内部参数进行了全面的优化设置。您可以根据个人需求采用不同的配置方案。具体方法将基于您参考的相关技术博客内容。

1 cubeMX硬件引脚

引脚定义

单片机板子的各个引脚连线
通过cubeMX软件打开文件夹中的IOC配置文件
从而能够清楚地了解到每个模块所使用的接口
它们都连接到了32号引脚上
当然,并非所有的模块都必须采用相同的IO口接法
如下图:

在这里插入图片描述
SPI

spi2
彩屏只需要接收
所以我们只需要开启只发送主机spi模式即可

在这里插入图片描述
UART

115200波特率
记得使能串口中断

在这里插入图片描述

2 cubeMX freeRTOS配置

统一图片演示
你们自己看 看不明白 看代码
其他默认

rtos系统配置

堆大小改大一点 原来的不够用了

在这里插入图片描述
rtos功能配置

任务和队列
就弄了三个

在这里插入图片描述

在命令行界面的代码中,在开发过程中还另外也自行创建了:一个线程;一个用于串口通信的互斥锁;用于串口中断接收中断的地方;三个消息队列;三个内存池被创建以供使用。cubeMX中没有内存池。自行在头文件中进行了初始化配置,并通过示例图解展示了操作流程。

在这里插入图片描述

导航路径中的链接跳转-> (在个人Gitee上)

系统框图

硬件系统框架

被引导去阅读过去发布的博客内容追光系统初代链接跳转

CLI-AT协议解析代码框架

我学生写了 我就不写了 大家自己看

在这里插入图片描述

工作流程图 位于我的gitee仓库中

通读了一遍《源码解析》,让你们受益匪浅。
很快学会了如何利用硬件UART实现中断DMA机制。
在注册命令行配置时采用的是链表结构。
这是我的学生掌握的核心技术。
这种组织方式是否与智能家居中设备层级化的控制链表相似?

AT指令的其他注册方式更换了;采用数组进行操作会更加高效准确;他俩之间存在明显的区别吗?为何会感到如此?关于简历撰写技巧的具体问题,请您自行解决;哈哈(苦笑)

展望与写进简历

展望

有人批评cli-at框架的白板演示令人糟糕透顶。看起来像老师一样需要改进。
有人批评缺乏通信协议框架以及未采用PID自适应控制算法。
特别适用于需要精确控制的行业通常会采用这样的技术方案。
在电机控制系统中涉及的关键环节包括信号采集、电源管理以及系统的全面调控。
建议所有用户尝试采用无刷电机配合PID自适应控制算法实现角度精准跟踪。
对于这一问题,您可以将Lwip内核导入到项目中以实现高效的网络通信功能。

  1. 另外一种方法是通过USB-CDC进行命令行交互(CLI界面),随后就能使用comshell进行登录操作,并支持使用退格键进行输入操作。
  2. 使用OTA固件进行升级后显得更加先进(逼格提升),成功将mcuboot程序迁移至目标设备中(虽然不确定内存是否足够),但无需担心问题(事情似乎还能继续下去),直接更换芯片即可。
  3. 命令行解析得到AT指令后,
    AT指令解析框架可能会遇到功能较为复杂的挑战,
    可以通过启动一个独立的任务来处理这些情况,
    这样就不会影响命令行系统继续接收并处理来自串口的新数据了。

该框架负责协调硬件层相关操作的执行,并建议引入一个中间层来隔离软件与硬件代码以避免直接关联。这类似于我们在智能家居项目中采用的posix消息队列机制来实现不同组件之间的独立管理。通过将设备链表的硬件控制与控制链表进行分离管理,在提高系统稳定性的同时确保各环节运行顺畅。

  1. spi-lcd+gpio-key实现一两个ui画面切换

写进简历

  1. 不提及其所用的总线及硬件外围设备
  2. 希望与您就TFT彩屏驱动库相关事宜展开讨论
  3. CLI-AT协议解析代码框架
  4. 对于展望部分提到的内容,请您自行标注那些我们有能力自行实现的部分
  5. 涉及freertos互斥锁、内存池、消息队列以及任务管理方面的内容
  6. 嘉立创原理图设计部分的内容,请您自行处理

key实现一两个ui画面切换

写进简历

  1. 采用哪种总线硬件外设的具体情况暂不做详细说明。
  2. 关于TFT彩屏驱动库的相关信息可进一步探讨。
  3. 基于CLI-AT协议的代码解析框架设计已初步完成。
  4. 对于展望中提及的内容,请您自行判断是否具备实现能力并考虑加入。
  5. 包括互斥锁机制、内存池配置、消息队列优化以及任务管理流程等。
  6. 嘉立创的原理图设计工作目前尚未完全确定具体方向。

全部评论 (0)

还没有任何评论哟~