基於樹莓派的遠程可控無線網絡攝像頭的設計與實現


  • 所需器材有:樹莓派及其電源,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到本地
    • 編譯
      • 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控制舵機雲台的轉動

      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使用,實現外網對於樹莓派的桌面化控制,具體內容之后補充


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM