Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Движение после моторизованной базы камеры

Компоненты и расходные материалы

Arduino UNO
× 1
Конденсатор 100 мкФ
× 1
LED (общий)
× 5
Датчик движения PIR (общий)
× 5
Резистор 220 Ом
× 5
Сервоприводы (Tower Pro MG996R)
× 1

Об этом проекте

Я пришел к этой идее, чтобы решить проблему, которая возникла с моими домашними камерами видеонаблюдения. У меня есть одна конкретная камера, которая расположена на стене между двумя комнатами, однако вы можете видеть только одну комнату за раз, если вы не войдете в программное обеспечение камеры, чтобы повернуть ее вручную. Если кто-то войдет в противоположную комнату, камера никогда не запишет это действие. Чтобы решить эту проблему, я решил создать базу для обнаружения / отслеживания движения, на которой я мог бы прикрепить камеру, чтобы она автоматически перемещалась туда, где было обнаружено движение.

КАК ЭТО РАБОТАЕТ:

Это устройство использует 5 датчиков движения PIR для обнаружения любого движения в радиусе 180 °. При обнаружении движения серводвигатель поворачивает основание камеры, указывая в этом направлении. Внутри базы также есть 5 светодиодных индикаторов состояния, которые загораются каждый раз, когда один из ИК-датчиков обнаруживает движение.

ПОСМОТРЕТЬ В ДЕЙСТВИИ!

ПРОВОДКА:

Электропроводка для этого проекта проста и понятна, однако из-за того, что всего 5 штук, кроме серводвигателя, количество проводов начинает немного увеличиваться. Ознакомьтесь с принципиальной схемой и схемами внизу этой страницы для получения более подробной информации, но вот основные сведения.

светодиодные индикаторы состояния ...

Я использовал миниатюрную макетную плату, чтобы отделить светодиодные фонари от остальной схемы, чтобы их было легче удалить в случае необходимости. Каждый светодиод реагирует на отдельный ИК-датчик и загорается при обнаружении движения. Просто подключите каждый светодиод к отдельному цифровому входу (9-13) на Arduino и заземлите их через резистор 220 Ом.

Датчики движения PIR ...

Для этого проекта я использовал датчики PIR модели HC-SR501. Каждый датчик PIR должен быть подключен к цифровому входу (2-6) на Arduino, питанию 5 В и заземлению. Если вы используете тот же датчик PIR, что и я, вы можете (осторожно) снять крышку, и контакты будут отмечены под ней. Вы подключите каждый датчик PIR к соответствующему светодиодному индикатору в коде, загруженном позже.

серводвигатель ...

Серводвигатель прикреплен к подставке, на которой установлена ​​камера, и поворачивает камеру для совмещения с активным датчиком PIR. Используя распиновку для вашего двигателя, подключите один контакт к источнику питания, другой контакт к цифровому входу 7 Arduino, а последний контакт к земле. Перед включением Arduino обязательно подключите конденсатор емкостью 100 мкФ между питанием и землей двигателя, чтобы защитить плату от скачков напряжения, возникающих при движении двигателя.

В отношении серводвигателей следует отметить то, что не все они имеют полный диапазон движения 180 °. После некоторого тестирования я выяснил, что мой сдвинулся только на 160 °, поэтому измените код соответствующим образом, если ваш двигатель отличается. Вы узнаете, что двигатель пытается переместиться слишком далеко, когда он издает скрежет в последнем положении датчика PIR.

СТРОИТЕЛЬСТВО:

Я использовал старую этикетировочную машину для компакт-дисков Memorex для корпуса сервопривода и поверхности для камеры. Мне не удалось сделать снимок «до», поэтому изображение ниже - единственное, что я смог найти в Интернете. Задняя часть представляла собой плоский прочный пластиковый диск, который в конечном итоге оторвался целиком (после небольшого уговора моей отвертки), так что он отлично подошел для места, где можно разместить мою камеру. Он также поставляется с 4 съемными резиновыми ножками, которые помогают камере немного лучше удерживать ее при движении двигателя.

Я поднес свои плоскогубцы к черной части в центре, чтобы удалить ее ... и под этим я имею в виду, разбить ее на столько частей, сколько смогу, пока она не исчезла :) Затем я просверлил пару отверстий в основании своим дремелем, а затем прикрепил серводвигатель парой винтов.

Наконец, я использовал другой винт, чтобы прикрепить серводвигатель к той части, где будет располагаться камера. Я столкнулся с проблемой, когда вес камеры приводил к наклону основания, поэтому я решил эту проблему, сделав картонный цилиндр достаточно высоким, чтобы свободно помещаться между двигателем и камерой. Теперь он по-прежнему свободно движется, но имеет большую поддержку благодаря равномерному распределению веса.

