项目官方网站
https://awtrixdocs.blueforcer.de/(打开有点慢的…)
材料准备
No | Name | 链接 | 金额 |
---|---|---|---|
1 | NodeMCU(必选) | click here | ¥12 |
2 | 32x8 全彩RGB屏(必选) | click here | ¥70 |
3 | Awtrix 外壳 | click here | ¥305 |
4 | DF Mini Player | click here | ¥4.7 |
5 | 3w 30mm全频喇叭 | click here | ¥14.98 |
6 | 树莓派4B 4G | click here | ¥390 |
7 | 树莓派外壳 | click here | ¥24.8 |
合计 | ¥821.48 |
note:外壳的价格是预估的,我还没做……
还有一些杂碎的东西就不写了,如电源、TF卡、杜邦线、插座等……
ESP8266固件烧写
固件烧写有2种方法。第一种是不需要折腾的,直接按照官方给的步骤来。第二种是需要克隆源码,并且编译的,使用platformIO下载。
准备工作
安装python3环境
略…
安装git环境
略…
安装pyserial
pip install pyserial
如果这个不会安装,那我觉得制作这个项目对你来说门槛太高了,直接淘宝买成品吧 ! 三百多块钱搞定, 还要啥自行车……….
下载esptool
windows\Linux\mac下都行
git clone https://github.com/themadinventor/esptool.git
安装platformIO IDE
安装vscode
略…
安装platformIO插件
方法一:官方推荐方法
官方推荐在Linux\mac系统下执行以下命令,这里我使用的是windows,所以给出的命令和官方的有所不同.
下载固件
cd esptool # 进入到esptool目录
wget -h https://blueforcer.de/awtrix/stable/firmware.bin
擦除ESP8266Flash
python3 esptool.py --port COM21 erase_flash
COM口根据实际情况决定
烧写固件到ESP8266
python esptool.py --port COM21 write_flash 0x00000 firmware.bin
如果几秒钟后读出类似的输出
Connecting....
Erasing flash.....
Writing at 0x0000000000... (0 %)
说明一切都很好…
方法二:源码编译方法 (推荐)
- 找一个目录,作为你的workspace,然后克隆0.22版本的源码(Master版本的好像有问题)
git clone -b 0.22 https://github.com/awtrix/AWTRIX2.0-Controller.git
打开vscode
在vscode种打开awtrix目录
等待platform IO自动初始化好
修改platformio.ini文件. 因为我使用的是nodeMCU,所以将board改为nodemcuv2,其实不改也不影响的. 如图
点击→ , 执行编译并烧写
烧写成功后的样子
烧写好后的配置
刷好固件后可以在手机端看到这个热点
连接热点,密码为: awtrixxx
然后会出现以下界面
配置要连接的WiFi,和WiFi密码,下面的IP地址是Awtrix服务器的IP地址,这里我填写的是我树莓派的IP地址, 端口保持不变.
服务器搭建
- 服务器端的搭建也有2种方式
- 官方脚本安装
- Docker安装 (推荐)
官方脚本安装
官方这里好像只提供了Linux\macOS这2个系统的安装脚本,而windows的只提供了jar包。
所以windows用户要用的话最好就是使用docker安装了,也就是下面要讲的第二种方法。
不过我觉得这个服务端完全是没有必要安装在windows机器上面的,原因有这么几点:
- Windows系统的电脑一般都性能较高,一般来讲这是好事,但是对于长期需要开机的轻量应用服务器而言,这无谓地增加了功耗。
- Windows的大部分配置都在图形化界面下完成,且不利于远程操控。虽然Windows也支持命令行配置,但是我想在2020年了,没有必要再去琢磨Windows下命令行下配置的各种技巧,花这点精神在Linux机子上面,你会事半功倍。
- 其实这个服务端是可以放在阿里云等各云服务器厂商上面的,这样你可以直接不用自己再买个树莓派作为服务器供着,而小带宽服务器是最实惠的,最低可以¥24元一个月,1M的小带宽用命令行操控是最舒服的,用Windows远程桌面的话,就是非主流搞法了。
- 服务器和桌面个人电脑在性能上面的观念是不同的,服务器讲究可靠性高、功耗越低越好、在功耗低的情况下性能越高越好。但是我们在购买个人电脑的时候,似乎只需要性能,功耗都不是问题,要多大水冷排?我加就完事儿了!!!!哈哈哈哈哈哈哈哈哈
执行安装命令
在SSH终端中输入以下命令以自动安装
wget -N https://blueforcer.de/awtrix/awtrix.sh ; sudo sh awtrix.sh
note: 启动后不久,即可通过http:// awtrix_ip:7000访问Web界面。
Docker安装(推荐)
准备工作
首先你准备一台Linux服务器,可以是树莓派,或者是云服务器。
我这里以树莓派Debian作为示例。
安装Docker
docker加速
安装Awtrix
sudo docker run -d -v pwd:/data --name AwTriX2 -p 7000:7000 -p 7001:7001 -p 5568:5568/udp --restart always -e TZ=Europe/Berlin whyet/awtrix2:latest-arm -e JAVA_TOOL_OPTIONS="-Duser.language=zh -Duser.country=CN"
参数解释
-d : 代表后台运行。
For persistent Data add:
-v pwd:/data # 这个参数应该是保存配置用的
设置语言
-e JAVA_TOOL_OPTIONS="-Duser.language=zh -Duser.country=CN"
因为是后台运行了,所以要需要输入命令才能查看Docker日志:
sudo docker logs AwTriX2 # 查看进程日志
日志中出现100%的时候,就代表你的服务端安装完成了。
使用浏览器访问服务端
http://xxx.xxx.xxx.xxx:7000 # IP地址为树莓派的IP地址
有人可能注意到了,我的web面板跟网上别的同学的不同,为什么?我也不知道,大概可能的原因就是我的是docker方式安装的,可能版本不太一样。
您可能还注意到了,我的面板竟然是中文的!!网上别的同学都是英文面板啊。所以这里就要教大家设置中文了。
设置中文语言
然后按下Ctrl+F5刷新网页,看有没有中文?
如果没有,那就需要重启docker
重启docker镜像
重启非常简单,一条命令搞定:
sudo docker restart AwTriX2
到这里,我忽然发现用docker真的爽,我也是第二次用docker,这次对docker有了更深的认识,部署神器!!!
配置nginx(可选)
这里为什么要配置nginx呢?因为为了一个像素钟专门购买一个树莓派其实有点不划算,我买树莓派是因为有别的用处才花这大价钱买的,如果纯粹只是想低成本搭建一个像素钟可以有很多种方案替代树莓派的。
这里推荐几种比较正经的方案,非主流方案不在本博客的讨论范围🙂:
- 云服务器
- 群晖NAS
- 软路由
这里为什么选择这几种方案是有原因的,首先awtrix需要一直连接服务器的,所以个人电脑就不是那么合适了,有些人会说:“个人电脑我也可以不关机让它一直运行啊”。个人电脑是比较费电的,当然这个费电是相对而言的,相比软路由和nas会更费电,其实还有最重要的一点是个人电脑不是免维护的,运行时间长了需要检查风扇有没有积灰,有没有坏掉,长期不间断运行灰尘肯定是个很大的问题,风扇的存在使得这个方案不是那么合理了。所以最优选择是云服务器,其次就是群晖nas和软路由。不过nas和软路由连我都没有配置,所以云服务器应该是最适合大家的了。
进入正题……
安装nginx
参考:https://www.nginx.cn/doc/setup/nginx-ubuntu.html
以Debian系统为例,执行以下操作:
sudo apt update # 更新软件源
sudo apt install nginx # 安装nginx
装完应该能正常运行了。如果之前有装APACHE要改下端口。。。或者直接
sudo apt remove apache2
sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx start
安装php-cgi
sudo apt install php-cgi
Debian下是/etc/php/7.3/cgi/php.ini
之前有安装过php的话会复制apache的配置文件
打开cgi.fix_pathinfo选项:
cgi.fix_pathinfo=1;
配置nginx
cd /etc/nginx/conf.d # 进入nginx的配置目录
sudo touch awtrix.conf # 创建awtrix.conf文件
sudo vim awtrix.conf # 编辑awtrix.conf文件
在awtrix.conf文件中填入以下内容:
upstream awtrix {
server 127.0.0.1:7000;
keepalive 64;
}
server {
listen 80;
server_name awtrix.amahv.cn;
location / {
proxy_redirect off;
proxy_pass http://awtrix;
proxy_set_header Host $host;
# 支持webSocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}
然而由于 awtrix 的 Web Interface 中有很多依托于 WebSocket 存在的内容,所以我们还得想办法让 nginx 反向代理支持 WebSocket。nginx/1.14.2 已经支持 WebSocket 了,所以我们只需要配置 nginx 正确处理 WebSocket 的 Upgrade 请求头即可。
最后保存退出。
执行
sudo nginx -s reload # 使配置重载并且生效
这里特别说明一下,我并没有配置ssl证书,有很多同学的nginx配置里面增加了ssl证书这一项,我觉得完全用不到吧!这个web端的安全性无所谓,其次证书还要一年到期更换一次,而我想要的就是免维护的一个服务端,越简单越好!
外壳改进
网上找了一圈的外壳都没有合适的,来列几个槽点:
- 官方外壳极其简陋,中间有缝。
- 网络上普遍的外壳都比较窄,有种立不住的感觉。
- 屏幕边框都巨厚,看起来很不美观。
- 没有柔性屏保持架,盒子打开屏幕跟着掉下来。
- 要使用胶水或者螺丝固定,拆装折腾麻烦。
- 没有电容按键的表示区域。
- 没有喇叭孔。不好安装喇叭。
- 使用的是同轴电源座,这种数据线在家里不常有,得单独配一根。
- 没有光敏电阻孔。
- 外形是四四方方,没有圆角,看起来非常生硬。
根据以上的10个槽点,我作出了以下改进:
- 全一体化3D打印,装配好之后看不到一颗螺丝孔,看不到安装缝。
- 后壳的长度为12cm,放在高处也可以非常稳固,不容易因为晃动掉下来。
- 屏占比约99%。(当然这只是算正面黑色部分的占比,有点水分,hhhhhh)
- 多画了一层柔性屏保持架,通过20颗钕磁铁和光栅紧紧地贴合在一起,非常稳固和方便。
- 全部的连接都采用磁吸的方式,不需要用螺丝。亚克力挡板用3M双面胶,因为这块东西粘上去之后不会再拆它了。
- 增加了顶部3个电容按键区域。
- 后壳上有一个安装小喇叭的位置。
- 使用的是type-c母座,5V的充电头和type-c数据线在家中随处可见。
- 后壳上有一个光敏电阻安装孔。
- 外壳的棱采用圆角设计,看起来不会那么生硬。
组装
未完待续……