Skip to content

Releases: atunverse/moink

墨印 MoInk R1.3.4:电量不再「未连接」,删图不再卡 10 秒

Choose a tag to compare

@atunverse atunverse released this 20 Oct 08:28

墨印 MoInk 版本:R1.3.4

本版修三个实测问题:电量一直显示「未连接」、删除轮播图偶发 400 / 误删、
上传并刷新会白占轮播槽并磨损 flash。
顺手把删除从「搬移数据」改成「改一个标记位」,删除耗时从 10 秒降到毫秒级。
api 保持 2,分区表与帧格式零变动 —— R1.2.0 及之后可直接网页 OTA。
历史 Release 继续累积保留,不删除。


一、电量不再显示「未连接」

真因

旧实现要求跨请求连续 3 次采样有效才返回电压:

if (++s_valid < 3) return -1;   // 调用一次只加一

而 /api/info 每次只调用一次,控制页又只在打开时请求一次(没有任何轮询)
⇒ 计数器最多走到 1~2,永远到不了 3。所以打开设备页必定显示「未连接」,
手动多刷几次页面才偶尔出值 —— 这正是「经常未连接、偶尔正常」的原因,
跟分压电阻阻值无关(100k:100k 与 1M:1M 也都不影响)。

改法

  • 一次请求内连采 12 次取中位数,单次 /api/info 就能出稳定值;
  • 用极差(max - min > 500 mV)判断引脚悬空 —— 悬空时读数乱飘,极差极大;
  • 页面不加轮询:/api/info 会刷新 power_activity(),轮询会让设备永不休眠。
    页面仍只在打开 / 保存设置后各取一次,但这一次就能拿到值。

二、删除轮播图:从 10 秒到毫秒

原来的代价

旧实现删除后要把后面的槽整体前移一位:满 8 张时删第 1 张,要搬 7 个槽 ——

项 数值
擦除 7 × 32 扇区 = 224 扇区 / 896 KB
写入 7 × ~106 KB ≈ 742 KB
持锁时间 约 10 秒(期间按键、上传、图库列表全部排队)

这 10 秒就是「删除卡住 → 用户重复点击 → 携带过期索引 → 400 / 误删相邻照片」的根因。

现在的做法

NVS 里存一个 alive 位图(1 字节,bit i = 物理槽 i 有效),
逻辑序号 = 位图中第 N 个置位的物理槽:

  • 删除 = 清一位 + count-- / cur 修正,一次 nvs_commit、flash 零擦写、<20 ms;
  • 物理槽允许留空洞,不整理、不压缩;对外 slot 仍是逻辑序号(0..count-1),
    页面与既有调用方无需改动;
  • 上传新图优先写「末尾之后」的空位(等价于追加到末尾),末尾满了才回填最早的空洞;
    回填时 cur 用 st_phys2idx() 反查真实逻辑序号,不会指错图。
场景 R1.3.3 及之前 R1.3.4
满 8 张删第 1 张 ~10 秒,擦写 896 KB,全程持锁 <20 ms,flash 零擦写
不满 8 张上传 追加到末尾 追加到末尾(不变)
满 8 张删中间再上传 追加到末尾 回填被删的那个位置
删除途中断电 可能重复 / 丢一张 原子提交,最多「这张没删掉」
上传中断留半写槽 可能被当成有效图 位图未置位 → 自动不可见

删除失败能看懂了

R1.3.3 及之前所有失败都压成 400 bad slot,无法区分原因。现在:

状态码 含义
400 查询串缺失 / slot 非法
404 该序号当前不存在(多为页面索引已过期)
503 设备正忙(取锁超时,有上传或刷屏占用)
500 元数据提交失败 / store 分区不可用

控制页同时在删除 / 清空期间禁用 × 按钮并降透明度,失败后立即重拉图库让索引回正。


三、上传并刷新不再挤占图库(FB-018)

以前两个上传按钮都带 save=1,差别只是后者多了 noshow:想临时换一张图看看效果,
也会整槽擦写 128 KB、并占掉 8 个轮播位里的一个。攒几次临时图,图库就满了。

现在两条通道彻底分开:

按钮 请求 占轮播槽 刷屏 flash
上传并刷新屏幕 /api/frame(无 save) 否 是 零擦写
上传到图库 /api/frame?save=1&noshow=1 是 否 整槽一次(不可避免)

固件本来就有「无 save = 只显示不存」的语义,所以这是纯页面改动,api 不变;
只刷新的通道也顺手省掉了缩略图的生成与传输。

