本文最后更新于 <span id="expire-date"></span> 天前,文中部分描述可能已经过时。

很久以前在看 MKBHD 的一个 Volg 时,看到他的工作室上有一个像素时钟,上面不仅显示了时间,还显示了他的 YouTobe 的订阅数量,我觉得很酷,我马上去某宝搜了一下:

看到这个价格我傻眼了,只能默默地把它加入了购物车

直到一个偶然的机会 ,我了解到了 AWRITX 这个项目,能够以相对低的成本自己 DIY 一个功能丰富的像素时钟:

于是在经过一个多星期的折腾后,我 DIY 了一个属于我的像素时钟

准备工作

  • WS2812B 8x32 可编程软屏(110元)
  • 杜邦线 公对母(3.38元)
  • ESP8266 WIFI模块CP2102 ESP-12E(27.83元)事实上这个开发板并不是这个项目最好的选择,但是如果闲麻烦用这个也没问题
  • 3D打印,图纸下载(全套约400元,我只打印了前盖板和光栅,约130元),光栅一定要打印,但是其它东西可以自己定制亚克力,比这个便宜多了
  • A3纸
  • 深黑色半透明玻璃贴膜,用来把显示区域变成黑色,如文章头图(可选项目,18.9元200x60cm)
  • 黑色喷漆,最便宜的3D打印会导致光栅透光,影响显示效果,所以建议买一个黑色喷漆把光栅喷黑(7.8元)
  • 树莓派,安卓手机,云服务器或者任何运行Linux的设备(用于服务端的搭建,我用的是手机,不建议云服务器,延迟很高)

以上是我 DIY 所购置的东西,总共花费约300元,相对来说很便宜了,对我来说 DIY 的过程才是最令人兴奋地,这是直接买买不来的。

服务端的搭建

首先讲一下树莓派等运行 Linux 设备的搭建,其实 官方文档 都有,我只不过是复读一遍罢了

安装 Java
sudo apt install default-jre

设置时区
sudo timedatectl set-timezone Asia/Shanghai

下载 AWTRIX Server
sudo mkdir /usr/local/awtrix
cd /usr/local/awtrix
sudo wget https://blueforcer.de/downloads/awtrix.jar

自动启动
创建自启文件
sudo nano /etc/systemd/system/awtrix.service
将下面代码复制进去
[Unit]
Description=AWTRIX
SERVER After=network.target

[Service]
Type=simple
WorkingDirectory=/usr/local/awtrix/
ExecStart=/usr/bin/java -jar /usr/local/awtrix/awtrix.jar

[Install]
WantedBy=multi-user.target

Ctrl+x
y
回车退出保存

启用自启
sudo systemctl enable awtrix
启动 AWTRIX
sudo systemctl start awtrix
停止 AWTRIX
sudo systemctl stop awtrix
重启 AWTRIX
sudo systemctl restart awtrix

升级 AWTRIX
sudo -i
cd /usr/local/awtrix
systemctl stop awtrix.service
wget -N awtrix.jar https://blueforcer.de/downloads/awtrix.jar
systemctl start awtrix.service

在 Android 设备上搭建服务端

我用的服务端就是备用机搭建的,我也推荐这样,树莓派也行,这样延迟是最低的,像素时钟的显示也是最流畅的

但是,官方文档 在这一部分的说明是错误的,按照他的做法会出错,在我研究了一番后,参考 这篇文章,成功在 Android 设备上搭建了服务端。

首先下载 Termux ,打开后长这样:

依次执行代码:

apt-get update && apt-get upgrade -y
apt-get install wget -y
apt-get install proot -y
apt-get install git -y
cd ~
git clone https://github.com/MFDGaming/ubuntu-in-termux.git
cd ubuntu-in-termux
chmod +x ubuntu.sh
./ubuntu.sh
cp ~/ubuntu-in-termux/resolv.conf ~/ubuntu-in-termux/ubuntu-fs/etc/

启动 Ubuntu
./start.sh

