三、操作系统安装
一般如果上网买树莓派 Pi Zero W 餐时,通常会附一片 4GB 或 8GB SD 卡,里面已安装好原厂操作系统,开机就能使用。为了后续系统扩充及安装更新版本的 OpenCV,强烈建议一开始就先换成 16GB 记忆卡,避免从 8GB 记忆卡搬到 16GB 时,产生许多设定工作。首先,到树莓派官网下载窗口版环境最新版本的操作系统 Raspbian Stretch with DESKTOP 的 ZIP 文件。
解压缩后会得到操作系统图像文件(Image File)2017-11-29-raspbian-stretch.img
电路上的SW1 & SW2可直接按键操作或者以外部触发(Strob)信号连接亦可,但请注意系统目前以3.3V为主要控制电源。因此,当外部触发信号GPIO 21(SW1)或 GPIO 26(SW2))提供 3.3V 时,相当于按键被按下。另外, LED 1 & 2 可做为指示信号灯或推动闪光灯,不过由树莓派 GPIO 的输出电流很小(10~20mA),要推动大电流的灯具时,要额外接晶体管来放大驱动电流,避免把 GPIO 埠烧坏。
树莓派官网下载画面
接着,利用Win32 Disk Imager将图像文件(Image File)烧写到记忆卡中。第一步先选择要烧写的档案路径及名称;再来,选择要写入的记忆卡驱动器号;最后按下【Write】就开始刻录工作,此过程大约要半小时左右。如果记忆卡没有刻录工具可以到Win32 Disk Imager进行下载,
刻录图像文件步骤
记忆卡刻录完成后,放入 Pi Zero W 记忆卡槽就可准备送电启动。
第一次送电前注意事项
1. 以HDMI连接线连接PiZeroW和HDMI屏幕(可用有HDMI功能的电视取代),第一次启动无法以远程(无屏幕)方式进入。
2. 先不要将无线键盘鼠标的接收器插入USBOTG插孔中,启动后会进不了操作系统,导致反复的重新启动,估计是启动电流过大造成,等到进到桌面环境后再插入。
3. 接着就可送电,树莓派PiZeroW板子上有两个MicroUSB孔,靠外侧那个是+5V 电源。原则上, PiZero W 非常省电,一般 5V 1A 的变压器就足够所需电力,一般计算机的USB 2.0插孔(500mA)也能推动。靠板子中间那个是USB OTG,切记不要搞错,以免后续外接 USB 装置无法工作。
强烈建议使用树莓派Pi Zero W,有支持无线网络功能,后续就可直接远程联机操作,不必再连接屏幕及无线键盘鼠标。进入窗口作业环境桌面后,点选右上角网络符号,启动无线网络(WIFI ON),联机到自家的无线网络,输入账号密码。为确保无线网络工作正常,可点选画面左上方地球图案,启动浏览器进行测试,可试随便连到任意一个网址(如 GOOGLE)看看是否正常。接着,将鼠标移到画面右上角无线符号处,此时会出现目前 WIFI 动态配置的 IP 位置(192.168.xxx.xxx),先记下来,等下会要用到。
系统默认是英文接口,其中有许多系统参数设定不符需求,加上特殊接口也未开启。因此,先点选画面左上角树莓图案进入主选单(/Preference/Raspberry Pi Configuration)。进入后共有四个子页面,树莓派原厂默认用户名称:pi ,密码为:raspberry,会自动登入(Auto Login)。
若不喜欢默认值,可于 System 页面下修改。后续要远程登录操作,所以屏幕分辨率可依自己需求,按下[Resolution]键进行修改。再来,切到 Interfaces 页面,将预设全改为Disable,为了让项目能顺利完成,必须将Camera、VNC及SPI致能(Enable))起来。而 Performance 页面预设拨给 GPU 128MB,这个部份可暂时不动。最后,切到 Localisation 页面,设定参数
参数设定
1. 按下[Set Local]键,将 Language设为 Zh (Chinese)或 lzh (Literay Chinese);Country 设为 CN(China);Character Set 设为 UTF-8。
2. 按下[SetTimeZone]键,将Area设为Asia,Location设为Beijin。
3. 按下[Keyboard]键,系统默认为英国键盘,这会导致有些符号打不出来(如@)。因此,选择左边 United States,选择右边 English(US),键盘才能正常工作。
4. 按下[Set WiFiCountry],将设定改为CN ,如此系统时间才会和网络同步。
最后按下[OK]键,系统会询问是否重新启动(Reboot),选择 YES 后,马上拔掉 USB OTG 上的接收器,让系统重新启动。接下来只须利用 VNC 软件远程联机操作即可。
树莓派系统参数设定
根据实测,强烈建议不要直接用 apt-get 安装 tightvncserver 到树莓派上,有部份软件(如 QT)在远程联机时会造成键盘无法正确输入文问题,建议依上一步骤说明将系统参数 VNC 设定为 Enable 即可。接下来要在桌机或笔电上安装 RealVNC 才能远程操控 Pi Zero W ,相关软件可至RealVNC网站下载,
启动 RealVNC 后,输入刚才记下的 IP(192.168.xxx.xxx),账号:pi 密码 raspberry,即可远程登录,进行所有操作。如果有习惯常的VNC 软件亦可。
四、工作环境设置
接下来可依需求安装相关软件,大部份安装都在命令模式下进行,点击画面上左上方,黑色[ >_ ]的图案,就会开启一黑色窗口,进入命令(CMD)模式。请注意大部份的命令英文母大小写是被认为不同文,所以不要打错。
4.1 更新系统
虽然树莓派的操作系统可能已是最新的,但其它依赖包(函式库)就不一定,因此首先要更新树莓派,输入以下指令。
sudo apt-get update
sudo apt-get upgrade
sudo rpi-update (更新树莓派韧体,可忽略)
sudo reboot (重新启动)
4.2 测试相机
输入下列指令,测试相机是否可正常拍照,执行后应会在同一目录下产生test.jpg 的图像文件。若无法取像,则需检查相机的软扁平电缆是否正确的插在连接座上没有松脱。
raspistill -o test.jpg
4.3 安装中文输入法(选配,可不装)
这里推荐 SCIM,因为它支持的输入法包括两岸三地常见中文输入法。当然如你有习惯的其它输入法亦可安装。
sudo apt-get install scim scim-tables-zh scim-chewing
4.4 安装影音播放软件 (本项目用不到,但建议安装)
由于之后可能会透过摄像头录制影片,为方便观看影片建议可安装名开源影音播放软件 VLC。
sudo apt-get install vlc
4.5 安装 OpenCV 及编译程序必要依赖包
OpenCV 是网络上最多人使用的开源计算机视觉、图像处理工具,功能与时俱进,内容包山包海,连最新的深度学习都有,目前(Dec. 2017)已到了 3.3 版,想多了解一下可参阅官网 https://opencv.org/ 。为了方便大家工作,建议大家直接用编译好的 OpenCV 2.4.9 版就非常够用了,安装后包含 C, C++及 Python 都可使用。为加快各位上线时间请依序执行下面指令安装 OpenCV 2.4.9 版即可,安装时间颇长,请多一些耐性。
sudo apt-get -y install build-essential cmake cmake-curses-guipkg-config
sudo apt-get -y install libgtkglext1-dev
sudo apt-get -y install libv4l-dev v4l-utils
sudo apt-get -y install libopencv-dev python-opencv
4.6 安装树莓派 GPIO 及接口驱动库
一般驱动树莓派的GPIO(包括SPI, I2C, PWM…)有很多方式,网络上提供很多免费工具包可驱动,亦可直接对位置写入,由于本项目是用 C++语言完成,所以推荐采用BCM2835(树莓派Pi Zero W的主芯片名称为BCM2835)件包来驱动即可,可免去很多设定及变量使用问题。更进一步信息可参考官网。
目前(Dec. 2017)最新版本为 1.52。请依以下步骤下载、解压及安装。另外,要注意的一点,这里用的 40pin GPIO,所以用程控时要选用 RPI_V2_GPIO_P1_X (X 表示第几脚,而非 GPIO 编号)。
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.52.tar.gz
tar zxvf bcm2835-1.52.tar.gz
cd bcm2835-1.52
./configure
make
sudo make check
sudo make install
为使一开机相机就能启用且可让 OpenCV 直接驱动相机不必透过其它工具,所以要修改系统档案,其步骤如下:
cd /etc/modules-load.d/
sudo nano modules.conf (这里使用内建文本编辑器 nano 进行编辑,亦可用其它文本编辑器)
进入后在最后一行按下 ENTER,新增一空白行,加入bcm2835-v4l2。按下[Ctrl + W](两键同时按)存档,再按[Ctrl + X]离开,完成编辑工作,再输入reboot 重新启动完成所有系统环境设定。
4.7 系统备份(选配,可自由决定)
作到这里已大致完成系统环境建置,建议可再利用Win32 Disk Imager将系统备份。首先将 Pi Zero W 关机,抽出目前已正常工作的记忆卡,放入桌机或笔记本电脑记忆卡槽,启动 Win32 Disk Imager,指定存盘之路径及文件名,选择欲备份的记忆卡驱动器号,按下[Read],耐心等待进度条到 100%,就完成备份。
五、开源迷你相机 OpenQCam 系统开发
接下来要开始说明如何进行程序开发。本项目是采 C++语言,原则上只须文本编辑器(可用内建 nano 或其它习惯编辑器)即可,不需窗口也不需要 IDE 环境就可独立完成。若不习惯传统文本编辑器的人,亦可在窗口环境点选文件名,按鼠标右键,启用 Text Editor(类似 Windows 上的工具软件-[笔记本]),即可进行编辑。另外,在Linux上知名的窗口开发整合环境软件QT,经测试在Pi Zero W上执行非常卡,且和 OpenCV 有些许不兼容,若想使用其它 IDE 亦可。
本项目目前仅支持 TFT LCD 320*240 像素(一般正常是直式显示,目前默认用程序转成横式显示),ILI9341 驱动 IC 之 SPI 接口,此类 LCD 在网络上为主流产品很容易买到。程序中有提供显示直式接口的函式,可自行修改。有其它显示规格需求请上网查阅驱动 IC 数据手册自行修改,但请注意改错参数有可能造成 LCD 损坏。
工作前,建议先建立一个 Project 目录,再将本项目所有档案下载该目录下。接着,执行本项目已预建编译指令批处理文件 go.sh 进行编译,等待约 30 秒后即可完成,产生执行档 camera,由于 BCM2835 须要较高权限,所以执行时要加上 sudo,完整操作如下所示。
sudo ./go.sh (编译程序)
sudo ./camera (执行程序)
执行后,摄像头会自动取像并降低影像分辨率,从五百万像素降至QVGA (320* 240 像素),LCD 上会同步显示取像内容,在 LCD 左上角会显示目前速度(取像加显示),单位是 FPS(每秒帧数),正常状况约有 15 ~ 18 FPS。当按下 SW1 时红灯会亮,模拟快门按下后闪光灯会亮,画面涷结 1 秒并自动存档。按下 SW2 时绿灯会亮,并结束程序。
本项目是做为后续利用 OpenCV 进行影像辨识的很好入门平台,程序的相关批注详见各程序原始码。
作者:Jack Hsu
更多精彩文章请关注微信公众号?易心Microbit编程