Sisällysluettelo:

Automaattinen vesisuihku: 9 vaihetta
Automaattinen vesisuihku: 9 vaihetta

Video: Automaattinen vesisuihku: 9 vaihetta

Video: Automaattinen vesisuihku: 9 vaihetta
Video: Funktio 2024, Marraskuu
Anonim
Automaattinen seuranta Water Blaster
Automaattinen seuranta Water Blaster

Ruusua syövä hirvi motivoi minua rakentamaan kohteenseurannan vesisuihkuttimen, joka auttaisi estämään ahneita eläimiä… Tämä vesipuhallin käyttää videopohjaista liiketunnistusta servon kohdistamiseen ja lyhyiden vesipurskeiden laukaamiseen kohteeseen. Se ampuu vasta sen jälkeen, kun hankittu kohde on paikallaan muutaman sekunnin ajan (viive voidaan säätää koodissa). En välitä, jos peurot vain kävelevät ohi, mutta jos he pysähtyvät välipalaksi, heiluttele!

Tässä on video minusta, joka testaan vesipuhallinta:

Vesipuhallin on erillinen laatikko, joka voidaan yhdistää etäyhteydellä (wi-fi/VNC: n kautta) mistä tahansa verkon tietokoneesta seuratakseen mitä se tekee. Se ottaa kuvan joka kerta, kun se laukaistaan, joten voit myöhemmin nähdä, mitä räjäytettiin.

Käytin Raspberry Pi: tä, NoIR -nokkaa, IR -valaisinta, tavallista lineaarista servoa ja vesiventtiiliä luodakseni tämän päivän/yön, kohdeseurantavesisuihkun. Koodi on kirjoitettu Pythonilla ja lainataan voimakkaasti Adrian Rosebrockin cv2 -kuvankäsittelykoodinäytteistä. Näet hänen kirjoituksensa osoitteessa:

www.pyimagesearch.com/2015/06/01/home-surv…

Koska pyrin suhteellisen suuriin, maalla oleviin kohteisiin (peuroja), ongelmani on hieman yksinkertaistettu. Tarvitsen vain vaakasuoran tähtäyksen, jotta voin päästä eroon vain yhdestä servosta. Hirven seisomisen odottaminen auttaa minua poistamaan paljon vääriä laukaisijoita. Tämä on rev-0 -yritykseni ja olen löytänyt muutamia asioita, joita muuttaisin, jos rakentaisin toisen. Olen huomannut nämä asiat seuraavassa yksityiskohtaisessa kirjoituksessa.

Vaihe 1: Koodi

Vesipuhallin käyttää Raspberry Pi 3: ta käsittelyyn. Videon sieppaamiseen käytetään NoIR Raspberry Pi -kameraa ja IR -valaisinta yövideota varten. OpenCV/cv2 Python -pakettia käytetään kuvatietojen sieppaamiseen ja käsittelyyn sekä kohdekoordinaattien laskemiseen. Pigpio -kirjastoa käytetään ohjaamaan gpio vakaata servotoimintaa varten. Tavallisen RPi. GPIO -paketin käyttäminen johti vapisevaan servoon. HUOMAUTUS: Kun käytät pigpio -kirjastoa, sinun on suoritettava pigpio -demoni. Lisää tämä Pi: n /etc/rc.local pigpio lib- ja Raspberry Pi -kameran käyttöliittymän käynnistystiedostoon:

/etc/rc.local# Määritä/dev/video0 linkittämään Raspberry Pi: n sisäänrakennettuun kameran käyttöliittymään bcm2835-v4l2# Käynnistä Raspberry Pi IO -ohjauskirjaston pigpio-demoni

Katso lisätietoja osoitteesta

Lähdekoodin nimi on: water_blaster.py ja se on liitteenä alla.

Vastuuvapauslauseke: Olen uusi Python -koodauksessa, joten älä kohdella sitä suurena mallina Python -koodaustyylistä!

