开源地址:https://github.com/ART-Badge
关注 RT-Thread 学生一定知道,RT-Thread向许多开发者展示RT-Thread每年都会举行开发者大会(以下简称:RDC — RT-Thread Developer Conference),在 2020 在年度开发者大会上,我们 RT-Thread 给现场的每开发者都发放了一个电子胸牌,名字叫胸牌 ART-Bagde。
此外,特此感谢在电子胸牌制作过程中REALTEK、创凌对我们的支持!
再来看视频↓
功能设计篇
先看一下 2020 款主要功能:
微信小程序使用蓝牙推送开发者信息(姓名、公司职称)
软件 RTC 同步时间
第一界面显示时间 手机推送信息
两个app demo:蓝牙传输助手 使用说明
今年,我们在去年胸牌的基础上进行了很大的升级和优化。废话不多说,下面直接贴一张功能设计和拟用技术路线的导图↓
独立设计的电路硬件,PSRAM 扩大为8M,电池换用300mAh锂电池,可反复充电。
使用体积较小的 SC7A20 替换原有的 mpu6050。
添加了ADC采样电路可以收集电池电量信息。
整个界面焕然一新,默认采用暗黑色主题背景。
使用最新发布的 湃心OS V4.基于开发工具的新升级VSCode插件模式的Persim Studio。
增加游戏、音乐播放器、电子相册…等等,丰富小程序 app。
新升级的小程序:蓝牙推送用户 、城市天气信息。
支持使用最新湃心OS二次开发小程序。
结构设计篇
由于去年的电子胸罩没有外壳,胸罩背面的电子元件暴露在空气中,手会有明显的突出感,同时泄漏在空气中容易干扰电容器触摸芯片,影响用户的使用效果,加上今年的锂电池电路调整:纽扣电池更新为锂电池,没有胶带粘在后面不能固定。
。
一是该方案的视觉极客感最强,因为直接使用透明盖板会PCB电路显示,外观水平简化,符合审美哲学
其次,如果使用封闭式设计,按钮误触,锂电池的插拔将成为需要考虑的因素,而夹层开放式设计在这方面根本不用担心
最后一个原因是,
电路设计篇
RTL8762D 作为主控芯片,MCU 主频为90MHZ,运行 RT-Thread 操作系统,瑞赛德科技的派心整体穿戴OS,外扩了8M的PSRAM,以及16M 的片外 flash 。
ART-Badge 主要用于串口(用于调试和控制台输出),GPIO(用于驱动按钮、蜂鸣器和ADC采集),I2C接口(用于和板载 SC7A20 三轴加速传感器通信)。
底板的PCB采用2层Layout。板载的IC主要有:
半反半透明屏,分辨率 240 X 240,颜色格式 RGB565,在关闭背光的情况下依旧能有出色的可视度。
APS6404L-3SQR,PSRAM(动态随机访问存储器)动态加载图形资源,8M容量很丰富。
ch340e,USB通过转串口芯片,也很常用 USB 线把 ART-Badge 连接电脑后,可直接使用串口控制台shell后续的二次开发也使用了串口工具 UDB 下载。
BS814A-1,电容触摸 IC,用于 ART-Badge 正按钮交互。
SC7A20.士兰微型高精度12bit内置功能丰富、功耗低、体积小、测量准确的数字三轴加速传感器芯片。
补充一点:为了兼顾美观,前面看不到走线(所以这是单面板?不)都藏在屏幕背面。
PCB投板回来之后就是焊接技能施展阶段了,主要用到的工具有:热风枪、烙铁、镊子、锡浆、吸锡带、助焊剂等。与直插元件不同,贴片的器件由于焊盘太小(大部分的是 0402 阻力),设备分布过密,手工焊接主要采用风枪吹焊。
焊接的第一步是制作钢网,即设备焊盘的掩模,设计良好PCB然后将相关加工文件发送给制造商进行激光切割。
上一步贴片完成后,需要用风枪吹焊回流。吹焊温度控制在250-300度左右,去除风枪吹口,增加风口,便于均匀加热。
软件实现篇
硬件完成后,软件开始移植,ART-Badge 基于操作 RT-Thread 的湃心穿戴 OS。
这里科普一下 湃心穿戴OS,它是一个超轻量级、量产的产品级穿戴操作系统平台。中间层的模块包括 GUI 发动机、通信组件、NFC、存储工具等。中上层由 JavaScript 构建的应用程序框架,顶层是许多轻量级系列的小程序。
湃心穿戴 OS 有几个特点:
GUI采用可用于MCU第四代柿饼 GUI,具备类 Android 界面交互,支持多点触摸,效果更酷,支持矢量图形库,具有较强的图形处理能力。
小程序开发模式。采用微信小程序开发模式,启动快,应用轻量级,支持应用商店,快速安装体验,支持多国语音。
提供 MVVM 应用开发框架。界面开发和业务逻辑的应用是相互解耦的,符合前端工程师的习惯。
跨平台能力。软件可以在任何硬件中一次开发 CPU、MCU 及 MPU 平台运行;
湃心穿戴 OS 还有一些创新组件,比如新闻管理引擎(EMQ)、数据管理组件(DCM)、KVDB 及 TSDB 数据库、DIY 开发套件。
GUI模块(Graphical User Interface,图形用户界面)用于人与设备的交互
BLE模块(Bluetooh Low Energy,语音合成)通过广播与小程序连接接收信息
AUDIO(音频播放解码模块)用于解码和播放无源蜂鸣器的音乐
EMQ(Enhance Message Queue,发布订阅式的消息队列组件),能够打通 C 到 JS ,JS 到 JS ,C 到 C 的消息链路,能够很方便的将消息发到任意一个地方
DCM(Data Cache Management,数据管理组件),主要用于 JS 与 C 之前数据的交互,统一管理和控制系统中的数据统,确保各模块间数据传输的性能
GUI 最上层的开发使用 JS 语法,这个就比较了,使用过 Android Studio 的小伙伴们可能很熟悉,安卓UI的应用开发是可以进行拖拽式的,这里和柿饼UI的设计器十分相似,Persim Studio 和 Android Studio 一样也是通过 .xml 的方式对界面进行管理。所以熟悉或者有过安卓开发的小伙伴会有莫名的亲切感。
BLE 使用的是 RealTek 自带的蓝牙协议栈,通过 BSAL 抽象层进行管理,BSAL (Bluetooth Stack Abstract Layer)软件包是由 RT-Thread 针对不同 蓝牙协议栈接口实现的,目前支持的协议栈有:nimble,realtek 等协议栈。
Audio (音频)设备是嵌入式系统中非常重要的一个组成部分,负责音频数据的采样和输出。Audio 设备通常由数据总线接口、控制总线接口、音频编解码器(Codec)、扬声器和麦克风等组成。
RT-Thread Audio 设备驱动框架是 Audio 框架的底层部分,主要负责原生音频数据的采集和输出、音频流的控制、音频设备的管理、音量调节以及不同硬件和 Codec 的抽象等。在本系统中就将蜂鸣器设备注册到了 Audio 框架中,从而实现对蜂鸣器的开、关、音乐的解码、播放功能。
支持一发多收。一个生产者生产消息可被多个消费者使用
支持多个消息绑定。一个消费者可以绑定多个不同的通道,接收不同生产者发送的消息。
发布消息系统开销小,效率高。
不同模块间低耦合。
超轻量级的整数类型消息
全链路可达
支持 Value Change 模型
支持存取任意类型数据
支持多实例功能,解耦不同模块间数据处理;
全链路打通,JS 与 C 均能访问同一内存池
支持订阅发布模型,可用于消息推送和通知
支持数据持久化保存功能;
在本项目中,像一些参数需要数据持久化存储、js 端对 adc 采集电量数据的监听、获取屏幕亮度,小程序推送的信息等等都是用到了 dcm 组件。
结束语
看到这里你是不是对今年的电子胸牌产生了更多的期待呢?
不论风云变幻,RT-Thread通过不断迭代和生态的完善,与开发者共成长。Beyond.RDC 2021,我们在深圳等你!
↓↓↓↓↓↓
报名二维码
👇