Oglas

Preberite več o tem, kako narediti varnostno kamero na daljavo in nagniti varnostno kamero z Raspberry Pi. Ta projekt je mogoče dokončati zjutraj z najpreprostejšimi deli. Tu je končni rezultat:

Kaj rabiš

  • Malina Pi 2 ali 3 z Micro SD kartico
  • Arduino UNO ali podobno
  • 2 x mikro ali mini servizatorji za hobi
  • USB spletna kamera
  • Moški do moški žic za iskanje
  • Moške do ženske žice za iskanje
  • Različne zadrge

Gradnja varnostne kamere

Na priložen vijak pritrdite servo rog (majhne plastične "oblike"). Določena oblika v resnici ni pomembna, čeprav večja, tem boljša. Vijaka ne pretirano zategnite.

Zdaj z zadrgo pritrdite en servo na drugega pod pravim kotom. Eden od teh bo pomikan (levo proti desni), drugi pa se bo nagibal (navzgor in navzdol). Ni pomembno, kdo počne kaj, lahko se prilagodi v kodi.

Servo-strojna oprema

Na koncu priložite svojo spletno kamero na enega od servoslugov. Za to lahko uporabite zadrge, čeprav je moja spletna kamera prišla s spodnjico, privitom na dno - to sem odstranil in z vijakom pritrdil na rog. Zaradi stabilnosti boste morda želeli celotno ploščo pritrditi na etui ali škatlo. Preprosta kartonska škatla naredi trik zelo lepo. Lahko bi izrezali lepo kvadratno luknjo in na površino pritrdili eno servo flush, vendar bo zadostovala zadrga.

Pi-Pan-Tilt-kamera

Beseda o spletnih kamerih

Niso vse spletne spletne strani USB ustvarjene enako. Priključite spletno kamero na vrata USB vašega Pi in zaženite ta ukaz:

lsusb

Ta ukaz prikazuje informacije o vseh napravah USB, ki so povezane na Pi. Če vaša spletna kamera ni navedena tukaj, boste morda želeli preizkusiti napajalno središče USB in ponoviti ukaz. Če spletna kamera še vedno ni prepoznana, boste morda morali kupiti a združljiva spletna kamera.

Nastavitev servo

Čeprav se servoslugi zdijo strašljivi in ​​zapleteni, jih je povezava resnično preprosta. Servos delujejo na impulzno širinsko modulacijo (PWM), kar omogoča digitalnim sistemom, da posnemajo analogne signale. PWM signali so v bistvu hitri ON / OFF signali. Z uporabo delovnega cikla je opisan signal, ki je vklopljen ali visok. Delovni cikel je izražen kot odstotek in opisuje, koliko časa je signal vklopljen. PWM signal 25% delovnega cikla bo vklopljen 25% časa, OFF pa za preostalih 75%. Signal na začetku ni vklopljen in se nato za vedno izklopi, redno utripa v zelo kratkem času.

Servosluški poslušajo te impulze in ustrezno ukrepajo. Uporaba 100-odstotnega delovnega cikla bi bila enaka "navadnim" 5V, 0% pa bi bilo enako kot tla. Brez skrbi, če ne razumete, kako deluje PWM, lahko še vedno upravljate servo (Extreme Electronics je dobro mesto, če želite izvedeti več).

Obstajata dva glavna načina uporabe PWM - strojna ali programska oprema. Strojna PWM pogosto zagotavlja nižje zamude (koliko časa je med servo, ki sprejema ukaz in se premika) kot programska PWM, vendar Pi ima samo en strojni PWM, ki je sposoben. Zunanja vezja so na voljo za zagotavljanje več kanalov PWM strojne opreme, vendar preprost Arduino lahko kos tudi nalogi, saj imajo več zatičev PWM strojne opreme.

Tukaj je vezje:

Pi-servo povezava

