0024
泪 流 落
澄明的目光却通透了
迟滞的夜
这长夜也是你
波澜不惊
它是你最初隐秘的渴望
于是你看清了自己
在这个夜幕的世界中心
遍布禁锢万物和你的
暗痛的荆棘
预定调和
如是它号称统治着
而你却向它宣战了
泪 流 落
澄明的目光却通透了
迟滞的夜
这长夜也是你
波澜不惊
它是你最初隐秘的渴望
于是你看清了自己
在这个夜幕的世界中心
遍布禁锢万物和你的
暗痛的荆棘
预定调和
如是它号称统治着
而你却向它宣战了
如果你要将我拥入怀中
你水晶棺似的怀中
那么至少是现在
请允许我不为所动
或许他们的轻浮过了火
日夜渴望着你的名
人怎能斗胆去许诺
那绝缘人间的禁忌?
在我有限的生命里
我要远离无限的你
你的大能超越荣耀
无法屈尊为爱的栖息
你无需代理我的誓言
也无需备份我的情感
多余的诱惑使人忘却
结晶的热念必然冷寂
终有一日你还会再临
结局之门就要打开
那时我便不再拒绝
恰如其分地祝福未来
经历真实的分分秒秒
无悔因此可以释怀
一个寂静的、unbemannte 夜里,
无形的波澜让步 Melancholie.
Worte getippt, 然而 Messenger gekippt,
唯有心弦能奏出共鸣奇迹。
只是想做一个看起来很忧郁的小物件,就像《深圳I/O》一样忧郁,于是拓展到了电子工程师的领域(不是)。年前下单买了各种部件,年后才收到,一看发货地,“深圳”。并不是特别艰深的东西,所以本文不会给出全部代码细节,只求读者心领神会。
工程目标很简单,只要联网显示一些不特定的文字即可,所以一共只买了三样东西:ESP8266 + SSD1306 + DHT11。单纯为了额外的趣味性加了个 DHT11 来获取温度和湿度。
我实在不喜欢写 C 或 C艹,也不想学新的,所以往 ESP8266 (NodeMCU) 里面刷了 MicroPython 固件。实际使用 MicroPython 的时候发现还是和正常 Python3 不一样,需要小心功能阉割,尤其是一些库。
ESP8266 支持 WiFi 连接,可以在代码里写好,配置自动联网。但我不想把网络配置写死,所以用了 WiFiManager 来管理网络。如果当前无可用网络配置,它会自动开启热点,在 192.168.4.1 提供一个网页管理界面,我们可以增加新的网络配置。一旦连上网络,新增的配置会写入 flash 永久保存,今后无需手动操作即可连接。当然这个程序现在似乎没人维护了,有个 bug 需要特别注意一下。
至于 SSD1306,我最喜欢这种可爱的小小屏幕了,尤其喜欢把 128*64 的空间利用到极致,我要用最小的 8*8 点阵字体填满它!找这种字体费了些工夫,好在上古时代确实是有人用过的。但是 MicroPython 对 OLED 屏幕的驱动支持还是很弱,ESP8266 的空间和性能也不允许直接使用完整的中文字体。16*16 大小且限制在 GB2312 字符集的点阵字库网上似乎容易找到,但是我还要日文、扩展拉丁字母,不然根本配不上我!所以我最后选择了让云端性能更强的服务器 Python3 + CGI 一下,远程处理文字显示数据。只须提交文字,然后用 Pillow 模块生成图片返回 .pbm 文件即可。这种文件格式非常有趣,前两行是格式说明,可以用两次 .readline()
丢掉,之后 .read()
一次读完即可,后面的二进制数据直接就是逐行记录的点阵!转换成 bytearray 后直接又是 FrameBuffer 的数据格式,实在太便利了!(囧)当然由于 OLED 的本质,还需反色一下才能正确显示,这个也简单,逐字节 ^= 0b11111111
就可以了。
最后决定具体要显示什么。用了免费的新闻 API,和其他一些奇怪的东西,这里就不赘述了。
那么,最后效果是怎样的呢?请看下图:
真的忧郁。
Jarbihsex kê fek dji lur, fek xjoxdek xecdjar nægu.
Tjur gek doxnxjir mir ki, xjihn gek doxnxjir mir lê.
Xekgwekloxndorn gek JAR, dzyrjux Hoffnung.
Xjarja lox gek xjir, djihndzox kê fek dji.
Tsexnki xjurdzyx læx, murdji lox gu mir.