CarBot车载陀螺仪

刘栋
发布于 2026-02-27 / 22 阅读
0
0

CarBot车载陀螺仪

简介

ESP32C3主控汽车中控台陀螺仪,12h温度记录,深度睡眠待机实测超1周,太阳能晒1.5天可以补能待机1周的电量,持续亮屏8h40min。 软件陀螺仪UI绘制以及硬件低功耗休眠方面,可以为大家提供参考。

视频见bilibili:CarBot车载中控台陀螺仪 开源项目_哔哩哔哩_bilibili

PCB板以及软件请从立创开源链接获取:https://oshwhub.com/djddb/carbot

============================================

发布会环节

============================================

全开源致敬,为车友而生!年轻人的第一台开源车载陀螺仪,来了!

大家好,我是DJDDB,今天,我激动地跟大家分享一个绝对硬核全程高能的开源DIY作品!它,不是普通的小玩意儿,而是我一个人历时72小时,倾注心血,为所有热爱DIY、崇尚极客精神的朋友们打造的——「智能车载中控陀螺仪」

我们坚信,技术普惠,开源共赢!所以,它从硬件到软件,全链路开源!你可以看到每一行代码,复刻每一块电路板,这,就是我们对开源社区最大的诚意!


三大核心黑科技,重新定义车载感知!

1. 旗舰级感知核心,稳如磐石!

  • ESP32-C3高性能主控:国民级RISC-V芯片,性能强悍,功耗超低,是它稳定运行的“最强大脑”。

  • 高精度MPU6050传感器:精准捕捉每一个车身动态。40°俯仰角(Pitch),45°侧倾角(Roll),数据实时呈现,让驾驶姿态一目了然,过弯、爬坡心中有数,安全感拉满!

2. 视觉与交互,处处都是细节!

  • ST7789高清屏幕:色彩饱满,信息清晰。开机一刻,经典的苹果式Logo动画呈现,仪式感从点亮屏幕开始!

  • 多界面信息呈现:开机后,首先呈现过去12小时温度曲线,帮你洞悉中控台温度变化。随后进入陀螺仪数据仪表界面,简洁高效。

3. 续航与可靠性,突破极限!

  • 超长待机15天:深度优化功耗模型,配合ESP32的DeepSleep(深度睡眠)技术,不用时几乎零耗电。

  • 无畏严酷环境:采用军用级磷酸铁锂电池,彻底告别普通锂电池的“高温恐惧症”!中控台70℃​ 高温炙烤?稳得住!

  • 永久续航可能:创新集成太阳能补能接口。配合深度睡眠,在阳光充足时,理论上可实现永久续航,无需充电!这才是真正的“黑科技”!

  • TypeC快速补能:集成先进的TypeC接口,快速补能,充电半小时续航15天


一个词概括:生生不息!

我为它注入了“生命”!

  • 全球OTA升级:机身上一枚小小的按键,让你可以自由选择连接公网服务器。发现新功能?优化了算法?一键升级,常用常新!​ 让你的设备永远站在技术最前沿。

  • 全开源生态:所有设计文件、源码完全开放。你可以把它当成终点,更可以把它当作起点。魔改界面、增加功能、集成到你的智能车项目……它的未来,由所有开发者共同定义!


我们的追求:让每一位极客,都能享受科技的乐趣!

这不仅仅是一个仪表,它是一个平台,一个社区,更是一种态度。希望能和所有发烧友一起,探索硬件创新的边界,分享软件迭代的喜悦。

极致性价比(虽然开源不谈钱)、死磕技术、用户参与感——这就是做这件事的全部理念。所有开源资料已经上线!欢迎全球开发者,一起加入,一起创造!

好了,我的产品发布会开完了,谢谢大家!(鞠躬)

=============================================================

以下是正文部分

=============================================================

一、产品功能

  • 陀螺仪功能,可以显示汽车40°pitch俯仰角和45°roll左右偏摆角;

  • 显示过去12h温度曲线,记录汽车中控台温度变化;

  • 开机后可按BOOT键选择连接公网服务器OTA升级;

  • 具备deep-sleep休眠功能,可以待机>15天,持续亮屏时间8h40min;

  • 开机会显示苹果logo;

演示视频以及持续亮屏实测视频见bilibili:CarBot车载中控台陀螺仪 开源项目_哔哩哔哩_bilibili

启动logo温度曲线陀螺仪界面

二、工作流程

流程图