Dvakrat preverite pinout za vaš Pi, se med modeli nekoliko razlikujejo. Ugotoviti morate, kako so povezani vaši servovodi. Za servo potrebujejo tri žice za upravljanje, vendar se barve nekoliko razlikujejo:

  • Rdeča je pozitivna, priključite to na Pi + 5v
  • Rjava ali črna je negativna, to povežite z GND na Pi
  • Oranžna ali bela je signal, povežite to z Arduino zatiči 9 in 10

Arduinova namestitev

Ste novi v Arduinu? Začnite tukaj Uvod v Arduino: Vodnik za začetnikeArduino je odprtokodna platforma za izdelavo prototipov za elektroniko, ki temelji na fleksibilni, enostavni strojni in programski opremi. Namenjen je umetnikom, oblikovalcem, hobistom in vsem, ki jih zanima ustvarjanje interaktivnih predmetov ali okolij. Preberi več .

Ko so servo priključeni, v računalniku odprite Arduino IDE in naložite to preskusno kodo. Ne pozabite izbrati prave plošče in vrat na Orodja> Board in Orodja> Vrata meniji

#include // Uvozi knjižnico Servo servoPan, servoTilt; // Ustvari servo objekte. int servoMin = 20, servoMax = 160; // Določite omejitve servos void setup () {// Nastavite servos na PWM sposobne zatiče servoPan.attach (9); servoTilt.attach (10); } void loop () {for (int i = servoMin; i  servoMin; --i) {// Premik servo-kolesa od največjega do najmanjšega servoPan.write (i); servoTilt.write (i); zamuda (100); // Počakajte 100 ms} }

Dobro je, da bi videli, da se oba servo motorja počasi premikata naprej in nazaj. Opazite, kako sta "servoMin" in servoMax definirana kot 20 in 160 stopinj (namesto 0 in 180). Delno je to zato, ker ti poceni servo motorji ne morejo natančno premakniti polnih 180 stopinj in tudi zaradi fizične velikosti spletne kamere preprečujejo uporabo celotne ponudbe. Morda boste morali prilagoditi te nastavitve.

Če sploh ne delujejo, preverite, ali je vezje pravilno priključeno. Krušne plošče se lahko včasih razlikujejo tudi po kakovosti, zato preverite, ali investirajte v multimeter.

Servo so skorajda preveč močan, da bi Arduino napajal, zato jih bo napajal Pi. 5v tirnica na Pi je omejen na 750mA, ki je na voljo celotnemu Pi, in Pi črpa približno 500mA, pri čemer 250mA ostane za servo. Ti mikro servosrki potegnejo približno 80mA, kar pomeni, da naj bi bil Pi sposoben prenašati dva od njih. Če želite uporabiti več servo ali večjih modelov z močnejšim pogonom, boste morda morali uporabiti zunanji napajalnik.

Zdaj naložite naslednjo kodo v Arduino. Ta bo poslušal dohodne serijske podatke (serijski kot v Universal-u Serijska Bus ali USB). Pi bo te podatke preko USB poslal Arduinu in mu povedal, kam naj premakne servo.

#include // Uvozi knjižnico Servo servoPan, servoTilt; // Ustvari objekt servo. String data = ""; // Shrani dohodne ukaze (pufer) void setup () {// Setup servos na zatiče, ki omogočajo PWM, servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Začni serijsko s hitrostjo 9600 b / s (hitrost) } void loop () {while (Serial.available ()> 0) {// Če obstajajo podatki char singleChar = Serial.read (); // Preberite vsak znak, če (singleChar == 'P') {// Move pan servo servoPan.write (data.toInt ()); podatki = ""; // počisti medpomnilnik} else if (singleChar == 'T') {// Premakni nagib servo servoTilt.write (data.toInt ()); podatki = ""; // Počisti medpomnilnik} else {data + = singleChar; // Dodaj nove podatke}} }

To kodo lahko preizkusite tako, da odprete serijski monitor (zgoraj desno> Serijski monitor) in pošiljanje nekaterih preskusnih podatkov:

  • 90P
  • 0P
  • 20T
  • 100T

