Raspberry Pi(中文名为“树莓派”)是为学生计算机编程教育而,其系统基于Linux。这个系列主要是为了单独整理出关于树莓派的一些个人经验。
下面是所有的起点,启动与进入树莓派。网上大部分的教程是通过接一个USB键盘和一个HDMI显示器,然后准备好SD卡来做初始配置的。当我们上手一个树莓派的时候,大多时候是不具备这样的环境的。在相关的学习中,有关于徒手配树莓派的方法:
http://ba5ag.blog.163.com/blog/static/21050107020131423236860/
实际上还是有些复杂,下面就串口和局域网ssh的方法具体说明如何连接树莓派。
硬件
自备器材:
软件
在准备好相应的硬件和软件之后,我们开始连接PC。我们通过串口连接的方式与树莓派连接,整体连接如下面示意图所示:
具体的用USB-TTL串口线如下图方式进行连接:
打开设备管理器可以查看树莓派的串口,随即我们使用putty用serial的串口方式登录到树莓派中:
之后输入下面的默认用户名和密码即可以登录到树莓派的命令行界面:
用户名: pi
密码: raspberry
如果没有连接TTL电源,用USB供电,那么此时需要为树莓派外接上电源,使系统启动。如果接上了VCC则输入reboot
可以重启系统。此时可以在终端中看到输出了启动信息:
登陆到系统后,此时我们可以通过下面的命令查看树莓派的硬件配置。首先输入指令cat /proc/cpuinfo
可以查看完整的CPU信息:
输出结果如下所示:
输入指令cat /proc/meminfo
可以查看完整的内存信息:
输出结果如下所示:
其实我们通过串口连接之后,和树莓派通信已经不成问题了,但我们还是得掌握SSH连接,因为平台的原因,在资源紧张的树莓派上对大型的程序进行编译的话会浪费大量的时间甚至根本不可能成功,我们会在后面看到在PC上交叉编译好的可执行程序,再传送到树莓派是非常必要的一个技能,然而串口的速度是不能恭维的(后面也会谈到),所以我们要接触SSH。
这里采用的网络连接方式是使用一个无线USB网卡去连接到一个无线路由器,然后再通过无线路由器进行外网的通讯。首先我们需要一个USB的无线网卡和一个迷你路由器,如果有网线+外接网线的路由器,那么可以参考顶部的“徒手配树莓派”来进行,不过无线网卡在后面还可以提供更自由的应用。我们需要下面几个步骤:
(1) 检查USB无线网卡是否已经正确识别
将无线USB网卡插入树莓派后启动树莓派。用串口方法进入shell界面后输入命令lsusb
。通过下面的信息,可以认定树莓派已经正常识别,从如下的信息中可以看到我们树莓派的USB无线网卡设备ID和芯片型号:
输入iwconfig
确认是否已经有了wifi所必须的包,可以看到显示如下:
可见结果里面出现了wlan0,说明网卡已经正常工作了。
(2) 设置wifi
输入命令iwlist wlan0 scan
搜索附近所有可连接的Wifi AP,选择我们要连接的wifi,输入wpa_passphrase SSID名称 密码
获取wifi设置,此时会输出回显提供network信息,将这段保存到配置文件中。
然后配置/etc/network/interfaces,sudo nano /etc/network/interfaces
将其设置为自动获得IP地址,配置内容如下:
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
pre-up wpa_supplicant -B w -D wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
post-down killall -q wpa_supplicant
自此网络已经配置好了,我们重启树莓派它就会自动连上预先设置好的wifi。
(3) SSH方式登录
接着我们用putty来通过网络远程使用SSH进行连接。首先我们要获取树莓派的ip地址,可以通过路由器的管理界面中查看连接到的设备,其中名称为raspberry的即是树莓派。另外还可以在串口界面上输入ifconfig
来查看当前树莓派的IP地址,如下图所示:
此时我们就可以另外打开一个putty,用SSH来进行登陆了:
下面我们从PC和树莓派两端分别认证是否连接上网络了,我们可以在PC的终端和树莓派的命令行终端互相使用ping
命令检查是否已连接,结果如下图所示,首先是PC端:
在这里我们可以查看一下SSH的配置文件内容,输入cat /etc/ssh/ssh_config
,可以看到文件的内容如下所示(已省略注释),我们对其中的关键信息进行解释:
#选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。
Host *
#下面这些都是一些设置的可选项,其中绝大多数都被注释掉了,只有这四行没有
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes #GSSAPI(一种访问保护)验证打开
GSSAPIDelegateCredentials no #GSSAPI委托证书关闭
(4) 多个不同端口登陆的结果
单个PC可以同时用串口和SSH登陆,可以同时看到两个登陆终端如下图所示:
经测试,C/C++、Python和Java树莓派都是有其对应的开发环境。下面就C/C++和Java的结果进行展示:
(1) C/C++
进行简单的Hello world
测试,代码和输出结果如下:
可以看到对C/C++的开发环境是支持的(经测试是gcc/g++的编译器)。
(2) Java
同样也是进行简单的Hello world
测试,代码和输出结果如下:
可以看到对Java的开发环境是支持的。
我们使用VNC服务器来远程方位树莓派的图形桌面。首先我们需要在树莓派上安装VNC服务器,我们采用tightvnc,用命令sudo apt-get install tightvncserver
可以安装,安装之后,用如下命令运行 tightvnc:vncserver :1
。还可以设定特定屏幕分辨率:vncserver :1 -geometry 1440x900
。
随后我们在Windows 10的PC机器上安装VNCViewer来进行连接。安装完之后打开,输入树莓派的IP地址。如下图所示:
这样,在远程机器就打开了一个树莓派的VNC图形界面窗口,远程机器的键盘鼠标可以用来控制树莓派。结果如下所示: