Mainos

Opi tekemään etäältä katseltavissa oleva pannu- ja kallistuskamera Raspberry Pi -sovelluksella. Tämä projekti voidaan saada aikaan aamulla vain yksinkertaisimmista osista. Tässä on lopputulos:

Mitä tarvitset

  • Vadelma Pi 2 tai 3 Micro SD -kortilla
  • Arduino UNO tai vastaava
  • 2 x mikro- tai miniharrastuksen servot
  • USB-verkkokamera
  • Uros uros kytkentäjohdot
  • Uros naaras kytkentäjohdot
  • Valikoima vetoketju

Turvakameran rakentaminen

Kiinnitä servosarvi (pienet muoviset ”muodot”) jokaiseen servoon mukana toimitetulla ruuvilla. Erityisellä muodolla ei ole väliä, vaikka mitä suurempi, sitä parempi. Älä kiristä ruuvia liikaa.

Kiinnitä nyt servo toisiinsa vetoketjuilla suorassa kulmassa. Yksi näistä on panorointi (vasemmalta oikealle), kun taas toinen kallistuu (ylös ja alas). Ei ole väliä kumpi tekee mitä, sitä voidaan säätää koodissa.

Servo-laitteisto

Kiinnitä lopuksi verkkokamerasi yhteen servoista. Voit käyttää vetoketjuja tähän, vaikka verkkokamerani mukana tuli pohjaan kiinnitetty pidike - poistin tämän ja pidin ruuvia pitämällä sitä sarvessa. Vakauden vuoksi voit asentaa koko takilan koteloon tai laatikkoon. Yksinkertainen pahvilaatikko tekee tempun melko hienosti. Voit leikata siisti neliönmuotoinen reikä ja kiinnittää yksi servo-uppo pinnalle, mutta vetoketju riittää.

Pi-Pan-Tilt-kamera

Sana web-kameroista

Kaikkia USB-kameroita ei luoda yhtä lailla. Liitä verkkokamerasi Pi-laitteen USB-porttiin ja suorita tämä komento:

lsusb

Tämä komento näyttää tiedot kaikista Pi-laitteeseen kytketyistä USB-laitteista. Jos verkkokameraasi ei ole lueteltu tässä, sinun kannattaa kokeilla virran saatavaa USB-keskitintä ja toistaa komento. Jos verkkokameraa ei vieläkään tunnisteta, saatat joutua ostamaan yhteensopiva verkkokamera.

Servon asennus

Vaikka servot saattavat tuntua pelottavilta ja monimutkaisilta, niiden yhdistäminen on todella melko helppoa. Servot toimivat pulssileveysmodulaatiolla (PWM), joka on tapa digitaalisiin järjestelmiin jäljitellä analogisia signaaleja. PWM-signaalit ovat pääosin nopeaa ON-OFF-signaalia. Signaali, joka on päällä tai korkea, kuvataan käyttöjaksolla. Käyttösykli ilmaistaan ​​prosentteina ja kuvaa, kuinka kauan signaali on päällä. 25%: n käyttöjakson PWM-signaali on päällä 25% ajasta ja POIS loppuvuodesta 75%. Signaali ei ole PÄÄLLE alussa ja sitten POIS ikuisesti, sitä pulssitetaan säännöllisesti hyvin lyhyen ajan.

Servot kuuntelevat näitä pulsseja ja toimivat sen mukaisesti. 100%: n työjakson käyttäminen olisi sama kuin ”normaalin” 5v: n, ja 0%: n olisi sama kuin maan. Älä huoli, jos et ymmärrä täysin PWM: n toimintaa, voit silti hallita servoja (Extreme Electronics on hyvä paikka oppia lisää).

PWM: n käyttämiseen on kaksi päätapaa - laitteisto tai ohjelmisto. Laitteiston PWM tarjoaa usein pienemmän latenssin (kuinka kauan komennon vastaanottavan ja liikuttavan palvelimen välillä) kuin ohjelmisto PWM, mutta Pi: llä on vain yksi laitteiston PWM-yhteensopiva tappi. Ulkoiset piirit ovat käytettävissä tarjoamaan useita laitteisto PWM-kanavia, mutta yksinkertainen Arduino pystyy myös hoitamaan tehtävän, koska niillä on useita laitteiston PWM-nastaita.

Tässä on piiri:

Pi-Servo-liitäntä