Opazite obliko ukazov - vrednost in nato črko. Vrednost je položaj servo, črka (v velikih črkah) pa določa servo ali pomik servo. Ker se ti podatki serijsko prenašajo iz Pi-ja, vsak znak pride po enega posebej. Arduino jih mora »shraniti«, dokler ni poslan celoten ukaz. Končno pismo ne samo določa servo, Arduino daje tudi vedeti, da v tem ukazu ni več podatkov.

Končno odklopite svoj Arduino iz računalnika in priključite ga na Raspberry Pi prek običajne povezave USB.

Pi nastavitev

Zdaj je čas, da nastavite Pi. Prvič, namestite operacijski sistem Kako namestiti operacijski sistem na Raspberry PiTukaj je opisano, kako namestiti OS na vaš Raspberry Pi in kako klonirati popolno nastavitev za hitro obnovo po nesrečah. Preberi več . Priključite spletno kamero in Arduino na Pi USB.

Posodobite Pi:

sudo apt-get update. nadgraditi sudo apt-get

Namestite gibanje:

sudo apt-get namestite gibanje

Motion je program za upravljanje pretoka spletnih kamer. Izvaja vse težje dviganje in lahko celo snema in zazna gibanje (poskusite izgradnja varnostnega sistema za zajem gibanja Zgradite varnostni sistem za zajem gibanja z uporabo Raspberry PiMed številnimi projekti, ki jih lahko zgradite z Raspberry Pi, je eden najbolj zanimivih in trajno uporabnih varnostni sistem za zajem gibanja. Preberi več ). Odprite konfiguracijsko datoteko Motion:

sudo nano /etc/motion/motion.conf

Ta datoteka ponuja veliko možnosti za nastavitev Motion. Nastavite na naslednji način:

  • daemon on - Zaženite program
  • frejm: 100 - koliko sličic ali slik na sekundo
  • stream_localhost off - Dovoli dostop po omrežju
  • širina 640 - Širina videoposnetka, prilagodite svoji spletni kameri
  • višina 320 - Višina videoposnetka, prilagodite svoji spletni kameri
  • stream_port 8081 - Vrata za izhod video v
  • output_picture off - Ne shranjujte nobene slike

To je precej velika datoteka, zato jo boste morda želeli uporabiti CTRL + W za iskanje vrstic. Ko končate, pritisnite CTRL + X in nato potrdite, da shranite in zapustite.

Zdaj uredite še eno datoteko:

sudo nano / itd / privzeto / gibanje

Nastavite "start_motion_daemon = da". To je potrebno za zagotovitev teka Motion.

Zdaj ugotovite svoj IP naslov:

ifconfig

Ta ukaz bo prikazal podatke o omrežni povezavi za Pi. Poglejte drugo vrstico, inet addr. Morda boste želeli nastaviti statični IP naslov (kaj je statični IP? Kaj je statični IP naslov? Tukaj je razlog, zakaj ga ne potrebujeteStatični IP naslov je tisti, ki se nikoli ne spremeni. Dinamični naslovi IP se spremenijo. Pojasnjujemo, zakaj ne potrebujete statičnega naslova IP. Preberi več ), vendar za zdaj zapišite to številko.

Zdaj začnite Motion:

sudo storitev gibanja začetek

Motion lahko ustavite ali znova zaženete tako, da spremenite "start" v "stop" ali "restart".

Preklopite na računalnik in v spletnem brskalniku pojdite na pi:

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

Kjer je xxx.xxx.x.xx Pi-naslov IP. Dvopičje, ki mu sledi številka, je vrata, ki so bila nastavljena prej. Dobro je, da bi morali videti tok s svoje spletne kamere! Poskusite se premikati in poglejte, kako stvari izgledajo. Morda boste morali prilagoditi nastavitve svetlosti in kontrasta v konfiguracijski datoteki. Morda boste morali osredotočiti spletno kamero - nekateri modeli imajo majhen fokusni obroč okoli objektiva. Obrnite to, dokler slika ni najbolj ostra.

