【Holocubic简化修改版——基于STM32F405+ESP8266-12F:使用FreeRTOS和标准库】

news2024/11/16 9:40:52

一.简介

第一次看到Holobubic项目是稚晖君视频:【自制】如何制作一个赛博朋克风格的 百大UP奖杯 【软核】
但是稚晖君的项目是基于ESP32PICO-D4,因此我想尝试使用STM32复刻一个。实际上,使用STM32复刻Holocubic在CSDN上已经有一位博主发布了他做的成品,并且博客介绍得很详细。因此,我也借鉴了他的部分设计,并重新设计制作了一个简易版的Holocubic
文章链接:项目-Holocubic透明桌面站(基于STM32)
该项目完全开源,所有工程文件的下载链接放在文章最后
具体实现效果如下:

在这里插入图片描述

设计创新如下
1.重新设计了电路,并增加了锂电池充放电板,支持不接USB线运行;
2.重新设计了软件部分并优化部分功能,加入了FreeRTOS
3.重新设计了外壳部分以适配电路板;
其余细节在后文给出。

二.硬件电路设计

1.总体介绍

本项目的硬件部分主要由3块PCB板组成:锂电池充放电电路板(四层板)、主控板(四层板)和IPS屏幕板(双层板)。其中板与板之间采用1.0的FPC软排线连接。其中锂电池充放电电路板和主控板通过2.0mm铜柱固定在一起,作为主体部分。
为了尽可能减小体积(锂电池充放电电路板和主控板尺寸为25mm x 25mm),采用了四层板,否则无法布线。
实物图如下:

在这里插入图片描述

2.锂电池充放电电路板

在这里插入图片描述
★本项目中,锂电池使用1S(3.7V) 200mAh的动力锂电池(容量大的话电池体积会过大,注意:非普通电池)。普通锂电池的最大放电电流为1C,即200mA;动力锂电池的最大放电电流可达15C,即3A。由于项目中使用了ESP8266,该模块的上电电流很大(600mA以上),加上其他器件,整体上电电流在800mA左右(后续会稳定在180mA左右),远大于普通锂电池的最大放电电流。使用普通锂电池会无法启动

★★★首先需要了解:★★★
1.使用3.7V的软包锂电池对设备进行供电,需要先使用DC-DC进行升压(一般升压到5V),保证电压稳定;
2.电路应具备路径管理功能:不接入USB线时,设备电源来自锂电池升压输出;接入USB线时,设备直接由USB供电,同时为锂电池充电;
3.最好具备手动开关功能;

如果想单独实现以上功能,需要使用较为复杂的电路,会导致电路板面积大于设计值。因此,本项目采用了IP5306芯片,该芯片已经集成了升压和路径管理功能,可以大大减少元器件数量。同时,该芯片还可以通过外接按键进行输出的控制,可以直接作为电源开关(按一下开启,连按两下关闭)

但是!该设计还有一个较大的缺陷:由于IP5306并没有TP4056和AP5056那样的电流控制电阻,这会导致充电的峰值电流过大(实测可达700mA),远大于200mAh动力锂电池的推荐充电电流(0.5C,100mA)。注:充电电流过大很容易导致电池鼓包。
但是,如果使用TP4056或AP5056又不具备升压和路径管理功能,需要额外设计导致电路板面积过大。

如果大家有更好的方案可以在评论区介绍一下,目前该问题还没有解决。

