реклама

Научете как да направите дистанционно гледано пано и накланяне на охранителна камера с Raspberry Pi. Този проект може да бъде завършен сутрин само с най-простите части. Ето и крайния резултат:

От какво имаш нужда

  • Raspberry Pi 2 или 3 с Micro SD карта
  • Arduino UNO или подобен
  • 2 x микро или мини хоби сервота
  • USB уеб камера
  • Мъжки до мъжки проводници за търсене
  • Мъжки до женски проводници за издигане
  • Разнообразни цип връзки

Изграждане на камера за сигурност

Прикрепете серво клаксон (малките пластмасови „форми“) към всеки сервозащитник с помощта на предоставения винт. Конкретната форма всъщност няма значение, въпреки че колкото по-голяма е, толкова по-добре. Не затягайте прекалено много винта.

Сега използвайте цип връзки, за да прикрепите едно серво към другото под прав ъгъл. Единият от тях ще бъде панорамно (отляво надясно), докато другият ще бъде наклонен (нагоре и надолу). Няма значение кой прави какво, може да бъде коригиран в кода.

Серво-Хардуер

Накрая прикрепете вашата уеб камера към един от сервовете. Можете да използвате цип връзки за това, въпреки че уеб камерата ми дойде с клипс, завит в дъното - махнах това и използвах винта, за да го придържа към рога. За стабилност може да искате да монтирате цялата платформа към калъф или кутия. Една обикновена картонена кутия прави трика доста добре. Бихте могли да изрежете чист квадратен отвор и да монтирате един серво флаш към повърхността, но връзката с цип ще бъде достатъчна.

instagram viewer

Пи-Pan-Tilt-камера

Дума за уеб камери

Не всички USB уеб камери са създадени еднакво. Свържете вашата уеб камера към USB порта на вашия Pi и изпълнете тази команда:

lsusb

Тази команда показва информация за всички USB устройства, свързани към Pi. Ако вашата уеб камера не е посочена тук, може да искате да опитате захранван USB хъб и да повторите командата. Ако уеб камерата все още не е разпозната, може да се наложи да закупите съвместима уеб камера.

Серво настройка

Макар сервовете да изглеждат страшни и сложни, те наистина са доста лесни за свързване. Сервовете работят на импулсна широчина модулация (PWM), което е начин за цифровите системи да имитират аналогови сигнали. PWM сигналите по същество са бърз сигнал за включване и изключване. Сигналът, който е ВКЛЮЧЕН или ВИСОКИ, се описва с използване на работен цикъл. Дежурният цикъл се изразява като процент и описва колко дълго е включен сигналът. PWM сигнал с 25% работен цикъл ще бъде включен за 25% от времето, а OFF за останалите 75%. Сигналът не е включен в началото и след това е изключен завинаги, той се пулсира редовно за много кратък период от време.

Сервовете слушат тези импулси и действат съответно. Използването на работен цикъл от 100% ще бъде същото като "обикновените" 5v, а 0% ще бъде същото като земята. Не се притеснявайте, ако не разберете напълно как работи PWM, все още можете да контролирате сервовете (Extreme Electronics е добро място да научите повече).

Има два основни начина за използване на PWM - хардуер или софтуер. Хардуерният PWM често осигурява по-ниска латентност (колко време между серво приемащия командата и се движи) от софтуера PWM, но Pi има само един хардуерен PWM-пин. Външни вериги са на разположение за предоставяне на множество канали на хардуерна PWM, но обикновен Arduino може да се справи и със задачата, тъй като те имат множество хардуерни PWM пинове.

Ето схемата:

Пи-Servo-Connection

Проверете двукратно финиш за вашия Pi, те се различават леко в различните модели. Трябва да разберете как се свързват вашите сервоприводи. Сервовете изискват три проводника, за да ги контролират, но цветовете леко се различават:

  • Червеното е положително, свържете това към Pi + 5v
  • Кафяво или черно е отрицателно, свържете това с GND на Pi
  • Оранжево или бяло е сигнал, свържете го с Arduino щифтове 9 и 10

Настройка на Arduino

Нови ли сте за Ардуино? Започнете тук Първи стъпки с Arduino: Ръководство за начинаещиArduino е платформа за създаване на прототипи за електроника с отворен код, базирана на гъвкав, лесен за използване хардуер и софтуер. Той е предназначен за художници, дизайнери, любители и всички, които се интересуват от създаването на интерактивни обекти или среди. Прочетете още .

След като сервовете са свързани, отворете Arduino IDE на вашия компютър и качете този тестов код. Не забравяйте да изберете правилната дъска и порт от Инструменти> Съвет и Инструменти> Порт менюта

#include // Импортиране на библиотеката Servo servoPan, servoTilt; // Създаване на серво обекти. int servoMin = 20, servoMax = 160; // Определете граници на настройките на vovos void setup () {// Setup servos на PWM, способни да пиновете servoPan.attach (9); servoTilt.attach (10); } void loop () {for (int i = servoMin; i  servoMin; --i) {// Преместване на сервомери от максимум до минимум servoPan.write (i); servoTilt.write (i); забавяне (100); // Изчакайте 100ms} }

