墨水屏阅读器
本项目是一款基于 Quectel Pi H1智能主控板的智能电子墨水屏阅读器。系统结合电子墨水屏低功耗显示特性与基于摄像头的眼动追踪技术,实现了无需手动操作的自然翻页阅读方式。通过检测用户眼球视线变化完成翻页控制,并配合物理按键作为辅助输入,提升系统可靠性。
在显示方面,系统采用局部刷新与分区渲染策略,支持中英文本的自动排版与连续阅读,同时具备页面记忆与快速唤醒功能,适用于长时间阅读及嵌入式智能终端应用场景。
开发资源汇总
开发配件清单
开发配件只是作为参考,不同的开发环境可能会有所差异,比如通过ssh远程连接进行开发,可以不使用USB扩展坞,显示屏也可以根据需要进行替换。
| 配件名称 | 数量 | 规格参数 |
|---|---|---|
| Quectel Pi H1 智能主控板 | 1块 | Quectel Pi H1 智能主控板 |
| USB-C 电源适配器 | 1个 | 27W USB Type-C接口充电器 1.2米线长中规电源PD电源 适用于树莓派5代 |
| HDMI 线 | 1根 | 规格:HDMI 2.0;线长:1m;接口:HDMI-A(公头)-HDMI-D(公头) |
| 网线 | 1根 | 线长:1m;传输速率:千兆; |
| CPU 散热风扇 | 1个 | 树莓派5代官方原装散热器带导热贴 |
| 7.5英寸墨水屏 | 1个 | 7.5寸墨水屏 e-Paper 800×480分辨率 黑白带板 |
| 扩展坞 | 1个 | 绿联 USB3.0扩展器扩展坞 |
| USB摄像头模块 | 1个 | OV5693 USB摄像头模块 |
| 显示屏 | 1个 | 24英寸HDMI显示器 |
配件实物参考
快速上手
开发准备
Quectel Pi H1智能主控板出厂默认搭载 Debian 13 系统镜像,因此无需再次烧录镜像,仅需按照如下步骤操作即可。
硬件连接
散热风扇安装
先将散热风扇的排线插入智能主控板的FAN插槽中,然后将散热器上的两端固定在智能主控板预留的插孔中,如下:
显示连接
将 HDMI 线一端接入智能主控板的 HDMI 接口,另一端接入显示器的 HDMI 接口。
输入设备连接
将 USB 键盘、鼠标接入扩展坞的USB接口,再将扩展坞接入智能主控板的USB接口,若用无线输入设备,将接收器插入扩展坞的USB口即可。
网络连接
将网线一端接入智能主控板的千兆网口,另一端接入路由器的网口(确保路由器已联网)。
跳线帽连接
智能主控板左上角标有AUTO_POWER_ON丝印的排针,确保已经用跳线帽短接。
供电连接
将 USB-A 电源线的 USB-A 端接入电源适配器,USB-C 端接入智能主控板的电源口(通常标注POWER IN)。
墨水屏连接
选择用PIN排线连接,参考下方的引脚对应表格:
| EPD 引脚 | BCM2835编码 | Board物理引脚序号 |
|---|---|---|
| VCC | 3.3V | 3.3V |
| GND | GND | GND |
| DIN | MOSI | 19 |
| CLK | SCLK | 23 |
| CS | CE0 | 24 |
| DC | 25 | 22 |
| RST | 17 | 11 |
| BUSY | 24 | 18 |
| PWR | 18 | 12 |
摄像头连接
将OV5693摄像头模块接入智能主控板或扩展坞的USB接口即可。
连接完成参考
项目实现
安装LG库
sudo apt update && sudo apt install python3-setuptools wget
wget https://github.com/joan2937/lg/archive/master.zip
unzip master.zip
cd lg-master
make
sudo make install
获取项目源码
- 在智能主控板的终端下新建e-ink-reader文件夹存放项目源码。
mkdir e-ink-reader
cd e-ink-reader
- 使用git命令克隆项目代码。
#安装git
sudo apt install -y git
#参考网上教程配置git然后克隆项目代码
git clone https://github.com/Quectel-Pi/demo-inkscreen-reader.git
- 在终端中运行命令修改文件夹权限。
sudo chmod -R 755 folder_path
例: sudo chmod -R 755 ~/e-ink-reader
配置Python环境
目前系统默认的python版本为3.13,而我们使用的MediaPipe模型需要的开发环境在python3.9-3.12,需要重新指定python路径,系统中已经安装了python3.10,我们修改python默认路径即可。
#备份当前Python路径链接
sudo cp /usr/bin/python3 /usr/bin/python3.backup
#删除当前Python路径链接
sudo rm /usr/bin/python3
# 创建新的路径链接指向Python 3.10
sudo ln -s /usr/bin/python3.10 /usr/bin/python3
#验证修改
ls -l /usr/bin/python3
python3 --version
激活Python虚拟环境
执行下面命令创建并激活Python虚拟环境.
python3.10 -m venv 文件夹名称
例:
python3.10 -m venv ~/mediapipe_env
source ~/mediapipe_env/bin/activate
安装Python依赖项
- 在e-ink-reader/demo-inkscreen-reader目录下输入命令安装项目依赖库。
pip install --upgrade pip
pip install -r requirements.txt
- 单独安装evdev库。
sudo ln -s /usr/bin/aarch64-linux-gnu-gcc /usr/bin/aarch64-qcom-linux-gcc
CPPFLAGS="-I/usr/include/python3.13 -I/usr/include/python3.10" CFLAGS="-I/usr/include/python3.13 -I/usr/include/python3.10" pip3 install --no-binary evdev evdev==1.9.2
编译墨水屏驱动程序
在e-ink-reader/demo-inkscreen-reader/components/e-Paper/Quectel-Pi-H1/c目录下编译墨水屏阅读器程序,若该目录出现epd文件则证明编译成功。
cd ~/e-ink-reader/demo-inkscreen-reader/components/e-Paper/Quectel-Pi-H1/c
make CC=gcc EPD=epd7in5V2
创建udev规则文件
- 先输入下面命令创建并打开udev规则文件。
sudo nano /etc/udev/rules.d/99-uinput.rules
- 在文件中添加下面语句,按下"ctrl + o" + Enter保存编辑内容,然后按下"ctrl + x"退出编辑。
KERNEL=="uinput", MODE="0660", GROUP="input"
添加Input组
将用户添加至input 组。
sudo usermod -aG input pi
开启SPI功能
在终端输入下面命令开启SPI功能。
sudo qpi-config 40pin set
验证配置
- 重启系统后在终端输入下面命令验证用户是否在 input 组中以及udev规则配置是否生效。
ls -l /dev/uinput
groups
- 验证SPI功能是否开启。
ls /dev/spi*
配置免密运行程序
在终端输入下面命令配置免密运行epd程序。
echo "pi ALL=(ALL) NOPASSWD: /home/pi/e-ink-reader/demo-inkscreen-reader/components/e-Paper/Quectel-Pi-H1/c/epd" | sudo tee /etc/sudoers.d/e-ink-reader
准备书籍文件
将您的 .txt 文件放入e-ink-reader/demo-inkscreen-reader/books目录下,并确保编码为 GB2312。
Windows 用户操作路径:记事本 → 另存为 → 编码选"ANSI"(即 GB2312)。
运行程序
打开系统终端在e-ink-reader/demo-inkscreen-reader路径下执行bulid.sh脚本来运行项目:
cd ~/e-ink-reader/demo-inkscreen-reader
./bulid.sh
功能列表
- 眼动翻页操作
- 向下翻页:保持阅读姿势,按正常速度,从屏幕顶部开始往下阅读,当视线到屏幕底部时,只需将目光移至屏幕顶部,即可触发翻页操作
- 向上翻页:向上翻页需通过物理按键操作
- 物理按键翻页操作
- 短按按键KEY1:向下翻页
- 短按按键KEY2:向上翻页
- 长按按键KEY1:切换到下一本书
- 长按按键KEY2:切换到上一本书