三、硬件详解

  • 三大件:ESP32C3 mini模块作为主控,MPU6050传感器,1.3" ST7789屏幕240*240分辨率;

  • GPIO2作为deep-sleep唤醒按键,(GPIO2还预留为人体存在传感器接口,后面打算加一个低功耗的人体存在感应雷达,人在即亮,人走进入休眠);

  • GPIO9作为BOOT按键和OTA按键,启动前按住GPIO9为BOOT下载模式,启动后按住GPIO9为开启WiFi和启动OTA;

  • GPIO9同时作为I2C的SCL引脚,打板时并联了一个100nF电容,发现MPU6050不工作,去掉后正常了,犯了次低级错误,原理图已修改;

  • GPIO3控制PMOS,控制ST7789和MPU6050供电,以便deep-sleep模式下节能;

  • GPIO0作为ST7789屏幕背光PWM控制引脚,软件暂未加PWM控制,有需要的话自行添加;

  • ST7789屏幕没有够买链接了,自行替换为自己能够买到的器件和封装;

  • 电池采用ETC拆机的500mAh磷酸铁锂电池,自行DIY用在车上一定要考虑中控台高温电池热失控风险

    • ETC都是这种电池,无惧中控台70℃高温,安全有保证;

    • 3.0V-3.6V电压可以匹配大部分单片机的工作电压;

    • 配合ASM1117-ADJ,调节理论输出电压3.536V,为锂电池充电;

    • 采用太阳能电池5V补能,

  • 因为是立创EDA免费打样,毕竟白嫖的,少浪费电资源,所以只画了2层板,没有用4层板。

  • PCB板分上下两块,可以从开槽处裁开,然后翻转90°焊接。用在车上建议增加防滑垫,并在PCB板90°拼接处以及屏幕下方适当增加胶水,推荐703/704硅橡胶、导热硅酮胶,这些能扛得住中控台高温;避坑热熔胶(会融化难清理)、厨卫装修剩的免钉胶(高温脆化)。

  • 引脚 :

     * TFT引脚连接:

     *   TFT_CS   -> GPIO7

     *   TFT_RST  -> GPIO10

     *   TFT_DC   -> GPIO1

     *   TFT_MOSI -> GPIO6

     *   TFT_SCLK -> GPIO4

     * MPU6050引脚连接:

     *   SDA      -> GPIO8

     *   SCL      -> GPIO9

     * 其他:

     *   屏幕背光 -> GPIO0  //高电平导通

     *   外设供电 -> GPIO3  //低电平导通

     *   休眠/IR  -> GPIO2  //输入按钮/IR电平

     *   USB D+   -> GPIO19

    *   USB D-   -> GPIO18

裁剪板子后视图俯视图太阳能电池板充电胶水加固

四、代码详解

变量:

RTC_DATA_ATTR uint8_t TemperatureArray[240] 用于储存休眠模式下温度数据;

static const Point tick_lines_origin[17][2] PROGMEM = {}用于在flash储存刻度线端点坐标;

static const uint16_t logo_data[] PROGMEM  = {}用于在flash储存启动logo

函数:

printMemoryInfo()  // 内存信息打印函数

MPU6050_SETUP()  // MPU6050配置

print_wakeup_reason()  // 唤醒原因分类

updateBin()  //固件升级函数

AddTemperatureValue() //用于定时唤醒后更新TemperatureArray[240]数组

DrawTemperature()  // 绘制温度曲线,并显示最高最低温度

以上为setup会调用的函数

setup()  //Arduino

loop()  //Arduino

以下为loop会调用的函数

Draw_FPS_Info()  // 在右上角显示FPS和绘制时间

MPU6050_DATA(float &roll, float &pitch)  //MPU6050获取度数并平均数滤波后输出角度

Draw_Background(float pitch, float roll)  //绘制天地背景

is_point_in_screen(int x, int y)  //判断点是否在屏幕范围内

is_line_in_screen(int x1, int y1, int x2, int y2)  //判断线段是否在屏幕范围内

Draw_Scale(float pitch, float roll)  //绘制刻度线

Draw_Sight(float pitch, float roll)  //绘制准星

五、续航能力

2月15日15:00充满电后,电池带负载电压为3.42V,未接太阳能电池板的情况下,一直到2月22日15:00,电池电压仍然有3.27V。待机超过1周。

2月22日8:00到2月23日14:00,坐标苏州天气晴,放在阳台晒了2天,电压从3.27V升到3.58V满电。1.5day补齐了7天待机消耗的电量。

2月23日测试了持续亮屏时间为8h40min,视频已放到B站。

六、遗留问题:

遗留问题1:

TFT_eSPI启用Sprite后,会需要115200 bytes连续内存,但是OTA功能需要以下库#include <WiFi.h> <HTTPClient.h><HTTPUpdate.h>,会造成内存碎片化,最大连续内存只有114676 bytes,会导致Sprite缓冲区创建失败。OTA功能是必要的,当前妥协的措施,是Sprite改为240*238大小,少2行像素基本看不出来。期盼各位大神帮忙给点意见。

遗留问题2(已解决):

我自己焊接的2个ESP32C3 mini模块,都是USB CDC功能没法用,不知道是电脑驱动的原因,还是焊接的原因,efuse都是默认值没改,实在没招了,还好把TX RX引了出来,OTA功能也是公网服务器地址任何地方都可以连,等我以后再更新USB CDC的信息吧。

最新消息:后来拆掉D1的USBLC6-2SC6,用铜丝短接,插电脑后USB CDC功能正常了,可能是我买的器件有问题,也有可能当初焊接时1脚位置不对(焊接时候对了半天也不知道1脚在哪里,后来按照丝印正方向焊接了,可能还是错了)。

USB CDC

作者是个业余的电子爱好者,开源项目有改进之处,欢迎大家评论区留下宝贵意见。


评论