0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用树莓派制作可远程观看的摇摄和倾斜安全摄像机

454398 来源:网络整理 作者:网络整理 2019-11-29 10:38 次阅读

您需要的东西

带有Micro SD卡的树莓派2或3

Arduino UNO或类似的

2 x微型或小型业余伺服器

USB网络摄像头

公对公连接线

公对母连接线

各式拉链带

构建安全摄像机

使用提供的螺钉将伺服喇叭(塑料的“小形状”)安装到每个伺服上。尽管越大越好,但特定的形状并不重要。请勿过度拧紧螺钉。

现在,使用拉紧带将一个伺服器以直角连接到另一个伺服器。其中一个将是平移(从左到右),而另一个将是倾斜(向上和向下)。不管哪个人做什么,都可以在代码中对其进行调整。

最后,将您的网络摄像头连接到其中一个伺服器上。尽管我的网络摄像头带有一个固定在底部的固定夹,但您可以使用拉链领带-我卸下了固定夹并用螺钉将其固定在喇叭上。为了稳定起见,您可能需要将整个钻机安装到箱子或盒子上。一个简单的纸板箱可以很好地解决问题。您可以切一个整洁的方孔,并在表面上安装一个伺服平齐,但是只需系上一条拉链即可。

关于摄像头的信息

并非所有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

    文章

    1418

    浏览量

    58961
  • 树莓派
    +关注

    关注

    113

    文章

    1635

    浏览量

    104678
收藏 人收藏

    评论

    相关推荐

    AI自然灾害泥石流监测识别摄像机

    摄像机AI
    博瓦(武汉)科技有限公司
    发布于 :2024年03月19日 10:54:19

    4K广播级NDIHX3云台摄像机是怎样的

    摄像机
    jf_33011535
    发布于 :2023年11月24日 08:54:19

    树莓都有哪些功能,是用什么编程的?

    怎么学习树莓树莓和传统单片的区别是哪些,如果有了树莓
    发表于 11-09 07:51

    树莓和单片怎么通信?

    树莓和单片怎么通信求大神解答?
    发表于 11-08 07:13

    感受普奥视4K静音云台摄像机的极致魅力

    摄像机
    jf_33011535
    发布于 :2023年11月03日 08:55:36

    树莓和51单片的主要区别是什么?

    树莓和51单片的主要区别是什么
    发表于 11-01 07:51

    树莓3树莓4原理图分享

    提供了树莓3、树莓3B、树莓4版本的原理图
    发表于 09-27 07:58

    树莓全新更换镜头相机配件官方指南

    树莓相机!树莓推出1230万像素更换镜头相机配件,配备索尼IMX477传感器,兼容C和C
    发表于 09-26 06:11

    夜视王高清摄像机-超低照度星光夜视全彩摄像机

    摄像机
    TOPVS2006
    发布于 :2023年08月07日 09:02:50

    直到被淘汰,我也没有看到真#索尼摄像机#精密加工 #索尼黑科技#光学组件

    摄像机
    学习电子知识
    发布于 :2023年07月10日 22:08:30

    安防监控领域如何选择适合的摄像机类型

      在安防监控领域,选择适合的摄像机类型对于实现有效的监控和安全管理至关重要。而在众多摄像机类型中,球型摄像机、子弹型摄像机、炮塔型
    的头像 发表于 06-19 09:36 1700次阅读

    树莓的故障分析检测

    各位大神,我的树莓B4,经常读不出卡数据,卡换个新的,故障依旧。请指点树莓的故障检查与维修。
    发表于 04-27 11:30

    USB摄像机支持GOLDBOX吗?

    USB 摄像机支持 GOLDBOX
    发表于 04-21 06:43