网易首页 > 网易号 > 正文 申请入驻

我把 65 元的墨水屏标签,改造成了 NAS 的监控屏

0
分享至

  我为什么要买墨水屏产品

   事情的起因是这样的,一年前,社交媒体上就已经有很多技术宅在自己玩一些微雪的墨水屏了,看着他们又是焊板子又是 PCB 的真的是馋死我了。

   但苦于自己是软件出身,没有一点硬件的底子,我就在想,能不能买一个现成的,然后自己再慢慢地去分析原理呢?

   于是我就持巨资买了两块超市用的价签,一块 65,带支架,有 App 控制,可以批量添加。

   现在居然还涨价了……理财产品实锤

   然后我拆了其中一块想试下能不能用我树莓派的视频输出去控制它。

   然后……就悲剧了。 我发现这玩意儿的排线跟树莓派根本就不兼容……

   被我拆掉的尸体,组装回去还能用,但我发现我没法用树莓派去接线驱动他

   65 块钱就这么没了! 另一块则作为我的备件一直躺在箱子里待了半年多。

   废物再利用,另辟蹊径

   直到今年年初,我 NAS 的硬盘被我用到了 80%,然后迅雷还在卯足了劲儿在往硬盘里塞东西,我每天不得不多次打开我的管理界面去检测 NAS 当前还有多少余量可以用。

   然后我就想到了它:墨水屏,这东西显示的时候不耗电,只有刷新的时候才会用一点点电,简直就是为监控状态而生的屏幕啊。于是, 我又下定了决心去想驱动它的办法。

   上次用硬件驱动的路子走不通了,学习成本过高。我开始另辟蹊径,往软件驱动上靠:我能不能去找到控制它刷新的协议呢?

   答案是肯定的。

   这类墨水屏走的都是低功耗蓝牙控制的路子,手机蓝牙发送数据都是可以通过 logcat 这个工具进行抓包,说干就干。

   这是 logcat 抓取的所有的手机运行日志:

   显然有很多是我们不需要的信息,这严重干扰了我的分析工作,那就加一个过滤条件,只接受蓝牙相关的信息。

   还是看不出什么内容,只是很不相关的日志输出:

   只能根据时间节点一点点翻 logcat 日志了,此时我发现一个值得关注的信息,在蓝牙发送的那段时间的日志中,有一个非常规律的,也很像有点儿内容的写(write)命令:

   识别度 AAAA

   于是我就把这个关键字作为单独的日志过滤条件重新进行了一次抓包,事情突然就明朗了,这就是蓝牙墨水屏的手机 App 控制协议,而且协议的内容也非常容易理解:

   竖向看,注意到那个 01 02 03 04 05 06 了嘛?

   为了信息发送的稳定性,开发者把这个屏幕的发送信息切成了一段一段的内容,分开发给蓝牙墨水屏幕。在发送结束后,再发送命令给墨水屏统一控制刷新一次,这样就完成了屏幕的刷新。

   接下来我详细分析一下我对这段协议的理解。

   报文分析,找到协议规律

   可以参考上边的报文内容,并结合当前的分析内容看。

   01- 25 17: 11: 24.844 25455 25455 E write: total= 1, 13 01 b4 ff ... ff ff 4c

   这是蓝牙发送协议的内容部分,报文的起始内容是 13 01 b4 ff ... ff ff 4c,其中:

   • 13:命令字,标识当前的内容是显示内容,对应到墨水屏的显示控制部分的地址;

   • 01:报文顺序,通过上边截图(竖着看),也能看出,开发者是把屏幕的内容切割成一段一段分开发给屏幕的;

   • b4:16 进制数字,代表 180,数一下 b4 后边的报文也就是 180 的长度(最后还有一个较短的尾巴,看下边说明);

   • 4c:校验位,防止当前这段报文在传输过程中有内容没收到或者传输错误,所以增加一个校验位,来保证当前报文是完整的;

   • ff:这以下是报文内容,下边细说。

   这种报文一共出现了 26 次,第二十七次有一点不同:

   01- 25 17: 11: 34.142 25455 25455 E write: total= 1, 13 1b 38 ff ... ff ff c8

   可以看到,除了长度(38,即十进制 56)以外,报文的规则仍然符合我们上述的分析。

   那么我们现在就可以来总结一下这个命令字 0x13 的所有内容了:

   • 总长度为 180×26+56 = 4736(180 内容长度的报文重复了 26 次,又加上了一个 56 内容长度的尾巴);

   • 已知的情况是:我们的墨水屏屏幕分辨率为 296×128,是 4736 的 8 倍。那缺失的这个系数 8 哪去了呢?

   我们知道,ff 是 16 进制数,换算为 10 进制是 255,换算为 2 进制是 11111111。 这不正好是 8 个长度位吗?

   事情开始明了了,每个 16 进制数含有 8 个二进制数,其值 1 和 0 分别对应墨水屏的黑色和白色状态。

   这样,每个 16 进制数就可以控制八个墨水屏像素。 我们的等式就成立了:报文含有 4736 个 16 进制数,正好可以控制 8 倍于它的像素总数 296×128。

   因为我买的是三色显示,所以除了显示黑白,这个屏幕还可以显示红色。红色报文的控制跟上述类似,只是命令字不同(从 0x13 变成了 0x12),就不再赘述。

   新的问题,蓝牙连接

   搞定了这块屏幕的控制协议,接下来就是怎么把协议发过去了。到了这一阶段就彻底没有可能通过报文分析,只能盲猜了。

   我查了一些低功耗蓝牙的连接资料,同时一步一步地写代码来测试,最终还是摸索到了连接蓝牙并发送的方法

   const onCharacteristicFound = (_error, services, _characteristics) => {
const characteristic = services[ 0].characteristics[ 0]
characteristic.once( 'notify', (state) => { log( 'notify: ' + state) });
characteristic.once( 'write', () => { }, (res) => {
log( 'write get response: ' + res)
})
setTimeout( () => {
sendData(characteristic)
}, 250)
}

  const onDescover = (peripheral) => {
log( 'searning...')
if (peripheral.connectable === true && peripheral.state === 'disconnected') {
if (peripheral.advertisement.localName === '你的蓝牙设备识别码') {
stopScanning()
currentDevice = peripheral
peripheral.once( 'connect', () => {
log( 'Connected !!! ')
peripheral.discoverSomeServicesAndCharacteristics(
[ '服务特征码1'],
[ '服务特征码2'],
onCharacteristicFound);
});
peripheral.once( 'disconnect', () => {
log( 'disconnected !!! ')
});
peripheral.connect()
}
}
}

   以上代码就是搜索蓝牙、连接蓝牙、连接服务、发送数据的全部代码了,当然,完整的项目代码我也上传到了 GitHub ,欢迎大家多多 Star,多多提意见。

   https://github.com/gadore/ink-screen-bluetooth

   最终效果

   2.9 寸屏幕其实挺小的

   在这块小屏幕上,分别展示了:

   1. 我的 NAS 的两块存储池的使用情况

   2. NAS 的 CPU、内存占用情况

   3. 树莓派的内存状态

   4. 树莓派的 CPU 状态

   5. 当前信息的刷新时间

   不算特别多,但是也够用了。

   其实在代码上我还有一些内容忘记聊了,关于显示内容的控制。

   上边的信息看起来挺简单的,但把它换算成一个一个像素点其实还是蛮复杂的,需要分析字库字形、图形缩放等等,时间成本过高。

   我突然想到了 Canvas 。Canvas 就是一个可以定制显示画布像素的完美工具,而且在上边可以做几乎任何事情。说干就干,我把需要显示的内容通过 Canvas 绘制出来,然后再转换成一个一个的像素信息,然后再通过黑白红颜色的 RGB 值来决定最终发送的报文信息,搞定!

   我把这个程序跑在我的树莓派上,然后 NAS 上设置了一个定时任务,每隔一段时间就推送信息到树莓派上,然后树莓派再通过蓝牙把信息发送给墨水屏。

   如果你也有兴趣使用,可以找一个树莓派这样的低功耗设备,克隆我的 GitHub 项目 ,然后运行:

   yarn