启动之后执行
apt-get update
安装 wget
apt-get install wget -y
安装 Java
apt-get install default-jre -y
修改时区
apt-get install tzdata -y
根据自己所在地区输入数字选择:

下载 AWTRIX
wget https://blueforcer.de/downloads/awtrix.jar
运行 AWTRIX
java -jar awtrix.jar

此时就能看到服务端的内网访问网址:

服务器输入网址打开:

始终没有连接,所以会有一个通知

为了维持服务端的运行,Ctrl+c杀掉刚刚启动的服务端,重新用命令后台启动:

nohup java -jar awtrix.jar &

接下来只要保证 termux 一直在手机上运行就能保持 Server 端的运行

时钟固件刷入

硬件连接:用杜邦线连接, 像素屏上的 DIN 接 ESP8266 上的 D2 口,像素屏 GND 接 ESP8266 的 GND,像素屏 5V 接 ESP8266 的 vin

安装 Visual Studio Code

安装后打开,点击侧边栏的 Extensions:

搜索 Platformio 并安装

下载固件:https://github.com/awtrix/AWTRIX2.0-Controller

解压下载好的zip,打开 Visual Studio Code,如图打开刚刚解压的文件夹

点击 awtrix-conf.h ,配置网络

SSID填连接的Wifi名字,Password填Wifi密码,Server填服务端IP,不需要填7000

填完后保存:

用 micro-usb 将开发板连接到电脑,点击下面的箭头刷入固件

这个时候屏幕应该亮了,等一会儿连接上wifi就会显示时间,至此基本配置就已经完成

Server 端的使用

Home 可以控制软件的切换,以及发送一些命令,命令的使用官方文档有说明

Myapps 管理自己已安装的软件:

Appstore 下载软件:

Status 显示连接状态:

Settings 可以设置字体,亮度等:

Settings 的重启使用后要在手机端重新执行命令运行 AWTRIX

进阶:远程遥控时钟

官方文档 介绍了一些基本的控制命令:

利用这个可以实现远程操控,在 ios 和 android 端都可以实现,Android 端略为繁琐,下面以远程执行 打开/关闭 时钟为例

iOS 端

打开 快捷指令-创建快捷指令-搜索URL,选择 URL,填入:

http://你的Server ip/api/v3/basics

再搜索 URL,选择 获取 URL 内容,方法选择 POST,请求体为 JSON,点击 添加“新字段”,选择文本,填写 power文本填写 false

这是 关闭显示的命令,开启只需要将 false 改为 true 即可

效果:

Android 端

Android 端的思路是用一个小号 QQ 在那个用作 Server 端的运行,当他接收到“关”时,关闭时钟,接收到“开”时,打开时钟。

这需要利用到 Tasker 和 Notification Listener这两个软件:

链接: https://pan.baidu.com/s/15WkpXsVg8D1FN\_OzbKge9A 提取码: su98

安装完后打开将两个软件的权限全都给了,注意 通知使用权 一定要给

打开 Tasker ,点击右下角+号,命名,选择事件,选择插件,选择 Notification Listener

点击右上角的笔,跳转到 Notification Listener ,点击 Apps 旁边的小九宫格选择 QQ ,Title 不填,Text 填 ,点击右上角 DONE,回到 Tasker ,再返回

右边弹出 新建任务,点击,命名,进入任务编辑,点击右下角+号,选择网络,选择 HTTP POST

如图填写,服务器端口为你的服务器ip,同理如果是 开 则将 false 改为 true

效果:

总结

其实大部分时间都是在等快递,真正折腾也只有两三天,但是自己 DIY 一个东西的成就感真的是买不到的,这就是肥宅最纯粹的快乐吧

我还开发了一个和它有相同功能(也有些它没有的功能)的安卓软件,你可以下载来试试看

参考资料

少数派文章: https://sspai.com/post/54225

B站up 黑影儿TV : https://space.bilibili.com/38995440 (帮助巨大,非常感谢)

官方文档: https://docs.blueforcer.de/#/v2/

评论