加入了MAX17048芯片进行电池电量的精确检测,但是软件层面还没有对其进行编写。(实际上,IP5306也已经通过LED进行了简单的电量检测与显示,只是检测电池电压而非电量,因此并不精确

在这里插入图片描述

3.主控板

在这里插入图片描述
主控芯片采用了STM32F405RGT6并搭配ESP8266-12F模块进行联网:

采用STM32F405RGT6的原因:

  1. 为了提高显示屏的刷新速度(即更高的SPI传输速率),优先选用F4以上芯片,F1速度略慢;
  2. STM32F407系列,引脚数最少的是STM32F407VET6,也多达100个引脚,体积过大;而STM32F405系列引脚最少的是STM32F405RGT6,只有64个引脚,同时符合其他的设计要求;
  3. STM32F405RGT6的FLASH也高达1M,便于后续软件程序设计;

STM32F407在STM32F405产品基础上增加了多个先进外设:第2个USB OTG接口(仅全速);1个支持MII和RMII的10/100M以太网接口,硬件支持IEEE1588 V2协议;1个8-14位并行相机接口,可以连接一个CMOS传感器,传输速率最高支持67.2 Mbyte/s。其余基本没有区别。

在这里插入图片描述
注:为了控制体积,在PCB布局中删去了USB转TTL模块的LED部分(原理图中未删去)。同时板子的丝印均被删去,手工焊接时一定要对照PCB,确保没有焊错元器件

4.IPS屏幕板

IPS屏幕板设计较简单,不过多介绍。
在这里插入图片描述
在这里插入图片描述

三.软件程序设计

本项目在软件功能部分做了较多删减,目前只实现了较为简单和基础的功能。具体修改可详细阅读代码,如有相关问题可在评论区或私信交流。

以下只简单进行介绍:
本项目软件部分目前只实现网络时间和天气的获取与显示,同时可以通过姿态切换不同城市的天气。
相比于项目-Holocubic透明桌面站(基于STM32),本项目主要做了如下修改:

  1. 使用了FreeRTOS;
  2. 网络时间只在上电后获取校准一次,然后基于该时间,初始化STM32的RTC。之后的时间都是通过RTC获取;
  3. 图片等数据直接保存在了STM32的FLASH中,而非外部FLASH。(省去了数据存入FLASH的操作,但是大大减少了可保存的数据量,尤其是图片数据)

四.外壳模型

使用Rhino软件进行建模、并使用光固化3D打印机进行打印。
模型分为上下两部分,通过卡扣滑动固定。打印完可能会有些许误差,需要打磨。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五.问题总结

硬件问题

  1. 锂电池充放电电路部分存在充电电流方面问题,已在文中详细说明;
  2. 锂电池充放电电路板的按键过小,放入外壳后,使用有些不方便;
  3. 主控板的STM32删去了32.768KHz的外部低速晶振(放不下了),但是RTC最推荐使用LSE,因此RTC时钟只能退而求其次使用了HSE。
  4. 为了控制电路板尺寸,布局布线方面存在不符合硬件设计规范的部分。

软件问题

  1. 锂电池充放电电路预留了MAX17048电量检测芯片的位置,但是软件中还未实现该功能;
  2. 软件整体实现的功能较简单;
  3. 没有设计外置FLASH,导致保存的图片数据有限;

六.开源链接

【Holocubic简化修改版-基于STM32F405+ESP8266-12F:使用FreeRTOS和标准库】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1151157.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vsCode安装CodeRunner插件输出中文乱码问题

1 vsCode下载 vcCode官网地址:https://code.visualstudio.com/ 2 安装CodeRunner 通过Ctrl Shift P 找到 settings找到code-runner.executorMap,在 settings.json 中加入 "code-runner.executorMap": {....."python": "s…

MSQL系列(十一) Mysql实战-Inner Join算法底层原理及驱动表选择

Mysql实战-Inner Join算法驱动表选择 前面我们讲解了BTree的索引结构,及Mysql的存储引擎MyISAM和InnoDB,也详细讲解下 left Join的底层驱动表 选择, 并且初步了解 Inner join是Mysql 主动选择优化的驱动表,知道索引要建立在被驱动表上 那么对于Inner j…

AdaBins:使用自适应bins进行深度估计

论文:https://arxiv.org/abs/2011.14141 代码:https://github.com/open-mmlab/mmsegmentation/tree/main/projects/Adabins 0、摘要 本文主要解决了从单个RGB输入图像估计高质量密集深度图的问题。我们从一个baseline的encoder-decoder CNN结构出发&…

sd模型测试之唐伯虎点秋香

周星驰拍过一个喜剧电影,叫《唐伯虎点秋香》。 其实唐伯虎是一个悲剧人物。 唐伯虎本名唐寅,字伯虎,后改字子畏,号六如居士、桃花庵主、鲁国唐生、逃禅仙吏等,南直隶苏州府吴县人。明代著名画家、书法家、诗人。 他…

iTransformer: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING

#论文题目:ITRANSFORMER: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING #论文地址:https://arxiv.org/abs/2310.06625 #论文源码开源地址:https://github.com/thuml/Time-Series-Library #论文所属会议:Mach…

《RT-DETR改进实战》专栏介绍 专栏目录《限时特惠中》

《RT-DETR改进实战专栏》介绍及目录 介绍:欢迎来到最新专栏《RT-DETR改进实战》!这个专栏专注于基于 YOLOv8 项目的魔改版本,而不是百度飞桨框架中的 RT-DETR。 本专栏为想通过改进 RT-DETR 算法发表论文的同学设计。每篇文章均包含完整的改…

MyBatis-Flex(一):快速开始

框架介绍 MyBatis-Flex 是一个优雅的 MyBatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。 MyBatis-Flex 官方文档 说明 本文参照官方文档的【快速开始】 章节,编写 Spring Boot 项目的代码示例。 快速开始 创建数据库表 直接参照官网示…

fl studio 21.2.0.3842中文破解版2024最新V21.2完整版免费下载

fl studio 21.2.0.3842中文破解版2024最新V21完整的软件音乐制作环境或数字音频工作站(DAW)宿主软件。FL Studio,常称水果,是一款功能强大的编曲软件,集编曲,录音,剪辑,混音于一身,简单易上手&a…

一文带你彻底弄懂js事件循环(Event Loop)

JavaScript事件循环是JavaScript运行时环境中处理异步操作的机制。它允许JavaScript在执行同步代码的同时处理异步任务,以避免阻塞线程并提供更好的用户体验。 本文将在浏览器异步执行原理基础上带你彻底弄懂js的事件循环机制。 浏览器JS异步执行原理 js是单线程…

envi5.3处理高分二号影像数据辐射定标大气校正

目录 一、多光谱影像处理 1. 辐射定标 2.大气校正 1. 需要准备一些数据: 2.大气校正过程 3、正射校正 二、全色影像处理 1. 辐射定标 2. 正射校正 三、图像融合 1.几何配准 2.图像融合 高分二号处理流程 envi5.3的安装教程: ENVI5.3安装 安装完ENVI5.3后&#xff0…

陪诊系统|挂号陪护搭建二开陪诊师入驻就医小程序

我们的陪诊小程序拥有丰富多样的功能,旨在最大程度满足现代人的需求。首先,我们采用了智能排队系统,通过扫描二维码获取排号信息,让您从繁琐的排队过程中解放出来。其次,我们提供了多种支付方式,不仅可以实…

C++快餐——C++11(2)

如期待奇迹发生,那唯有不停伸手去抓紧,去把握才行。 文章目录 类成员变量缺省值default关键字delete关键字final关键字可变参数模板STL容器中empalce相关接口函数优点 lambda表达式捕获列表注意!!!底层实现 总结 类成员…

第N个斐波那契数列

第N个斐波那契数列 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 class Solution { public:int tribonacci(int n) {int a[4]{0,1,1,2};if(n<4) return a[n];int kn-3;for(int i0; i<k;i){int tmpa[3];a[3]a[1]a[2]a[3];//不是【0】开始&…

MATLAB——多层小波的重构

%% 学习目标&#xff1a;多层小波的重构 %% 程序1 clear all; close all; load noissin.mat; xnoissin; [C,L]wavedec(x,3,db1); %小波多层分解 ywaverec(C,L,db1); %重构&#xff0c;必须小波类型一致 emax(abs(x-y)) %重构的误差 %% 程序2 clear all;…

基于模拟退火算法的无人机航迹规划-附代码

基于模拟退火算法的无人机航迹规划 文章目录 基于模拟退火算法的无人机航迹规划1.模拟退火搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用模拟退火算法来优化无人机航迹规划。 …

设计模式(全23种)

1.前言 1.CUML类图 面向对象设计主要就是使用UML的类图&#xff0c;类图用于描述系统中所包含的类以及它们之间的相互关系&#xff0c;帮助人们简化对系统的理解&#xff0c;它是系统分析和设计阶段的重要产物&#xff0c;也是系统编码和测试的重要模型依据。下面基于C这门语…

Leetcode970. 强整数

Every day a Leetcode 题目来源&#xff1a;970. 强整数 解法1&#xff1a;枚举 枚举 i 和 j 所有的可能性&#xff0c;然后计算 pow(x, i) pow(y, j)&#xff0c;判断是否 < bound。若满足&#xff0c;则放入一个哈希集合&#xff0c;最后将集合转成数组返回。 第一种…

​轻量应用服务器有什么优势?如何评价亚马逊云科技轻量应用服务器?

什么是轻量应用服务器&#xff1f; 随着如今各行各业对云计算的需求越来越多&#xff0c;云服务器也被越来越多的企业所广泛采用。其中&#xff0c;轻量应用服务器是一种简单、高效、可靠的云计算服务&#xff0c;能够为开发人员、企业和个人提供轻量级的虚拟专用服务器&#…

关于c++unique后会打乱顺序

这为什么加上注释这三行输出就会多个4 5 吗 还是a已经发生了变化? 疑问? 解决: unique要求容器有序&#xff0c;而且执行完以后会把重复的放在后面 因为unique后可能无序所以要排序一下,代码如下 。 源代码 #include <iostream> #include <algorithm> #…