升级须知

  • R1.2.0 及之后可直接网页 OTA:设备页面「设置 → 系统维护与升级」,
    上传 moink_R1.3.4_app.bin 即可(分区表未变)。
  • R1.1.x 及更早必须线刷:用数据线整包刷 moink_R1.3.4_merged.bin。
  • 升级不重置设置:热点名 / 密码 / 屏型 / GPIO 接法 / 电源管理全部保留。
  • 已有轮播图自动迁移:老设备 NVS 里没有 alive 键,启动时按「前 N 槽有效」生成,
    与旧的物理连续布局逐槽等价,图不会丢也不需要重新上传。
  • 电量换算未变:100k:100k 与 1M:1M 的比值相同(×2.0),固件系数仍是 200/100,
    换电阻不需要改固件。若读数与万用表差得多,需按实测重标 BAT_FULLSCALE_MV。

兼容性

  • api = 2:16 字节帧头与 2bpp 载荷零变动,分区表零变动 → 可与 R1.2.x / R1.3.x 互刷。
  • 算法基线 B2 12/12 MATCH,色彩与几何规格未变。
  • 编译:RAM 39,692 B(12.1%)/ Flash 1,009,216 B(77.0%),0 告警。
  • 产物:firmware.bin 1,009,920 B / merged 1,075,456 B / zip 1,265,223 B。

资产说明

  • MoInk-FlashKit-R1.3.4.zip —— Windows 一键刷机包,解压双击 bat 即可
    (自动选串口、跳过蓝牙虚拟口);包内「使用说明.txt」含 V1~V10 验收清单。
  • moink_R1.3.4_merged.bin —— 固件整包(R1.1.x 及更早线刷用,0x0 写入,控制页已内嵌)。
  • moink_R1.3.4_app.bin —— OTA 升级包(R1.2.0 起网页升级用)。
  • page-R1.3.4.html —— 控制页热更包(网页上传,免刷机)。

版本校验

刷完在「设置 → 设备信息」应显示:版本 R1.3.4 / 接口 2。

真机验收清单(本版重点 V8 / V9 / V10)

  • V8 删除轮播图:图库放满 8 张 → 删第 1 张,应在 1 秒内完成(旧版约 10 秒);
    剩下的图顺序正确前移、不缺张不重张;再传 1 张应落到末尾;断电重启后顺序不变。
  • V9 电量显示:打开控制页,「设备信息 → 电量」应立即显示读数(不必再刷几次);
    连刷几次页面读数稳定,不出现「未连接」。
  • V10 上传通道分离:点「上传并刷新屏幕」→ 屏幕变、图库张数不变;
    点「上传到图库」→ 图库 +1、屏幕不动,双击设备按键能轮到它。
  • V1~V7 见包内说明(排线档引脚 / 电量 / 按键 / 唤醒来源 / 休眠 / 关机 / 定时唤醒切图)。

校验和(SHA-256 前 16 位)

资产 大小 SHA-256
MoInk-FlashKit-R1.3.4.zip 1,265,223 B 6cdab27f7cde5501…
moink_R1.3.4_merged.bin 1,075,456 B ff6d68c153dedde1…
moink_R1.3.4_app.bin 1,009,920 B 3c3943837fffab9f…
page-R1.3.4.html 169,046 B b12c5267d3f3d04d…

墨印 MoInk 基线版本:R1.3.3(含 R1.3.1–R1.3.3)

Choose a tag to compare

@atunverse atunverse released this 19 Oct 02:17

墨印 MoInk 基线版本:R1.3.3

本 Release 合并说明 R1.3.1 / R1.3.2 / R1.3.3 三个版本的改动(后两版未单独发版)。
api 保持 2,分区表与帧格式零变动 —— 从 R1.2.0 及之后可直接网页 OTA。
历史 Release 继续累积保留,不删除。


一、R1.3.1 —— 排线档引脚改版 + 电池分压 1M:1M

1. 排线档引脚重新分配

gpio_preset = 1(排线)整表重排:

信号 新排线档 旧排线档(R1.3.0 及更早)
ADC(电池) GPIO0 GPIO0
KEY(唤醒) GPIO1 GPIO5 ← 变了
LOCK(自锁) GPIO2 GPIO2(固定,不在这八个脚里)
BUSY GPIO3 GPIO1 ← 变了
RST GPIO4 GPIO3 ← 变了
DC GPIO5 GPIO4 ← 变了
CS GPIO6 GPIO6
SCK GPIO7 GPIO7
DIN(MOSI) GPIO10 GPIO10

默认档与整合板档未改动。

2. 电池分压 100k:100k → 1M:1M

分压比 (1M+1M)/1M = 2.0,与原值完全相同,所以固件系数 BAT_DIV_NUM/DEN
保持 200/100 不变 —— 这不是漏改,改电阻值不影响系数。

⚠️ 1M 源阻抗约 500 kΩ,ESP32-C3 的 ADC 在高阻源下读数偏低(几十 mV 量级),
电量百分比可能整体偏小。建议 ADC 端并联 100 nF 到地;换上板后用万用表实测,
必要时重标 BAT_FULLSCALE_MV(当前 3100 mV @ 12 dB)。


二、R1.3.2 —— 按键语义重构 + 刷屏解耦 + 唤醒来源