node app.js

   更多说明请参考项目的 Readme。

   这感觉,才叫自动化啊。‍‍‍‍‍‍

   总结

   整个项目如果从买设备开始算跨度倒还挺大的,不过此次 Hack 的时间倒不长,前前后后也就一两周时间,而且都是晚上下班或者用周末时间来做的。

   当然啦,如果是熟悉这个领域的大佬来搞,可能所用的时间更短,毕竟我还是一个小前端。哈哈哈。

   希望我可以保持这种 Hack 精神,因为这真的是太有意思了。

   希望大家也可以分享更多类似的经历,毕竟我知道自己在这个折腾的过程中很开心,相信大家知道了之后也会替我开心 (并不) ,尤其是那些想动手还没动手的人,说不定已经跃跃欲试了。

   Fun to life, fun to coding~

   原文链接:

   https://sspai.com/post/78993?utm_source=wechat&utm_medium=social

   作 者:千里之豪

   责编:PlatyHsu

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
女学霸发明“咯噔字体”,老师低分警告:别用个性挑战考试底线

女学霸发明“咯噔字体”,老师低分警告:别用个性挑战考试底线

蝴蝶花雨话教育
2026-05-07 00:05:04
武汉有医院短短半天就接诊12例,“像被泼了硫酸”,面部、颈部、四肢出现红斑,医生提醒

武汉有医院短短半天就接诊12例,“像被泼了硫酸”,面部、颈部、四肢出现红斑,医生提醒

环球网资讯
2026-06-30 09:25:22
50岁李小冉机场吃面,褪去滤镜才懂,普通人的衰老藏不住

50岁李小冉机场吃面,褪去滤镜才懂,普通人的衰老藏不住

庭小娱
2026-05-13 12:06:40
扎心现实来了:广东500分“看似稳上本科”,但今年或有数万人被公办本科直接淘汰!