Вот как все выглядит после того, как датчики PIR были установлены и все схемы завершены. Вы заметите, что я использовал несколько макетов для завершения своего проекта. Причина в том, что это позволило очень легко разместить их внутри основания, а также выбрать, какой из них удалить, при устранении неполадок и расширении позже.

Чтобы завершить проект, я покрасил все видимые части картона в черный цвет, чтобы он выглядел более бесшовно с черной подставкой наверху.

Вот готовое изделие после покраски ...


Код

  • Основной код
Основной код Arduino
Датчики PIR будут откалиброваны в течение 15 секунд после включения Arduino. Рекомендуется покинуть комнату во время этого процесса, чтобы датчики получили истинное изображение комнаты без какого-либо движения.
 / ******************** ******************************** Основание моторизованной камеры слежения за движением ****** от Линдси Фокс *** ************************************************ / // Серводвигатель # include  Servo camServo; // имя серводвигателя, управляющего камерой, baseint currentPIRposition =0; // установить текущий угол сервопривода // светодиоды состояния int LEDpin [] ={9,10,11,12,13}; // Номера выводов светодиодаint currentLEDpin =9; // текущий вывод светодиода; начните с первого в приведенной выше последовательности // Датчики PIRint 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}; // назначаем углы для серводвигателя (0–157 равномерно распределяются между 5 датчиками PIR) boolean PIRstatus; // Установить статус датчика PIR как истинный или ложный ///// НАСТРОЙКА //////////////////////////////// ////// void setup () {Serial.begin (9600); camServo.attach (7); // назначаем серво вывод для (int p =0; p <5; p ++) {// устанавливаем все датчики PIR как INPUTS pinMode (PIRpin [p], INPUT); } // конец 'p' для for (int l =0; l <5; l ++) {// устанавливаем все светодиоды как ВЫХОДЫ pinMode (LEDpin [l], OUTPUT); } // конец 'l' для /////// КАЛИБРОВКА ПИР-ДАТЧИКОВ /////// Serial.print ("Калибровка ИК-датчиков"); for (int c =0; c <15; c ++) {// калибруем датчики PIR в течение 15 секунд (изменение с 10-60 секунд в зависимости от ваших датчиков) Serial.print ("."); задержка (1000); // ждем 1 секунду} // завершаем калибровку для Serial.println ("PIR Sensors Ready"); camServo.write (78,5); // переместите сервопривод в центральное положение для начала} // завершите настройку ///// ГЛАВНЫЙ КОНТУР ///////////////////////// /////// void loop () {for (int PIR =0; PIR <5; PIR ++) {// запускаем этот цикл для каждого датчика PIR currentPIRpin =PIRpin [PIR]; // установить текущий вывод PIR на текущий номер в цикле for currentLEDpin =LEDpin [PIR]; // установить текущий вывод светодиода на текущий номер в цикле for PIRstatus =digitalRead (currentPIRpin); if (PIRstatus ==HIGH) {// если на текущем датчике PIR обнаружено движение digitalWrite (currentLEDpin, HIGH); // включаем соответствующий светодиод if (PIRprevState [PIR] ==0) {// если предыдущее состояние датчика PIR было НИЗКОЕ if (currentPIRposition! =currentPIRpin &&PIRprevState [PIR] ==0) {// если высокое значение PIR отличается от текущее положение PIR, затем перейти в новое положение camServo.write (PIRposition [PIR]); Serial.print ("Текущий угол:"); Serial.println (PIRposition [PIR]); задержка (50); currentPIRposition =currentPIRpin; // сбрасываем текущую позицию PIR на активный [PIR] контакт PIRprevState [PIR] =1; // установить предыдущее состояние PIR на HIGH} PIRprevState [PIR] =1; // установить предыдущее состояние PIR в HIGH, если текущая позиция совпадает с текущим выводом PIR} // конец PIRprevState if} // конец PIRstatus if else {// digitalWrite (currentLEDpin, LOW); // светодиод визуализирует состояние выходного контакта датчика PIRprevState [PIR] =0; // установить предыдущее состояние PIR на LOW} // end else} // end [PIR] for loop} // конец основного цикла 

Схема


Производственный процесс

  1. Камера
  2. Минимальная база RaspberryPI
  3. Датчик движения с использованием Raspberry Pi
  4. Система сигнализации обнаружения движения
  5. Кнопка AWS IoT с управлением движением
  6. Малина с кулачком в скворечнике
  7. Читалка BrickPi
  8. ПОТОКОВАЯ ЖИВАЯ КАМЕРА МАЛИНЫ PI - НАСТРОЙКА ДВИЖЕНИЯ
  9. Технология линейного перемещения
  10. Пленоптическая камера