修复

  • 单击一次连刷两张图:R1.3.0 的 pending 唤醒状态在短按分支从未清零,
    松手后下一轮采样又命中「补切」。重写后一次性消费动作,不再重复触发。
  • 松手弹跳二次触发:旧实现完全没有消抖。
  • 刷屏失败仍推进轮播指针:改为「先刷屏、成功才写 cur」,失败保留原值,
    下次按键不再「跳过一张」。
  • 轮播元数据重复提交:cnt/cur/widx 改为多键一次 commit,
    每次切图从 2 次 NVS 写降为 1 次,也避免掉电留下半套状态。

按键语义(新)

动作 判定 结果
单击 松手后 400 ms 内无第二击 只唤醒并重置空闲计时,不刷图
双击 两次按下间隔 ≤ 400 ms 切到下一张
长按 持续按住 20 秒(原 5 秒) 恢复出厂并重启
  • 20 ms 采样 + 连续 3 次一致消抖(约 60 ms)。
  • 深睡唤醒那一击只用于唤醒;若启动时键已松开,此后 1.5 秒内的首次单击
    视为「第二击」直接切图。两击都落在启动窗口内则只判单击 —— 补按一下即可。

刷屏与按键解耦

button_task 只投 UI 事件 → 队列 → display_task 串行刷屏。按键采样不再被
2~4 秒的整屏刷新阻塞(长按计时准确)。后续新增刷屏触发源(定时轮播、页面按钮、
传感器等)统一走 ui_post()。

唤醒来源识别

新增 wake_src_t:button / timer / power_on / other,
/api/info 输出 wake_reason + wake_bits,控制页「设备信息」显示「本次唤醒」。


三、R1.3.3 —— 电源管理 + 定时唤醒切图 + WiFi 默认低功率

1. 「休眠与唤醒」→「电源管理」

项 内容
超时 1 / 3 / 5 分钟,或「不超时」
超时动作 休眠(默认) / 关机(断电)
选休眠时 自动唤醒(关 / 1h / 12h / 1d)+ 定时唤醒后自动切图(默认勾选)
选关机时 隐藏上面两项
  • 关机实现:GPIO2 拉低 → 释放 MOS 自锁 → 断电。有自锁电路时约 100 ms 掉电;
    没有自锁电路的板子无法真正断电,1 秒后退回休眠(控制页已明确提示)。
  • sleep_s = 0(不超时)时,休眠与关机都不执行。

2. 定时唤醒自动切图

wake_show 默认 开启:定时醒来后自动切到下一张;图库为空则只开热点、不切图。

3. WiFi 默认发射功率改为「低」

中(10dBm) → 低(8.5dBm)。

⚠️ 只影响出厂默认值。已有设备 NVS 里存着原 wifi_pwr,升级不会自动变低,
需要时在「热点设置」里手动选一次。


升级须知

  • R1.2.0 及之后可直接网页 OTA:设备页面「设置 → 系统维护与升级」,
    上传 moink_R1.3.3_app.bin 即可(分区表未变)。
  • R1.1.x 及更早必须线刷:用数据线整包刷 moink_R1.3.3_merged.bin。
  • 排线档设备:档位号没变,升级后自动套用新引脚表,按新接线接好即可;
    之前用「自定义」档手工填旧脚位的,必须进页面按新接线重选并重启。
  • 升级不重置设置:热点名 / 密码 / 屏型 / GPIO 接法 / 超时 / 唤醒 / 功率全部保留;
    已存的轮播图也保留(store 分区不受影响)。
  • 传 .html 只热更控制页,不重启,刷新浏览器即生效。

兼容性

  • api = 2:16 字节帧头与 2bpp 载荷零变动,分区表零变动 → 可与 R1.2.x / R1.3.x 互刷。
  • 算法基线 B2 12/12 MATCH,色彩与几何规格未变。
  • 编译:RAM 39,692 B(12.1%)/ Flash 1,006,358 B(76.8%),0 告警。
  • 产物:firmware.bin 1,007,056 B / merged 1,072,592 B / zip 1,261,302 B。

资产说明

  • MoInk-FlashKit-R1.3.3.zip —— Windows 一键刷机包,解压双击 bat 即可
    (自动选串口、跳过蓝牙虚拟口);包内「使用说明.txt」含 V1~V7 验收清单。
  • moink_R1.3.3_merged.bin —— 固件整包(R1.1.x 及更早线刷用,0x0 写入,控制页已内嵌)。
  • moink_R1.3.3_app.bin —— OTA 升级包(R1.2.0 起网页升级用)。
  • page-R1.3.3.html —— 控制页热更包(网页上传,免刷机)。

版本校验

刷完在「设置 → 设备信息」应显示:版本 R1.3.3 / 接口 2。