Perusalgoritmi on seuraava:

  • Tartu videon ensimmäiseen viitekehykseen. Tätä käytetään vertaamaan liikkeen havaitsemiseen.
  • Ota toinen kehys.
  • Muunna kehys harmaasävyiseksi, kokoa ja hämärtä.
  • Laske ero vertailukehyksestä
  • Suodata pienet erot, hanki suurimman eron koordinaatit.
  • Aseta ajastin. Jos tavoitekoordinaatti ei muutu muutamaan sekuntiin, ota kuva siitä, mitä aiomme ampua, ja käynnistä vesiventtiili vedenpuhallusta varten. Pyyhkäise servoa muutaman asteen edestakaisin "haulikon" räjähdykseen.
  • Jos saamme kolme laukaisinta liian nopeasti, poista kuvaaminen käytöstä, pysähdy hetkeksi ja päivitä viitekehys, koska kuvaamme mahdollisesti varjossa tai kuistilla, joka oli juuri päällä …
  • Päivitä viitekehykset muutaman minuutin välein ottamaan huomioon matalan taajuuden muutokset (auringon nousu/lasku, pilvinen muutto jne.)

Käytän vain vaakasuuntaista kohdistusmekanismia, mutta monia pan/tilt -servo -kiinnikkeitä on saatavana EBayssä, ja jos haluat tarkemman kohdistuksen, olisi helppo lisätä toinen servo pystysuoran kohdistuksen ohjaamiseksi.

Määritin Raspberry Pi: n toimimaan VNC -palvelimena ja muodostan sitten yhteyden siihen kannettavan tietokoneen VNC: n kautta ohjelman käynnistämiseksi ja videon ja lokien seuraamiseksi. cd hakemistoon, johon tallennat water_blaster.py ja suorita se kirjoittamalla:

./python water_blaster.py

Se avaa videomonitori-ikkunan, käynnistää lokitiedoston nimeltä "./log_[date]_[time] ja luo alihakemiston nimeltä" trigger_pictures ", johon tallennetaan jpg-tiedostot (trigger_ [date] _ [time]) jokaisesta otetusta laukauksesta.

Tässä on joitain huomautuksia VNC: n määrittämisestä Raspberry Pi -laitteeseesi:

Kun asetin Raspberry Pi: n ensimmäistä kertaa, käytin ulkoista näyttöä/näppäimistöä/hiirtä asetusten määrittämiseen. Siellä otin VNC -palvelimen käyttöön RasPi -määrityksessä (Raspberry Logo / Preferences / Raspberry Pi Configuration / Interfaces / Check VNC option). Jälkeenpäin, kun se käynnistyy, sen avulla voit muodostaa yhteyden sen: 0 -näyttöön VNC -asiakkaan kautta (samoilla tunnistetiedoilla kuin oletuskäyttäjä "pi").

Päättömässä tilassa se on oletuksena hyvin pienen resoluution näyttö (koska se ei tunnista mitään näyttöä), pakottaaksesi sen suurempaan resoluutioon lisäämällä tämä tiedostoon /boot/config.txt ja käynnistämällä uudelleen:

# Käytä, jos sinulla on näyttö# hdmi_ignore_edid = 0xa5000080hdmi_group = 2# 1400x1050 w/ 60Hz# hdmi_mode = 42# 1356x768 w/ 60Hzhdmi_mode = 39

Tässä on lisätietoja:

Vaihe 2: Elektroniikka

Vedenpuhalluselektroniikan vaatimukset ovat vähäiset, kun Raspberry Pi 3 gpio -laitetta käytetään servon, vesiventtiilin ja IR -valaisimen käyttämiseen erillisten transistoripuskurien kautta (rakennettu pieneen proto -korttiin). Tavallinen NoIR -kamera liitetään suoraan Raspberry Pi -laitteeseen.

Kaavion nimi on: water_blaster_schematic.pdf ja se on liitteenä alla.

Käytin 5v/2,5A omaa syöttöä Raspberry Pi: lle ja 12v/1A syöttöä IR -valaisimen ja vesiventtiilin ohjaamiseen. 12 voltin syöttö käyttää myös 5 voltin säädintä virran syöttämiseksi 5 voltin servolle. Tämä tehtiin pitääkseen "meluisan" moottorin ohjaustehon eristettynä Raspberry Pi 5v -jännitteestä. 12v/1A syöttö osoittautui aivan rajalleen (itse asiassa hieman yli, kun lisäsin tuulettimen). Koodi sammuttaa infrapunavalaisimen ennen vesiventtiilin releen kytkemistä virrankulutuksen pitämiseksi alueella … Olisi parempi, jos käyttäisit 1,5 A: n syöttöä. Muista liittää kaikkien virtalähteiden maadoitusliittimet yhteen.

Kameramoduuli on vakio NoIR -versio, joka kytketään suoraan Raspberry Pi -laitteeseen. Se on Raspberry Pi -kamera, josta IR -suodatin on jo poistettu, joten sitä voidaan käyttää IR -valaisimen kanssa yövideon ottamiseen.

Käytetty servo on vakiokokoinen 5 voltin lineaarinen servo, jonka vääntömomentti on 3-4 kg-cm.

IR -valaisin oli edullinen 48 led -rengas, jonka löysin EBaysta noin 4 dollarilla. Se ei ole erittäin vahva ja voi valaista vain noin 15 metrin korkeuteen. Jos sinulla on ylimääräistä budjettia, vahvemman valaisimen hankkiminen olisi hyvä parannus.

Lisäsin "debug-switch" gpio23: een. Koodi tarkistaa kytkimen tilan, ja jos sitä painetaan, se sulkee vesiventtiilin releen kuivan palon testausta varten. Ajattelin tehdä enemmän tällä kytkimellä, mutta en lopulta käyttänyt sitä ollenkaan. Poistan sen ja sen etsivän koodin …

Vaihe 3: Rakentaminen: kamera ja IR -valaisin

Rakenne: kamera ja IR -valaisin
Rakenne: kamera ja IR -valaisin

Kotelona käytin Harbour Freight -muovia. Lähinnä tarvitsin jotain vedenkestävää, koska paljon vesisuihkua/valumista on väistämätöntä. Reikiä/aukkoja on paljon, mutta ne on peitetty markiiseilla, kirkkaalla muovilla tai ne on porattu ylitysten alle veden vuodattamiseksi. Jälkeenpäin minun olisi pitänyt käyttää metallilaatikkoa, jossa jäähdytyselementit on kiinnitetty sisäisesti suuritehoisiin komponentteihin. Tällä tavoin luulen, että olisin voinut välttää tuulettimen lisäämisen. Muovilaatikko oli liian eristävä ja antoi sisälämpötilan nousta liikaa.

Pieni ikkuna leikattiin lopulta, jotta kamera näki sen, ja IR -valaisin asennettiin vanhan muovisen linssikotelon sisälle.

Vaihe 4: Rakentaminen: Vesiputket

Rakenne: Vesiputket
Rakenne: Vesiputket
Rakenne: Vesiputket
Rakenne: Vesiputket

Veden tulo johdetaan 12 voltin vesiventtiiliin, joka on liitetty ¼”ID x 3/8” OD -vinyyliputkeen. Tämä vuorostaan liitetään ¼”piikkiletkuun ¾ liukukiinnitteiseen PVC -liittimeen ja liimataan ¾” PVC -vesikorkkiin, jossa on 1/16”reikä porattu vesivirtaa varten. Halusin pitää vesiventtiilin releen sään ulkopuolella, joten se on asennettu laatikon sisään. On olemassa vaara, että voin vuotaa, mutta olen porannut tyhjennysreiät laatikon pohjaan ja asentanut elektroniikan korkealle minimoidaksesi mahdollisen vesivahingon mahdollisuuden elektroniikalle, jos näin tapahtuu. Vähemmän esteettisesti miellyttävä, mutta turvallisempi suunnitelma olisi asentaa venttiili ulkopuolelle ja viedä 12 voltin relejohdot sisään. Kirkas muovilevy servon päällä oli kätevä tapa asentaa letkun pää ja estää veden tippumisen servolle. Tuuletin oli jälkikäteen mietitty, koska laatikko lämpeni liikaa. Rakensin sen päälle pienen teltan, jotta vesi ei tippuisi sisään.

Vaihe 5: Rakentaminen: Servon tavoittelu

Rakenne: Tavoitteena servo
Rakenne: Tavoitteena servo

Laatikon yläosaan leikataan reikä ja kohdistusservo asennetaan ja tiivistetään silikonilla veden poistumisen estämiseksi.

Vaihe 6: Rakentaminen: Virtalähteiden, tuulettimen, Raspberry Pi: n ja Proto-levyn asennus

Rakenne: Virtalähteiden, tuulettimen, Raspberry Pi: n ja Proto-levyn asennus
Rakenne: Virtalähteiden, tuulettimen, Raspberry Pi: n ja Proto-levyn asennus

Kaksi virtalähdettä (5v ja 12v) on kytketty yhteen virtajohtoon, joka poistuu laatikon sivulta. Raspberry Pi ja proto -levy on asennettu laatikon sivulle lähellä yläosaa. Huomaa pohjaan poratut tyhjennysreiät ja yläreunaa pitkin poratut tuuletusaukot. Tuuletin on asennettu Raspberry Pi: tä vastapäätä. On/off -kytkintä ei ole, koska en halua kannustaa sammuttamaan Raspberry Pi -laitetta ilman muodollista "sudo shutdown now" -komentoa (eli et halua sammuttaa virtaa liian helposti).

Vaihe 7: Rakentaminen: Proto Board

Rakenne: Proto Board
Rakenne: Proto Board

Proto-kortti sisältää 5 voltin säätimen, suodatinkannen, tehotransistorit (jotka käyttävät servo- ja vesiventtiiliä) ja virheenkorjauskytkin.

Vaihe 8: Rakentaminen: Raspberry Pi -kamera

Rakenne: Raspberry Pi -kamera
Rakenne: Raspberry Pi -kamera

Raspberry Pi -nokka kytkeytyy suoraan Raspberry Pi -laitteeseen nauhakaapelin kautta ja on asennettu kirkkaaseen muovilevyyn, joka peittää laatikon etupuolella olevan katkaisun.

Vaihe 9: Osaluettelo

Projekti maksoi lopulta noin 120 dollaria. Suurin osa hankkeen kustannuksista on Raspberry Pi, kamera, servo ja virtalähteet. Löysin suurimman osan osista EBaystä tai Amazonista ja LVI -osat paikallisesta rautakaupasta.

  • Raspberry Pi 3 (Amazon) 38 dollaria
  • NoIR -kamera (eBay) 30 dollaria
  • 5v analoginen servo (4 kg-cm vääntömomentti) (EBay) 10 dollaria
  • 5v/2.4A seinävirtalähde (eBay) 8 dollaria
  • 12v ½”vesiventtiili (eBay) 5 dollaria
  • Letkut, putkiliittimet (Osh) 5 dollaria
  • Muoviset ammukset (satamarahti) 5 dollaria
  • 12v/1,5A seinävirtalähde (eBay) 5 dollaria
  • IR -valaisin (eBay) 4 dollaria
  • Muut Komponentit (vastukset, kytkimet, diodi) 2 dollaria
  • CPU -tuuletin (eBay) 2 dollaria
  • Proto Board, Standoffs, Ruuvit (EBay) 2 dollaria
  • (2) Tehotransistorit (2n5296) (EBay) 1 $
  • 5v -säädin (LM7805) (EBay) 1 $
  • Kirkas muovi 3/32”(napauta Muoviset sekalaatikot) $ 1
  • Virtajohto (Osh) $ 1

Kaupat/sivustot, joista ostin tuotteita:

  • Alice1101983 EBay-sivusto:
  • 2bevoque EBay -sivusto:
  • Satamarahti
  • Orchard Supply Hardware
  • Amazon
  • Napauta Muovit

Suositeltava: