T-Watch手表初试micropython之电子秤教程


#1

【项目的故事】
在极客玩具中,我一直喜欢穿戴类和小车类。前后做过两只运动心率表,并且参与过麦步手表的测试。TTGO最新出品了一块叫做T-Watch的手表,实际上,是一个可以做手表的穿戴平台,就将我原来的一个基于esp32的电子秤玩具移植到这块手表上,成为一个手表电子秤。使得大家对这个新玩具能有所了解吧。


(upload://oM3907o8goYSrmxnlmHv9TamQKx.jpeg)
【T-watch的主要配置】
芯片:ESP32(配置比较强:FLASH QSPI闪存16 MB / PSRAM 8 MB)
PMU电源管理:Axp202
显示屏:1.54英寸LCD电容式触摸屏
传感器:BMA423三轴加速度计,集成步数算法,活动/跟踪识别,高级识别手势
RTCCF8563
自定义按钮:一只(gpio36)
从硬件来看,亮点有这么几处:一是psram8兆(手表也提供了TF卡槽),二是PMU电源管理,可以对屏幕等外设进行单独电源管理;三是1.54寸彩屏+电容触摸;四是三轴加速度以及RTC授时等。
外观:42.5(宽)*46.5(长)*20(厚度),这是我手工测量,可能略有误差,但是也很精巧了。其中为了穿插表带,厚度至少多出来了4mm空间。
【micropython电子秤移植】
T-Watch出厂时,内置的是一个arduino的demo,是一块很漂亮的带有记步功能以及BLE\WIFI\PMU等设置的手表。带屏幕关闭以及唤醒,如果你希望单纯的手表,实际上就可以直接上手了。
这是一个成熟项目,我已经在esp32(mpy)上实现过,是基于M5STACK的平台。
这次移植,主要是要解决PMU电源管理的驱动以及TFT显示器的驱动问题。
(1)感谢TTGO的高手lewis师兄,他将axp202的电源管理模块的驱动移植到了Mpy上,而且是非常完整的移植,对axp202的功能全部开放,方便玩家调用。我这次电子秤移植实际上只是使用到了很少一部分。
(2)这块手表的显示器驱动IC是ST7789V,这是常用于智能手表的驱动芯片。Lewis师兄将其移植到了mpy上,从玩家讨论来看,也有国外玩家先后尝试了mpy以及纯C两种7789的驱动后,据说后者的速度明显提升,但我们这次用的还是lewis师兄移植的mpy库,可以感受到,在整体刷屏上,速度的确比较慢,这也是后续需要完善的吧。
我在lewis师兄的工作基础上,借鉴了github上一位玩家的9341库,将字符显示以及画点、画线、实线矩形等功能做了一点移植。这样,手表电子秤的基本功能就具备了。
【制作中干货一二】
一是关于字模的制作
参考github玩家对9341的使用,玩家提供了一个转换工具,叫做font_to_py.py,这是一个非常有用的小工具,可以转换ttf字库至python库,然后由mpy直接调用。非常方便。
Step1:
这个叫做 freetype的模块需要自行pip安装

Step2:寻找自己喜欢的字库,我找到了一款七段数码管的字库,digital-7.ttf,然后转变为Mpy可以调用的字库。

【图片一组】
(upload://kucLJZrZaxQ3p6uVH5rNLuZl4wS.png)

![poweron1|374x500]

分别是电子秤的校准以及测量过程,我用了两个砝码(100、200克)进行校准,没有考虑温度补偿,设立了一个文本文件存储补偿系数,下次开机时,直接读取就可以了,这就是Mpy的方便之处,不像arduino在esp32中,还需要模拟eeprom库开写入类似的系数。
【小结】

TWatch优势:(1)硬件配置较好,包括psram\tf卡槽等,套件中提供了一个开发者底板,里面用排母引出来了大量gpio,还有一个IIC扩展槽。姿态传感器以及RTC非常容易开发出好玩的穿戴应用。(2)tw并非是一块手表,而是一个像手表的极客平台。这次TTGO专门考虑了将成熟的手表固件准备了可烧写的文件格式,玩家即便不懂编程,也可以将分享的固件烧写到手表里,从而享受不同的体验。

后续需要提升的希望:(1)希望在mpy的支持方面加大力度,尤其是GUI的开发,类似scratch等,esp32的硬件不断强大、程序的复杂性也日益提升,无论从降低玩家门槛、提升用户体验还是提升工作效率等方面而言,mpy都值得更加关注。(2)进一步丰富社区,在手表固件的开发、分享等方面做得更好。

【分享】
upload_arduino_cn0706.rar (39.1 KB)

手表电子秤所需要的micropython代码、st7789库、hx711库以及fonts字模,均打包在附件中,与各位玩家分享。

发自arduino.cn社区,代码部分玩家可以移步观看,注释还算详细。
https://www.arduino.cn/thread-90201-1-1.html


#2

太酷了趴!

这个屏幕我也要玩!!!!

太漂亮了吧!!!!