真机验收清单

  • V1 排线档引脚(R1.3.1):设为「排线」档 → 保存并重启 → 刷屏正常、四色正确。
    黑屏 / 白屏先核对引脚表。
  • V2 电量读数(R1.3.1):电量与万用表实测相符(误差 5% 内);1M 高阻源偏低时并 100 nF。
  • V3 按键(R1.3.2):单击只唤醒不刷图;双击切一张(不再连刷两张);
    长按 20 秒恢复出厂。
  • V4 唤醒来源(R1.3.2):按键唤醒 / 定时唤醒 / 上电重启,「设备信息 → 本次唤醒」显示正确。
  • V5 超时休眠(R1.3.3):超时 1 分钟 + 动作「休眠」→ 静置 1 分钟后睡着,按键可唤醒。
  • V6 超时关机(R1.3.3 ★需自锁电路):「超时动作」选「关机」→ 静置到点应完全断电
    (按键无法唤醒,需重新按开机键)。若只是休眠,说明板上没有自锁电路,属预期限制。
  • V7 定时唤醒切图(R1.3.3):图库 ≥ 2 张、自动唤醒 1 小时、勾选「唤醒后切图」→
    醒来应切到下一张;取消勾选则保持原图。

校验和(SHA-256 前 16 位)

资产 大小 SHA-256
MoInk-FlashKit-R1.3.3.zip 1,261,302 B a6c7cc9a40b0f68b…
moink_R1.3.3_merged.bin 1,072,592 B 15b6dc8fe856131d…
moink_R1.3.3_app.bin 1,007,056 B 9d6dd789904d03b2…
page-R1.3.3.html 167,076 B c3a97efdcbee4c5e…

墨印 MoInk 基线版本:R1.3.1

Choose a tag to compare

@atunverse atunverse released this 17 Oct 16:27

墨印 MoInk 基线版本:R1.3.1

⚠️ 本版是硬件适配批次:排线档引脚重新分配 + 电池分压电阻改 1M:1M。
⚠️ 用【排线】接法的板子升级后必须按新接线核对(见下表),接错会不亮屏。
⚠️ 自本版起 Release 继续累积保留,历史版本不删除。
⚠️ 升级不重置设置,已有的轮播图也保留。

本次更新(相对 R1.3.0)

1. ★ 排线档引脚改版

gpio_preset = 1(排线)的引脚表整体重排:

信号 新排线档 旧排线档(R1.3.0 及更早)
ADC(电池) GPIO0 GPIO0
KEY(唤醒) GPIO1 GPIO5 ← 变了
LOCK(自锁) GPIO2 GPIO2(固定,不在这八个脚里)
BUSY GPIO3 GPIO1 ← 变了
RST GPIO4 GPIO3 ← 变了
DC GPIO5 GPIO4 ← 变了
CS GPIO6 GPIO6
SCK GPIO7 GPIO7
DIN(MOSI) GPIO10 GPIO10

默认档(SCK=4 / DIN=6 / CS=7 / DC=1 / RST=3 / BUSY=10,唤醒=5,ADC=0)与
整合板档(SCK=4 / DIN=3 / CS=5 / DC=6 / RST=7 / BUSY=10,唤醒=1,ADC=0)未改动。

2. ★ 电池分压电阻 100k:100k → 1M:1M

分压比 (1M+1M)/1M = 2.0,与原来的 100k:100k 完全相同,所以固件里的
BAT_DIV_NUM/BAT_DIV_DEN 保持 200/100 不动 —— 这不是漏改,改电阻值不影响系数。

⚠️ 1M 电阻的源阻抗约 500 kΩ,ESP32-C3 的 ADC 在这种高阻源下读数会偏低
(几十 mV 量级),电量百分比可能整体偏小。建议 ADC 端并联 100 nF 到地;
若换上板后电量明显不准,用万用表实测电池电压后按实测值重新标定
src/power.c 的 BAT_FULLSCALE_MV(当前 3100 mV @ 12 dB)。

3. 版本与工具

  • 版本号 R1.3.0 → R1.3.1;控制页 meta 同步,src/index_html.h 重新固化。
  • tools/smoke_page.js 的版本断言改为动态读取 src/version.h 的
    MOINK_VERSION 与 CONTRACT 版头,后续升版不必再改门禁脚本。
  • 本版为纯参数 / 注释改动,无逻辑变更。

升级须知

  • R1.2.0 及之后的设备可直接网页 OTA:进设备页面「设置 → 系统维护与升级」,
    上传 moink_R1.3.1_app.bin 即可(分区表未变)。
  • R1.1.x 及更早的设备必须线刷:分区表在 R1.2.0 变更过(新增 store 存储分区),
    只能用数据线整包刷 moink_R1.3.1_merged.bin。
  • 排线档设备:档位号没变(仍为第 2 档),升级后会自动套用新表,按新接线接好即可;
    但之前用「自定义」档手工填旧脚位的,升级后必须进页面按新接线重选一遍。
    改动 GPIO 必须重启才生效(选完点「保存并重启」)。
  • 升级不重置设置(沿用 R1.2.2 语义:只清 a1_mode / a11_var 两个废弃键),
    热点名与密码保留,已存的轮播图保留。
  • 传 .html 只热更控制页,不重启,刷新浏览器即生效。
  • 本版固件仍没有 /api/ota 与 /api/web(R1.2.0 起删除),R1.1.x 的旧页面
    无法升级本版设备,请使用本包内的页面。

