Rasberry Pi Tank Robot Car Starter Kit Lesson 3: Web Video Camera
视频遥控功能
该工能通过webiopi实现远程遥控,通过mjpg-streamer软件实时显示摄像头拍摄图片。部分浏览器可能不能正常显示,建议使用谷歌浏览器或火狐浏览器。在进行以下操作之前需要将raspberry
pi连接上wifi.通过putty或直接接到显示器上进行以下操作。
step 1.下载并解压软件包
cd ~
sudo apt-get install rpi.gpio -y
mkdir osoyoo-robot/cam-robot
cd osoyoo-robot/cam-robot
wget http://osoyoo.com/driver/WebIOPi-0.7.1.tar.gz
wget http://osoyoo.com/driver/mjpg-streamer.tar.gz
wget http://osoyoo.com/driver/robot.tar.gz
tar -xzvf WebIOPi-0.7.1.tar.gz
tar -xzvf mjpg-streamer.tar.gz
tar -xzvf robot.tar.gz
step2.安装webiopi
webiopi是一个可控制树莓派GPIO的web框架,该框架面向物联网IoT开发,该项目托管于google,并可在sourceforge上下载到源代码。webiopi支持REST
Server,CoAP server,并提供python库和javascript库。
A.下载补丁
cd ~/osoyoo-robot/cam-robot/WebIOPi-0.7.1/
wget http://osoyoo.com/driver/webiopi-pi2bplus.patch
B.运行补丁
patch -p1 -i webiopi-pi2bplus.patch
C.编译安装webiopi
sudo ./setup.sh
D.验证是否安装成功
webiopi -h
如果安装成功会有如下所示输出;如果不成功请重复上面步骤
sudo webiopi [-h] [-c config] [-l log] [-s script] [-d] [port]
Options:
-h, –help Display this help
-c, –config file Load config from file
-l, –log file Log to file
-s, –script file Load script from file
-d, –debug Enable DEBUG
Arguments:
port Port to bind the HTTP Server
E.运行webiopi
sudo webiopi -d -c /etc/webiopi/config
然后在电脑端或者手机端打开网页浏览器,在地址栏内输入树莓派ip地址,端口号8000。例如:http://192.168.1.16:8000(根据实际情况填入)。在登录网站时,需要输入账号和密码,默认的账号和密码分别是:webiopi和raspberry。如果进入WebIOPi
Main Menu页面,说明环境配置成功了:
终端按下 Ctrl + C再按Ctrl + Z 可以结束进程。
step3.安装mjpg-streamer
MJPG-streamer是一个优秀的开源project,它可以通过HTTP的方式访问linux上面的兼容摄像头,从而做到远程视频传输的效果。在本项目中,我们用MJPG-streamer传输小车摄像头图像,根据图像控制小车运动。
如果是使用CSI接口的摄像头,需要进行如下步骤
A.打开摄像头接口
sudo raspi-config
选择Enable Camera。
B.在/etc/modules文件中添加一行bcm2835-v4l2,否则/dev下没有设备节点
sudo nano /etc/modules
加上:
bcm2835-v4l2(v4l2中的l是小写字母l,不是数字1)
保存退出,并重启Pi
如果使用USB接口摄像头可以跳过上面两步
安装依赖库
cd ~
sudo apt-get update
sudo apt-get install libv4l-dev libjpeg8-dev -y
sudo apt-get install subversion -y
编译安装mjpg-streamer
cd ~/osoyoo-robot/cam-robot/mjpg-streamer
在Pi3上要编译通过需要修改配置
cd plugins/input_uvc
sudo nano input_uvc.c (若安装了vim可以输入: sudo vim input_uvc.c)
找到
int width=640, height=480, fps=5, format=V4L2_PIX_FMT_MJPEG
将V4L2_PIX_FMT_MJPEG 改成 V4L2_PIX_FMT_YUYV,保存退出
cd ~/osoyoo-robot/cam-robot/mjpg-streamer
make all
插上摄像头测试mjpg-streamer,命令行输入: ls /dev/video* 查找设备文件,如果摄像头工作正常,会输出设备文件,如图所示。
(这里我接了一个CSI和USB摄像头,所以有两个设备文件)如果没有输出设备文件,请确认摄像头是否是好的,以及上面的配置是否正确。
开启mjpg-streamer
sudo ./start.sh
然后在浏览器地址栏内输入树莓派ip地址,端口号8899,注意这里的端口号是8899,和之前的端口号(8000)是不同的。页面会显示关于M-JPEG streamer的信息。点击Stream会实时显示摄像头拍摄的内容。
按下 Ctrl + C 可以结束进程。
获取raspberry pi IP地址
ifconfig wlan0
修改webiopi默认设置
sudo nano /etc/webiopi/config
A.修改webiopi运行时调用的脚本路径
[SCRIPTS]
# Load custom scripts syntax :
# name = sourcefile
#each sourcefile may have setup, loop and destroy functions and macros
#myscript = /home/pi/WebIOPi-0.7.1/examples/scripts/macros/script.py
myscript = /home/pi/osoyoo-robot/cam-robot/robot/script.py
B.修改服务器访问webiopi时候调用HTML文件路径
# Use doc-root to change default HTML and resource files location
#doc-root = /home/pi/WebIOPi-0.7.1/examples/servo-control
doc-root = /home/pi/osoyoo-robot/cam-robot/robot
C.添加PCA9685地址
[DEVICES]
# Device configuration syntax:
# name = device [args…]
# name : used in the URL mapping
#device : device name
#args : (optional) see device driver doc
#If enabled, devices configured here are mapped on REST API /device/name
#Devices are also accessible in custom scripts using deviceInstance(name)
#See device driver doc for methods and URI scheme available
# Raspberry native UART on GPIO, uncomment to enable
# Don’t forget to remove console on ttyAMA0 in /boot/cmdline.txt
# And also disable getty on ttyAMA0 in /etc/inittab
#serial0 = Serial device:ttyAMA0 baudrate:9600
# USB serial adapters
#usb0 = Serial device:ttyUSB0 baudrate:9600
#usb1 = Serial device:ttyACM0 baudrate:9600
#temp0 = TMP102
#temp1 = TMP102 slave:0x49
#temp2 = DS18B20
#temp3 = DS18B20 slave:28-0000049bc218
#bmp = BMP085
#gpio0 = PCF8574
#gpio1 = PCF8574 slave:0x21
#light0 = TSL2561T
#light1 = TSL2561T slave:0b0101001
#gpio0 = MCP23017
#gpio1 = MCP23017 slave:0x21
#gpio2 = MCP23017 slave:0x22
pwm0 = PCA9685 slave:0x40
#pwm1 = PCA9685 slave:0x41
#adc0 = MCP3008
#adc1 = MCP3008 chip:1 vref:5
#dac1 = MCP4922 chip:1
打开一个终端
cd ~/osoyoo-robot/cam-robot/mjpg-streamer
sudo ./start.sh
再打开一个终端
sudo webiopi -d -c /etc/webiopi/config
如果报错请确认两点:
A.上面配置是否正确
B.PCA9685是否供上电了,如没有电,因为软件读取不到IIC设备,会报错。
然后在安装APP ,在APP中Robot IP选项和Video URL选项填入树莓派的IP地址保存,再在主页面点击Off就可以看到图像并控制小车了。
DownLoad Url osoyoo.com