×

我爱玩垃圾:19元儿童电话手表自己动手改表盘

admin admin 发表于2022-06-24 20:35:12 浏览111 评论0

抢沙发发表评论

本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:男勃丸儿

0-效果展示首先,来一个效果展示图。

垃圾佬力士

1-入手儿童电话手表,是为小孩子设计的。可以定位、可以语音、甚至可以拍照。一般不需要功能花里胡哨的,不要有什么视频啊游戏的。基本上一般三五百块钱比较合理,性价比就还可以。但最近在大妈家见到了几款19元的儿童手表(一般标价219,领取叠加优惠券:满212减200元)。去了10元邮费,还剩9元的成本,令人惊掉下巴。。。墙裂的好奇心,促使我买了一单,尝个鲜儿。

2-外观展示整体做工还可以,玩具级别,中规中矩,对于19元来说是绝对值得买的。

19元儿童手表实物图

3-套餐问题开机之后,跳出的是个二维码,需要扫码激活交费,开通套餐。套餐倒是也不是很贵,但是看评论好多家长都反应,充值了激活不了,反复充值激活,还存在有时乱扣费的问题。希望商家能积极改善服务。

然鹅,值得一提的是,所谓的内置卡并不能用普通的手机卡代替,必须激活自带的儿童手表专用卡并购买套餐 。果然,变的有意思了。。。

套餐费用

需要激活内置手机卡

4-拆机关于套餐问题,话不多说了,就当啥都不知道了,直接一拆到底,看看19元的硬件到底是何方妖怪 。

儿童手表主板

HS8225LHS8225L是一款完整的CMOS高功率,高效率發射模組,適用於低成本四頻TX(GSM850 / EGSM900 / DCS1800 / PCS1900)/雙頻RX GSM / GPRS手機。

RDA8955紫光展锐旗下锐迪科微电子(以下简称“RDA”)推出一款物联网2G芯片RDA8955。该芯片具有全球最小尺寸及超低功耗的特点,是2G物联网市场最具性价比的解决方案。不查不知道,这个芯片性能还是非常强劲的,配置足够强大。简单说下参数:32位XCPU RISC core , 312MHz 。32Mb PSRAM 32Mb SPI NOR Flash。外围继承了相机、Audio、SD卡、USB1.1、LCD、37个GPIO口。尤其内部集成了电源管理模块,可以管理锂电池充电。也可以配置LDO输出用于支持LCD、键盘背光等。这比平日玩的单片机、aduino等不论是性能还是配置的丰富程度都不是一个级别的。

我没有看到GPS相关芯片,说明仅仅是通过2G基站进行定位的,也就意味着定位精度不会很高。

5-刷机必须激活套餐才能用,何解?。。。

通过对主板的一番观察,发现主板上存在串口的测试点,并且印刷上了标注Tx,Rx,于是果断飞线,连接上串口转USB输出的模块,连接电脑,打开串口。开机,此时串口的输出就像脱了钢的野马,一顿狂奔。。。

其中,最重要的就这句log了,直接告知了LCD屏幕的具体型号:

[23:13:57.700] SXR 01 : ST7735S(0x89f0): lcd read id is 0x89f0

此刻我想刷个机。。。然鹅,搜遍全网,貌似没有对应固件。

6-写固件看来只能另起炉灶了,搜啊搜,搜啊搜……

就看到了安信可的一个2G物联网GPS定位模块A9/A9G,用的也是RAD8955这一款芯片,是有支持二次开发的SDK。

链接在此

安信可提供的SDK,功能还是非常强大的,同时模块的卖点定位也是非常明确的,就是做一个定位模块可能对其他的支持比较弱,比如:LOD输出是没有的。而这一点对于屏幕的点亮却很重要。导致我换了开发SDK。

通过安信可的二次开发sdk,也能实现自己的一些想法。比如,在微信里跟踪手表的位置,还有安信可自己开发的app也可以显示位置。

19元的儿童手表,有屏幕,有电池,有外壳。比单买这个模块都要更香一些,定制完自己的固件,也可以按照自己的想法实现一些特殊功能,比如隔一段时间唤醒自己上报一次位置,这样待机时间就会大大延长啦,你看他是个屏幕不亮的儿童手表,其实它是个定位器,还能指挥录音和拍照,简直是个神间谍。。。

A9 功能

微信显示定位

APP 功能介绍

前面说过,安信可这套SDK是没有LOD输出的,所以屏幕没法点亮,运行的测试程序可以输出,但是屏幕背光是不亮的,还得拿手电筒照它,才能看见字,这怎么能行呢。。。我可不能做达文西第二。。。

背光不亮

好在,偶然在github上发现一套RDA的开发代码(感谢大佬)。

RDA8955_W17.44_IDH

研究一番,也可以用安信可的编译环境进行编译,应该是同一套RDA公司提供的源码,安信可也仅仅是再此基础上进行了二次封装并阉割掉了一些电源管理的功能。按照目录结构看,st7735s驱动也是有的,详细的指导书,也是都有的。在此略去不表了,自己看就行了。特别详细了。

唯一没有的,就是GUI库。。。又一个大坑。。。

嗯??灵光闪现。。好像?安信可的sdk中集成了一套LVGL的GUI库,把它搬过来不就行了嘛。

果断移植过去,发现是可以用的,但是这套LVGL库是v5版本的,显示个汉字都难,图片显示也不配套。坑。。。

于是去github上,下载了最新的LVGL,然后移植过去,然后此事可成了。。。

LVGL库显示汉字

7-制作表盘有了LVGL库的加持,制作表盘,这块原理就非常简单了,就是几个图片的叠加显示。。。

比如指针式的表盘,需要:表盘图一张,时针图一张,分针图一张,秒针图一张。

然后按照顺序叠加显示,每隔xx毫秒,就去刷新指针角度就可以了。

创建时:

lvHour = lv_img_create(central);//造一个时针对象

lv_img_set_src( lvHour, &hour);//时针对象设置图片源

lv_img_set_pivot(lvHour, 6, 62);//时针对象设置支点位置,

lv_obj_align(lvHour,LV_ALIGN_CENTER, 0, -18);//对齐到中间并调整位置

周期性更新时间时: lv_img_set_angle(lvHour, angle);//设置图片角度

太空人表盘,对比于指针式表盘也是更加的简单,只需要准备数字的图片,还有宇航员的动画序列图片就可以了。

宇航员飞翔,就是不断更换图片的过程,1秒内从fly0均匀刷到fly9。

资源图

所以,各种表盘,,看着很高级的样子,,其实背地里都是在悄悄刷图片。

对于表盘这种应用来说,根本不用深入学习LVGL,只需了解个image对象就可以了。还是非常简单的。

至此,我的目标暂时也就全部达成了,可以佩戴19元的塑料手表上街了。