当前位置: 移动技术网 > 科技>操作系统>Linux > 基于树莓派的远程可控无线网络摄像头的设计与实现

基于树莓派的远程可控无线网络摄像头的设计与实现

2019年04月16日  | 移动技术网科技  | 我要评论
  • 所需器材有:树莓派及其电源,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://www.lhsxpumps.com/_raspberry-ip-address:8080/,即可以看见摄像头采集的视频信息
    • 如果没有以桌面化的形式打开树莓派,可以在pc上的浏览器中输入http://www.lhsxpumps.com/_raspberry-ip-address/?action=stream,也可看见树莓派采集的信息。raspberry-ip-address表示的是局域网中树莓派的ip地址
  • python通过gpio控制舵机云台的转动
      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使用,实现外网对于树莓派的桌面化控制,具体内容之后补充

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网