本教程所采用的方案源自社区开发者 BD4SUR的个人项目“电子鹦鹉 Nano”。
该项目基于 Andrej Karpathy 的开源项目 llama2.c 进行二次开发,新增了 I2C 键盘输入与 OLED 屏幕输出功能,属于学习与实验性质的原型实现,已通过 MIT 协议开源。
欢迎访问项目仓库(https://github.com/bd4sur/Nano)查看完整代码、模型文件及更多演示场景。
在树莓派5代上,Qwen3-0.6B 的推理速度可以达到每秒8~12个词元。
通过九键输入法输入中英文文本。
暂时不支持多轮对话,只支持单轮对话(历史问答不会被输入到本轮输入的提示词中)。
如果你希望亲手体验“数据不出设备”的私有 AI 助手,不妨跟着本教程一步步操作。为了能够顺利部署,希望您具备一些前置知识,例如访问网络、电子制作、Linux 系统等等。
硬件准备
请根据以下清单准备所需材料:
树莓派5代:建议内存为 4GB 或以上,越大越好。并加装官方主动散热器以保障长时间推理的稳定性;
microSD 卡或者 SSD:用于安装系统和存放模型文件,建议容量不小于 16GB(若使用 NVMe SSD,可显著缩短模型加载时间);
电源:推荐使用树莓派官方 5V5A 电源,避免因供电不足导致性能下降或系统不稳定;
OLED 屏幕:需为基于 SSD1309 芯片的 128×64 点阵 I2C 接口 OLED 显示屏;
矩阵键盘:I2C 接口,设备地址为 0x27,支持通过指令 0x03 轮询读取键码(无按键时返回键码 16);
杜邦线若干:用于连接树莓派与 OLED、键盘模块;
显示器、键盘、鼠标(可选):用于初始系统配置;也可通过 SSH 以“无头”方式远程操作。
按照以下图示,连接各个模块:
⚠️重要提示:切勿带电插拔模块。切勿接反或短路电源线和地线。避免导电物体接触裸露的电子模块,以防意外短路。建议操作前先通过洗手、触摸墙壁等方式释放身上的静电,或者戴防静电手环操作。
软件准备
🟣第一步:安装系统并配置基础环境
首先,按照树莓派官方文档
(https://www.raspberrypi.com/documentation/computers/getting-started.html)说明,在电脑上下载树莓派系统烧录工具,将 Raspberry Pi OS (64-bit)烧录进 microSD卡。建议使用树莓派官方系统,避免不必要的麻烦。(注:如果想减少模型加载的等待时间,可以使用 NVMe 的 SSD)
随后,将显示器、键盘、网线连接到树莓派,将烧录了操作系统的 microSD 卡插入插槽,确保所有模块按照上文说明正确连接,插入电源,树莓派应能自动启动。按照树莓派官方文档的说明,完成网络、账户密码等配置(下文使用的用户名为pi),进入 Raspberry Pi OS。
打开终端,执行gcc --version,若未报错,则意味着编译工具链已成功安装,进入第二步。否则,执行以下命令,更新并安装必要软件:
sudoaptupdatesudoaptinstallgitbuild-essential
🟣第二步:启用并设置I2C端口
打开终端,执行:
sudonano/boot/firmware/config.txt
编辑器打开后,在 config 文件中,将dtparam=i2c_arm=off这一行改成以下内容,以启用 I2C 端口,并将其速率设置为400kHz:
dtparam=i2c_arm=on,i2c_arm_baudrate=400000
保存并退出,随后执行sudo reboot重启树莓派。
重启之后,执行以下命令,检查能否正确识别OLED屏幕和矩阵键盘两个设备:
sudoi2cdetect1-y
如果显示的内容中有27 和 3c(如下),说明树莓派已经识别到了两个 I2C 设备,其中 0x27 是矩阵键盘, 0x3c 是 OLED 屏幕。
0123456789abcdef00:----------------10:--------------------------------20:--------------27----------------30:------------------------3c------40:--------------------------------50:--------------------------------60:--------------------------------70:----------------
🟣第三步:拉取代码并编译
首先,拉取代码仓库到本地,并进入代码目录:
#假设当前用户名为picd/home/pigitclonehttps://github.com/bd4sur/Nano.gitcdNano/nanochat
再将代码编译为可执行文件:
make-j4
编译完成后,在当前目录中会出现一个新的可执行文件nanochat。
在执行程序之前,先从HuggingFace或者ModelScope下载转换好的模型文件,并将其放置于model目录下(注:所有模型加起来大约将近7GB)。
# 进入模型目录cdmodel# 从HuggingFace下载wget -c https://huggingface.co/bd4sur/Qwen3/resolve/main/qwen3-0b6-q80.binwget -c https://huggingface.co/bd4sur/Qwen3/resolve/main/qwen3-1b7-q80.binwget -c https://huggingface.co/bd4sur/Qwen3/resolve/main/qwen3-4b-instruct-2507-q80.binwget -c https://huggingface.co/bd4sur/Nano-168M/resolve/main/nano_168m_625000_sft_947000_q80.bin# 或者从ModelScope下载wget -c https://modelscope.cn/models/bd4sur/qwen3_nano/resolve/master/qwen3-0b6-q80.binwget -c https://modelscope.cn/models/bd4sur/qwen3_nano/resolve/master/qwen3-1b7-q80.binwget -c https://modelscope.cn/models/bd4sur/qwen3_nano/resolve/master/qwen3-4b-instruct-2507-q80.binwget -c https://modelscope.cn/models/bd4sur/Nano-168M/resolve/master/nano_168m_625000_sft_947000_q80.bin
模型下载完成后,返回上一级目录,执行刚刚编译得到的nanochat:
cd.../nanochat
如果一切正常,OLED屏幕亮起,可以开始与电子鹦鹉对话啦(效果见文末)。
使用方法
首先介绍16 键矩阵键盘的功能。
1 | 2 | 3 | 4 |
1 英文符号 | 2 ABC | 3 DEF | A 返回/退格 |
4 GHI | 5 JKL | 6 MNO | B 汉英数切换 |
7 PQRS | 8 TUV | 9 WXYZ | C 无功能 |
* 向上 | 0 符号 | # 向下 | D 确认/输入 |
程序启动后,OLED 屏幕首先显示主屏幕(图1)。在主屏幕中,按下任意按键,即可进入主菜单(图2)。在主菜单中,使用 【*】 和 【#】 键上下移动光标,按 【D】 键确认选择。
图1、图2
选择“电子鹦鹉”选项,进入模型选择菜单(图3),选择所需的模型,待模型加载完毕后(模型加载需要几秒到几十秒的时间,具体因模型的尺寸而异),进入文字输入状态(图4)。
图3、图4
在文字输入状态下,按【*】和【#】键移动光标,按【A】键删除光标左侧的1个字符,按【B】键切换汉字/英文字母/数字输入状态,按【D】键确认输入。如果输入框内没有内容,则按【A】键会返回主菜单。
▪️汉字输入状态,类似于手机的九键拼音输入法。
例如,要输入“你”字,依次按【6】键(mno)和【4】键【ghi】,随着按键输入,屏幕最下方会出现已输入的按键组合所对应的全部候选字(图5)。
若拼音输入完毕,按下【D】键,开始选字,此时在候选字列表上方会出现一行数字(图6),直接按下对应的数字键,即可选中并输入相应的数字。
数字上方的(1/5)是候选字列表的页码,按【*】和【#】键可以向前向后翻页,查看更多候选字。在拼音输入的任何阶段,按【A】键都会退出拼音输入状态,回到文字输入状态。
图5、图6
▪️英文字母输入状态,类似于传统的T9英文输入法。
例如,要输入字母“d”,则按【2】键(def),屏幕下方会出现这个按键对应的候选字母(图7),同时出现一个倒计时进度条。
反复按同一个键,光标向右滚动,直至停留在想要的字母上,停止按键,待倒计时进度掉读完,则选中的字母被输入。【1】键对应的是常用的英文符号,输入方法与普通的字母按键一致。
▪️数字输入状态,按下某个数字键,直接输入对应的数字。
无论在哪种输入状态,长按【0】键,都会呼出符号候选列表(图8)。按【*】和【#】键可以向前向后翻页,按数字键,可选中并输入对应的符号。
图7、图8
文字输入完成后,按【D】键确认输入,此时屏幕上显示“Pre-filling...”和进度条,意味着模型推理引擎正在逐词读取输入内容。
读取完毕后,进入解码阶段,此时屏幕上开始显示大模型的回答内容,同时自动翻页到最底部。
待大模型回答完毕后,屏幕底部显示本次对话的生成速度。
此时,按【*】和【#】键可以向上向下翻页,查看全部回答内容,每按1次滚动1行,滚动到顶部或底部时可自动返回最底部或者最顶部。按【A】键,返回到文字输入状态。按【D】键,可以再次询问刚刚问过的问题。
点击查看效果gif图🔼
至此,你已成功在树莓派5上部署了一个完全离线、可交互的 Qwen3 AI 终端。
无需联网、不依赖云服务,所有推理都在你手中这台小巧的设备上完成,本教程所展示的“电子鹦鹉 Nano”为实验性原型,我们鼓励你在此基础上继续尝试:更换模型、优化交互、适配更多硬件,甚至为长辈打造一台“说明书问答机”或“离线办公助手”。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |