Oglas
Naučite kako napraviti malu vidljivu tavu i nagnuti sigurnosnu kameru s Raspberry Pi. Ovaj se projekt može dovršiti ujutro uz samo najjednostavnije dijelove. Evo krajnjeg rezultata:
Što trebaš
- Raspberry Pi 2 ili 3 s Micro SD karticom
- Arduino UNO ili slično
- 2 x mikro ili mini hobi servo uređaji
- USB web kamera
- Muški do muški spoj
- Žice za muško i žensko spajanje
- Izvrsne kravate
Izgradnja sigurnosne kamere
Umetnite servo rog (mali plastični "oblici") na svaki servo pomoću priloženog vijka. Konkretni oblik zapravo nije važan, iako što je veći, to je bolji. Nemojte previše zategnuti vijak.
Sada koristite zip kravate da jedan servo pričvrstite na drugi pod pravim kutom. Jedna od njih bit će pomicana (slijeva udesno), dok će druga biti nagnuta (gore i dolje). Nije važno tko radi što, može se prilagoditi u kodu.
Na kraju, priložite svoju web kameru na jedan od servo uređaja. Možete upotrijebiti zip-kravate za to, iako je moja web kamera dolazila s kopčom zašiljenom na dnu - uklonila sam je i koristila vijak kako bih je držala za rog. Za stabilnost možda želite montirati cijelu opremu na kućište ili kutiju. Jednostavna kartonska kutija čini trik vrlo lijepo. Možete izrezati urednu kvadratnu rupu i montirati jedan servo tok na površinu, no spojnica sa zadrgom bit će dovoljna.
Riječ o web-kamerama
Nisu sve USB web kamere kreirane podjednako. Spojite svoju web kameru na USB priključak vašeg Pi i pokrenite ovu naredbu:
lsusb
Ova naredba prikazuje podatke o svim USB uređajima koji su spojeni na Pi. Ako vaša web kamera nije ovdje navedena, možda biste trebali isprobati napajan USB čvorište i ponavljanje naredbe. Ako web kamera još uvijek nije prepoznata, možda ćete morati kupiti a kompatibilna web kamera.
Postavljanje servo
Iako se servoslugovi mogu činiti zastrašujućim i složenim, njih je stvarno jednostavno povezati. Servovi rade na modulaciji širine impulsa (PWM), što je način da digitalni sustavi oponašaju analogne signale. PWM signali su u osnovi brz ON / OFF signal. Signal koji je uključen ili visok je opisan radnim ciklusom. Ciklus radnog stanja izražava se u postocima i opisuje koliko dugo je signal UKLJUČEN. PWM signal od 25% radnog ciklusa bit će UKLJUČEN 25% vremena, a OFF za preostalih 75%. Na početku signal nije UKLJUČEN, a zatim isključen zauvijek, redovito se pulsira u vrlo kratkom vremenu.
Servovi slušaju ove pulseve i djeluju u skladu s tim. Korištenje radnog ciklusa od 100% bilo bi isto kao "običnih" 5v, a 0% bi bilo isto što i tlo. Ne brinite ako u potpunosti ne razumijete kako funkcionira PWM, i dalje možete kontrolirati servo (Extreme Electronics je dobro mjesto za učenje više).
Postoje dva glavna načina korištenja PWM - hardverski ili softverski. Hardverski PWM često pruža nižu latenciju (koliko dugo između servoa koji prima naredbu i kreće se) od softverskog PWM-a, ali Pi ima samo jedan hardverski pin PWM. Vanjski krugovi dostupni su za opskrbu višestrukim kanalima hardverskog PWM-a, no jednostavan Arduino se također može nositi s tim zadatkom jer imaju više hardverskih PWM pinova.
Evo kruga:
Dvaput provjerite isječak za vaš Pi, oni se malo razlikuju između modela. Morate shvatiti kako su vaši servovodi ožičeni. Za servose su potrebne tri žice za kontrolu, no boje se neznatno razlikuju:
- Crvena je pozitivna, povežite je s Pi + 5v
- Smeđa ili crna je negativna, povežite je s GND-om na Pi
- Narančasta ili bijela je signal, spojite to na Arduino igle 9 i 10
Postavljanje Arduina
Novi ste za Arduino? Započnite ovdje Početak rada s Arduinom: Vodič za početnikeArduino je platforma za prototiranje elektronike otvorenog koda koja se temelji na fleksibilnom hardveru i softveru koji se lako koristi. Namijenjen je umjetnicima, dizajnerima, hobistima i svima koji su zainteresirani za stvaranje interaktivnih objekata ili okruženja. Čitaj više .
Nakon što su servospojevi povezani, otvorite Arduino IDE na računalu i prenesite ovaj testni kôd. Ne zaboravite odabrati ispravnu ploču i priključak Alati> Ploča i Alati> Luka izbornici
#include // Uvezi biblioteku Servo servoPan, servoTilt; // Stvaranje servo objekata. int servoMin = 20, servoMax = 160; // Definirajte granice servos void setup () {// Postavljanje servosa na igle koje omogućuju PWM servoPan.attach (9); servoTilt.attach (10); } void petlje () {for (int i = servoMin; i servoMin; --i) {// Premjestite servo s maksimalnog na minimalni servoPan.write (i); servoTilt.write (i); kašnjenje (100); // Čekaj 100ms} }
Kad bi bilo dobro, trebali biste vidjeti kako se servovi polako kreću naprijed-natrag. Zapazite kako su "servoMin" i servoMax definirani kao 20 i 160 stupnjeva (umjesto 0 i 180). To je dijelom zato što ovi jeftini servo uređaji ne mogu precizno pomicati punih 180 stupnjeva, a također zbog fizičke veličine web kamere onemogućava korištenje cijelog raspona. Možda ćete ih trebati prilagoditi svojim postavkama.
Ako ne rade uopće, dvaput provjerite je li strujni kabel pravilno spojen. Paneli za kruh ponekad se mogu razlikovati i po kvaliteti, tako da provjerite ulaganje u multimetar.
Servovi su skoro prejaki da bi Arduino mogao napajati pa će ih napajati Pi. Šina 5v na Pi je ograničen na 750mA predviđen za cijeli Pi, a Pi crpi približno 500mA, ostavljajući 250mA za Servos. Ti mikro servoi izvlače oko 80mA, što znači da bi Pi trebao biti u stanju podnijeti dva od njih. Ako želite koristiti više servo-motora ili veće modele sa jačim pogonom, možda će vam trebati koristiti vanjski izvor napajanja.
Sada prenesite sljedeći kôd u Arduino. Ovo će slušati ulazne serijske podatke (serijski kao u Universal-u Serijski Bus ili USB). Pi će poslati ove podatke preko USB-a Arduinu, govoreći mu gdje treba prebaciti servo.
#include // Uvezi biblioteku Servo servoPan, servoTilt; // Stvaranje servo objekta. Niz podataka = ""; // Pohranite dolazne naredbe (međuspremnik) void setup () {// Postavljanje servosa na igle koje omogućuju PWM servoPan.attach (9); servoTilt.attach (10); Serijski počet (9600); // Pokreni serijski brzinom od 9600 bps (brzina) } void loop () {while (Serial.available ()> 0) {// Ako postoje podaci char singleChar = Serial.read (); // Pročitajte svaki znak ako (singleChar == 'P') {// Pomicanje pan servo servoPan.write (data.toInt ()); data = ""; // Izbriši međuspremnik} else if (singleChar == 'T') {// Premjesti nagib servo servoTilt.write (data.toInt ()); data = ""; // Izbriši međuspremnik} else {data + = singleChar; // Dodati nove podatke}} }
Ovaj kôd možete testirati otvaranjem serijskog monitora (gore desno> Serijski monitor) i slanje nekih podataka o testiranju:
- 90P
- 0 p
- 20T
- 100t
Primijetite format naredbi - vrijednost, a zatim slovo. Vrijednost je položaj servo-a, a slovo (u velikim slovima) određuje servo s nagibom ili nagibom. Kako se ovi podaci serijski prenose s Pi-a, svaki znak dolazi jedan po jedan. Arduino ih mora "pohraniti" dok ne primi cijelu naredbu. Završno pismo ne samo da precizira servo, već daje i Arduinu do znanja da u ovoj naredbi nema više podataka.
Konačno, odspojite Arduino od računala i priključite ga u Raspberry Pi putem uobičajene USB priključnice.
Postavljanje Pi
Sada je vrijeme za postavljanje Pi-a. Prvi, instalirati operativni sustav Kako instalirati operativni sustav na Raspberry PiEvo kako instalirati OS na vaš Raspberry Pi i kako klonirati savršenu postavku za brzi oporavak od katastrofe. Čitaj više . Spojite web kameru i Arduino na Pi USB.
Ažurirajte Pi:
sudo apt-get update. sudo apt-get nadogradnju
Instalirajte pokret:
sudo apt-get instalacija pokreta
Motion je program napravljen za upravljanje web streamingom. Bavi se svim teškim dizanjem, pa čak može obaviti snimanje i otkrivanje pokreta (pokušajte izgradnja sigurnosnog sustava hvatanja pokreta Izgradite sigurnosni sustav za snimanje pokreta pomoću Raspberry PiOd mnogih projekata koje možete graditi s Raspberry Pi, jedan od najzanimljivijih i trajno korisnih je sigurnosni sustav za snimanje pokreta. Čitaj više ). Otvorite datoteku za konfiguraciju pokreta:
sudo nano /etc/motion/motion.conf
Ova datoteka nudi puno opcija za konfiguriranje pokreta. Postavljanje na sljedeći način:
- daemon on - Pokrenite program
- broj sličica: 100 - Koliko okvira ili slika u sekundi
- stream_localhost isključen - Omogućuje pristup putem mreže
- širina 640 - širina videozapisa, prilagodite za svoju web kameru
- visina 320 - visina videozapisa, podesite za svoju web kameru
- stream_port 8081 - Luka za izlaz video zapisa u
- output_picture off - Ne spremajte nijednu sliku
Ovo je prilično velika datoteka, pa je možda želite koristiti CTRL + W za traženje linija. Nakon završetka pritisnite CTRL + X a zatim potvrdite za spremanje i izlaz.
Sada uredite još jednu datoteku:
sudo nano / itd. / zadani / pokret
Postavite "start_motion_daemon = da". Ovo je potrebno za osiguravanje pokretanja pokreta.
Sada saznajte svoju IP adresu:
ifconfig
Ova naredba pokazat će detalje mrežne veze za Pi. Pogledajte drugi red, inet adr. Možda želite postaviti statičku IP adresu (što je statički IP? Što je statična IP adresa? Evo zašto vam jedan ne trebaStatička IP adresa je ona koja se nikada ne mijenja. Dinamičke IP adrese se mijenjaju. Objašnjavamo zašto vam ne treba statična IP adresa. Čitaj više ), ali zasad zabilježite ovaj broj.
Sada pokrenite Motion:
sudo usluga pokreta pokreta
Možete zaustaviti ili ponovo pokrenuti Motion promjenom "start" u "stop" ili "restart".
Prebacite se na računalo i od web-preglednika prijeđite na pi:
http://xxx.xxx.x.xx: 8081
Gdje je xxx.xxx.x.xx Pi Pi adresa. Debelo crijevo za kojim slijedi broj nalazi se vrata koja je ranije postavljena. Da ste dobro, trebali biste vidjeti i stream sa vaše web kamere! Pokušajte se kretati i vidjeti kako stvari izgledaju. Možda ćete trebati prilagoditi postavke svjetline i kontrasta u config datoteci. Možda ćete trebati fokusirati web kameru - neki modeli imaju mali prsten za fokus oko objektiva. Okrećite dok slika nije najoštrija.
Natrag na Pi, stvorite mapu i pomaknite se u nju:
mkdir zaštita-kamera. CD sigurnosna kamera /
Sada instalirajte Twisted:
sudo apt-get install python-upletena
Twisted je web poslužitelj napisan na Pythonu, koji će slušati naredbe i tada djelovati u skladu s tim.
Nakon instaliranja, stvorite Python skriptu za izvršavanje naredbi (premjestite servo).
sudo nano servos.rpy
Primijetite kako je ekstenzija datoteke ".rpy" umjesto "py". Evo koda:
# Uvoz potrebnih datoteka. uvoz serijski. s twisted.web.resource import Resurs # Postavljanje Arduino ispravnom brzinom. probaj: arduino = serijski. Serijski ('/ dev / ttyUSB0', 9600) osim: arduino = serijski. Serijska ('/ dev / ttyUSB1', 9600) klasa MoveServo (resurs): isLeaf = Istina def render_GET (samo, zahtjev): probajte: # Pošaljite vrijednost preko serijski na Arduino arduino.write (request.args ['value'] [0]) vrate 'Uspjeh', osim: return 'Failure' resurs = MoveServo ()
Sada pokrenite webserver:
sudo twistd -n web -p 80 - put / kuća / pi / sigurnosna kamera /
Omogućuje ga raščlanjivanje - "-p 80" određuje priključak (80). Ovo je zadani ulaz za web stranice. "–Path / home / pi / security-cam /" kaže Twisted da pokrene poslužitelj u navedenom direktoriju. Ako napravite bilo kakve promjene u skripti unutar mape "security-cam", morat ćete ponovo pokrenuti poslužitelj (CTRL + X zatvoriti, a zatim ponovo pokrenuti naredbu).
Sada napravite web stranicu:
sudo nano index.html
Evo koda web stranice:
Iskoristite DIY sigurnosnu kameru
Promijenite "PI_IP_ADDRESS" (koristi se dva puta) na stvarnu IP adresu vašeg Pi (raspberrypi.local također bi trebao raditi ako imate najnoviji Raspian). Ponovno pokrenite web poslužitelj, a zatim idite na računalo Pi s računala, nema potrebe za određivanjem porta. Trebali biste moći pomicati pomak lijevo i udesno i pogledati videozapis:
Eno ga. Vaš vlastiti mrežni fotoaparat za pomicanje i nagibanje. Ako želite svoju web kameru izložiti internetu, imajte na umu razmotrite opasnosti 5 opasnosti koje treba razmotriti prilikom usmjeravanja kućnih sigurnosnih kameraVažno je pažljivo razmotriti na kojem mjestu postavljate svoje kamere i na koje dijelove svog doma ih usmjeravate. Čuvanje stvari je važno, ali isto tako i održavanje vaše privatnosti. Čitaj više - onda pogledaj prosljeđivanje luka Što je prosljeđivanje porta i kako mi može pomoći? [MakeUseOf objašnjava]Plačete li malo unutra kad vam netko kaže da postoji problem s prosljeđivanjem porta i da zbog toga vaša sjajna nova aplikacija neće raditi? Xbox vam neće dopustiti igranje igara, torrent preuzimanja odbijaju ... Čitaj više , tako da vaš usmjerivač zna kamo poslati dolazne zahtjeve. Možete dodati vanjsko napajanje 3 baterije za malinu Pi za prijenosne projekteRaspberry Pi baterija može obični Pi pretvoriti u prijenosno računalo. Za početak će vam trebati jedno od ovih baterijskih rješenja. Čitaj više i Wi-Fi adapter za stvarno prijenosni uređaj.
Jeste li napravili nešto cool s web kameru i pi? Javite mi u komentarima, volio bih vidjeti!
Joe je diplomski studij informatike na Sveučilištu u Lincolnu u Velikoj Britaniji. On je profesionalni programer softvera, a kad ne leti dronovima ili piše glazbu, često ga mogu naći fotografirati ili snimati videozapise.