ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

太阳能供电的电子墨水屏长椅:离网公共显示系统实践

太阳能供电的电子墨水屏长椅:离网公共显示系统实践 “电子纸其实不太适合当电脑显示器反而适合做成一张公共信息海报挂在户外。”我第一次把一块彩色电子墨水屏从包装里拆出来、贴上太阳能板、装进公园长椅里的时候脑子里冒出来的就是这句话。这个项目我叫它BenchPad一张普通到不能再普通的长椅靠背的位置嵌着一块Colour E-Ink屏幕整把椅子完全靠一块Solar面板供电不需要拉市电。最核心的玩法是——这块屏幕可以被“投递内容”。管理员在后台通过一条 API 或者一封邮件就能把一条公告、一段小说章节、一张手绘海报推送到公园里这张长椅的屏幕上。说白了就是把“邮局公告栏”数字化但这次的显示屏会越晒越清晰而且断电后画面依然保留。这篇文章把选型、供电、结构、通信和固件这几个关键环节完整拆开讲一遍给想折腾离网电子墨水公共设施的人当个参考。1. 为什么偏要一块越晒越清晰的屏——屏幕选型背后的真实逻辑1.1 户外显示屏的反直觉选择先说最直接的问题为什么不用普通 LED 或 LCD 屏装到长椅上我最早也想过用一块高亮 LCD 屏成本低、色彩鲜艳、刷新快。但后来在户外实测了一次就放弃了夏天正午的太阳底下LCD 背光要开到接近最高的亮度才能勉强看清而那个亮度等级意味着功耗直接奔着十几瓦去。一块 12V 10W 的面板从早晒到晚才勉强够它亮几个小时晚上还得靠电池硬扛。另一个问题是眩光——LCD 的玻璃面板在太阳下一照反光能让人什么都看不清。彩色电子墨水屏完全是另一种思路。它不发光靠反射环境光来显示太阳越猛对比度反而越高。这一点非常适合户外。更重要的是功耗结构不一样普通显示屏你亮着就一直在耗电电子墨水屏只有画面变化的那几秒钟才需要供电画面定格之后哪怕整个系统断电内容也原封不动地留在屏幕上。这就是“零功耗待机”。所以 BenchPad 的核心逻辑就变成了系统大部分时间深度睡眠只有需要更新内容的时候才醒过来把屏幕刷一下然后继续睡。我做了个简单的对比表直观一点显示方案户外强光可读性待机功耗刷新速度内容形态高亮LCD依赖背光强光下勉强持续耗电快视频/动图户外LED点阵好但受观看距离限制持续耗电快文字/简单图形黑白电子墨水极好几乎为零中图文静态类似纸张彩色电子墨水极好类似彩色报纸几乎为零慢静态海报批次图形1.2 彩色电子墨水屏也有三六九等确定了用电子墨水之后真正的纠结才开始——彩色型号怎么选。现在能买到的彩色电子墨水屏大概分三档第一档是黑白红黄四色屏常见尺寸 4.2 寸到 7.5 寸。这种屏的彩色其实是在电泳粒子里面掺了红、黄两种颗粒刷新一次大概要 15 到 25 秒但它颜色纯正、价格便宜、兼容方案极其成熟。我做 BenchPad 的第一版就用的 7.5 寸四色屏显示公告标题、简单图标、色块分割线完全够用。第二档是Kaleido 3这种在黑白电泳层上叠加一层彩色滤色片的方案。它能显示接近 4096 色的彩色图片屏幕尺寸可以做到 10 寸以上观感很像一本杂志内页。缺点是色彩饱和度偏低白底会泛一点灰而且彩色显示需要背光补偿或者较强的环境光。这套方案适合放插画、摄影作品和图文混排内容。第三档是ACeP 全彩电子墨水这个目前还是贵屏幕尺寸大刷新时间动不动就几十秒起步性价比偏低。我评估下来觉得现阶段没太必要除非你想做一块正经的艺术画屏。BenchPad 最终给屏幕留了两种选择预算有限用 7.5 寸四色屏预算充足直接上 13.3 寸 Kaleido 3。固件层面我把这两种屏的驱动抽象成了同一个渲染接口切换屏幕型号不需要大改逻辑。1.3 关于刷新方式和内容的“海报化”原则彩色电子墨水屏被最多人吐槽的就是刷新慢。7.5 寸四色屏刷一次要 18 秒左右Kaleido 3 全屏刷新也要十几秒而且刷新过程中屏幕会闪几轮黑帧和白帧。这在室内场景里很减分但在公共空间里其实没什么问题——没有路人会盯着长椅屏幕一直看你又不是在播 MTV。实际使用中我给自己定了一条铁律内容布局必须海报化。意思是不要把网页截图直接扔到屏幕上去。显示屏分辨率有限、色域有限大面积灰阶渐变和细密小字在电子墨水屏上显示效果会很差。正确做法是把内容转成“卡片式排版”大标题、短段落、高对比度色块、粗线条装饰。字少一点视觉重心明确路人三秒内能读完。这就是电子墨水屏最适合的形态。另外一个容易踩的坑是残影累积。黑白屏刷新之前通常会自动反冲一次来清残影彩色屏的处理逻辑更复杂如果连续刷好几张图并且中间不做完全清屏上一张图的轮廓会像“水印”一样残留在屏幕上。我现在的做法是每刷 4 次内容强制执行一次完整黑白翻转清屏把颗粒彻底“洗”一遍。2. 让长椅“断电也能活”的电源策略 —— 光伏板尺寸、电池容量与充电管理2.1 先算一笔能耗账很多人在做太阳能项目的时候第一反应是“面板越大越好”但实际上对准需求做功耗预算比盲目堆面板有效得多。我按最典型的工作循环测了一组数据BenchPad 每 30 分钟醒来一次连上 WiFi向服务器发一个心跳请求检查有没有排队内容需要更新。没有新内容就直接睡回去。这组状态下各个模块的实测功耗大概是这样模块行为典型电流持续时间单次耗电ESP32 深度睡眠约 15uA30分钟约 0.008mAhWiFi 连接 HTTP 心跳约 120mA3秒约 0.1mAh获取新内容并渲染约 140mA8秒约 0.3mAh彩色电子墨水刷新约 350mA20秒约 1.9mAh24小时累计按每天刷4次——约 12mAh算出来之后我自己都愣了一下一个全天待机的系统实际日耗电也就十几毫安时连一节五号干电池的容量都不到。当然这是理想情况如果 WiFi 信号弱、重连频繁这个数值会翻好几倍。但即便按 50mAh/天 的余量去算一块 2000mAh 的锂电池也够撑一个多月。所以 BenchPad 的面板需求其实很低。我最终选了一块6V 2.5W 的柔性太阳能板峰值输出大概 400mA在天气好的时候晒半天就能回满电池。2.2 电池和充电芯片怎么选电池我反复对比过 18650 锂离子和磷酸铁锂两种方案。环境温度是户外项目的关键词。锂离子电池在高温下容量衰减快而且一旦被过放容易出现不可逆损伤。磷酸铁锂耐高温、循环寿命长、安全性好但能量密度偏低同样体积容量会小一些。最终我选了两节26650 磷酸铁锂标称容量约 1200mAh 每节两节并联。这个容量对于 BenchPad 来说非常宽裕连续开一个星期都没有阳光也能正常服役。充电芯片方面直接避开了最常规的 TP4056。TP4056 是给锂离子电池设计的恒流恒压充电方案用在磷酸铁锂上电压阈值不对而且太阳能板的输出电压会随着光照强度变化单纯靠 TP4056 没办法做最大功率跟踪。推荐用CN3791或者CN3767这类太阳能专用充电 IC。它们内部集成了类似 MPPT 的机制会根据面板输出电压动态调整充电电流在弱光环境下也能挤出一部分电流给电池补电。同时支持通过电阻配置电池电压阈值磷酸铁锂可以设定在 3.6V 恒压。充电电路还有个细节太阳能板在夜里会产生反向漏电一定要在面板和充电模块之间加一个肖特基防倒灌二极管否则电池的电会顺着板子在夜里白白漏光。2.3 光伏板安装位置比功率更重要这是我在实地踩出来的经验公园长椅的阴影分布远比面板功率窗口要残酷。很多长椅被放在树荫下面一天里面能直接晒到太阳的时间可能只有两三个小时。离网系统设计的第一准则不是“晒多久能充满”而是“在有效日照时间窗口内面板能不能把白天消耗的电充回来”。我当时在长椅试装了几天记录到中午有一段时间光照极强电流一度冲到 380mA但全天累计的有效发电时长只有 3.2 小时。加上早晨和傍晚的弱光时间当天总共充过来的电量其实是峰值电流乘以等效日照时长的七成左右。这个测算方法建议直接抄走有效发电量(Ah) ≈ 面板峰值充电电流(A) × 有效日照小时(h) × 0.7比如 2.5W 面板峰值充电电流约 0.4A有效日照 3 小时一天最多充入约 0.84Ah。而 BenchPad 日耗电按最坏情况的 50mAh 算这个余量是足够的。光伏板的安装角度也影响很大。长椅的靠背往往会自然地形成一个倾斜面我把光伏板固定在靠背正上方倾角大约 20 度既兼顾了结构美观又不太容易堆积落叶和鸟粪。另外我用了一个很小的电压电流监测模块INA226接在电池两端定期采样记录电压变化曲线。有这个数据之后我可以远程判断是电池老化、面板被挡、还是充电电路出问题修起来方便很多。3. 把屏幕装进一张户外长椅里 —— 结构、防水与防盗的真实工程问题3.1 结构布局与观看角度屏幕放在长椅的哪个位置很考验设计直觉。我一开始想把屏幕嵌进座面做一张“桌面阅读长椅”后来被一个细节否决没有人愿意坐着的时候低头向着自己的大腿看屏幕座面屏的观看角度极其别扭。最终方案是把屏幕嵌在长椅靠背的背面也就是路人从椅子后方经过时能正对的那一面。屏幕中心距离地面约 700mm略微向后倾斜 10 度正好是成年人站立时的舒适观看高度。这样坐椅子的人和路过的人都能看到内容人流动线也顺。结构材料我用了防腐木椅身加不锈钢骨架屏幕区域单独做了一个铝合金边框。之所以不用钣金把屏幕整个封死是因为后续换屏幕、清灰、升级驱动板都需要打开维护口铝合金框架用螺丝固定维护成本最低。3.2 电气与屏幕的防水设计电子墨水屏最怕的不是水是水汽凝结。如果我把屏幕和主板完全密封在一个密闭腔体里白天太阳把腔内温度烤到 50 度水汽蒸发到了夜里温度降下来水汽会凝在屏幕上形成一层水膜轻则影响显示重则让驱动电路上的水滴引发短路。正确的做法不是“绝对密封”而是“控制呼吸”。我在屏幕腔体底部开了一排细小的通气缝用防尘海绵和细网挡住蚊虫让内外气压缓慢平衡水汽不容易积累。电路板则单独放在一个 IP65 接线盒里所有线缆通过 PG7 防水接头引出。接线盒内部我额外放了两包干燥剂每三个月开箱换一次。屏幕正前方用了一层高透亚克力面板保护。这里要提醒一下普通亚克力在紫外线下会很快发黄透光率直线下降。一定要选抗UV亚克力或者干脆用钢化玻璃。我第一块亚克力用了两个月就开始泛黄后来换了抗UV版本目前一年下来还比较透明。3.3 防盗与路人交互设计公共设施最大的威胁不是天气是好奇的人。电子墨水屏从正面看确实像一个平板电脑很多人会下意识地用手去按、去戳。防盗层面我做了三件事第一所有外部可见螺丝全部换成防拆梅花头第二铝合金边框和长椅骨架之间用结构胶粘合了一层单纯用螺丝刀拆不开第三屏幕腔体的检修门朝向长椅内侧必须把长椅翻过来才能接触到。更像游乐场的情况是很多人真的会去按压屏幕。虽然屏幕有亚克力挡着但持续的机械压力还是有可能损坏屏幕边缘。后来我在屏幕周围贴了一张醒目的贴纸“电子纸屏幕内容由社区维护请勿按压”配合长椅上方的光伏板绝大多数人一眼能看出这是个装置艺术而不是一台能玩的平板误触的情况基本消失了。还有一个很实用的小设计主板驱动屏幕上常驻显示一个电池图标和信号图标电量低的时候图标会变颜色。这样路人能直观看到这个设施的运行状态而我远程查日志的时候也能对照现场照片判断仪表读数是不是准。4. 远程投递链路怎么把一句话传到公园里的屏幕4.1 “Post To”不是发推文是一条轻量级消息总线“You Can Post To”这个功能是整个项目里最有趣的部分。它本质上是一条内容发布链路用户产生内容经过服务器处理最终投递到公园里某一张长椅的屏幕上。我没有采用“长椅端开一个 TCP 长连接”这种重方案因为 WiFi 在户外场景很不稳定长连接一旦断开需要很复杂的重连机制。BenchPad 用的是最朴素的轮询模型远程用户 → HTTPS POST → 中心服务器 → 消息队列带TTL → BenchPad每30分钟拉取 → 屏幕渲染中心服务器我用 FastAPI 写了一个非常简单的接口长椅端启动的时候会带着唯一设备 ID 注册服务器给每把长椅分配一个独立的 API Key。投递内容的时候只需要调用一次接口curl -X POST https://server.example.com/v1/benchpad/0001/post \ -H Authorization: Bearer BENCHPAD_API_KEY \ -H Content-Type: application/json \ -d { title: 社区图书角活动, body: 周六上午九点欢迎带旧书来交换。, expire: 2025-08-01T00:00:00Z }服务器收到请求后把这条内容存进队列设置一个过期时间。长椅下次醒来轮询的时候如果发现队列里还有未读内容就拉下来渲染并显示同时返回一个 ack 把消息标记为已读。这样即使长椅离线几天也不会丢内容。这条链路最关键的机制是TTL存活时间。比如一条寻物启事设置 72 小时过期如果那把长椅一直离线那么它恢复后也不应该再显示这条过期消息。服务器在返回队列的时候先过滤掉已经过期的消息然后再按优先级排序。4.2 给“小白”也能用的入口邮件和网页剪藏纯 API 方式只适合技术玩家。BenchPad 真正的价值在于让普通社区居民也能参与内容投递所以我补充了两个更亲民的入口。第一个是邮件入口。我给每把长椅分配了一个专用邮箱地址用户直接写一封主题为标题、正文为内容的邮件发过去服务器定时抓取邮件拆分主题和正文自动渲染成一幅海报推送给长椅。邮件入口用下来是普通人接受度最高的方式发一封邮件比打开一个网页再登录亲切得多。第二个是网页剪藏。这个功能也是最近被朋友们问得最多的地方——很多人问我能不能把一本小说/一篇长文章“投”到屏幕上看。这里的做法是做了一层文本提取和分页服务器端用 trafilatura 或者 BeautifulSoup 把网页正文提取出来过滤掉广告、图片和导航栏然后按照屏幕尺寸把长文切成若干“章节卡”。每张卡只放得下几行字所以一篇文章被切成十几张卡片然后一屏一屏刷新展示。这样做出来的效果非常像一本挂在公园里的连载小说每天更新一屏内容路过了就能看一段。公共屏幕上放连载小说其实比想象的更受欢迎——路人对连续剧式的内容有天然的期待感下次路过时顺便看一眼“读到了哪一章”。4.3 认证、审核与离线缓冲公共屏幕的内容安全是必须认真对待的。API 层面我做了这几层防护每个设备有独立 API Key服务器端才能访问队列单条内容有明确的长度限制标题不超过 32 字正文不超过 200 字避免有人灌入超长文本撑爆屏幕内容渲染前做基础关键词过滤包含辱骂、骚扰、敏感词之类的直接拒绝保持社区环境干净所有内容都不支持嵌入外部链接只接受纯文本和用户主动上传的图片避免恶意脚本被渲染进屏幕。离线缓冲的逻辑也需要单独考虑。电子墨水屏的好处是即使长椅彻底掉线当前显示的内容也不会消失所以“离线”不是一个致命问题。但有个细节要设计好如果某张长椅离线超过 24 小时再恢复网络时服务器不能把积压的一百条内容一次性全部推下去否则屏幕会连续刷新好几分钟而且路过的人看到的是一堆过期消息乱炖。我在服务器端做了一个简单的策略长椅每次唤醒最多拉取一条内容显示完并标记 ack 后下次唤醒再拉下一条。这样过期内容自然被 TTL 机制过滤宽限期内的排队消息也能按顺序慢慢消化视觉体验完全可控。5. 固件层的慢周转战术 —— 深度睡眠、唤醒轮询与OTA5.1 工作循环怎么搭BenchPad 的固件核心不是逻辑多复杂而是把“快餐式唤醒”做得稳健。主循环大约是这样一个流程1. ESP32 深度睡眠 30 分钟随机抖动 ±4 分钟避免多把长椅同时广播唤醒 2. RTC 唤醒初始化外设 3. 连接 WiFi超时 15 秒连不上直接回睡 4. 从 NTP 同步时间校正 RTC 漂移 5. HTTP 请求服务器拉取待显示内容 6. 有内容则渲染并驱动电子墨水屏 7. 上报电池电压、充电状态、屏幕状态 8. 回到深度睡眠这里的随机抖动看起来是个小细节但很关键。如果社区里有十把长椅所有长椅同时整点唤醒服务器会在同一瞬间接收到十个请求而且十台屏幕同时开始刷新附近路过的人会觉得整个街区在集体闪光抽风。随机抖动几秒钟之后刷新过程就变成错落有致的节奏感对服务器和观感都友好得多。5.2 屏幕驱动的关键调参彩色电子墨水屏驱动起来和普通显示屏很不一样最容易踩的坑有三个。第一个坑是刷新间隙不清屏。四色屏在连续刷新时如果没有执行正常清屏周期上一张图的残留会越来越重。固件里要跟踪一个计数器每刷新一定次数强制插入一次全屏清屏循环。第二个坑是彩色图片压缩格式。7.5 寸四色屏和 Kaleido 3 需要的像素格式不一样前者是 1bit 三色索引图后者是 16bit 灰度映射彩色。如果你在 ESP32 上用标准图像库直接把 JPEG 解压成 RGB888再转换像素格式内存会溢出得很难看。我最终的处理是渲染工作全部放到服务器端完成服务器生成好了目标屏幕的原始像素缓冲通过 HTTP 直接传二进制给长椅长椅端只需要做最基础的格式校验和 SPI 搬运。第三个坑是色彩校准不能看着手机调。同一个颜色在电脑屏幕、手机屏幕和电子墨水屏上的观感完全不同。电子墨水屏颜色偏淡、对比度低、颜色偏干燥所以你需要真的把测试图刷到屏幕上再根据实物调整配色。我常用的手法是把饱和度和明度整体拉高 15%显得更接近普通照片的观感。5.3 OTA与稳定性公共设施固件最大的礼仪就是出了问题不能白跑一趟现场。所以 OTA 从第一天就是必需品。我用的是带签名的 HTTP OTA服务器端维护一个固件版本号长椅每次心跳时携带当前版本号服务器比对后下发最新固件 URL。固件文件在服务器端进行签名ESP32 侧校验签名之后再启动升级。稳定性层面做了三层看门狗硬件看门狗定时喂狗WiFi 初始化卡死或者 SPI 死锁时自动复位复位后短时间再次崩溃会在 NVS 里记录原因连续三次失败会进入“保守模式”——不连接网络、不刷新屏幕只保持最低功耗的睡眠等待人工处理电池电压低于安全阈值时不管服务器有什么新内容都拒绝唤醒刷新保证电池不过放。固件层的思路是宁可让长椅少干一点活也绝不让它带着满身毛病死磕。6. 实测三个月之后的复盘 —— 色彩褪没、刮风下雨与那些被路人的手碰过的瞬间6.1 晴天、阴天、雨天的实际水平把 BenchPad 放在真实公园里跑了三个月有几个发现是法理上怎么推演也无法提前预知的。阳光直射下彩色电子墨水屏的可读性确实比所有发光屏幕都强。即使在正午的太阳底下屏幕上的文字和色块都非常清楚完全不需要调亮度。这一点让我觉得选型选对了。但高温的影响也很明显。当屏幕表面温度到了 45 度以上时彩色电泳粒子的响应速度明显变慢刷新时间从 18 秒拉长到 25 秒以上而且刷新过程中偶尔会出现色块不均匀的现象。后来我在屏幕背面贴了一片铝散热片导热到铝合金边框效果好了不少。雨天倒没什么好担心的。防水做得到位亚克力面板上的雨水自然流掉屏幕区域没有进过水。反而要提防的是持续阴雨天叠加光伏板被落叶覆盖连续一周下来电池电压掉得比较厉害。我把每次心跳上报电压汇成曲线看到曲线斜率异常就能判定是树冠遮挡还是面板脏了。后来安排保洁每周顺手擦一下光伏板状况明显好转。6.2 路人教会我的几件事最有意思的部分永远是“人怎么跟这个东西互动”。一开始我以为路人会围观屏幕看半天实际观察下来大部分人只是路过的时候扫一眼真正会停下来读完整段内容的人很少。这原本让我有点失落但后来社区工作人员告诉我信息展示的价值不在于“围观”而在于“路过时被看见”。那块屏幕就像一张固定在路边的海报内容在那里需要的自然会看。发现最有价值的反而是“连载”模式。当我在屏幕上调出一本小说逐章展示之后有几位附近居民竟然每天固定时间过来“读下一章”。这个反馈让我意识到电子墨水屏天然适合内容周期较长的叙事内容——它不是用来抢眼球的而是用来陪伴的。也有人试图按屏幕、摸屏幕、拿钥匙戳屏幕。一段时间之后我发现亚克力面板上留下了一些小划痕屏幕边缘的边框也被翘过两次但核心屏幕本体没有出大问题。前期做的防拆设计和贴纸提示起了作用。6.3 如果再做一次 BenchPad复盘下来最值得改的点有三个。第一屏幕尺寸要往大做。7.5 寸四色屏在公共空间里还是显得小适合内容有限。要是预算允许直接上 13.3 寸 Kaleido 3内容排版空间充裕视觉冲击力完全不同。第二WiFi 模块是最大的耗电变量和最脆弱的环节。公共区域 WiFi 信号不稳定模块重连的功耗可能占系统总功耗的一半以上。如果再选我会优先考虑用 4G Cat-M1 模块省电稳定而且不依赖附近有没有人偷偷把路由器藏进树洞。第三维护口的位置要充分考虑现场操作。我的第一版维护口在长椅侧面需要整个人趴下去才能打开。后来改用正面快拆面板再配合远程诊断日志绝大多数问题不用去现场就已经处理掉了。最后还是想提醒想做类似项目的朋友一句离网电子墨水屏公共设施看起来像是硬件性能和屏幕工艺的问题其实绝大部分精力都花在对环境曲线的理解上——什么时候有太阳、什么时候有人经过、什么时候设备容易出问题、什么时候内容需要更新。把这些节奏摸清楚了剩下的技术反而都是常规操作。
返回列表