Sommario:

Water Blaster con rilevamento automatico: 9 passaggi
Water Blaster con rilevamento automatico: 9 passaggi

Video: Water Blaster con rilevamento automatico: 9 passaggi

Video: Water Blaster con rilevamento automatico: 9 passaggi
Video: Tecnica: scarico pistola semiautomatica 2024, Luglio
Anonim
Water Blaster con tracciamento automatico
Water Blaster con tracciamento automatico

Il cervo mangiatore di rose mi ha motivato a costruire un blaster d'acqua che traccia il bersaglio per aiutare a scoraggiare le creature voraci … Questo blaster d'acqua utilizza il rilevamento del movimento basato su video per puntare un servo e innescare brevi raffiche d'acqua sul bersaglio. Spara solo dopo che un bersaglio acquisito è fermo per alcuni secondi (il ritardo può essere regolato nel codice). Non mi importa se i cervi stanno solo camminando, ma se si fermano per uno spuntino, sputacchia!

Ecco un video in cui provo l'idropulitrice:

Il water blaster è una scatola autonoma che può essere collegata in remoto (tramite Wi-Fi/VNC) da qualsiasi computer della rete per monitorare ciò che sta facendo. Scatta una foto ogni volta che viene attivato in modo da poter vedere in seguito cosa è stato fatto saltare.

Ho usato un Raspberry Pi, una cam NoIR, un illuminatore IR, un servo lineare standard e una valvola dell'acqua per creare questo blaster d'acqua giorno/notte con tracciamento del bersaglio. Il codice è scritto in Python e prende in prestito molto dagli esempi di codice di elaborazione delle immagini cv2 di Adrian Rosebrock. Puoi vedere il suo scritto su:

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

Dato che sto inseguendo obiettivi relativamente grandi a terra (cervi), il mio problema è in qualche modo semplificato. Ho solo bisogno di una mira orizzontale, così posso cavarmela usando un solo servo. Aspettare che il cervo si fermi mi aiuta a eliminare molti falsi fattori scatenanti. Questo è il mio tentativo di rev-0 e ho trovato alcune cose che modificherei se ne costruissi un altro. Ho annotato queste cose nel dettagliato articolo che segue.

Passaggio 1: il codice

Il water blaster utilizza il Raspberry Pi 3 per l'elaborazione. Per l'acquisizione di video, viene utilizzata una cam NoIR Raspberry Pi insieme a un illuminatore IR per i video notturni. Il pacchetto Python OpenCV/cv2 viene utilizzato per acquisire ed elaborare informazioni sull'immagine e calcolare le coordinate del target. La libreria pigpio viene utilizzata per controllare il gpio per un funzionamento servo stabile. L'uso del normale pacchetto RPi. GPIO ha provocato un servo traballante. NOTA: quando si utilizza la libreria pigpio è necessario eseguire il demone pigpio. Aggiungi questo al file di avvio /etc/rc.local del tuo Pi per la libreria pigpio e l'interfaccia della fotocamera Raspberry Pi:

/etc/rc.local# Configura /dev/video0 per collegarsi a Raspberry Pi interfaccia della fotocamera integratamodprobe bcm2835-v4l2# Avvia il demone pigpio per la libreria di controllo IO Raspberry Pipigpiod

Vedi https://pypi.python.org/pypi/pigpi per maggiori dettagli.

Il codice sorgente si chiama: water_blaster.py ed è allegato di seguito.

Dichiarazione di non responsabilità: sono nuovo della codifica Python, quindi non trattarla come un ottimo modello di stile di codifica Python!

L'algoritmo di base è il seguente:

  • Prendi un fotogramma di riferimento video iniziale. Questo sarà usato per confrontare contro per rilevare il movimento.
  • Prendi un altro fotogramma.
  • Converti la cornice in scala di grigi, ridimensionala, sfocala.
  • Calcola la differenza dal sistema di riferimento
  • Filtra le piccole differenze, ottieni le coordinate della differenza maggiore.
  • Imposta un timer. Se la coordinata del bersaglio non cambia per alcuni secondi, scatta una foto di ciò che stiamo per scattare e attiva la valvola dell'acqua per un getto d'acqua. Spostare il servo avanti e indietro di alcuni gradi per un'esplosione di "fucile".
  • Se otteniamo tre trigger troppo rapidamente, disabilitiamo lo scatto, mettiamo in pausa un po', quindi aggiorniamo il fotogramma di riferimento poiché potremmo sparare a un'ombra o a una luce del portico appena accesa…
  • Ogni pochi minuti aggiorna il quadro di riferimento per tenere conto dei cambiamenti a bassa frequenza (il sorgere/tramontare del sole, l'arrivo del cielo coperto, ecc.)

Sto usando solo un meccanismo di puntamento orizzontale, ma su eBay sono disponibili molti supporti per servomotori pan/tilt e sarebbe facile aggiungere un altro servo per controllare il puntamento verticale se si desidera un targeting più preciso.

Ho configurato il Raspberry Pi per l'esecuzione come server VNC, quindi mi sono connesso tramite VNC dal mio laptop per avviare il programma e monitorare il video e i registri. cd nella directory in cui memorizzi water_blaster.py ed eseguilo digitando:

./python water_blaster.py

Si aprirà una finestra di monitoraggio video, avvierà un file di registro denominato "./log_[data]_[ora] e creerà una sottodirectory denominata "trigger_pictures" in cui sono archiviati i file-j.webp

Ecco alcune note sulla configurazione di VNC sul tuo Raspberry Pi:

La prima volta che ho configurato il Raspberry Pi, ho utilizzato un monitor/tastiera/mouse esterni per configurare le cose. Lì ho abilitato il server VNC nella configurazione di RasPi (Logo Raspberry / Preferenze / Configurazione Raspberry Pi / Interfacce / Verifica opzione VNC). Successivamente, all'avvio, ti consente di connetterti al suo display:0 tramite client VNC (con le stesse credenziali dell'utente predefinito "pi").

