小企业智能化
门店电子价签与促销信息屏实战:ESP32 + 墨水屏无线刷新、断网缓存与批量管理
2026年10月12日
ESP32+墨水屏打造门店电子价签与批量改价
门店电子价签与促销信息屏实战:ESP32 + 墨水屏无线刷新、断网缓存与批量管理
摘要:连锁门店改价、换促销最怕人工出错。本文用 ESP32 加墨水屏打造一套可远程批量刷新的电子价签与信息屏,断网也能显示最后一张正确画面。
为什么门店值得上一套电子价签
对便利店、生鲜店、美业门店来说,价格变动是高频动作。传统纸质价签每次调价都要员工跑现场换纸,连锁十家店就是十倍的出错与人力成本。电子价签把"改价"从物理动作变成后台一次点击,还顺带解决了促销信息同步、临期提醒等衍生需求。
硬件选型:ESP32 + 墨水屏的组合
主控选 ESP32,因为它自带 Wi-Fi 且价格不到 20 元,睡眠电流极低,适合电池供电。屏幕选 2.13~4.2 寸黑白三色墨水屏(如 Gdew0213I5F),优势是断电后画面不消失、阳光下可读、视觉接近印刷纸。驱动走 SPI,常用 GxEPD2 库。
固件骨架:连接 Wi-Fi 与拉取价签数据
ESP32 启动后连接门店路由器,向服务端拉取本价签编号对应的商品名、价格、促销语:
void fetchPriceTag() {
HTTPClient http;
String url = String("http://price.example.com/api/tag/") + TAG_ID;
http.begin(url);
int code = http.GET();
if (code == 200) {
DynamicJsonDocument doc(512);
deserializeJson(doc, http.getString());
showTag(doc["name"], doc["price"], doc["promo"]);
}
http.end();
}
showTag 把内容画到墨水屏缓冲区并 display.display() 刷新。注意墨水屏刷新慢(约 2 秒),不要频繁全刷,否则缩短寿命并闪烁刺眼。
断网缓存与局部刷新策略
门店网络不可能永远稳。两个保命设计:第一,每次成功拉取后把 JSON 写进 ESP32 的 Preferences 或 SPIFFS 做本地缓存,下次启动先显示缓存再联网更新;第二,价格数字用局部刷新(partial update),只动变化的像素,告别整屏闪白。
preferences.begin("tag", false);
preferences.putString("last", payload);
服务端:批量下发与门店分组
服务端用任意语言搭一个轻接口即可,下面是一段 Python Flask 示例,按门店分组下发:
@app.route('/api/push/<store_id>', methods=['POST'])
def push(store_id):
data = request.json
for tid in store_tags[store_id]:
mqtt.publish(f"tag/{tid}", json.dumps(data))
return {'ok': True}
推荐走 MQTT 而非轮询:后台改价后主动推送给对应门店的全部价签,秒级生效,且服务器压力小。ESP32 端订阅 tag/<本机ID> 主题即可。
功耗与续航:电池版与常电版取舍
走廊大屏、促销立牌用常电(USB 或 POE 取电),几乎不 care 功耗;货架小价签用 CR2450 纽扣电池,靠深度睡眠把日均耗电压到微安级,半年到一年换一次电池。关键是唤醒后只刷一次屏就立刻睡回深度睡眠。
小结
ESP32 + 墨水屏的电子价签方案,硬件成本可控、断网不黑屏、后台一键批量改价,特别适合多门店连锁与高频调价场景。把它和既有会员系统、进销存打通,还能做到"库存变了价签自动跟"。