Tarkista vielä kerran pinout Pi-laitteellesi, ne vaihtelevat hieman malleittain. Sinun on selvitettävä, kuinka servosi on kytketty. Servot vaativat kolme johtoa niiden hallitsemiseksi, mutta värit vaihtelevat hieman:

  • Punainen on positiivinen, kytke tämä Pi + 5v-liitäntään
  • Ruskea tai musta on negatiivinen, kytke tämä GND: hen Pi
  • Oranssi tai valkoinen on signaali, kytke tämä Arduinon napoihin 9 ja 10

Arduino-asennus

Oletko uusi Arduinossa? Aloita täältä Arduinon aloittaminen: Aloittelijan opasArduino on avoimen lähdekoodin elektroniikan prototyyppialusta, joka perustuu joustavaan, helppokäyttöiseen laitteistoon ja ohjelmistoon. Se on tarkoitettu taiteilijoille, suunnittelijoille, harrastajalle ja kaikille, jotka ovat kiinnostuneita luomaan interaktiivisia esineitä tai ympäristöjä. Lue lisää .

Kun servot on kytketty, avaa Arduino IDE tietokoneellasi ja lähetä tämä testikoodi. Älä unohda valita oikea kortti ja portti Työkalut> Hallitus ja Työkalut> Portti valikot

#sisältää // Tuo kirjasto Servo servoPan, servoTilt; // Luo servo-objekteja. int servoMin = 20, servoMax = 160; // Määritä servos void setup -rajat () {// PWM-yhteensopivien servoPan.attach (9) -asennusten servit; servoTilt.attach (10); } tyhjä silmukka () {varten (int i = servoMin; i  servoMin; --i) {// Siirrä servot maksimista servoPan.write (i): ään; servoTilt.write (i); viive (100); // Odota 100 ms} }

Hyvinvoinnin vuoksi sinun pitäisi nähdä molemmat servot liikkuvan hitaasti edestakaisin. Huomaa, kuinka ”servoMin” ja servoMax ”määritellään 20 ja 160 asteeksi (0 ja 180 sijasta). Tämä johtuu osittain siitä, että nämä halvat servot eivät pysty täsmällisesti siirtämään kokonaista 180 astetta, ja myös verkkokameran fyysisen koon vuoksi estää koko alueen käyttämistä. Saatat joutua säätämään näitä asetuksia varten.

Jos ne eivät toimi ollenkaan, tarkista, että piiri on kytketty oikein. Leipälevyjen laatu voi myös vaihdella, joten harkitse sijoittamista yleismittariin tarkistaaksesi.

Servos ovat melkein liian voimakkaita Arduinon valtaan, joten Pi saa ne virtaan. Pi: n 5v-kisko on rajoitettu 750 mA: iin, joka toimitetaan koko Pi: lle, ja Pi vetää noin 500 mA, jättäen 250 mA: n servot. Nämä mikroseervot vetoavat noin 80 mA, mikä tarkoittaa, että Pi: n pitäisi pystyä käsittelemään kahta niistä. Jos haluat käyttää enemmän servoja tai suurempia, tehokkaampia malleja, saatat joutua käyttämään ulkoista virtalähdettä.

Lataa nyt seuraava koodi Arduinoon. Tämä kuuntelee saapuvaa sarjatietoa (sarjakuva kuin Universalissa) Sarja Väylä tai USB). Pi lähettää nämä tiedot USB: n välityksellä Arduinolle ja ilmoittaa sille, mihin servot siirretään.

#sisältää // Tuo kirjasto Servo servoPan, servoTilt; // Luo servo-objekti. Merkkijonotiedot = ""; // Tallenna saapuvat komennot (puskuri) void setup () {// Asennus servossa PWM-yhteensopivilla nastoilla servoPan.attach (9); servoTilt.attach (10); Serial.begin (9600); // Aloita sarja nopeudella 9600 bps } tyhjä silmukka () {kun taas (Serial.avable ()> 0) {// Jos on tietoja char singleChar = Serial.read (); // Lue jokainen merkki, jos (singleChar == 'P') {// Siirrä pan servo servoPan.write (data.toInt ()); data = ""; // Tyhjennä puskuri} muu, jos (singleChar == 'T') {// Siirrä kallistettava servo servoTilt.write (data.toInt ()); data = ""; // Tyhjennä puskuri} else {data + = singleChar; // Lisää uusia tietoja}} }

Voit testata tämän koodin avaamalla sarjamonitorin (oikeassa yläkulmassa> Sarjamonitori) ja testitietojen lähettäminen:

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

Huomaa komentojen muoto - arvo ja sitten kirjain. Arvo on servon sijainti, ja kirjain (isoilla kirjaimilla) määrittää panoroidun tai kallistettavan servon. Koska nämä tiedot siirretään Pi: stä sarjaan, kukin merkki tulee läpi yksi kerrallaan. Arduinon on "tallennettava" nämä, kunnes koko komento on lähetetty. Viimeisessä kirjaimessa ei vain määritetä servoa, vaan se myös antaa Arduinolle tietää, että tässä komennossa ei ole enää tietoja.

Irrota lopuksi Arduino tietokoneesta ja kytke se Raspberry Pi -sovellukseen tavallisen USB-portin kautta.

Pi-asennus

Nyt on aika asentaa Pi. Ensimmäinen, asenna käyttöjärjestelmä Kuinka asentaa käyttöjärjestelmä Raspberry Pi -sovellukseenTässä on ohjeet kuinka asentaa käyttöjärjestelmä Raspberry Pi -sovellukseen ja miten kloonata täydellinen asennus nopeasti nopeaan palautukseen. Lue lisää . Liitä verkkokamera ja Arduino Pi USB -liitäntään.

Päivitä Pi:

sudo apt-get -päivitys. sudo apt-get päivitys

Asenna liike:

sudo apt-get install motion

Motion on ohjelma, joka on tarkoitettu käsittelemään web-kameran suoratoistoa. Se käsittelee kaikki raskaat nostot ja voi jopa suorittaa tallennuksen ja liiketunnistuksen (kokeilla liiketalouden turvajärjestelmän rakentaminen Luo liiketallennusjärjestelmää vadelmapiä käyttämälläNiistä monista projekteista, joita voit rakentaa Raspberry Pi: n kanssa, yksi mielenkiintoisimmista ja pysyvästi hyödyllisimmistä on liikkeen sieppauksen turvajärjestelmä. Lue lisää ). Avaa Motion-asetustiedosto:

sudo nano /etc/motion/motion.conf

Tämä tiedosto tarjoaa paljon vaihtoehtoja Motionin määrittämiseen. Asenna seuraavasti:

  • daemon on - Suorita ohjelma
  • kehysnopeus: 100 - kuinka monta kuvaa tai kuvaa sekunnissa suoratoistettavana
  • stream_localhost pois - salli pääsy verkkoon
  • leveys 640 - videon leveys, säädä verkkokameran mukaan
  • korkeus 320 - videon korkeus, säädä verkkokameran mukaan
  • stream_port 8081 - Portti, jolla video lähetetään
  • output_picture pois - älä tallenna kuvia

Tämä on melko iso tiedosto, joten kannattaa ehkä käyttää sitä CTRL + W etsiä rivejä. Kun olet valmis, paina CTRL + X ja vahvista sitten tallentaaksesi ja poistuaksesi.

Muokkaa nyt yhtä tiedostoa:

sudo nano / etc / oletus / liike

Aseta ”start_motion_daemon = kyllä”. Tätä tarvitaan Motionin toiminnan varmistamiseksi.

Nyt selvitä IP-osoitteesi:

ifconfig

Tämä komento näyttää Pi-verkkoyhteyden yksityiskohdat. Katso toinen rivi, inet addr. Voit asettaa staattisen IP-osoitteen (mikä on staattinen IP? Mikä on staattinen IP-osoite? Tässä on miksi et tarvitse sitäStaattinen IP-osoite on se, joka ei koskaan muutu. Dynaamiset IP-osoitteet muuttuvat. Selitämme miksi et tarvitse staattista IP-osoitetta. Lue lisää ), mutta toistaiseksi merkitse tämä numero.

Aloita Motion:

sudo-palvelun liikkeen aloitus

Voit pysäyttää tai käynnistää liikkeen muuttamalla ”start” - “stop” tai “restart”.

Vaihda tietokoneellesi ja siirry selaimeen Pi: hen:

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

Missä xxx.xxx.x.xx on Pi IP-osoite. Kaksoispiste, jota seuraa numero, on portti, joka oli asetettu aiemmin. Kaikki hyvin, sinun pitäisi nähdä virta verkkokamerastasi! Kokeile liikkua ja katso miten asiat näyttävät. Saatat joutua säätämään konfigurointitiedoston kirkkaus- ja kontrastiasetuksia. Sinun on ehkä tarkennettava verkkokamera - joissakin malleissa on pieni tarkennusrengas objektiivin ympärillä. Käännä tätä, kunnes kuva on terävin.

