亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

基于 Arduino 舵机控制的自动运动追踪摄像头底座

组件与物料清单

组件数量备注
Arduino UNO1
电容 100 μF1舵机电源滤波
LED(通用)5状态指示灯
PIR 运动传感器(通用,HC-SR501)5覆盖 180° 范围
电阻 220 Ω5LED 限流
舵机 (Tower Pro MG996R)1驱动摄像头底座旋转

项目简介

我有一个家庭监控摄像头安装在两个房间中间的墙上,但一次只能看到一个房间,除非手动登录软件旋转。如果有人进入另一房间,摄像头根本记录不到。为了解决这个问题,我决定制作一个运动检测/追踪底座,安装摄像头后能自动转向检测到运动的方向。

工作原理

设备使用 5 个 PIR 运动传感器检测 180° 范围内的运动。一旦检测到运动,舵机旋转摄像头底座指向该方向。底座内还有 5 个 LED 状态灯,对应各 PIR 传感器,检测到运动时点亮。

观看演示

接线说明

接线简单直接,但因除舵机外每样都有 5 个,线数较多。详见页面底部原理图,这里概述要点:

LED 状态灯

用迷你面包板单独放置 LED,方便日后拆卸。每个 LED 对应一个 PIR 传感器,检测到运动即点亮。将每个 LED 连接到 Arduino 不同数字引脚 (9-13),通过 220Ω 电阻接地。

PIR 运动传感器

使用 HC-SR501 型 PIR 传感器。每个传感器连接到一个数字引脚 (2-6)、5V 电源和地。若用同款传感器,可小心撬开外壳,引脚标识在底部。代码中将每个 PIR 传感器与对应 LED 关联。

舵机

舵机安装在摄像头支架上,旋转摄像头对准激活的 PIR 传感器。按舵机引脚定义:一脚接电源,一脚接 Arduino 数字引脚 7,一脚接地。上电前务必在舵机电源和地之间并联 100μF 电容,防止舵机动作产生的电流冲击损坏 Arduino。

注意:并非所有舵机都有完整 180° 行程。测试发现我的舵机仅约 160°,若你的不同请修改代码。舵机在最后一个 PIR 位置发出摩擦声说明试图超程。

结构制作

利用旧 Memorex CD 贴标机做舵机外壳和摄像头安装平台。没拍“改造前”照片,网上找到仅存图片如下:

基于 Arduino 舵机控制的自动运动追踪摄像头底座

后部是平整坚固的塑料圆盘,用螺丝刀稍微用力就整块取下,正好做摄像头底座。自带 4 个可拆卸橡胶脚,增加摄像头抓地力。

用钳子拆除中间黑色部分(其实是掰碎)。用 Dremel 在底座钻几个孔,用螺丝固定舵机。再用一颗螺丝将舵机输出轴连接到摄像头安装件。

遇到问题:摄像头重量导致底座倾斜。解决方法:做一个纸板圆筒,高度刚好松动套在舵机和摄像头安装件之间。现在依然自由转动,但重量均匀分布,支撑更稳。

基于 Arduino 舵机控制的自动运动追踪摄像头底座

安装完 5 个 PIR 传感器并完成所有电路后的样子。用了多块面包板,方便塞进底座内部,也便于故障排查和后续扩展时拆卸单块。

基于 Arduino 舵机控制的自动运动追踪摄像头底座
基于 Arduino 舵机控制的自动运动追踪摄像头底座

最后将纸板可见部分喷漆成黑色,与上方黑色支架融为一体。

基于 Arduino 舵机控制的自动运动追踪摄像头底座
基于 Arduino 舵机控制的自动运动追踪摄像头底座
基于 Arduino 舵机控制的自动运动追踪摄像头底座

代码

主程序 Arduino

上电后 PIR 传感器校准 15 秒,建议在此期间离开房间,让传感器获取无运动时的基准环境。

/*************************************************
 *** The Motion Following Motorized Camera Base ***
 *** by Lindsay Fox ***
 *************************************************/
// 舵机库
#include <Servo.h>
Servo camServo;           // 控制摄像头底座的舵机
int currentPIRposition = 0; // 当前舵机角度

// LED 状态灯
int LEDpin[] = {9,10,11,12,13}; // LED 引脚
int currentLEDpin = 9;          // 当前 LED 引脚,从数组第一个开始

// PIR 传感器
int PIRpin[] = {2,3,4,5,6};     // PIR 引脚
int currentPIRpin = 2;          // 当前 PIR 引脚
int PIRprevState[] = {1,1,1,1,1}; // PIR 前一状态 (0=LOW, 1=HIGH)
int PIRposition[] = {157,117.75,78.5,39.25,0}; // 5 个 PIR 对应的舵机角度 (0-157 均匀分布)
boolean PIRstatus;              // PIR 状态 true/false

///// SETUP //////////////////////////////////////
void setup() {
  Serial.begin(9600);
  camServo.attach(7); // 舵机信号线接引脚 7
  for (int p = 0; p < 5; p++) {
    pinMode(PIRpin[p], INPUT); // 所有 PIR 设为输入
  }
  for (int l = 0; l < 5; l++) {
    pinMode(LEDpin[l], OUTPUT); // 所有 LED 设为输出
  }
  ///// 校准 PIR 传感器 ///////
  Serial.print("Calibrating PIR Sensors ");
  for(int c = 0; c < 15; c++) { // 校准 15 秒 (根据传感器可改 10-60 秒)
    Serial.print(".");
    delay(1000);
  }
  Serial.println("PIR Sensors Ready");
  camServo.write(78.5); // 舵机转到中心位置开始
}

///// MAIN LOOP //////////////////////////////////
void loop() {
  for (int PIR = 0; PIR < 5; PIR++) { // 遍历 5 个 PIR
    currentPIRpin = PIRpin[PIR];
    currentLEDpin = LEDpin[PIR];
    PIRstatus = digitalRead(currentPIRpin);
    if (PIRstatus == HIGH) { // 检测到运动
      digitalWrite(currentLEDpin, HIGH); // 点亮对应 LED
      if(PIRprevState[PIR] == 0) { // 前一状态为 LOW
        if (currentPIRposition != currentPIRpin && PIRprevState[PIR] == 0) {
          // 激活的 PIR 与当前位置不同,则移动舵机
          camServo.write(PIRposition[PIR]);
          Serial.print("Current angle : ");
          Serial.println(PIRposition[PIR]);
          delay(50);
          currentPIRposition = currentPIRpin; // 更新当前位置
          PIRprevState[PIR] = 1; // 置前一状态为 HIGH
        }
        PIRprevState[PIR] = 1; // 若当前位置相同也置 HIGH
      }
    } else {
      // digitalWrite(currentLEDpin, LOW); // LED 熄灭(可选)
      PIRprevState[PIR] = 0; // 置前一状态为 LOW
    }
  }
}

制造工艺

  1. 现代相机的演变与设计
  2. 树莓派极简防静电外壳:低成本防静电损坏方案
  3. 树莓派 PIR 运动传感器控制 LED 实战指南
  4. Java 与 Reactive Blocks 构建运动检测报警系统:树莓派部署发送短信
  5. 树莓派 + PIR 传感器 + MQTT 打造 AWS IoT 运动触发按钮
  6. 树莓派摄像头安装鸟屋完整指南:NoIR 相机、LED 补光与环境监测
  7. BrickPi Bookreader:树莓派+乐高Mindstorms自动翻页朗读Kindle
  8. 树莓派搭建实时IP摄像头:Motion流媒体逐步指南
  9. 电动球阀:功能、优势与应用详解
  10. MotoSight 3D CortexVision:面向精密机器人的先进 3D 视觉系统
  11. 直线运动技术:自动化精密解决方案
  12. NASA 兰利研究中心推出先进全光场相机实现 3D 彩色成像