视频遥控功能

该工能通过webiopi实现远程遥控,通过mjpg-streamer软件实时显示摄像头拍摄图片。部分浏览器可能不能正常显示,建议使用谷歌浏览器或火狐浏览器。在进行以下操作之前需要将raspberry pi连接上wifi.通过putty或直接接到显示器上进行以下操作。

step 1.下载并解压软件包

cd  ~

wget  https://osoyoo.com/driver/osoyoo-robot.tar.gz

sudo  tar  -xzvf  osoyoo-robot.tar.gz

step2.安装webiopi

A.修改CPU型号

cd  osoyoo-robot/osoyoo-cam-robot/WebIOPi-0.7.1/python/native/

打开cpuinfo.c文件,将40行的BCM2708改为BCM2835,如图所示

sudo  nano  cpuinfo.c

保存退出

B.修改CPU基地址

打开gpio.c 将cpu基地址修改成0x3f000000,如图所示

sudo  nano  gpio.c

保存退出

C.编译安装webiopi

cd  osoyoo-robot/osoyoo-cam-robot/WebIOPi-0.7.1/

sudo  ./setup.sh

D.验证是否安装成功

webiopi  -h

如果安装成功会有如下图所示输出;如果不成功请重复上面步骤

E.运行webiopi

终端运行

sudo  webiopi  -d  -c  /etc/webiopi/config

然后在电脑端或者手机端打开网页浏览器,在地址栏内输入树莓派ip地址,端口号8000。例如:http://192.168.1.16:8000(根据实际情况填入)。在登录网站时,需要输入账号和密码,默认的账号和密码分别是:webiopi和raspberry。如果进入WebIOPi Main Menu页面,说明环境配置成功了:

终端按下 Ctrl + C 可以结束进程。

step3.安装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 aptget install libv4ldev libjpeg8dev 

sudo  aptget install subversion

编译安装mjpg-streamer

cd  osoyoo-robot/osoyoo-cam-robot/mjpg-streamer

make USE_LIBV4L2=true clear all

如果提示:make: *** No rule to make target ‘clear’. Stop. 请忽略这个警告。

若编译报错,请尝试修改mjpg-streamer/plugins/input_uvc/input_uvc.c文件, 将V4L2_PIX_FMT_MJPEG 改成 V4L2_PIX_FMT_YUYV,再重新编译

开启mjpg-streamer

sudo ./start.sh

然后在浏览器地址栏内输入树莓派ip地址,端口号8080,注意这里的端口号是8080,和之前的端口号(8000)是不同的。页面会显示关于M-JPEG streamer的信息。点击Stream会实时显示摄像头拍摄的内容。

按下 Ctrl + C 可以结束进程。

获取raspberry pi IP地址

ifconfig  wlan0

根据树莓派的实际ip,修改这个html标签

cd   ~/osoyoo-robot-osoyoo-cam-robot/robot

sudo  nano  index.html

找到 width=“320” height=“240” src=http://192.168.1.120:8080/?action=stream>

其中,src后面的地址填入树莓派的ip地址(这里是192.168.1.120),端口号指定为8080(stream的端口)。

修改webiopi默认设置

sudo  nano  /etc/webiopi/config

按照下面的样子修改

[SCRIPTS]
# Load custom scripts syntax :
# name = sourcefile
#   each sourcefile may have setup, loop and destroy functions and macros
myscript = /home/pi/osoyoo-robot/osoyoo-cam-robot/robot/script.py
#myscript = /home/pi/WebIOPi-0.7.1/examples/scripts/macros/script.py
# 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/osoyoo-cam-robot/robot
[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

step4.安装VNC

sudo apt-get  install tightvncserver

安装VNC服务器

vncserver :1

在安装过程中,需要用户自己设置VNC服务器密码,密码是8个字符,可以设置成raspberr;安装过程中还会提示

You will also be asked if you want to create a separate “read-only” password 输入no就行

安装完成终端运行vncserver :1,就可以开启VNC服务

在Windows或Mac上运行VNC Viewer 输入raspberry pi IP地址通过上面设置的密码远程登录Pi

打开一个终端

cd   osoyoo-robot/osoyoo-cam-robot/mjgp-streamer

sudo  ./start.sh

再打开一个终端

sudo   webiopi   -d   -c   /etc/webiopi/config

然后在浏览器地址栏内输入树莓派ip地址,端口号8000(注意这里的端口号不是8080)。

网页上会显示摄像头捕获的画面,点击图标可以控制小车转向。

鼠标点击按钮就可以控制小车了。