In modalità headless il valore predefinito è un display a risoluzione molto piccola (poiché non rileva alcun display), per forzarlo a una risoluzione maggiore, aggiungi questo a /boot/config.txt e riavvia:

# Usa se hai display# hdmi_ignore_edid=0xa5000080hdmi_group=2# 1400x1050 con 60Hz#hdmi_mode=42# 1356x768 con 60Hzhdmi_mode=39

Ecco qualche info in più:

Passaggio 2: l'elettronica

I requisiti dell'elettronica del water blaster sono minimi utilizzando il Raspberry Pi 3 gpio per pilotare un servo, una valvola dell'acqua e un illuminatore IR tramite buffer a transistor discreti (costruiti su una piccola scheda proto). Una telecamera NoIR standard si collega direttamente al Raspberry Pi.

Il nome dello schema è: water_blaster_schematic.pdf ed è allegato di seguito.

Ho usato un'alimentazione dedicata 5v/2,5A per il Raspberry Pi e un'alimentazione 12v/1A per pilotare l'illuminatore IR e la valvola dell'acqua. L'alimentazione da 12 V aziona anche un regolatore da 5 V per fornire alimentazione al servo da 5 V. Questo è stato fatto per mantenere l'alimentazione di controllo del motore "rumorosa" isolata dall'alimentazione Raspberry Pi 5v. L'alimentazione 12v/1A si è rivelata proprio al limite (in realtà leggermente superiore una volta aggiunta la ventola). Il codice spegne l'illuminatore IR prima di alimentare il relè della valvola dell'acqua per mantenere l'assorbimento di corrente nel raggio d'azione… Sarebbe meglio se si utilizzasse un alimentatore da 1,5 A. Assicurarsi di collegare insieme i terminali di terra di tutti gli alimentatori.

Il modulo telecamera è una versione NoIR standard che si collega direttamente al Raspberry Pi. È una cam Raspberry Pi con il filtro IR già rimosso che consente di utilizzarla con un illuminatore IR per registrare video notturni.

Il servo utilizzato è un servo lineare 5v di dimensioni standard con 3-4 kg-cm di coppia.

L'illuminatore IR era un anello a 48 led a basso costo che ho trovato su eBay per circa $4. Non è super forte e può illuminare solo fino a circa 15 piedi. Se hai un budget extra, ottenere un illuminatore più forte sarebbe un buon miglioramento.

Ho aggiunto un "debug-switch" a gpio23. Il codice controlla lo stato dell'interruttore e, se premuto, disabilita il relè della valvola dell'acqua per il test a secco. Pensavo che avrei fatto di più con quell'interruttore, ma alla fine non l'ho usato affatto. Lo rimuoverei e il codice che lo cerca…

Passaggio 3: costruzione: fotocamera e illuminatore IR

Costruzione: telecamera e illuminatore IR
Costruzione: telecamera e illuminatore IR

Ho usato una scatola di munizioni in plastica Harbour Freight come custodia. Principalmente avevo bisogno di qualcosa di resistente all'acqua poiché molti spruzzi d'acqua / deflusso sono inevitabili. Ci sono molti fori/ritagli ma sono coperti da tende da sole, plastica trasparente o sono forati sotto le sporgenze per far cadere l'acqua. Col senno di poi, avrei dovuto usare una scatola di metallo con dissipatori di calore collegati internamente ai componenti ad alta potenza. Così facendo penso che avrei potuto evitare di aggiungere la ventola. La scatola di plastica era troppo isolante e faceva salire troppo la temperatura interna.

Alla fine è stata tagliata una piccola finestra per consentire alla telecamera di vedere e l'illuminatore IR è stato montato all'interno di un vecchio astuccio di plastica che avevo in giro.

Passaggio 4: costruzione: tubazioni dell'acqua

Costruzione: Tubazioni dell'acqua
Costruzione: Tubazioni dell'acqua
Costruzione: Tubazioni dell'acqua
Costruzione: Tubazioni dell'acqua

L'ingresso dell'acqua è convogliato in una valvola dell'acqua da 12 V che è collegata a un tubo in vinile da ¼” ID x 3/8” OD. Questo a sua volta è collegato a un tubo spinato da ¼" a un connettore in PVC a innesto e incollato a un tappo dell'acqua in PVC da " con un foro da 1/16" praticato per il flusso d'acqua. Volevo tenere il relè della valvola dell'acqua fuori dalle intemperie, quindi è montato all'interno della scatola. C'è il pericolo che io possa avere una perdita, ma ho praticato dei fori di drenaggio nella parte inferiore della scatola e montato l'elettronica in alto per ridurre al minimo la possibilità di potenziali danni causati dall'acqua all'elettronica se ciò accade. Un piano meno esteticamente gradevole, ma più sicuro, sarebbe quello di montare la valvola all'esterno e far passare i cavi del relè da 12 V all'interno. Il disco di plastica trasparente sopra il servo era un modo conveniente per montare l'estremità del tubo e impedisce all'acqua di gocciolare sul servo. La ventola è stata un ripensamento perché la scatola si stava scaldando troppo. Ho costruito una piccola tenda sopra per evitare che l'acqua goccioli.

Passaggio 5: costruzione: mirare il servo

Costruzione: Servo di mira
Costruzione: Servo di mira

Viene praticato un foro nella parte superiore della scatola e il servo di puntamento è montato e sigillato con silicone per mantenere l'acqua fuori.

Fase 6: Costruzione: montaggio di alimentatori, ventola, Raspberry Pi e scheda proto

Costruzione: montaggio di alimentatori, ventola, Raspberry Pi e scheda proto
Costruzione: montaggio di alimentatori, ventola, Raspberry Pi e scheda proto

I due alimentatori (5v e 12v) sono collegati a un unico cavo di alimentazione che esce dal lato della scatola. Il Raspberry Pi e una scheda proto sono montati sul lato della scatola vicino alla parte superiore. Notare i fori di drenaggio praticati nella parte inferiore e i fori di sfiato dell'aria praticati lungo il bordo superiore. La ventola è montata di fronte al Raspberry Pi. Non esiste un interruttore di accensione/spegnimento in quanto non voglio incoraggiare lo spegnimento del Raspberry Pi senza un comando formale "sudo shutdown now" (ovvero non voglio che l'alimentazione venga spenta troppo facilmente).

Step 7: Costruzione: la Proto Board

Costruzione: il Proto Board
Costruzione: il Proto Board

La scheda proto contiene un regolatore 5v, un filtro, transistor di potenza (che azionano il servo e la valvola dell'acqua) e un interruttore di debug.

Passaggio 8: costruzione: fotocamera Raspberry Pi

Costruzione: fotocamera Raspberry Pi
Costruzione: fotocamera Raspberry Pi

La cam Raspberry Pi si collega direttamente al Raspberry Pi tramite il cavo a nastro ed è montata sulla piastra di plastica trasparente che copre l'apertura di visualizzazione nella parte anteriore della scatola.

Passaggio 9: elenco delle parti

Il progetto finì per costare circa $ 120. La maggior parte del costo del progetto è il Raspberry Pi, la fotocamera, il servo e gli alimentatori. Ho trovato la maggior parte delle parti su eBay o Amazon e le parti idrauliche nel negozio di ferramenta locale.

  • Raspberry Pi 3 (Amazon) $ 38
  • Fotocamera NoIR (EBay) $ 30
  • Servo analogico 5v (coppia di 4 kg-cm) (EBay) $ 10
  • Alimentatore da parete 5v/2.4A (EBay) $ 8
  • Valvola dell'acqua 12v ½” (EBay) $ 5
  • Tubi, raccordi per tubi (Osh) $5
  • Scatola di munizioni di plastica (trasporto portuale) $ 5
  • Alimentatore da parete 12v/1.5A (EBay) $5
  • Illuminatore IR (EBay) $ 4
  • Varie Componenti (resistenze, interruttori, diodi) $2
  • Ventola CPU (Ebay) $2
  • Scheda proto, distanziatori, viti (EBay) $ 2
  • (2) Transistor di potenza (2n5296) (EBay) $1
  • Regolatore 5v (LM7805) (EBay) $1
  • Plastica trasparente 3/32 "(Tap Plastics Misc. Bin) $ 1
  • Cavo di alimentazione (Osh) $1

Negozi/siti in cui ho acquistato articoli:

  • Alice1101983 Sito eBay:
  • 2bevoque Sito EBay:
  • Merci portuali
  • Hardware per forniture per frutteti
  • Amazon
  • Tocca Plastica

Consigliato: