1. 巴掌大电脑到底是个什么东西
第一次看到"巴掌大电脑"这个词,很多人脑子里浮现的可能是那种几十块钱的电视棒,插在HDMI口上跑个安卓,卡得连滑动都费劲。但我今天要聊的这台,是完全另一个物种——它本质上就是一块树莓派(Raspberry Pi)主板,被塞进了一个带屏幕、带键盘、带电池的定制外壳里,合上盖子跟一个厚一点的记事本差不多大,打开盖子就是一台完整的Linux终端。
我手上这台是基于树莓派4B(4GB内存版本)改的掌上终端,外壳是3D打印的,屏幕用的是一块5英寸的IPS电容触摸屏,分辨率800×480,键盘是那种带背光的迷你蓝牙键盘改的有线连接,电池用的是一块10000mAh的锂聚合物电池加一块UPS扩展板。整套东西装完之后,重量大概在480克左右,比一瓶矿泉水重一点,揣在包里完全没负担。
你可能会问,这玩意儿到底能干什么?说白了,它就是一台跑着完整Linux系统的微型计算机。你可以用它写代码、跑脚本、连SSH管理服务器、做网络调试、当便携式下载机、做物联网网关、甚至跑RetroPie玩模拟器游戏。我平时出门的时候基本不带笔记本了,就带这个,遇到需要改配置、查日志、跑个Python脚本的场景,掏出来就能干活。
适合哪些人参考这个方案?我觉得有三类人特别合适:第一类是嵌入式开发和Linux运维的朋友,需要一个随身携带的调试终端;第二类是折腾党、DIY爱好者,喜欢把东西拆了装装了拆,享受从零搭建的过程;第三类是学生党,想学Linux但预算有限,树莓派加配件整套下来比一台二手笔记本便宜不少,而且能学到的东西更底层。
但我要提前说清楚,这个东西不是给所有人准备的。如果你只是想要一台便宜的上网本,那直接买二手笔记本更省事。掌上终端的核心价值在于可定制性和学习价值,你得愿意折腾,愿意踩坑,才能体会到它的乐趣。
2. 为什么选树莓派而不是其他方案
2.1 树莓派的核心优势在哪
市面上能跑Linux的微型开发板多得是,香橙派、香蕉派、Rock Pi、Jetson Nano,为什么我最后还是选了树莓派?原因其实很实际。
第一是社区生态。树莓派从2012年第一代发布到现在,积累了海量的教程、项目、问答帖。你遇到任何问题,基本上搜一下就能找到答案。我试过用某国产开发板做类似的项目,遇到驱动问题的时候,官方论坛冷冷清清,GitHub上的issue半年没人回,最后只能自己啃数据手册。树莓派就不一样了,哪怕你问一个很基础的问题,也有人愿意帮你。
第二是系统支持。Raspberry Pi OS(原来叫Raspbian)是基于Debian的,包管理用apt,跟你在服务器上用的Ubuntu/Debian几乎一模一样。这意味着你在树莓派上学到的Linux命令、配置方法,可以直接迁移到工作环境里。而且树莓派官方还支持Ubuntu、Fedora、Arch等主流发行版,你想换系统随时可以换。
第三是GPIO引脚。树莓派40针的GPIO排针是它的灵魂。你可以接传感器、继电器、舵机、显示屏,做各种硬件交互项目。我后面会详细讲引脚的使用方法,这是掌上终端区别于普通笔记本的核心能力。
第四是功耗和体积。树莓派4B的典型功耗在3-5W左右,满载也就7W出头。一块10000mAh的电池,理论上能撑6-8小时。这个续航水平对于便携设备来说完全够用了。
2.2 树莓派4B和树莓派5怎么选
现在市面上主流的是树莓派4B和树莓派5。我两台都有,说说实际体验。
树莓派5的CPU从Cortex-A72升级到了Cortex-A76,主频从1.5GHz提到了2.4GHz,性能提升大概在2-3倍。内存带宽也翻倍了,PCIe接口也开放了。跑桌面环境的时候,树莓派5明显更流畅,打开浏览器、播放视频都不卡。但代价是功耗上去了,满载能到12W左右,发热也更大,必须加散热片或者风扇。
树莓派4B的优势在于成熟稳定和功耗低。它的性能跑轻量级桌面环境完全够用,做终端用途更是绰绰有余。而且4B的配件生态更丰富,各种外壳、屏幕、扩展板都是现成的,价格也便宜不少。
我的建议是:如果你预算充足,追求性能,直接上树莓派5;如果你更看重续航和稳定性,或者预算有限,树莓派4B完全够用。我手上这台掌上终端用的是4B,因为它的功耗控制更好,电池续航更理想。
2.3 屏幕和键盘的选型逻辑
屏幕这块我踩过不少坑。最开始用的是3.5英寸的SPI屏幕,分辨率480×320,刷新率低得可怜,拖个窗口都卡。后来换了5英寸的HDMI屏幕,分辨率800×480,刷新率60Hz,体验好了很多。再后来试过7英寸的IPS屏幕,分辨率1024×600,效果最好,但体积也大了,塞不进我那个外壳里。
最后我选的是5英寸HDMI电容触摸屏,原因有三个:一是HDMI接口不占用GPIO引脚,可以把引脚留给其他传感器;二是电容触摸比电阻触摸灵敏得多,操作体验接近手机;三是800×480的分辨率在5英寸屏幕上显示终端和轻量级桌面刚刚好,字不会太小。
键盘我试过三种方案。第一种是USB迷你键盘,便宜但体积大,线材也乱。第二种是蓝牙键盘,无线很清爽,但配对有时候会抽风,而且占一个USB口给蓝牙适配器。第三种是I2C接口的矩阵键盘,体积最小,但需要自己写驱动,按键手感也一般。最后我选的是USB接口的折叠键盘,体积适中,手感不错,插上就能用,不需要额外配置。
提示:选屏幕的时候一定要注意接口类型。SPI屏幕便宜但刷新率低,HDMI屏幕贵但体验好。如果你要做掌上终端,强烈建议上HDMI屏幕,别为了省几十块钱牺牲使用体验。
3. 硬件组装的核心细节
3.1 树莓派5引脚图与4B引脚图的区别
先说说引脚。树莓派4B和树莓派5的40针GPIO排针布局是完全兼容的,引脚定义一模一样。这意味着你为4B设计的扩展板,插到5上也能用。但有几个细节需要注意。
树莓派5新增了一个UART调试接口,位置在板子边缘,是一个3针的JST接口。这个接口在4B上是没有的,它是用来接调试串口的,方便你在系统起不来的时候查看启动日志。如果你要做深度调试,这个接口很有用。
另外树莓派5的PCIe接口是新的,通过一个FPC排线座引出。你可以接NVMe固态硬盘,速度比SD卡快得多。但掌上终端一般用不到这个,SD卡或者USB启动就够了。
引脚编号方式有两种:BCM编号和物理编号。BCM编号是芯片内部的GPIO编号,物理编号是排针上的位置编号。写代码的时候用BCM编号,接线的时候看物理编号。我建议你打印一张引脚图贴在壳子内侧,接线的时候随时对照,能省很多事。
常用的引脚就那么几个:GPIO2和GPIO3是I2C的SDA和SCL,GPIO14和GPIO15是UART的TX和RX,GPIO18是PWM输出,GPIO4是1-Wire总线。电源引脚有3.3V、5V和GND,接传感器的时候千万别接错电压,3.3V的传感器接到5V上直接就烧了。
3.2 散热方案的选择与风扇转速控制
树莓派4B的发热其实还好,日常使用不加散热片也就50-60度。但如果你要跑编译或者长时间满载,温度能到80度以上,这时候就会触发降频,性能直接砍半。所以散热必须做。
我试过三种散热方案。第一种是纯铝散热片,便宜,静音,但散热效果一般,满载温度还是在75度左右。第二种是散热片加5V小风扇,效果最好,满载能压到55度以下,但风扇噪音有点大。第三种是散热片加温控风扇,风扇只在温度超过60度的时候才转,兼顾了散热和静音。
温控风扇的接线很简单:风扇的电源正极接到GPIO18(物理引脚12),负极接GND。然后在系统里配置一下,让GPIO18根据CPU温度输出PWM信号。具体配置方法我后面会讲。
风扇转速的控制逻辑是这样的:CPU温度低于55度,风扇不转;55-65度,风扇以30%转速运行;65-75度,50%转速;75度以上,全速运行。这样既能保证散热,又不会一直有噪音。
注意:树莓派的GPIO引脚输出电流有限,单个引脚最大16mA,所有引脚加起来不超过100mA。如果你用的风扇电流超过这个值,必须加一个三极管或者MOS管来驱动,否则会烧引脚。我一般用2N2222三极管,便宜好用。
3.3 电池与电源管理
电池这块我用的是10000mAh的锂聚合物电池,标称电压3.7V,充满电4.2V。树莓派需要5V供电,所以中间需要一个升压模块,把3.7V升到5V。升压模块我选的是基于IP5306芯片的,支持边充边放,输出电流最大2.4A,足够树莓派4B用了。
这里有个坑要注意:树莓派4B的峰值电流能到1.5A以上,如果升压模块的输出电流不够,系统会随机重启。我一开始用的一个便宜升压板,标称2A输出,但实际上带载能力不行,树莓派一跑重负载就重启。后来换了IP5306的方案,稳得很。
电池容量的计算是这样的:10000mAh是电池的标称容量,但这是3.7V下的容量。升压到5V之后,实际可用容量要打个折。按照能量守恒,3.7V×10000mAh=37Wh,5V下就是37Wh÷5V=7400mAh。再考虑升压模块的效率大概85%,实际可用容量约6300mAh。树莓派4B日常使用电流约500mA,所以续航大概是6300÷500=12.6小时。当然这是理论值,实际用下来大概8-10小时,因为屏幕也要耗电。
电源管理还有一个细节:关机的时候不能直接拔电池,要先在系统里执行关机命令,等系统完全关闭后再断电。否则文件系统可能会损坏,下次开机就起不来了。我一般会在外壳上装一个物理开关,关机的时候先软关机,再拨开关断电。
4. 系统安装与基础配置
4.1 系统镜像的选择与烧录
树莓派官方提供了Raspberry Pi Imager这个工具,Windows、macOS、Linux都有,下载下来直接就能用。打开之后选择你的树莓派型号,然后选系统镜像,再选SD卡,点写入就行了。整个过程大概10-15分钟,取决于SD卡的速度。
系统镜像我推荐用Raspberry Pi OS Lite版本,也就是不带桌面环境的版本。为什么?因为掌上终端的主要用途是终端操作,桌面环境占资源还占空间。如果你确实需要桌面,可以选带桌面的版本,或者先装Lite版,后面需要的时候再手动装桌面。
烧录之前有个小技巧:在Imager的高级选项里,可以预先配置WiFi、SSH、用户名密码、时区这些信息。这样烧录完之后,树莓派一开机就能自动连上WiFi,你直接SSH进去就行了,不需要接显示器和键盘。这个功能特别实用,强烈建议用上。
SD卡的选择也有讲究。树莓派对SD卡的读写速度很敏感,用慢卡的话系统会卡顿。我推荐用Class 10以上的卡,最好是A1或A2等级的。容量32GB起步,64GB更宽裕。品牌的话,三星、闪迪、金士顿都行,别买杂牌的,容易掉盘。
4.2 首次开机与基础配置
烧录完成之后,把SD卡插进树莓派,接上电源,等个一两分钟,系统就起来了。如果你在Imager里配置了WiFi和SSH,这时候就可以在电脑上SSH连过去了。默认用户名是你在Imager里设置的那个,密码也是。
连上之后,第一件事是更新系统。执行sudo apt update && sudo apt upgrade -y,这个过程可能要几分钟到十几分钟,取决于网络速度和更新量。更新完之后,执行sudo raspi-config进入配置界面。
在raspi-config里,我一般会做这几件事:第一,修改时区为Asia/Shanghai;第二,扩展文件系统,让系统使用整张SD卡的空间;第三,启用I2C、SPI、UART这些接口,后面接传感器要用;第四,设置GPU显存,如果你要用桌面环境,建议设到128MB或256MB。
4.3 修改软件源提升下载速度
树莓派默认的软件源在国外,国内下载速度很慢。修改成国内源之后,apt安装软件的速度能快好几倍。具体操作是编辑/etc/apt/sources.list文件,把里面的raspbian.raspberrypi.org替换成国内镜像站的地址。
我一般用清华源或者中科大源。以清华源为例,把文件内容改成:
deb https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye-updates main contrib non-free然后还要编辑/etc/apt/sources.list.d/raspi.list,把里面的地址也换成清华源。改完之后执行sudo apt update,如果没报错就说明改对了。
提示:修改源之前先备份原文件,执行
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak。万一改错了,还能恢复回来。
4.4 安装常用工具和桌面环境
系统更新完之后,我一般会装一些常用工具:vim、git、htop、tmux、curl、wget、python3-pip。这些工具在日常使用中频率很高,建议一次性装好。
如果你需要桌面环境,可以装xserver-xorg、xinit、openbox这些轻量级的组件。我不推荐装完整的LXDE或者XFCE,太重了。Openbox就够了,配合tint2任务栏和pcmanfm文件管理器,体验很清爽。
桌面环境装完之后,配置一下自动登录和自动启动X。编辑~/.bash_profile,加上startx命令,这样一开机就自动进桌面。然后在~/.xinitrc里配置要启动的程序,比如终端、文件管理器这些。
5. 掌上终端的软件配置与优化
5.1 屏幕旋转与触摸校准
5英寸的HDMI屏幕默认是横屏显示的,但我的外壳设计是竖屏使用,所以需要旋转屏幕。旋转的方法是在/boot/config.txt里加一行display_rotate=1,1表示旋转90度,2是180度,3是270度。改完之后重启生效。
触摸校准稍微麻烦一点。HDMI屏幕的触摸信号是通过USB传输的,系统识别为一个输入设备。如果旋转了屏幕但没校准触摸,你会发现触摸位置和显示位置对不上。校准的方法是安装xinput-calibrator,运行之后按照提示点击屏幕上的十字光标,它会自动计算出校准参数。
校准参数需要保存到/etc/X11/xorg.conf.d/目录下的一个conf文件里,这样每次开机都会自动加载。具体格式是:
Section "InputClass" Identifier "touchscreen" MatchProduct "Your Touchscreen Name" Option "Calibration" "0 800 0 480" EndSection里面的数值根据你的实际校准结果来填。
5.2 风扇转速的自动控制脚本
前面提到了温控风扇,这里说说具体怎么实现。首先需要装一个Python库叫RPi.GPIO,用pip安装就行。然后写一个脚本,读取CPU温度,根据温度设置PWM占空比。
读取CPU温度的方法是读取/sys/class/thermal/thermal_zone0/temp文件,里面的数值除以1000就是摄氏度。PWM输出用RPi.GPIO的PWM类,频率设成100Hz就行。
脚本写完之后,加到/etc/rc.local里,让它在开机的时候自动运行。或者用systemd创建一个服务,更规范一些。我一般用systemd,因为可以设置自动重启,脚本挂了也能拉起来。
5.3 远程控制与文件传输
虽然掌上终端本身就有屏幕和键盘,但有时候我还是会从电脑上远程连过去操作,毕竟大屏幕和全尺寸键盘更舒服。树莓派官方提供了远程控制功能,在raspi-config里启用就行。启用之后,你可以在浏览器里访问树莓派的IP地址,直接看到它的桌面,还能用鼠标键盘操作。
文件传输我一般用scp命令,简单直接。比如把电脑上的文件传到树莓派:scp localfile.txt pi@192.168.1.100:/home/pi/。反过来从树莓派下载文件:scp pi@192.168.1.100:/home/pi/remotefile.txt ./。
如果你需要更图形化的方式,可以装一个filezilla或者用rsync。rsync的好处是支持增量传输,传大文件的时候特别快。
5.4 打造共享相册与媒体中心
树莓派还可以当共享相册和媒体中心用。装一个minidlna或者plex,把照片和视频放进去,家里其他设备就能直接访问了。我试过用树莓派4B跑Plex,1080P的视频直接播放没问题,4K的话就有点吃力了,会卡顿。
共享相册的话,可以用nextcloud或者photoprism。Nextcloud功能全但比较重,Photoprism轻量一些,专门做照片管理。我最后选的是Photoprism,因为它支持AI自动分类,能按人脸、地点、物体来整理照片,很省心。
6. 常见问题与排查技巧实录
6.1 系统起不来怎么办
这是最常见的问题,原因可能有很多。首先检查电源,树莓派对电源很挑剔,电压不够或者电流不足都会导致起不来。用万用表量一下电源输出,确保是5V±5%,电流至少2.5A。
如果电源没问题,检查SD卡。把SD卡插到电脑上,看看能不能识别。如果识别不了,说明卡坏了,换一张。如果能识别但系统起不来,可能是镜像烧录有问题,重新烧录一遍。
还有一个可能是config.txt配置错了。比如你改了分辨率或者旋转参数,但参数不对,系统就起不来了。这时候可以把SD卡插到电脑上,直接编辑config.txt,把改错的参数删掉或者注释掉。
6.2 网络连不上怎么排查
先看网线插了没,WiFi密码对不对。如果是有线连接,检查路由器那边的指示灯亮不亮。如果是WiFi,用iwconfig命令看看有没有识别到无线网卡。
如果网卡识别到了但连不上,可能是wpa_supplicant.conf配置有问题。这个文件在/etc/wpa_supplicant/目录下,里面存的是WiFi的SSID和密码。检查一下SSID有没有写错,密码有没有特殊字符。
还有一种情况是IP地址冲突。用arp -a命令看看局域网里有没有其他设备用了同一个IP。如果有,改一下树莓派的IP或者重启路由器。
6.3 屏幕不显示或显示异常
先检查HDMI线有没有插紧,换一根线试试。如果线没问题,检查config.txt里的HDMI配置。有时候分辨率设得太高,屏幕不支持,就会黑屏。把分辨率调低一点试试。
如果是显示花屏或者颜色不对,可能是HDMI的像素时钟或者时序参数不对。在config.txt里加hdmi_drive=2强制HDMI模式,或者加hdmi_group=2和hdmi_mode=87手动指定分辨率。
触摸不灵的话,先确认触摸的USB线插了没。然后用lsusb命令看看有没有识别到触摸设备。如果识别到了但触摸位置不对,就是前面说的校准问题。
6.4 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 开机无反应 | 电源不足 | 万用表量电压 | 换5V/3A电源 |
| 系统卡顿 | SD卡速度慢 | 测SD卡读写速度 | 换Class 10以上卡 |
| WiFi连不上 | 配置文件错误 | 检查wpa_supplicant.conf | 重新配置WiFi |
| 屏幕黑屏 | HDMI配置错误 | 检查config.txt | 调整分辨率参数 |
| 触摸不准 | 未校准 | 运行xinput-calibrator | 保存校准参数 |
| 风扇不转 | GPIO配置错误 | 检查接线和脚本 | 重新配置GPIO |
| 温度过高 | 散热不足 | 查看CPU温度 | 加散热片或风扇 |
| 电池续航短 | 电池老化 | 测电池容量 | 更换电池 |
提示:遇到问题的时候,先看日志。
dmesg命令能看到内核日志,/var/log/syslog能看到系统日志。大部分问题都能从日志里找到线索。
7. 进阶玩法与项目扩展
7.1 用树莓派Pico控制舵机
树莓派Pico是另一块板子,跟树莓派4B不是一回事。Pico用的是RP2040芯片,双核Cortex-M0+,主打实时控制和硬件交互。如果你想做机器人或者云台,Pico比4B更合适,因为它的PWM输出更精准,实时性更好。
用Pico控制舵机很简单。舵机有三根线:电源、地、信号。电源接5V,地接GND,信号接Pico的GPIO引脚。然后写一段MicroPython代码,用PWM控制舵机角度。舵机的控制信号是50Hz的PWM,脉宽0.5ms对应0度,2.5ms对应180度。
7.2 部署YOLOv5做目标检测
树莓派4B跑YOLOv5是可行的,但帧率不高,大概2-5帧每秒。如果你要做实时检测,建议用树莓派5或者加一个神经计算棒。部署的步骤大概是:装PyTorch、装YOLOv5、下载预训练模型、用ONNX或者NCNN加速。
我实测下来,用NCNN加速之后,树莓派4B跑YOLOv5s模型能到5帧左右,勉强能用。如果只是做静态图片检测,那完全没问题,一张图几秒钟就出结果了。
7.3 采集卡与视频输入
树莓派可以通过USB采集卡接HDMI视频输入,把树莓派当成一个便携式监视器或者录像机。采集卡我推荐用UVC协议的,免驱,插上就能用。然后用ffmpeg或者mplayer就能预览和录制视频了。
这个玩法很适合做现场直播或者视频监控。树莓派4B处理1080P30的视频输入没问题,再高就不行了。如果你要处理4K,得上树莓派5。
7.4 打造便携式渗透测试终端
这个玩法偏安全方向,但我要强调,只能在你自己拥有或获得明确授权的设备上使用。树莓派可以装Kali Linux,配合外置无线网卡,做无线安全审计。但请务必遵守法律法规,不要对未经授权的网络进行任何操作。
Kali Linux有专门的树莓派镜像,烧录之后直接就能用。常用的工具都预装了,省去了配置的麻烦。配合掌上终端的外形,出门做安全评估的时候很方便。
8. 我踩过的坑和实操心得
第一个坑是电源。我一开始用的是一个普通的5V/2A充电宝,树莓派一跑重负载就重启。后来换了一个支持PD协议的充电宝,输出5V/3A,就再也没重启过。所以电源这块千万别省,一定要选输出电流足够的。
第二个坑是SD卡。我用过一张杂牌的32GB卡,系统装好之后用了不到一个月就掉盘了,数据全丢。后来换了三星的EVO Plus,用了大半年一点问题没有。SD卡是系统盘,质量一定要好,不然数据丢了哭都来不及。
第三个坑是散热。我一开始觉得树莓派4B发热不大,没加散热片。结果跑编译的时候温度直接飙到85度,触发降频,编译时间翻倍。后来加了散热片和风扇,温度稳定在55度以下,性能也稳定了。
第四个坑是屏幕供电。5英寸的HDMI屏幕需要额外的USB供电,我一开始从树莓派的USB口取电,结果屏幕亮度一高树莓派就重启。后来单独给屏幕接了一路电源,问题解决。所以外设的供电一定要算清楚,别都从树莓派上取。
第五个坑是系统备份。我辛辛苦苦配置好的系统,有一次因为误操作把/boot/config.txt改错了,系统起不来,只能重装。后来我学会了用dd命令备份整个SD卡,出问题了直接恢复,省了很多时间。备份命令是sudo dd if=/dev/sdX of=backup.img bs=4M status=progress,把sdX换成你的SD卡设备名。
提示:备份之前先执行
sudo apt clean清理缓存,能减小备份文件的大小。恢复的时候用sudo dd if=backup.img of=/dev/sdX bs=4M status=progress,注意别把if和of写反了,写反了会把你的备份文件覆盖掉。
最后分享一个小技巧:如果你经常需要在外网访问树莓派,可以用tailscale或者zerotier组建虚拟局域网。这两个工具都是免费的,配置简单,安全性也不错。装好之后,不管树莓派在哪里,你都能像在同一个局域网里一样访问它。
这个掌上终端我用了大半年了,出门必带。它不能替代笔记本,但在很多场景下比笔记本更方便。掏出来就能用,合上就走,这种随取随用的体验是笔记本给不了的。如果你也喜欢折腾,强烈建议自己动手做一台,过程中的收获远比成品本身更有价值。