Nazaj na Pi, ustvarite mapo in se pomaknite vanjo:

mkdir varnostna kamera. CD varnostna kamera /

Zdaj namestite Twisted:

sudo apt-get install python-zvit

Twisted je spletni strežnik napisan v Python-u, ki bo poslušal ukaze in nato ustrezno ukrepal.

Ko je nameščen, ustvarite Python skript za izvajanje ukazov (premaknite servo).

sudo nano servos.rpy

Opazite, kako je razširitev datoteke ".rpy" namesto "py". Tu je koda:

# Uvozi potrebne datoteke. uvoz serijski. od uvožene.web.resource import Resource # Setup Arduino s pravilno hitrostjo. poskusi: arduino = serijski. Serijska ('/ dev / ttyUSB0', 9600) razen: arduino = serijski. Serijski ('/ dev / ttyUSB1', 9600) razred MoveServo (vir): isLeaf = Resnično def render_GET (samo, zahteva): poskusi: # Pošlji vrednost nad serial na Arduino arduino.write (request.args ['value'] [0]) vrne 'Uspeh', razen: return 'Failure' resource = MoveServo ()

Zdaj zaženite spletni strežnik:

sudo twistd -n splet -p 80 - pot / dom / pi / varnostna kamera /

Naj se razčleni - "-p 80" določa vrata (80). To je privzeta vrata za spletne strani. "–Path / home / pi / security-cam /" pove Twisted, da zažene strežnik v določenem imeniku. Če spremenite skripte znotraj mape "security-cam", boste morali znova zagnati strežnik (CTRL + X zaprete in nato znova zaženite ukaz).

Zdaj ustvarite spletno stran:

sudo nano index.html

Tu je koda spletne strani:

Izkoristite DIY varnostno kamero


Spremenite "PI_IP_ADDRESS" (dvakrat uporabljen) v resnični naslov IP vašega Pi (maline.local bi moral delovati tudi, če imate zadnjo različico Raspian). Znova zaženite spletni strežnik in se nato pomaknite do pi iz računalnika, vrat ni treba določiti. Morali bi biti sposobni premikati levo in desno in si ogledati video tok:

Pi-Pan-Tilt-Camera-Web-View

Tu ga imate. Vaša lastna mrežna kamera za pomikanje in nagibanje. Če želite svojo spletno kamero izpostaviti internetu, ne pozabite upoštevajte nevarnosti 5 nevarnosti, ki jih morate upoštevati pri usmerjanju domačih varnostnih kamerPomembno je, da natančno razmislite, kje postavite svoje fotoaparate in na katere dele svojega doma jih usmerite. Varovanje stvari je pomembno, toda tudi ohranjanje vaše zasebnosti. Preberi več - nato poglej posredovanje pristanišč Kaj je posredovanje pristanišč in kako mi lahko pomaga? [MakeUseOf pojasnjuje]Ali malo zajokate v notranjosti, ko vam nekdo reče, da obstaja težava s posredovanjem vrat in zato vaša bleščeča nova aplikacija ne bo delovala? Vaš Xbox ne bo dovolil igranja iger, nalaganje torrentov zavrne ... Preberi več , tako da vaš usmerjevalnik ve, kam poslati dohodne zahteve. Lahko bi dodali zunanje napajanje 3 akumulatorski paketi Raspberry Pi za prenosne projekteAkumulator Raspberry Pi lahko navaden Pi pretvori v prenosni računalnik. Za začetek boste potrebovali eno od teh baterijskih rešitev. Preberi več in Wi-Fi adapter za res prenosno ploščad.

Ste s spletno kamero in piko naredili nekaj kul? Sporočite mi v komentarjih, rad bi videl!

Joe je diplomirani iz računalništva na Univerzi v Lincolnu v Veliki Britaniji. Je profesionalni razvijalec programske opreme, in ko ne leti z droni ali piše glasbe, ga je pogosto mogoče fotografirati ali ustvarjati videoposnetke.