您需要的東西
Arduino UNO或類似的
2 x微型或小型業余伺服器
公對公連接線
公對母連接線
各式拉鏈帶
構建安全攝像機
使用提供的螺釘將伺服喇叭(塑料的“小形狀”)安裝到每個伺服上。盡管越大越好,但特定的形狀并不重要。請勿過度擰緊螺釘。
現在,使用拉緊帶將一個伺服器以直角連接到另一個伺服器。其中一個將是平移(從左到右),而另一個將是傾斜(向上和向下)。不管哪個人做什么,都可以在代碼中對其進行調整。
最后,將您的網絡攝像頭連接到其中一個伺服器上。盡管我的網絡攝像頭帶有一個固定在底部的固定夾,但您可以使用拉鏈領帶-我卸下了固定夾并用螺釘將其固定在喇叭上。為了穩定起見,您可能需要將整個鉆機安裝到箱子或盒子上。一個簡單的紙板箱可以很好地解決問題。您可以切一個整潔的方孔,并在表面上安裝一個伺服平齊,但是只需系上一條拉鏈即可。
關于攝像頭的信息
并非所有USB網絡攝像頭都是一樣創建的。將網絡攝像頭連接到Pi的USB端口,然后運行以下命令:
lsusb
此命令顯示有關連接到Pi的所有USB設備的信息。如果您的網絡攝像頭未在此處列出,則您可能要嘗試使用有源USB集線器并重復該命令。如果仍然無法識別該網絡攝像頭,則可能必須購買兼容的網絡攝像頭。
伺服設置
雖然伺服器看起來很恐怖和復雜,但連接起來確實非常簡單。伺服系統在脈寬調制(PWM)上運行,這是數字系統模仿模擬信號的一種方式。 PWM信號本質上是快速的ON-OFF信號。使用占空比來描述ON或HIGH的信號。占空比以百分比表示,并描述了信號開啟的時間。占空比為25%的PWM信號將在25%的時間內打開,其余75%的時間關閉。信號在開始時并沒有打開,然后一直關閉,而是在非常短的時間內定期發出脈沖。
Servos會監聽這些脈沖并采取相應的措施。使用100%的占空比將與“常規” 5v相同,而0%將與接地相同。如果您不完全了解PWM的工作原理,請不要擔心,您仍然可以控制伺服器(Extreme Electronics是了解更多信息的好地方)。
使用PWM的主要方法有兩種:硬件或軟件。硬件PWM通常提供比軟件PWM更低的延遲(伺服器接收命令和移動之間的時間),但是Pi只有一個具有硬件PWM功能的引腳。外部電路可用于提供多個硬件PWM通道,但是簡單的Arduino也可以處理該任務,因為它們具有多個硬件PWM引腳。
這里是電路:
仔細檢查Pi的引腳排列,它們在型號之間略有不同。您需要弄清楚伺服系統的接線方式。 Servos需要三根線來控制它們,但是顏色略有不同:
紅色為正,將其連接至Pi + 5v
棕色或黑色為負,將其連接至Pi上的GND
橙色或白色是信號,將其連接至Arduino引腳9和10
Arduino設置
Arduino的新功能?在這里開始。
一旦連接了伺服器,請在計算機上打開Arduino IDE并上傳此測試代碼。不要忘記從 Tools》 Board 和 Tools》 Port 菜單
#include // Import the library
Servo servoPan, servoTilt; // Create servo objects
int servoMin = 20, servoMax = 160; // Define limits of servos
void setup() {
// Setup servos on PWM capable pins
servoPan.attach(9);
servoTilt.attach(10);
}
void loop() {
for(int i = servoMin; i 《 servoMax; ++i) { 1
// Move servos from minimum to maximum
servoPan.write(i);
servoTilt.write(i);
delay(100); // Wait 100ms
}
for(int i = servoMax; i 》 servoMin; --i) {
// Move servos from maximum to minimum
servoPan.write(i);
servoTilt.write(i);
delay(100); // Wait 100ms
}
} 一切都很好,您應該看到兩個伺服器都緩慢地來回移動。請注意,如何將“ servoMin”和“ ServoMax”定義為20度和160度(而不是0度和180度)。部分原因是這些廉價的伺服器無法準確地移動整個180度,還因為網絡攝像頭的物理尺寸阻止了整個范圍的使用。您可能需要針對設置進行調整。
如果它們根本不起作用,請再次檢查電路是否正確接線。面包板的質量有時也會有所不同,因此請考慮購買萬用表進行驗證。
伺服器幾乎對于Arduino而言功能太強大,因此它們將由Pi。 Pi上的5v電壓限制為提供給整個Pi的750mA,Pi汲取了大約500mA的電流,剩下250mA用于伺服器。這些微型伺服器消耗大約80mA電流,這意味著Pi應該能夠處理其中的兩個。如果您希望使用更多的伺服器或更大,功率更高的型號,則可能需要使用外部電源。
現在將以下代碼上傳到Arduino。這將偵聽傳入的串行數據(如通用 Serial 總線或USB中的串行)。 Pi將通過USB將這些數據發送到Arduino,并告知將伺服器移至何處。
#include // Import the library
Servo servoPan, servoTilt; // Create servo object
String data = “”; // Store incoming commands (buffer)
void setup() {
// Setup servos on PWM capable pins
servoPan.attach(9);
servoTilt.attach(10);
Serial.begin(9600); // Start serial at 9600 bps (speed)
}
void loop() {
while (Serial.available() 》 0)
{
// If there is data
char singleChar = Serial.read(); // Read each character
if (singleChar == ‘P’) {
// Move pan servo
servoPan.write(data.toInt());
data = “”; // Clear buffer
}
else if (singleChar == ‘T’) {
// Move tilt servo
servoTilt.write(data.toInt());
data = “”; // Clear buffer
}
else {
data += singleChar; // Append new data
}
}
}
您可以通過打開串行監視器(右上角》串行監視器)并發送一些測試數據:
90P
0P
20T
100T
注意命令的格式-一個值,然后一個字母。該值是伺服系統的位置,字母(大寫)表示搖攝或俯仰伺服系統。由于從Pi串行傳輸此數據,因此每個字符一次通過一個字符。 Arduino必須“存儲”這些,直到發送完整個命令。最后一個字母不僅指定了伺服,而且還使Arduino知道此命令中沒有更多數據。
最后,斷開Arduino與計算機的連接,然后將其插入Raspberry Pi通過通常的USB端口連接。
Pi設置
現在是時候設置Pi了。首先,安裝操作系統。將網絡攝像頭和Arduino連接到Pi USB。
更新Pi:
sudo apt-get update
sudo apt-get upgrade
安裝動作:
sudo apt-get install motion
Motion是一個用于處理網絡攝像頭流的程序。它可以處理所有繁重的工作,甚至可以執行記錄和運動檢測(嘗試構建運動捕獲安全系統)。打開Motion配置文件:
sudo nano /etc/motion/motion.conf
此文件提供了許多配置Motion的選項。設置如下:
守護程序打開-運行程序
framerate:100-關閉每秒要流多少幀或圖像
stream_localhost-允許通過網絡訪問
寬度640-視頻寬度,調整您的網絡攝像頭
高度320-視頻高度,調整您的網絡攝像頭
stream_port 8081 —關閉將視頻輸出到的端口
output_picture —不保存任何圖像
這是一個很大的文件,因此您可能要使用 CTRL + W 搜索行。完成后,按 CTRL + X ,然后確認保存并退出。
現在再編輯一個文件:
sudo nano /etc/default/motion
設置“ start_motion_daemon =是”。這是確保Motion運行所必需的。
現在找出您的IP地址:
ifconfig
此命令將顯示Pi的網絡連接詳細信息。查看第二行 inet addr 。您可能想設置一個靜態IP地址(什么是靜態IP?),但現在記下這個數字。
現在開始運動:
sudo service motion start
您可以通過將“開始”更改為“停止”或“重新啟動”來停止或重新啟動Motion。
切換到計算機并從Web瀏覽器導航到Pi:
http://xxx.xxx.x.xx:8081
其中xxx.xxx.x.xx是Pi IP地址。冒號后跟數字是之前設置的端口。一切順利,您應該可以從網絡攝像頭中看到信息流!嘗試四處移動,看看情況如何。您可能需要在配置文件中調整亮度和對比度設置。您可能需要對網絡攝像頭進行對焦-某些型號的鏡頭周圍有一個小的對焦環。將其旋轉直到圖像最清晰。
回到樹莓派,創建一個文件夾并導航到其中:
mkdir security-cam
cd security-cam/
現在安裝Twisted:
sudo apt-get install python-twisted
Twisted是用Python編寫的Web服務器,它將偵聽命令,然后采取相應的措施。
安裝后,創建Python腳本來執行命令(移動伺服器。)
sudo nano servos.rpy
注意文件擴展名是“ .rpy”而不是“ py”。這是代碼:
# Import necessary files
import serial
from twisted.web.resource import Resource
# Setup Arduino at correct speed
try:
arduino = serial.Serial(‘/dev/ttyUSB0’, 9600)
except:
arduino = serial.Serial(‘/dev/ttyUSB1’, 9600)
class MoveServo(Resource):
isLeaf = True
def render_GET(self,request):
try:
# Send value over serial to the Arduino
arduino.write(request.args[‘value’][0])
return ‘Success’
except:
return ‘Failure’
resource = MoveServo()
現在啟動Web服務器:
sudo twistd -n web -p 80 --path /home/pi/security-cam/
讓我們分解一下-“ -p 80”指定端口(80)。這是網頁的默認端口。 “ –path/home/pi/security-cam/”告訴Twisted在指定目錄中啟動服務器。如果您對“ security-cam”文件夾中的腳本進行了任何更改,則需要重新啟動服務器( CTRL + X 以關閉,然后再次運行命令)。
現在創建網頁:
sudo nano index.html
這是網頁代碼:
Left
Right
Up
Down
更改“ PI_IP_ADDRESS”(已使用兩次) )到您Pi的真實IP地址(如果您正在運行最新的Raspian,則 raspberrypi.local 也應該可以使用)。重新啟動網絡服務器,然后從計算機導航至Pi,無需指定端口。您應該可以左右左右平移,并觀看視頻流:
在那里。您自己的云臺網絡攝像機。如果要將網絡攝像頭暴露在互聯網上,請記住要考慮的危險–然后研究端口轉發,以便路由器知道將傳入請求發送到哪里。您可以為真正的便攜式設備添加外部電源和Wi-Fi適配器。
責任編輯:wv
-
攝像機
+關注
關注
3文章
1604瀏覽量
60096 -
樹莓派
+關注
關注
116文章
1708瀏覽量
105685
發布評論請先 登錄
相關推薦
評論