兼容性

  • api 保持 2:16 字节帧头格式与语义零变动,分区表零变动 —— 可与 R1.3.0 / R1.2.x 互刷。
  • 算法基线 B2 12/12 MATCH,色彩与几何规格未变。
  • 固件体积与 R1.3.0 相同(1,003,426 B / 76.6%),RAM 39,660 B(12.1%),0 告警。

资产说明

  • MoInk-FlashKit-R1.3.1.zip:Windows 一键刷机包,解压后双击 bat 即可
    (自动选串口、跳过蓝牙虚拟口);包内「使用说明.txt」含完整验收清单与排线档新旧对照表
  • moink_R1.3.1_merged.bin:固件整包(R1.1.x 及更早线刷用,0x0 整包写入,含分区表,控制页已内嵌)
  • moink_R1.3.1_app.bin:OTA 升级包(R1.2.0 起设备网页升级用)
  • page-R1.3.1.html:控制页热更包(网页上传,免刷机)

版本校验

刷完在设备页面「设置 → 设备信息」应显示:版本 R1.3.1 / 接口 2。

真机验收清单(四项)

  • V1 排线档引脚(★本版重点):设成「排线」档 → 「保存并重启」→ 重启后能正常刷屏、
    四色正确、方向正常。若黑屏 / 白屏,先核对接线是否符合上表。
  • V2 电量读数:接电池,控制页电量百分比与万用表实测电压相符(误差 5% 以内可接受);
    1M 高阻源若读数明显偏低,并 100 nF 电容或重新标定。
  • V3 轮播抽检(R1.3.0 功能):传一张图 → 屏幕显示且图库出现缩略图;短按按键切到下一张。
  • V4 升级兼容:用 moink_R1.3.1_app.bin 网页 OTA(分区表未变);
    升级后已有的轮播图与设置都应保留。

墨印 MoInk 基线版本:R1.3.0

Choose a tag to compare

@atunverse atunverse released this 14 Oct 23:24

墨印 MoInk 基线版本:R1.3.0

⚠️ 本版新增「多图轮播图库」:设备内最多保存 8 张图,在机身上短按按键循环切换。
⚠️ 自本版起,Release 累积保留,不再删除历史版本。
⚠️ 升级不重置设置(屏型 / 风格 / GPIO 接法 / 休眠 / 唤醒 / 热点全部保留),已有的轮播图也保留。

本次更新(相对 R1.2.2)

1. ★ 多图轮播:R1.2.0 预留的 store 分区正式启用

设备内部划出 8 个 128 KB 图槽(共 1,088 KiB),每槽保存一张完整的 2bpp 帧。上电后短按机身按键即可循环切图,不需要手机、不需要联网。

  • 存图追加到末尾,不再覆盖最早那张(旧行为是 round-robin 覆盖)。
  • 每槽除主图外还可携带一张彩色缩略图,供控制页图库显示(见第 4 条)。

2. ★ 设备轮播图库(控制页新卡片)

「设置 → 设备轮播图库」:

  • 8 个格子显示设备内已有图片的彩色缩略图,当前正在显示的那张带绿框;
  • 点缩略图 → 全屏大图预览(方向与屏上一致);
  • 每个格子右上角 × → 删除这一张,后面的图自动前移补位;
  • 「清空轮播」→ 清空全部(只清索引,不擦 flash、不伤设备)。

3. ★ 上传即入轮播,另加「仅上传」

  • 「上传并刷新屏幕」= 存进轮播 + 立即刷屏;
  • 「仅上传」(新增)= 只存进轮播、不刷屏,连续加图时不用每次等刷屏。

4. 缩略图改用网页端离线生成的彩色 JPEG

2bit 抽稀缩略图在手机彩色屏上放大后必现色块,因此改为:控制页从未量化的彩色合成图离线生成 69×96 彩色 JPEG(约 2~3 KB)随帧上传,设备原样存入槽尾。老图(没有预存缩略)自动回退为固件现算。

5. 新增与变更的接口

  • GET /api/carousel/list —— 图库列表(元数据 + 每槽缩略图)
  • GET /api/carousel/full?slot=N —— 单张整帧(大图预览用)
  • POST /api/carousel/delete?slot=N —— 删除并紧凑前移
  • POST /api/carousel/clear —— 清空轮播
  • GET /api/frame 新增 save=1(存并显示)、save=1&noshow=1(只存不显示)、tlen=N(随帧携带缩略载荷)
  • GET /api/info 新增 store_count / store_cur

6. 修复:内部迭代期的严重问题

  • httpd 路由表容量不足 → 设备无限重启:注册兜底路由时触发 HANDLERS_FULL,ESP_ERROR_CHECK abort、反复重启、热点起不来。本版把上限提到 32,从根上解决。
  • 缩略图「部分成功部分回退色块」:接收侧与写库侧的缩略长度上限不一致(7,500),彩色 JPEG 普遍 7~15 KB,超限被静默丢弃。两处上限统一为 20,000。
  • 图库列表接口峰值堆内存过高(约 60 KB):改为单槽循环 + 按实际缩略大小分配 + base64 分块发送。
  • 弱信号下 httpd_req_recv 返回 0 被误判为 body 截断 —— 增加短暂等待重试。

7. 控制页细节

  • 高级设置里滑块旁的「默认」角标现在可点击,一点即恢复该项默认值(13 个滑块全部生效)。

升级须知

  • R1.2.0 / R1.2.2 的设备可直接网页 OTA:进设备页面「设置 → 系统维护与升级」,上传 moink_R1.3.0_app.bin 即可(分区表未变)。
  • R1.1.x 及更早的设备必须线刷:分区表在 R1.2.0 变更过(新增 store 存储分区),只能用数据线整包刷 moink_R1.3.0_merged.bin。
  • 升级不重置设置(沿用 R1.2.2 语义:只清 a1_mode / a11_var 两个废弃键),热点名与密码保留,已存的轮播图保留。
  • 传 .html 只热更控制页,不重启,刷新浏览器即生效。
  • 本版固件仍没有 /api/ota 与 /api/web(R1.2.0 起删除),R1.1.x 的旧页面无法升级本版设备,请使用本包内的页面。
  • 只想清空设备里的轮播图,不必刷机:控制页「设备轮播图库 → 清空轮播」即可。

兼容性

  • api 保持 2:16 字节帧头格式与语义零变动,分区表零变动 —— 可与 R1.2.x 互刷。
  • 旧分区表(没有 store 分区)的设备:store_slots 为 0,轮播自动不可用,其余功能不受影响。
  • 算法基线 B2 12/12 MATCH,色彩与几何规格未变。

资产说明

  • MoInk-FlashKit-R1.3.0.zip:Windows 一键刷机包,解压后双击 bat 即可(自动选串口、跳过蓝牙虚拟口);包内「使用说明.txt」含完整验收清单
  • moink_R1.3.0_merged.bin:固件整包(R1.1.x 及更早线刷用,0x0 整包写入,含分区表,控制页已内嵌)
  • moink_R1.3.0_app.bin:OTA 升级包(R1.2.0 起设备网页升级用)
  • page-R1.3.0.html:控制页热更包(网页上传,免刷机)

版本校验

刷完在设备页面「设置 → 设备信息」应显示:版本 R1.3.0 / 接口 2。

真机验收清单(六项)

  • V1 轮播添加(★本版重点):传第一张 → 屏幕立即显示、图库出现 1 张(彩色缩略 + 绿框);用「仅上传」传第二张 → 图库变 2 张但屏幕不变;再「上传并刷新」传第三张 → 屏幕切到第三张。设备重启后轮播仍在。
  • V2 按键切图:设备睡着后短按按键 → 唤醒并切到下一张(不是重显当前张);连续短按在已有几张之间循环;长按 5 秒仍为恢复出厂。
  • V3 图库管理:点缩略图 → 大图预览,方向 / 内容与屏上一致;点 × 删一张 → 后面的图前移、张数 −1;删掉当前显示那张后再按键不花屏;「清空轮播」→ 8 格全空、张数归 0。
  • V4 满 8 拒绝:连续加到 8 张后再传 → 页面提示「轮播已满 8 张:请先删除或清空再上传」,且原图不被覆盖。
  • V5 升级兼容:直接用 moink_R1.3.0_app.bin 网页 OTA(分区表未变);升级后已有的轮播图与设置都保留。
  • V6 回归(R1.2.2 已验收项,抽检):GPIO 四档仍能切、「保存并重启」正常、A1 屏无需留白(四个留白勾保持不勾)。

墨印 MoInk 基线版本:R1.2.2

Choose a tag to compare

@atunverse atunverse released this 10 Oct 08:34

墨印 MoInk 基线版本:R1.2.2

⚠️ 本版替换此前发布的 R1.2.0(该 Release 与 tag 已删除)。
⚠️ 本版不再强制重置设置 —— 升级前后设备设置(屏型 / 风格 / GPIO 接法 / 休眠 / 唤醒 / 热点)全部保留。
⚠️ 本版新增 GPIO2 为 MOS 自锁脚,接了自锁电路的板子请勿把 GPIO2 强拉低。

本次更新(相对 R1.2.0;R1.2.1 未单独发版,其修复一并含在本版)

1. 屏幕设置精简:删掉「A1 驱动」二级菜单

A1 屏实测通过后只保留「768×552 顺序直写」一种策略,800×600 对照诊断档连同固件接收路径一并删除。A1 现在与 A0 一样 1:1 铺满可见区,不需要手动设白边。

2. 新增「GPIO 设置」:SPI 与唤醒 / ADC 接法可配

换板改线不用再改固件重新编译:

档位 SCK MOSI CS DC RST BUSY 唤醒 电池 ADC
默认 4 6 7 1 3 10 5 0
排线 7 10 6 4 3 1 5 0
整合板 4 3 5 6 7 10 1 0
自定义 逐脚选 限 GPIO0–5 限 GPIO0–4
  • 「自定义」逐脚选 IO,已选过的 IO 自动从其它下拉里移除,不会撞车。
  • 改完点「保存并重启」—— 引脚只在开机时初始化,必须重启才生效。
  • GPIO2 固定留给自锁脚,不出现在这八个脚里。

3. MOS 一键开机:新增自锁脚 GPIO2

固件上电第一件事就把 GPIO2 拉高(早于 NVS / WiFi / 屏初始化),开机瞬间维持供电;深睡前锁存电平,避免数字域掉电导致自锁电路断供。

4. ★ 升级不再重置设置(本版重点行为变化)

以前刷固件会重置 屏型 / A1 档位 / 左右镜像 / 休眠 / 唤醒 / 发射功率。现在只清理本版已废弃的键(a1_mode、a11_var),其余设置包括 GPIO 接法、热点名与密码原样保留。

  • 意义:A1 设备升级后不会被打回 A0 驱动;排线 / 整合板接法的设备不会被打回默认引脚(否则表现为「升级完屏不亮」)。
  • 例外:首次从 R1.2.1 及更早升到本版,NVS 里还没有 GPIO 记录,会落到「默认」档 —— 排线 / 整合板接法的设备请进页面选档、点一次「保存并重启」,此后升级不再复现。

5. 修复:电量一直显示「未连接」

固件里写死的分压比是 470k:100k(×5.7),与实装的 100k:100k(×2.0) 不符,会把电量整体放大 2.85 倍,正常电池被判成超过上限 → 一律显示「未连接」。已按实装改正。

6. 含 R1.2.1 的修复(该版未单独发布)

  • Captive Portal 修复:HTTP 通配兜底 + 303 绝对门户 URL,解决部分手机连上热点后不自动弹出配置页;DNS 劫持只对 A/IN 查询作答,兼容 iOS 解析器。
  • WiFi 默认发射功率 18 dBm → 10 dBm:解决部分 ESP32-C3 supermini 高功率下手机难以连接的问题(高/中/低三档数值不变,可在页面切换)。
  • 裁剪 / 缩放更丝滑:松手后再做重算。
  • 文本框不再残留:文字对象只在当前页面会话有效,不再写入 localStorage。

升级须知

  • R1.2.0 / R1.2.1 的设备可直接网页 OTA:进设备页面「设置 → 系统维护与升级 → ① 升级」,上传 moink_R1.2.2_app.bin 即可(分区表未变)。
  • R1.1.x 及更早的设备必须线刷:分区表在 R1.2.0 变更过(新增 store 存储分区),只能用数据线整包刷 moink_R1.2.2_merged.bin。
  • 升级不再重置设置(见上文第 4 条),热点名与密码保留。
  • 传 .html 只热更控制页,不重启,刷新浏览器即生效。
  • 本版固件仍没有 /api/ota 与 /api/web(R1.2.0 起删除),R1.1.x 的旧页面无法升级本版设备,请使用本包内的页面。

兼容性

  • api 保持 2:帧头格式(16B 头 + 2bpp 载荷)零变动,只是不再接受 hdr[2]=2 的 800×600 帧。
  • 算法基线 B2 12/12 MATCH,色彩与几何规格未变。

资产说明

  • MoInk-FlashKit-R1.2.2.zip:Windows 一键刷机包,解压后双击 bat 即可(自动选串口、跳过蓝牙虚拟口);包内「使用说明.txt」含验收清单
  • moink_R1.2.2_merged.bin:固件整包(R1.1.x 及更早线刷用,0x0 整包写入,含分区表,控制页已内嵌)
  • moink_R1.2.2_app.bin:OTA 升级包(R1.2.0 起设备网页升级用)
  • page-R1.2.2.html:控制页热更包(网页「① 升级」上传,免刷机)

版本校验

刷完在设备页面「设置 → 设备信息」应显示:版本 R1.2.2 / 接口 2。

真机验收清单(五项)

  • V1 固件升级 + 设置保留(★本版重点):升级前先改「休眠档」「发射功率」、屏型选 A1 → 只上传 moink_R1.2.2_app.bin → 设备重启后版本显示 R1.2.2,且上述设置保持升级前的值,热点名 / 密码不变
  • V2 控制页热更:只上传 page-R1.2.2.html → 不重启,刷新浏览器即生效
  • V3 A1 屏:屏幕选 A1(已无「A1 驱动」二级菜单)→ 用非对称测试图验证 满屏无裁切 / 四角编号齐全 / 方向正确 / 无白边无条纹;若之前为 800×600 档勾过留白,请去掉四个留白勾
  • V4 GPIO 设置:四档轮流选并「保存并重启」,每次都能正常启动传图;自定义档验证已选 IO 自动消失、ADC 不能选到 GPIO4 以上或 GPIO2
  • V5 左右镜像:A1 固定正向,该勾选框对 A1 不再有作用(保留给 A0)

墨印 MoInk 基线版本:fw R1.0.11 + page R1.0.26

Choose a tag to compare

@atunverse atunverse released this 22 Sep 09:44

墨印 MoInk 基线版本:fw R1.0.11 + page R1.0.26

固件 fw R1.0.11(相对上一基线 fw R1.0.8)

  • 修复 A1 屏图像中部竖向白线:屏幕扫描分辨率改为控制器原生 800×600 全栅极驱动,内容垂直 552→600 / 水平 768→800 双向最近邻拉伸铺满(经真机两轮裁决定案:此前 768×552 欠驱动 48 条栅极所致;A0 屏不受影响)
  • WiFi 热点信道改 6、发射功率三档可调,改档即时生效
  • OTA 升级改逐扇区先擦后写 + 最小校验,更抗中断
  • 保存配置节流、图像缓存双槽 LRU
  • A1.1 屏(两半刷新批次)保留 V1–V8 驱动变体自查矩阵
  • 占用:RAM 12.2% / Flash 60.9%(完整清单见仓库 docs/CHANGELOG.md)

创作页面 page R1.0.26(相对 page R1.0.22)

  • 新增「标准」色彩档并设为默认:专业标定定稿参数(γ1.75,黄/红更亮更正),旧 sRGB 档保留可选
  • WiFi 功率设置下拉、A1.1 变体下拉
  • 拍立得 / 便签双模式、文字编辑、四色底色等沿袭 R1.0.22 全部能力(完整清单见仓库 docs/CHANGELOG.md)

资产说明

  • MoInk-FlashKit-fwR1.0.11_pageR1.0.26.zip:Windows 一键刷机包,解压后双击 bat 即可;电脑没有 Python 时会引导自动下载安装(首次刷机还会自动 pip 安装 esptool)
  • moink_R1.0.11_merged.bin:固件整包(USB 刷机,0x0 整包写入,页面已内嵌)
  • moink_R1.0.11_app.bin:OTA 升级包(设备网页「设置」页上传;R1.0.8 及以上均可直升)
  • page-R1.0.26.html:创作页面热更包(设备网页「设置」页上传,免刷机)

刷机方式

设备用数据线接电脑,解压刷机包后双击 MoInk一键刷机.bat,脚本自动选串口(跳过无 VID 的蓝牙虚拟口)。若卡在 "Stub running...",拔插 USB 后在命令行运行 python flash_on_pc.py --no-stub。

从旧版本升级(免数据线)

  • 已能开机的设备:网页「设置」页先上传 moink_R1.0.11_app.bin(固件 OTA,失败自动回滚),重启后再热更 page-R1.0.26.html 即可;刷整包则一步到位。
  • OTA 中途断传/校验失败会自动回滚旧固件,不会变砖,重传即可。

本版本为当前基线版本。

墨印 MoInk 基线版本:fw R1.0.8 + page R1.0.22

Choose a tag to compare

@atunverse atunverse released this 18 Sep 05:56

墨印 MoInk 基线版本:fw R1.0.8 + page R1.0.22

固件 fw R1.0.8

  • 全面代码审查后的批量整合修复:残影清理与传图互斥、页面校验三态缓存提速、上传链路喂看门狗、NVS 写入收敛等(完整清单见仓库 docs/CHANGELOG.md)
  • 占用:RAM 12.0% / Flash 60.5%

创作页面 page R1.0.22

  • 拍立得 / 便签双模式、所见即所得文字编辑、四色底色与描边、竖屏编辑空间等(完整清单见仓库 docs/CHANGELOG.md)

资产说明

  • MoInk-FlashKit-fwR1.0.8_pageR1.0.22.zip:Windows 一键刷机包,解压后双击 bat 即可;电脑没有 Python 时会引导自动下载安装(首次刷机还会自动 pip 安装 esptool)
  • moink_R1.0.8_merged.bin:固件整包(USB 刷机,0x0 整包写入)
  • moink_R1.0.8_app.bin:OTA 升级包(设备网页「设置」页上传)
  • page-R1.0.22.html:创作页面热更包(设备网页「设置」页上传,免刷机)

刷机方式

设备用数据线接电脑,解压刷机包后双击 MoInk一键刷机.bat,脚本自动选串口(跳过无 VID 的蓝牙虚拟口)。若卡在 "Stub running...",拔插 USB 后在命令行运行 python flash_on_pc.py --no-stub。

本版本为当前基线版本。