最近在一篇文章上看到关于使用 NodeJS 控制树莓派硬件编程的文章,顿时起了兴致,准备也搞一个来玩玩。其实早在几年前就看到有关树莓派的内容,只是对 C 语言或 Python 编程不熟,玩不起来,所以迟迟未能入手。
刚好同事有一个树莓派,拿来玩了几天后基本搞懂怎么用了,于是自己也买了一个 ?
左边这个是我的,最新版的 3B,没有买盒子,275 人民币入手,加上电源 300 元;右边的是同事的,买的比较早,型号是 B+。
下面就说一些常见的问题以及我自己遇到的问题吧。
先上一张针脚图。
系统安装
系统安装算是整个使用过程中最顺利的部分,也不准备多说。去官网下载最新版本的 Raspbian 系统,有两个版本可供选择。一个是 WITH PIXEL
的版本,有桌面以及 Office、Chrome 等一些常用的软件;另一个版本是 LITE
,是个最简版的系统,没有桌面,只能通过命令行操作。
无论选择哪个版本,安装方法都是一样的,很多地方都可以找到相关的资料。主要就是下载一个 SDFormatter 工具用于格式化内存卡,一个 win32diskimager 用于写入镜像。其中后者只有 Windows 的版本,不过可以在虚拟机中完成操作。格式化及写入镜像的时候注意盘符。
镜像写入完成后把内存卡插入到树莓派中开机即可,没有什么安装过程,系统初始化后就可以进入桌面(或命令行界面)。
没有鼠标键盘时如何安装
第一次安装的时候尽量使用鼠标键盘,可以避免很多麻烦。实在没有也没关系。
没有鼠标键盘时一定要有网线,这样才可以从其它电脑上通过 SSH 连接到树莓派。不过最新版的 Raspbian 系统默认是禁用 SSH 的,所以要么在开机后连接键盘使用命令启用 SSH,另一种方式就是在把内存卡插在电脑上,往内存卡里面写入一个文件名为 .ssh
的空文件。系统启动时如果检测到 .ssh
文件就会启用 SSH,同时也会禁用显示器。这种方式非常适合安装 LITE
版系统的用户。
有桌面的版本同样可以使用上面的方法启用 SSH,在通过 SSH 连接上派以后再用命令打开 VNC 功能,重启后就可以使用 VNC 连接到派了。(最新版的系统是预装 VNC 的,电脑上只需要下载一个客户端就可以了,如 VNC Viewer)
内存卡的选择
此处有坑。最开始我以为内存卡作为树莓派的启动盘,肯定速度越快越有优势,所以买了速度等级最高的 U3 卡,32GB 的,价格比同样 32GB 的 U1 卡或 C10 卡贵了近 80 块钱。后来把卡装进去才发现不是那么回事,速度并没有比之前的 U1 卡快 ? 于是各种查资料,发现树莓派最高能支持的读写速度是 20MB/s,我买的那个是读速度 90MB/s,写速度 80MB/s,完全是浪费了,唉。。
在内存卡速度等级的选择上,一般是 C10 > C4,尽量选购 C10 的内存卡。
内存卡容量的选择上,根据需求,如果是 LITE 版的系统,大于 4GB 就足够了;如果是桌面版的系统,建议 8GB 或以上。毕竟桌面版系统的镜像就超过 4GB 了。
当然,网上还有一种可以把操作系统安装在 U 盘上的方法,这样就很好的避免了内存卡速度慢的问题。不过由于树莓派只认内存卡启动,所以还是需要一个内存卡作启动的引导,只需要在开机后把系统的加载引导到 U 盘就可以了。这样的话其实对内存的大小和速度就没多少要求了。有兴趣的话可参考下这篇文章。
分辨率调整问题
如果是直接通过 HDMI 连接显示器,树莓派一般可以自动识别显示器的分辨率。但如果是通过 HDMI 转 VGA,或通过 VNC 远程连接的方式,就无法自动识别分辨率了。而且系统没有可以调节分辨率的地方,着实有点坑。
有一种官方的解决方案,一般如下:
- 编辑
/boot/config.txt
文件:sudo nano /boot/config.txt
- 在文件后面追加以下代码:
hdmi_force_hotplug=1
hdmi_ignore_edid=0xa5000080
hdmi_group=2
hdmi_mode=16
其中,hdmi_force_hotplug
是启用 HDMI 热插拔;hdmi_ignore_edid
是命令树莓派不检测 HDMI 设备的任何信息,只按照我们指定的分辨率输出;hdmi_group
和 hdmi_mode
用于决定具体的分辨率。上面的设置相当于把分辨率锁定在 1920*1080。
具体的分辨率对应的数字可以参考这篇文章。
远程 VNC 桌面连接
想远程(广域网)使用 VNC 连接到树莓派的话,首先得确保自己家的宽带有固定 IP(至少是独立 IP),这样才可以使用 IP 地址加端口号的方式远程连接到树莓派。非固定 IP 也可以使用类似花生壳这样的 DDNS 工具。但如果自己的宽带连独立 IP 的方式都不是的话,那就没办法了。建议考虑 TeamViewer 这样的方案。
如何判断自己家的宽带是否有公网 IP,网上找到一个方法:
- 点击链接获取自己的 IP 地址:http://www.net.cn/static/customercare/yourIP.asp
- 打开命令行窗口(Windows)输入命令
tracert <ip>
如果只有一跳那就说明是有公网 IP 地址的,如果超过一跳那就肯定是内网 IP 地址了。
然而我在家里试了下,确实只有一跳,但使用 IP 地址或花生壳的 DDNS 死活连不上,所以也不清楚具体是这种方式有问题还是我家里的兼价路由器中的 DMZ 主机功能是骗人的。。?
安装 NodeJS
NodeJS 官网有提供可用于树莓派的 ARM 版本,直接下载就行了。需要注意的是最新的树莓派 3B 需要下载 ARMv7 的版本,更早的树莓派可能要下载 ARMv6 的版本了。
从使用半个月以来,感觉树莓派的可玩性还是很高的。新买的 3B 由于是 1.2GHz 的四核处理器,性能还过得去,就直接安装了桌面的系统,准备当作一台低功耗的迷你电脑使用,也可以充当一台迷你服务器、BT 下载机等,当然用来看视频、听音乐也是不错的 ?
目前已经实现了室内温度监控和下载机的功能,后续会一一分享。音视频目前还没找到很好用的软件,自带的 omxplayer 虽然也可以播放音视频文件,但用起来总感觉太蹩脚。
期待发掘更多应用吧~
Comments
注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。