Ако сте добре, трябва да видите и двата сервоуправления бавно да се движат напред-назад. Забележете как „servoMin“ и servoMax се определят като 20 и 160 градуса (вместо 0 и 180). Това е частично, защото тези евтини сервоустройства не са в състояние точно да преместят пълните 180 градуса, а също така и поради физическия размер на уеб камерата предотвратява използването на целия диапазон. Може да се наложи да ги коригирате за вашата настройка.

Ако те не работят изобщо, проверете дали веригата е свързана правилно. Понякога хлебните дъски могат да се различават по качество, така че помислете за инвестиране в мултицет, за да проверите.

Сервовете са почти твърде мощен, за да може Arduino да захранва, така че те ще бъдат захранвани от Pi. 5V релсата на Пи е ограничени до 750mA, предоставени на целия Pi, и Pi черпи приблизително 500mA, оставяйки 250mA за сервомашинки. Тези микросървота черпят приблизително 80mA, което означава, че Pi трябва да може да се справи с два от тях. Ако искате да използвате повече серво или по-големи модели с по-голямо захранване, може да се наложи да използвате външно захранване.

Сега качете следния код в Arduino. Това ще изслуша входящите серийни данни (серийни като в Universal Сериен Шина или USB). Pi ще изпрати тези данни през USB на Arduino, като му каже къде да премести сервовете.

#include // Импортиране на библиотеката Servo servoPan, servoTilt; // Създаване на серво обект. String data = ""; // Съхраняване на входящите команди (буфер) настройка на невалидността () {// Настройка на сервовете на PWM-пиновете, способни на PWM, servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Стартира серийно със скорост 9600 bps (скорост) } void loop () {while (Serial.available ()> 0) {// Ако има данни char singleChar = Serial.read (); // Прочетете всеки знак, ако (SingleChar == 'P') {// Преместване на пан серво servoPan.write (data.toInt ()); данни = ""; // Изчисти буфер} else if (singleChar == 'T') {// Преместване на наклона servo servoTilt.write (data.toInt ()); данни = ""; // Изчисти буфер} else {data + = singleChar; // Добавяне на нови данни}} }

Можете да тествате този код, като отворите серийния монитор (горе вдясно> Сериен монитор) и изпращане на някои тестови данни:

  • 90 пенса
  • 0пу
  • 20T
  • 100T

Забележете формата на командите - стойност и след това буква. Стойността е позицията на сервото, а буквата (с главни букви) указва серво на панорама или наклона. Тъй като тези данни се предават от Pi серийно, всеки знак преминава през един по един. Arduino трябва да ги „съхранява“, докато цялата команда не бъде предадена. Окончателното писмо не само посочва серво, но също така дава възможност на Arduino да знае, че няма повече данни в тази команда.

И накрая, изключете Arduino от компютъра и включете го в Raspberry Pi чрез обичайната USB връзка.

Настройка на Pi

Сега е време да настроите Pi. На първо място, инсталирайте операционна система Как да инсталирате операционна система на Raspberry PiЕто как да инсталирате ОС на вашия Raspberry Pi и как да клонирате перфектната си настройка за бързо възстановяване при бедствия. Прочетете още . Свържете уеб камерата и Arduino към Pi USB.

Актуализирайте Pi:

sudo apt-get update. sudo apt-get upgrade

Инсталиране на движение:

sudo apt-get install motion

Motion е програма, създадена за обработка на стрийминг на уеб камери. Той се справя с всички тежки повдигания и дори може да извършва запис и откриване на движение (опитайте изграждане на система за сигурност за улавяне на движение Изградете система за сигурност за заснемане на движение с помощта на Raspberry PiОт многото проекти, които можете да изградите с Raspberry Pi, един от най-интересните и трайно полезни е защитната система за заснемане на движение. Прочетете още ). Отворете конфигурационния файл за движение:

sudo nano /etc/motion/motion.conf

Този файл предоставя много опции за конфигуриране на Motion. Настройка, както следва:

  • daemon on - Стартирайте програмата
  • кадър: 100 - Колко кадри или изображения / секунда за поточно предаване
  • stream_localhost изключен - Разрешаване на достъп в цялата мрежа
  • ширина 640 - Ширина на видеото, коригирайте за вашата уеб камера
  • височина 320 - Височина на видеото, регулирайте за вашата уеб камера
  • stream_port 8081 - Портът за извеждане на видео към
  • output_picture off - Не запазвайте изображения

Това е доста голям файл, така че може да искате да използвате CTRL + W за търсене на линии. След като приключите, натиснете CTRL + X и след това потвърдете, за да запазите и излезете.

Сега редактирайте още един файл:

sudo nano / etc / default / motion

Задайте „start_motion_daemon = да“. Това е необходимо, за да се гарантира движението на движението.

Сега разберете вашия IP адрес:

фоп

Тази команда ще покаже подробности за мрежовата връзка за Pi. Вижте втория ред, inet addr. Може да искате да зададете статичен IP адрес (какво е статичен IP? Какво е статичен IP адрес? Ето защо не ви трябваСтатичният IP адрес е този, който никога не се променя. Динамичните IP адреси се променят. Обясняваме защо не се нуждаете от статичен IP адрес. Прочетете още ), но засега направете забележка на този номер.

Сега стартирайте Motion:

sudo услуга движение движение

Можете да спрете или рестартирате Motion, като промените „старт“ на „стоп“ или „рестартиране“.

Преминете към вашия компютър и от уеб браузъра отидете на Pi:

http://xxx.xxx.x.xx: 8081

Където xxx.xxx.x.xx е Pi IP адресът. Двоеточието, последвано от номер, е пристанището, което беше настроено по-рано. Добре е, че трябва да видите потока от вашата уеб камера! Опитайте да се движите и да видите как изглеждат нещата. Може да се наложи да коригирате настройките за яркост и контраст в конфигурационния файл. Може да се наложи да фокусирате уеб камерата - някои модели имат малък фокусен пръстен около обектива. Завъртете това, докато изображението стане най-остро.

Върнете се на Pi, създайте папка и отидете в нея:

mkdir охрана-камера. cd сигурност-камера /

Сега инсталирайте Twisted:

sudo apt-get install python-twisted

Twisted е уеб сървър, написан на Python, който ще слуша команди и след това ще действа съответно.

Веднъж инсталиран, създайте Python скрипт за изпълнение на команди (преместете сервовете).

sudo nano servos.rpy

Забележете как разширението на файла е „.rpy“ вместо „py“. Ето кода:

# Импортирайте необходимите файлове. импортиране сериен. от twisted.web.resource import Ресурс # Настройка Arduino с правилна скорост. опитайте: arduino = сериен. Сериен ('/ dev / ttyUSB0', 9600) с изключение на: arduino = сериен. Сериен ('/ dev / ttyUSB1', 9600) клас MoveServo (ресурс): isLeaf = True def render_GET (самостоятелно, заявка): опитайте: # Изпратете стойност над сериен за Arduino arduino.write (request.args ['value'] [0]) връща 'Успех', с изключение на: return 'Failure' resource = MoveServo ()

Сега стартирайте уеб сървъра:

sudo twistd -n web -p 80 - path / home / pi / security-cam /

Нека го разградим - „-p 80“ указва порта (80). Това е порт по подразбиране за уеб страници. “–Пътека / начало / пи / сигурност-камера /” казва на Twisted да стартира сървъра в указаната директория. Ако направите някакви промени в скриптите в папката „security-cam“, ще трябва да рестартирате сървъра (CTRL + X за да затворите, след това стартирайте командата отново).

Сега създайте уеб страницата:

sudo nano index.html

Ето кода на уеб страницата:

Използвайте DIY камера за сигурност


Променете „PI_IP_ADDRESS“ (използван два пъти) на реалния IP адрес на вашия Pi (raspberrypi.local трябва да работи, ако използвате най-новия Raspian). Рестартирайте уеб сървъра и след това отидете до Pi от вашия компютър, не е необходимо да посочвате порта. Трябва да можете да преминавате панорамно наляво и надясно и да видите видеопотока:

Пи-Pan-Tilt-Camera-Web-View

Имате го. Вашата собствена мрежова камера за панорамиране и накланяне. Ако искате да изложите вашата уеб камера в интернет, не забравяйте помислете за опасностите 5 опасности, които трябва да имате предвид, когато посочвате домашните си камери за сигурностВажно е внимателно да обмислите къде позиционирате вашите камери и към кои части на вашия дом ги насочвате. Запазването на нещата е важно, но това е и запазването на поверителността ви. Прочетете още - след това погледнете пренасочване на порт Какво е пренасочване на порт и как може да ми помогне? [MakeUseOf обяснява]Плачеш ли малко вътре, когато някой ти каже, че има проблем с пренасочването на порт и затова твоето лъскаво ново приложение няма да работи? Вашият Xbox няма да ви позволи да играете игри, изтеглянията ви от торентите отказват ... Прочетете още , така че вашият рутер знае къде да изпраща входящи заявки. Можете да добавите външно захранване 3 батерии от Raspberry Pi за преносими проектиА батерията Raspberry Pi може да превърне обикновен Pi в преносим компютър. Ще ви трябва едно от тези решения за батерията, за да започнете. Прочетете още и Wi-Fi адаптер за наистина преносима платформа.

Направили ли сте нещо готино с уеб камера и Pi? Уведомете ме в коментарите, бих искал да видя!

Джо е завършил компютърни науки от университета в Линкълн, Великобритания. Той е професионален разработчик на софтуер и когато не лети дронове или пише музика, често може да бъде намерен да прави снимки или да прави видео.