让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 控制界面:
GPIO Header
帮助调试控制GPIO 各个针脚。
左右两边的
IN
和OUT
表示当前的输入/输出状态。鼠标点击之后会相应切换。RPi.GPIO 库使用以下方法来编程控制。
GPIO.setup(self.IN2,GPIO.OUT)
GPIO List
类似GPIO Header, 不过过滤了不能控制的端口。
Serial Monitor
直接调试穿行接口。
Device monitor
调试或者控制转换器或者传感器,目前未用到。 之后接温度传感器等可能用到。
Weaved/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了。
这是remote3.it 自己的介绍
A new era in remote device management
We have been hard at work creating a more powerful, flexible and intelligent remote device management platform. It's called remot3.it (remote-it) and delivers a host of new features that will make it easier to connect, manage and update remote devices. The new remot3.it web UI makes it easier then ever. And it's all built on top of the Weaved features and services you've come to trust.
Cayenne
Create your Internet of Things with Cayenne
阿里云镜像源
国内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
# /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
至此就看到摄像头了。
然而一直无法控制摄像头的转动。 调试了很久, 把代码也看了一遍, 无所收获。 仔细看了看电路板的走线, 表示看不懂。 只能回到Alphabot的说明书,看了一遍又一遍。 终于注意到说明书里不经意的提到跳线。然而并不明白跳线是什么意思, 网上也没有查到更加深入的解释。 又只好如端详美丽的少女一样仔细端详线路板,在看过数十遍之后,终于发现了,这排黄色的小块是可以动的。
按照各个组件的说明跳完线之后: (其实应该是把所有的接线切换到最里面来,表示接到PI 上,而不是Arduino上)
黄色连线边上有凹槽,手指甲用点力,就能拔出来。