Android Things Day 5
让Alphabot 能看见世界
Alphabot 配备了RPi Camera 摄像头和 SG90舵机2个,可控制摄像头360度旋转(由于被基座挡住,所以是XY面上的180° + Z方向的180°)。
为了方便之后的开发调试, 需要做一些准备工作和背景知识的学习。
WebIOPi
WebIOPi 项目使用Web 来控制 Raspberry Pi 3 Model B 的 40个通用输入输出接口GPIO(General Purpose Input Output)。
WebIOPi 提供多种编程接口可供访问。可以使用Python/Javascript/Java 来开发应用, 非常方便调试。
使用这个工具的好处是,一方面很直观的看到各个端口的状态, 另一方面不需要写代码就能直接控制各个端口。比如后面需要驱动小车前进,直接将对应端口设置高低电平就可以了。
按照说明安装成功之后, 打开web 控制界面:
WebIOPi web 管理页面GPIO Header
帮助调试控制GPIO 各个针脚。
左右两边的
IN
和OUT
表示当前的输入/输出状态。鼠标点击之后会相应切换。RPi.GPIO 库使用以下方法来编程控制。
GPIO.setup(self.IN2,GPIO.OUT)
GPIO List
类似GPIO Header, 不过过滤了不能控制的端口。
Serial Monitor
直接调试穿行接口。
Device monitor
调试或者控制转换器或者传感器,目前未用到。 之后接温度传感器等可能用到。
Device monitorWeaved/remote3.it
remote3.it 是Weaved的新版,rebranding。一些代码层面的库可能还是保留Weaved 字眼。
作用类似 ZeroTier 。让Raspberry Pi 穿墙连上互联网, 这样从互联网上就可以访问Pi了。也就不需要在同一个LAN 才能访问了。 一些使用场景包括:
- Pi 留在办公室或者实验室, 在家也能连上进行调试。 (传统的解决方案是使用VPN 连到办公室网络, 再SSH登陆办公室网络内的机器)。大大的便利。
- Pi 放在犄角旮旯的角落,物理接触不到, 或者干脆在异地。 还经常重启变动IP(DHCP)。 使用Weaved 的好处是设备重启后会重新自动注册到remote3.it 的服务器, 通过remote3.it 网站管理平台可以看到设备,从而可以通过remote3.it的代理连接上设备。 你再也不需要知道设备本身的IP了。
阿里云镜像源
国内apt-get 安装慢如蜗牛, 使用阿里云的镜像速度能稍微好点。 建议设置。
- 添加源
pi@raspberrypi:~ $ sudo vi /etc/apt/sources.list
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi
deb http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
- 更新源
pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get upgrade
安装 Camera驱动
enable raspberry pi camera
enable raspberry pi camera enable raspberry pi camera# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
i2c-dev
bcm2835-v4l2
重启
pi@raspberrypi:~ $ sudo reboot now
pi@raspberrypi:~ $ ls -lah /dev/video0
crw-rw----+ 1 root video 81, 0 Jan 18 13:50 /dev/video0
# 安装依赖
pi@raspberrypi:~ $ sudo apt-get install libv4l-dev libjpeg8-dev subversion
pi@raspberrypi:~/AlphaBot/mjpg-AlphaBot/mjpg-streamer $ make USE_LIBV4L2=true clear all
pi@raspberrypi:~/AlphaBot/mjpg-AlphaBot/mjpg-streamer $ sudo ./start.sh
安装 mjpg-streamer
mjpg-streamer至此就看到摄像头了。
然而一直无法控制摄像头的转动。 调试了很久, 把代码也看了一遍, 无所收获。 仔细看了看电路板的走线, 表示看不懂。 只能回到Alphabot的说明书,看了一遍又一遍。 终于注意到说明书里不经意的提到跳线。然而并不明白跳线是什么意思, 网上也没有查到更加深入的解释。 又只好如端详美丽的少女一样仔细端详线路板,在看过数十遍之后,终于发现了,这排黄色的小块是可以动的。
Pi 跳线按照各个组件的说明跳完线之后: (其实应该是把所有的接线切换到最里面来,表示接到PI 上,而不是Arduino上)
跳线黄色连线边上有凹槽,手指甲用点力,就能拔出来。