基于树莓派的远程可控无线网络摄像头的设计与实现
程序员文章站
2022-07-05 15:32:49
所需器材有:树莓派及其电源,usb摄像头,路由器,两台伺服舵机及其外壳,一台笔记本,一根网线 树莓派的基本操作及学习网站与资料 "树莓派实验室" "树莓派3代入门资料及安装教程" 按照以上操作初始化树莓派 树莓派控制摄像头进行视频流传输,并在pc端接收视频 推荐使用 "MJPG streamer" ......
所需器材有:树莓派及其电源,usb摄像头,路由器,两台伺服舵机及其外壳,一台笔记本,一根网线
- 树莓派的基本操作及学习网站与资料
-
按照以上操作初始化树莓派
- 树莓派控制摄像头进行视频流传输,并在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
- 编译
- 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退出程序。
- 外网控制
-
- 官网上说可以搭配novnc使用,实现外网对于树莓派的桌面化控制,具体内容之后补充
-
下一篇: 适合女生的热门专业:女生适合学什么专业?