扎心现实来了:广东500分“看似稳上本科”,但今年或有数万人被公办本科直接淘汰!

朗威谈星座
2026-07-02 14:44:03
7月1日起,多地充电价格有调整,会充电的网约车司机才不会亏本

7月1日起,多地充电价格有调整,会充电的网约车司机才不会亏本

网约车观察室
2026-06-30 09:53:20
莱利换字母哥后,给维金斯3年6000万,维金斯看都没看直接拒了

莱利换字母哥后,给维金斯3年6000万,维金斯看都没看直接拒了

海阔山遥YAO
2026-06-27 15:47:06
点名张元英!MELO公开道歉!

点名张元英!MELO公开道歉!

嘻笑堂
2026-07-03 02:13:32
杨宇霆临刑留有遗言,多年后心腹道出看错张学良根本缘由

杨宇霆临刑留有遗言,多年后心腹道出看错张学良根本缘由

磊子讲史
2026-07-02 16:32:50
莫离结局:凌云没复活,凤之遥捅死苏醉蝶,叶璃墨修尧成最大赢家

莫离结局:凌云没复活,凤之遥捅死苏醉蝶,叶璃墨修尧成最大赢家

慢半拍sir
2026-07-02 23:40:12
iPhone 18 Pro Max全新变化,有点突然

iPhone 18 Pro Max全新变化,有点突然

搞机小帝
2026-07-03 02:37:13
姚明父母近况:住上海老小区,偶尔回苏州探亲,儿子大姚很孝顺

姚明父母近况:住上海老小区,偶尔回苏州探亲,儿子大姚很孝顺

大鱼简科
2026-06-30 22:10:58
我惊呆了!网传复旦经管院某专业硕士毕业生就业率仅40%…

我惊呆了!网传复旦经管院某专业硕士毕业生就业率仅40%…

慧翔百科
2026-06-30 11:36:26
吴石牺牲两个月后,老蒋仍气不过:吴石副官王正钧改判死刑

吴石牺牲两个月后,老蒋仍气不过:吴石副官王正钧改判死刑

浩渺青史
2026-07-03 00:39:02
英媒:欧美要死死守住这5项技术,一旦被中国突破那将势不可挡

英媒:欧美要死死守住这5项技术,一旦被中国突破那将势不可挡

风雨与阳光
2026-07-02 02:32:39
林志颖捂了12年的kimi,首次公开正面照,网友:这脸,判若俩人……

林志颖捂了12年的kimi,首次公开正面照,网友:这脸,判若俩人……

可读
2026-06-25 23:21:52
重庆谈判结束后主席突发不适,众人疑下毒,苏联医生诊断出人意料

重庆谈判结束后主席突发不适,众人疑下毒,苏联医生诊断出人意料

唠叨说历史
2026-05-29 15:55:55
委内瑞拉代总统宣布:全国哀悼七天

委内瑞拉代总统宣布:全国哀悼七天

参考消息
2026-07-02 11:26:12
丹妮莉丝之死7年,反成《龙之家族》灵魂人物

丹妮莉丝之死7年,反成《龙之家族》灵魂人物

娱圈观察员
2026-07-03 01:36:19
他是央视金牌主持人,57岁头婚娶北师大教授,如今无儿女定居北京

他是央视金牌主持人,57岁头婚娶北师大教授,如今无儿女定居北京

白面书誏
2026-06-26 15:03:58
字母KD落选!NBA6人入选《时代》杂志:詹皇荣膺本世纪最佳运动员

字母KD落选!NBA6人入选《时代》杂志:詹皇荣膺本世纪最佳运动员

法老不说教
2026-06-10 20:55:47
2026-07-03 03:15:00
少数派sspai incentive-icons
少数派sspai
高品质数字消费指南
5224文章数 28461关注度
往期回顾 全部

数码要闻

首次支持5G!联想拯救者Y700无极亮相:RGB灯环后摄辨识度拉满

头条要闻

商户在西安赛格商场坠亡 好友:他曾变卖门店发工资

头条要闻

商户在西安赛格商场坠亡 好友:他曾变卖门店发工资

体育要闻

韩国人,为什么恨透了洪明甫?

娱乐要闻

众星祝福祖国,曾沛慈原形毕露?

财经要闻

千亿茶市场无赢家:澜沧巨亏 八马停"蹄"

科技要闻

马斯克不承认,但SpaceX就该造AI手机

汽车要闻

有纯电有增程 还有二代VLA支持 小鹏MONA L03预售价14.38万起

态度原创

房产
数码
游戏
旅游
亲子

房产要闻

稀缺预警!海岸线200米+限墅令下,海南「绝版硬通货」来了!

数码要闻

卓威同步发布XQ2766X显示器:27" QHD 360Hz TN

国产外设厂"宣布"放弃实体手柄!数字化彻底解决漂移

旅游要闻

深山溶洞惊现千年工事,灶台古井样样齐全,深处暗道至今无人探明

亲子要闻

聪明的小汽车躲避危险

无障碍浏览 进入关怀版