Palaa Pi: lle, luo kansio ja selaa siihen:

mkdir turvakamera. cd turvakamera /

Asenna nyt Twisted:

sudo apt-get install python-twisted

Twisted on Pythonille kirjoitettu verkkopalvelin, joka kuuntelee komentoja ja toimii sitten vastaavasti.

Kun olet asentanut, luo Python-skripti komentojen suorittamiseksi (siirrä servot).

sudo nano servos.rpy

Huomaa, kuinka tiedostotunniste on .rpy sijaan "py". Tässä on koodi:

# Tuo tarvittavat tiedostot. Tuo sarja. osoitteesta twisted.web.resource Tuo resurssi # Asenna Arduino oikealla nopeudella. Kokeile: arduino = sarja. Sarjakuva ('/ dev / ttyUSB0', 9600) paitsi: arduino = sarja. Sarja ('/ dev / ttyUSB1', 9600) luokka MoveServo (resurssi): isLeaf = True def render_GET (itse, pyyntö): yritä: # Lähetä arvo yli sarja Arduinolle arduino.write (request.args ['arvo'] [0]) palauttaa 'Success' paitsi: return 'Failure' resource = MoveServo ()

Käynnistä nyt verkkopalvelin:

sudo twistd -n web -p 80 - polku / koti / pi / turvakamera /

Annetaan hajottaa se - “-p 80” määrittää portin (80). Tämä on verkkosivujen oletusportti. ”–Rata / koti / pi / turvallisuuskamera /” käskee Twistedin käynnistämään palvelimen määritettyyn hakemistoon. Jos teet muutoksia komentosarjoihin “security-cam” -kansion sisällä, sinun on käynnistettävä palvelin uudelleen (CTRL + X sulje ja suorita komento uudelleen).

Luo nyt verkkosivu:

sudo nano index.html

Tässä on verkkosivun koodi:

Hyödynnä DIY-turvakamera


Muuta ”PI_IP_ADDRESS” (käytetty kahdesti) Pi-laitteen todellinen IP-osoitteeseen (raspberrypi.local pitäisi toimia myös jos sinulla on viimeisin Raspian). Käynnistä verkkopalvelin uudelleen ja siirry sitten tietokoneelta Pi: hen, porttia ei tarvitse määrittää. Sinun pitäisi voida panoroida vasemmalle ja oikealle ja nähdä videovirta:

Pi-Pan-Tilt-kamera-Web-View

Siellä se on. Oma Pan-Tilt-verkkokamerasi. Jos haluat altistaa verkkokameran Internetille, muista harkitse vaarat 5 huomioitavaa vaaraa osoitettaessa kodinturvakameroitasiOn tärkeää harkita huolellisesti, mihin kamerasi sijoitetaan ja mihin kodin osiin ne osoittavat. Asioiden pitäminen turvassa on tärkeää, mutta samalla myös yksityisyytesi ylläpitäminen. Lue lisää - katso sitten portin uudelleenohjaus Mikä on sataman huolinta ja miten se voi auttaa minua? [MakeUseOf selittää]Itketkö vähän sisälläsi, kun joku kertoo sinulle olevan satamansiirto-ongelma, ja siksi kiiltävä uusi sovelluksesi ei toimi? Xboxisi ei anna sinun pelata pelejä, torrent-latauksesi kieltäytyvät ... Lue lisää , joten reitittimesi tietää, mihin saapuvat pyynnöt lähetetään. Voit lisätä ulkoinen virtalähde 3 Raspberry Pi -akkua kannettaviin projekteihinRaspberry Pi -akku voi tehdä tavallisesta Pi-kannettavasta tietokoneesta. Tarvitset yhden näistä akkuratkaisuista aloittamiseksi. Lue lisää ja Wi-Fi-sovitin todella kannettavalle laitteelle.

Oletko tehnyt jotain hienoa web-kameran ja Pi: n avulla? Kerro siitä kommentteissani, haluaisin nähdä!

Joe on valmistunut tietojenkäsittelytieteestä Lincolnin yliopistosta, Iso-Britannia. Hän on ammattimainen ohjelmistokehittäjä, ja kun hän ei lentä drooneja tai kirjoita musiikkia, hänet voidaan usein löytää ottamasta valokuvia tai tuottamaan videoita.