基于树莓派的远程可控无线网络摄像头的设计与实现
-
所需器材有:树莓派及其电源,usb摄像头,路由器,两台伺服舵机及其外壳,一台笔记本,一根网线
-
树莓派的基本操作及学习网站与资料
- 树莓派实验室
- 树莓派3代入门资料及安装教程
按照以上操作初始化树莓派
-
树莓派控制摄像头进行视频流传输,并在pc端接收视频
- 推荐使用MJPG-streamer,在gitHub上面是一个开源的项目.
- 在树莓派上面安装如下库:
- sudo apt-get update
- sudo apt-get install subversion
- sudo apt-get install libjpeg8-dev
- sudo apt-get install imagemagick
- sudo apt-get install libv4l-dev
- sudo apt-get install cmake
- sudo apt-get install git
- 使用git将远端项目pull到本地
- sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
- 编译
- cd mjpg-streamer/mjpg-streamer-experimental
- make all
- sudo make install
- 使用
- ./start.sh
- 如果可以以桌面化的形式在pc上打开树莓派系统,那么可以在树莓派系统的浏览器输入http://raspberry-ip-address:8080/,即可以看见摄像头采集的视频信息
- 如果没有以桌面化的形式打开树莓派,可以在pc上的浏览器中输入http://raspberry-ip-address/?action=stream,也可看见树莓派采集的信息。raspberry-ip-address表示的是局域网中树莓派的ip地址
-
python通过GPIO控制舵机云台的转动
- 参考博客树莓派 Raspberry Pi 基于 wiringPi库 舵机控制
- 新建一个文件servo.py,代码如下:
import RPi.GPIO as GPIO import time import signal import atexit import os import sys import tty, termios atexit.register(GPIO.cleanup) servopin = 22 servopin2 = 21 GPIO.setmode(GPIO.BCM) GPIO.setup(servopin, GPIO.OUT, initial=False) p = GPIO.PWM(servopin, 50) p.start(0) GPIO.setup(servopin2, GPIO.OUT, initial=False) p2 = GPIO.PWM(servopin2, 50) p2.start(0) time.sleep(2) i = 0 j = 0 while True: fd = sys.stdin.fileno() old_settings = termios.tcgetattr(fd) try: tty.setraw(fd) ch = sys.stdin.read(1) finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) if ch == 'a': if i - 10 >= 0: i = i - 10 p.ChangeDutyCycle(2.5 + 10 * i / 180) time.sleep(0.02) p.ChangeDutyCycle(0) time.sleep(0.2) if ch == 'd': if i + 10 < 181: i = i + 10 p.ChangeDutyCycle(2.5 + 10 * i / 180) time.sleep(0.02) p.ChangeDutyCycle(0) time.sleep(0.2) if ch == 'w': if j + 10 < 181: j = j + 10 p2.ChangeDutyCycle(2.5 + 10 * j / 180) time.sleep(0.02) p2.ChangeDutyCycle(0) time.sleep(0.2) if ch == 's': if j - 10 >= 0: j = j - 10 p2.ChangeDutyCycle(2.5 + 10 * j / 180) time.sleep(0.02) p2.ChangeDutyCycle(0) time.sleep(0.2) if ch == 'q': print "shutdown" break;
- 运行python servo.py,此时在pc端输入WASD,树莓派可以接受来自pc端的键盘方向控制信息,控制舵机云台的转动方向,输入q退出程序。
-
外网控制
- cpolar
- 官网上说可以搭配noVnc使用,实现外网对于树莓派的桌面化控制,具体内容之后补充
- cpolar