diff --git a/Readme.txt b/Readme.txt index dc5f250..7b98855 100644 --- a/Readme.txt +++ b/Readme.txt @@ -1,81 +1,96 @@ +# 盒马时钟 -盒马时钟 --------- +--- -此项目利用超市淘汰下来的价签的硬件,实现一个简单的时钟: - 显示时间与日期 - 显示农历与节气和节假日 - 显示电池电量 - 蓝牙对时 - 蓝牙OTA +## 项目简介 + +本项目利用超市淘汰下来的 **盒马价签** 硬件,实现一个功能简单但实用的电子时钟,具有如下功能: + +* ✅ 显示时间与日期 +* ✅ 显示农历、节气与节假日 +* ✅ 显示电池电量 +* ✅ 蓝牙对时 +* ✅ 蓝牙 OTA 更新 + +--- + +## 编译与烧写 + +请先下载 DA14585 的 [SDK](https://www.renesas.com/en/document/swo/sdk60221401-da1453x-da145856 "SDK") 包,目前使用 **6.0.22.1401** 版本。 + +1. 将本项目放置在: + + ``` + SDK_PATH/projects/target_apps/ble_examples + ``` + +2. 使用Keil打开项目进行编译。 + +3. 编译完成后: + + * **调试模式运行一次**,固件会自动写入 Flash; + * 或者使用 **SmartSnippets Toolbox** 将固件下载到 RAM 运行一次也可。 + +--- + +## 蓝牙对时 + +项目内置页面提供 **Web Bluetooth** 功能,可用于手动对时: + +* 固件每隔 **整十分钟** 广播一次,持续 **30秒**; +* 广播状态下,屏幕显示蓝牙图标与设备名后缀; +* 打开页面点击 “连接”,选中设备后,按 “对时” 即可完成同步。 + +![控制台](./images/ctrl.png) + +首次上电会打开配对页面,扫码跳转网页可以进行配对。 +![配对提示](./images/peiwang.png) + +--- + +## 关于盒马价签 + +本项目使用到的盒马价签屏幕类型如下: + +| 尺寸 | 颜色 | 屏幕连接方式 | 型号 | 主控芯片 | 分辨率 | 拆解难度 | LED | 测试点文件 | +| ------ | --- | ------ | ----------------- | ----------------- | ------- | ---- | --- | --------------- | +| 2.13 寸 | 黑白 | 焊接 | HINK-E0213A41/A55 | IL3897 / SSD1675B | 212×104 | 困难 | 有 | pinout_1/0.xlsx | +| 2.13 寸 | 黑白 | 插座 | OPM021B1 | IL3895 / SSD1673A | 250×122 | 困难 | 有 | pinout_0.xlsx | +| 2.13 寸 | 黑白红 | 焊接 | HINK-E0213A67 | IL3897 | 250×122 | 困难 | 三色 | pinout_0.xlsx | +| 2.9 寸 | 黑白红 | 插座 | HINK-E029A10 | IL3897 | 296×128 | 容易 | 有 | pinout_0.xlsx | -编译与烧写 ----------- +--- -请先下载DA14585的SDK包。目前使用的版本是6.0.22.1401。 -将本项目放置在SDK_PATH/projects/target_apps/ble_examples下面,然后打开项目编译即可。 -编译完成后以调试模式运行一次,固件会自动写入Flash中。 -或者使用SmartSnippets Toolbox将固件下载到RAM中运行一次即可。 +### Flash存储信息 +#### 屏幕引脚配置(地址 `0x39000`) -蓝牙对时 --------- +示例: -这里使用web bluetooth实现了一个简单的网页来设置时间。 -为了省电,固件每隔整十分钟广播一次,持续半分钟。广播时,屏幕会显示蓝牙图标和设备名的后缀。 -此时点击页面上的"连接"按钮,在弹出的页面选择对应的设备即可连接上。再点"对时"按钮完成对时。 +``` +09 01 FF FF FF FF FF FF 21 22 10 01 20 07 11 23 + CS ?? RST CLK SDI DC BUSY PWR +``` +* 第一个字节 `09`:屏幕类型 +* 第二个字节 `01`:引脚配置启用标志(非 `01` 表示无效) -关于盒马价签 ------------- +#### 屏幕分辨率等信息(地址 `0x3a000`) -我用过的有三种: - 2.13寸黑白 - 第一种: - 屏是直接焊接到主板上的,型号: HINK-E0213A41/A55, 主控IL3897,分辨率212x104。 - 另外,这种屏有少数用的主控是SSD1675B。这两种主控的LUT格式是不一样的。 - 很难无损拆解,需从后盖处拆起。带一个LED空位。 - 此种型号有两种电路板: - 5个测试点: pinout_1.xlsx - 6个测试点: pinout_0.xlsx +示例: - 第二种: - 屏通过插座连接到主板上,型号: OPM021B1, 主控IL3895/SSD1673A,分辨率250x122。 - 这种主控貌似没有内部OTP,需要写入LUT才能工作。 - 很难无损拆解,需从后盖处拆起。带一个LED空位。 - 此种型号的电路板: - 6个测试点: pinout_0.xlsx +``` +00 25 00 00 92 fa a8 fe 00 01 80 00 28 01 04 00 + 0080 0128 128x296 BWR +``` - 2.13寸黑白红: - 屏是直接焊接到主板上的,型号: HINK-E0213A67,主控IL3897,分辨率250x122。 - 很难无损拆解,需从面板处拆起。自带一个三色LED。 - 6个测试点: pinout_0.xlsx +--- - 2.9 寸黑白红: pinout_0.xlsx - 屏通过插座连接到主板上,型号: HINK-E029A10, 主控IL3897,分辨率296x128。 - 这个尺寸的价签比较好拆,卡扣结构。带一个LED空位。 - 6个测试点: pinout_0.xlsx - -这批价签看来都是从OTP启动的。但OTP里面放的只是一个二级BootLoader,还是会从Flash加载APP启动的。 -Flash中的固件符合SUOTA格式。 - -Flash的0x39000处存放有墨水屏所使用的IO的信息: - - 09 01 FF FF FF FF FF FF 21 22 10 01 20 07 11 23 - CS ?? RST CLK SDI DC BUSY PWR - 第一个字节"09"是所用屏的类别。固件内置了十几种屏的驱动,根据这里的类别来选择。 - 第二个字节"01"指示后面有IO的配置。非01的值则忽略后面的配置。 - - -Flash的0x3a000处存放有墨水屏的分辨率等信息: - - 00 25 00 00 92 fa a8 fe 00 01 80 00 28 01 04 00 - 0080 0128 128x296 BWR - 40 1f 00 00 f0 70 18 01 00 01 7a 00 fa 00 fc 07 - 007a 00fa 122x250 BWR - c4 0a 00 00 1a 4f ae 5a 00 00 68 00 d4 00 04 00 - 0068 00d4 104x212 BW - -原版的固件,不知道什么原因,无法用蓝牙搜索到。否则可以无损更新固件了(但大多数价签的电池都是没电的,还是得拆开)。 +## 其他说明 +* 原版价签固件存放在 Flash 的 SUOTA 区域; +* 大多数价签使用 OTP 启动器,但会从 Flash 继续加载固件; +* Flash 中包含屏幕和引脚配置,因此新固件无需硬编码这些信息; +* 原生固件无法被蓝牙扫描到,因此难以通过 OTA 更新; +* 价签多数电池电量不足,因此建议拆机替换供电。