Sommario:
- Passaggio 1: cos'è un Pi Zero W?
- Passaggio 2: Scotty, abbiamo bisogno di più potenza
- Passaggio 3: posizionamento del sensore e software
- Passaggio 4: configurazione del Pi
- Passaggio 5: tempo WiFi
- Passaggio 6: accesso
- Passaggio 7: fili
- Passaggio 8: accendilo
- Passaggio 9: passaggio facoltativo e comandi utili
Video: Sistema di assistenza al parcheggio basato su Pi: 9 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Ehilà! Ecco un piccolo progetto interessante che puoi realizzare in un solo pomeriggio e poi usarlo tutti i giorni. Si basa sul Raspberry Pi Zero W e ti aiuterà a parcheggiare perfettamente la tua auto ogni volta.
Ecco l'elenco completo delle parti necessarie:
- Raspberry Pi Zero W (lo chiameremo 'rpi' o 'pi' in questo articolo)
- Scheda micro SD da 4 GB o più grande per il sistema operativo pi
- Due moduli sensore di distanza tinyLiDAR Time of Flight
- Pannello LED RGB 32x32 (ci sono molti produttori per questo con diversi passi dei punti, puoi ad esempio usare Adafruit 1484 o simili, basta cercare "32x32 LED Matrix" su Google). Il nostro pannello aveva un passo di 6 mm.
- 25 piedi di cavo CAT5
- circa 22 fili di ponticello colorati maschio-maschio del pin dell'intestazione
- Alimentatore microUSB 5v 2Amp (caricatore del telefono cellulare) Tutto pronto? Andiamo!
TL; Sommario DR
- Scarica il sistema operativo Raspbian Lite per rpi
- Configura il pi per eseguire headless su WiFi con un IP statico
- Configura l'ambiente di sviluppo del tuo PC con PuTTY, WinSCP e, facoltativamente, SublimeText con addon FTP
- Scarica, crea e associa il driver del pannello LED
- Scarica e installa pigpio
- Scarica il nostro codice Python
- Cablare il pannello del display a LED 32x32
- Realizzare il cavo di prolunga CAT5 per il sensore tinyLiDAR laterale
- Passaggio facoltativo (ma solo per utenti esperti): fai un veloce ballo felice quando tutto funziona;)
Passaggio 1: cos'è un Pi Zero W?
Senza dubbio hai sentito parlare del Raspberry Pi, ma che diamine è un pi 'Zero W'?
Il Raspberry Pi Zero e Zero W sono state aggiunte più recenti alla famiglia Pi, destinate maggiormente all'IoT e ad altre applicazioni embedded a basso costo. Sono versioni ridotte della scheda pi originale ma ancora con un potente processore da 1 GHz. Ecco un buon confronto di tutti i modelli.
Il vantaggio per noi nella scelta del Pi Zero W qui rispetto ad altre schede controller è che possiamo facilmente programmarlo nel linguaggio Python di livello superiore pur utilizzando i veloci driver del pannello LED C/C++. Ha anche un prezzo interessante di soli $ 10 USD.
Tieni presente che poiché questa scheda è una versione ridotta di un pi completo, alcune cose sono cambiate. In particolare, è stato eliminato il jack ethernet, il connettore HDMI è passato a una dimensione mini e le quattro porte USB sono state semplificate fino a un solo tipo micro USB. C'è un altro connettore micro USB a bordo, ma è solo per alimentare la scheda. L'eliminazione di tutti i connettori USB full size introduce alcune complessità. Vale a dire, come puoi collegare una tastiera e un mouse? Le periferiche e gli hub USB standard utilizzano connettori di tipo A, non di tipo micro.
Quindi cosa possiamo fare?
Possiamo andare senza testa!
No, non intendiamo impazzire ma utilizzare un'alternativa alla normale configurazione cablata diretta. Headless significa "tunnel" nel pi remoto utilizzando una connessione di rete Secure Shell (SSH). Per questo progetto utilizzeremo l'approccio headless su WiFi. Da qui il motivo per cui abbiamo scelto la versione W del pi zero invece dell'ancora più basso costo pi zero.
Nota che c'è anche un altro modo per eseguire il pi in modalità headless usando qualcosa chiamato VNC. Ha bisogno di un software VNC speciale in esecuzione sul tuo PC in quanto fornisce un desktop grafico virtuale completo sul tuo PC. Non abbiamo bisogno (e davvero non vogliamo) del desktop per il nostro progetto, quindi ci atterremo al metodo SSH più semplice.
Passaggio 2: Scotty, abbiamo bisogno di più potenza
Il pannello a matrice di LED 32x32 può, da solo, richiedere diversi ampere di corrente. Non scherzo! Ecco perché la maggior parte di questi pannelli include alcuni cavi di alimentazione dall'aspetto pesante per alimentarlo. Fortunatamente per noi, non avremo bisogno di un enorme alimentatore per questo progetto. Siamo stati in grado di alimentare l'intero sistema solo con un caricatore per cellulare microUSB 5v/2amp di riserva che avevamo in giro. Il motivo della corrente inferiore è perché utilizziamo una grafica relativamente semplice e quindi non accendiamo la maggior parte dei LED. Se stai pensando di realizzare animazioni o utilizzare video/grafica brillante, dovresti assolutamente considerare di alimentare il pannello da un alimentatore separato.
Passaggio 3: posizionamento del sensore e software
Hai notato che stiamo usando due tinyLiDAR in questo sistema invece di uno solo? Come mostrato nel diagramma di installazione del garage, uno è posizionato davanti all'auto e l'altro è posizionato lungo un lato dell'auto.
Il sensore laterale rileverà se devii dal centro mentre parcheggi l'auto e, naturalmente, quello anteriore ti dirà quando fermarti.
Il display a LED 32x32 ti assisterà mostrando le frecce per spostarti in avanti, a sinistra oa destra e un display per il conto alla rovescia con angoli colorati per indicare quanto lontano devi ancora guidare. Dai un'occhiata al nostro breve video per tutti gli stati di visualizzazione.
Piano di gioco
In poche parole, stiamo usando la sempre popolare libreria hzeller C per il driver LED, Python per il codice di controllo e la libreria pipgpio C per il corretto controllo I2C dei nostri sensori.
Python è un linguaggio di alto livello super facile che puoi facilmente modificare su qualsiasi editor di testo. Usiamo normalmente SublimeText e per questo progetto abbiamo utilizzato anche un utilissimo plugin FTP che ci permette di modificare i file di script direttamente sul pi. Questo è un passaggio facoltativo poiché è necessario solo se desideri modificare il codice. Maggiori dettagli sono disponibili alla fine di questo articolo.
Tutte le schede rpi, come forse saprai, non supportano nativamente l'allungamento del clock I2C. Quindi abbiamo usato di nuovo la libreria pigpio per questo progetto per controllare i sensori tinyLiDAR ma questa volta con una leggera svolta…
Più tinyLiDAR
Quando acquisti un tinyLiDAR, è sempre impostato sull'indirizzo slave predefinito di 0x10. Questo va bene quando usi un singolo sensore ma se ne hai più di uno sul bus potrebbe essere un problema se scrivi un comando su 0x10 e tutti rispondono!
Quindi abbiamo 3 opzioni qui:
Innanzitutto, possiamo usare il comando (tinyLiDAR) "R" per scrivere un nuovo indirizzo slave per il sensore collegato al bus I2C. Quindi ripetere l'operazione per ciascun sensore. Attaccare, scrivere e staccare fisicamente ogni sensore per questa procedura. tinyLiDAR memorizzerà l'indirizzo fornito nella sua memoria non volatile integrata. L'indirizzo persisterà anche dopo lo spegnimento e la riaccensione finché non lo cancellerai emettendo il comando RESET.
La seconda opzione è utilizzare la comoda funzione di assegnazione automatica che abbiamo creato come obiettivo allungabile nella campagna IGG. Ciò comporta l'invio del comando "AR" e quindi il puntamento del dito su ciascun sensore individualmente per assegnare automaticamente indirizzi I2C sequenziali ai singoli sensori in modo simile alla prima opzione, ma non è necessario scollegare fisicamente ciascun sensore per farlo.
La terza opzione è quella che stiamo usando qui in questo progetto ed è possibile grazie alla libreria pigpio. Per implementare correttamente lo standard I2C, pigpio esegue il bitbang del GPIO. Quindi, per questo motivo, possiamo facilmente creare bus I2C separati praticamente su qualsiasi coppia di pin GPIO di riserva.
Quindi non è necessario riprogrammare gli indirizzi slave per più sensori LiDAR. Possiamo semplicemente usare un bus separato per ognuno:)
Nota che il bus I2C che funziona a 100 Kbps è in realtà piuttosto robusto. Stiamo usando un semplice cavo ethernet CAT5 per far passare il bus I2C al sensore tinyLiDAR laterale che è a ben 25 piedi di distanza senza alcun componente ripetitore attivo! I dettagli del cablaggio del sensore sono mostrati sopra.
Ok, basta jibber jabber, iniziamo a scaricare il codice!
Passaggio 4: configurazione del Pi
Attenzione: il pi utilizza un file system Linux, quindi è meglio eseguire i seguenti passaggi su un sistema basato su Linux. Potresti finire per riformattare la tua scheda SD se lo fai su Windows. Abbiamo usato il fantastico e gratuito desktop Ubuntu 18.04 in esecuzione in un ambiente virtuale su un PC Windows 10, ma puoi provare qualcosa di simile.
Dovrai prima scaricare il sistema operativo da raspberrypi.org e poi masterizzarlo sulla tua scheda microSD. Quindi segui questi passaggi:
(1) In Ubuntu vai qui e prendi l'immagine di Raspbian Lite. Salvalo nella cartella dei download.
(2) Successivamente scaricare l'utility di scrittura della scheda SD di Etcher. Cordiali saluti, il link ufficiale per il download di Etcher per la versione Linux sulla loro home page non ha funzionato per noi, quindi abbiamo utilizzato il metodo descritto qui:
In sintesi i passaggi descritti nel link sono stati:
Aggiungi il repository Debian di Etcher:
echo "deb https://dl.bintray.com/resin-io/debian stable echer" | sudo tee /etc/apt/sources.list.d/etcher.list
Fidati della chiave GPG di Bintray.com:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
Aggiorna e installa:
sudo apt-get update
sudo apt-get install etcher-electron
Una volta completato, puoi andare avanti e avviare Etcher dal tuo desktop Ubuntu. Ti chiederà il file sorgente (che metti nella cartella dei download). Il prossimo passo in Etcher è scegliere il target corretto. Etcher fa un buon lavoro nel rilevare la tua scheda micro SD, ma dovresti essere paranoico qui. Per verificare che stia trovando la destinazione corretta, prova a espellere la scheda microSD facendo clic su espelli nella finestra di Esplora file di Ubuntu e verifica che scompaia come opzione di destinazione all'interno di Etcher. Quindi reinseriscilo e continua con il passaggio finale, ovvero scrivere il file su questa scheda microSD.
Attendi un po' di tempo fino al termine, quindi continua.
Passaggio 5: tempo WiFi
Ok, ora è il momento di inserire i tuoi dettagli WiFi.
Suggerimento: puoi sempre copiare (Ctrl+C) e incollare (clic destro, incolla) le informazioni da questo articolo nella schermata del terminale PuTTY invece di digitare i comandi. Controlla anche la fine di questo articolo per diversi utili comandi di Linux.
Quando Etcher ha finito di scrivere sulla scheda micro SD, verranno visualizzate 2 unità come mostrato sopra. Uno si chiama boot l'altro si chiama rootfs
Dobbiamo usare il file manager per andare nella cartella di avvio e creare un file chiamato wpa_supplicant.conf.
Per fare questo passaggio puoi semplicemente fare clic sul lato sinistro dove dice boot e poi sul lato destro dello schermo puoi fare clic con il pulsante destro del mouse sul backgroud bianco e scegliere Apri nel terminale.
Si aprirà una finestra di terminale (simile a CMD in Windows) in cui è possibile digitare quanto segue:
sudo nano wpa_supplicant.conf Suggerimento: dovrai inserire la password del tuo sistema Linux in modo che possa essere eseguito come Super User. Questo è necessario, altrimenti non sarai in grado di salvare i file quando hai finito di modificare
Il comando precedente avvierà quindi l'editor di testo "nano" in cui è possibile inserire le seguenti informazioni:
paese = USA
ctrl_interface = DIR = /var/run / wpa_supplicant GROUP = netdev update_config = 1 rete = { ssid = "WiFi_SSID" scan_ssid = 1 psk = "WiFi_Password" key_mgmt = WPA - PSK }
Nota: ricorda di sostituire WiFi_SSID e WiFi_Password con il nome e la password della tua rete WiFi.
Quando hai finito, fai semplicemente clic su Ctrl+X per uscire e rispondi Sì per scrivere il file all'uscita.
Il nostro prossimo passo è creare un file vuoto chiamato ssh. Per fare ciò, digitiamo quanto segue nella finestra del terminale:
tocca ssh
Ora dobbiamo dare al nostro pi un indirizzo IP statico in modo da sapere dove si trova ogni volta che vogliamo connetterci ad esso. Digita quanto segue nella finestra del terminale:
sudo nano /etc/dhcpcd.conf
Questo dovrebbe aprire di nuovo l'editor di testo nano e possiamo aggiungere questo testo in fondo al file:
interfaccia wlan0
indirizzo_ip statico=192.168.0.router statici=192.168.0.1 nome_dominio_server statico=192.168.0.1 8.8.8.8
Nota: questo presuppone che il prefisso di rete sia 192.168.0. Se hai 192.168.1 ecc., usa invece la tua rete. Il server dei nomi di dominio 8.8.8.8 è per Google ed è opzionale qui.
Digita 'exit' nel Terminale per chiuderlo. Quindi fare clic con il pulsante destro del mouse sul nome di avvio nella parte sinistra della finestra Gestione file e selezionare Espelli.
Ora puoi collegare questa scheda microSD al tuo pi e collegare il cavo di alimentazione microUSB per alimentare il tuo pi.
Se tutto va bene, il LED verde lampeggerà per un po' come se stesse accedendo a un'unità disco rigido e dovrebbe collegarti alla tua rete WiFi. Attendere circa un minuto per stabilizzarsi e attendere che il LED diventi verde fisso.
Per verificare che tutto abbia funzionato, possiamo provare a eseguirne il ping.
Quindi digita la riga sottostante e controlla la risposta.
ping 192.168.0.200
In Ubuntu dovresti ottenere qualcosa di simile a questo:
ping 192.168.0.200
PING 192.168.0.200 (192.168.0.200) 56(84) byte di dati. 64 byte da 192.168.0.200: icmp_seq=1 ttl=128 time=752 ms 64 byte da 192.168.0.200: icmp_seq=2 ttl=128 time=5.77 ms 64 byte da 192.168.0.200: icmp_seq=3 ttl=128 time=7.33 ms ^C --- 192.168.0.200 statistiche ping --- 3 pacchetti trasmessi, 3 ricevuti, 0% di perdita di pacchetti, tempo 2001 ms rtt min/avg/max/mdev = 5.777/255.346/752.922/351.839 ms
Nota che il ping continua a funzionare finché non premi Ctrl+C per uscire.
In Windows dovresti ottenere qualcosa del genere:
ping 192.168.0.200
Ping 192.168.0.200 con 32 byte di dati: Risposta da 192.168.0.200: byte=32 tempo=4ms TTL=64 Risposta da 192.168.0.200: byte=32 tempo=5ms TTL=64 Risposta da 192.168.0.200: byte=32 tempo =6ms TTL=64 Risposta da 192.168.0.200: byte=32 tempo=5ms TTL=64 Statistiche ping per 192.168.0.200: Pacchetti: Inviati = 4, Ricevuti = 4, Persi = 0 (0% di perdita), Tempi approssimativi di andata e ritorno in millisecondi: Minimo = 4 ms, Massimo = 6 ms, Medio = 5 ms
Tutto bene? in poi…
Passaggio 6: accesso
Ora che abbiamo la connettività al pi, vogliamo inviargli i comandi. Ma come?PuTTY ovviamente! Puoi scaricare PuTTY da qui Configurazione di PuTTY Dopo aver scaricato il software PuTTY, crea un profilo per il tuo pi con le seguenti informazioni:
Nome host (o indirizzo IP): 192.168.0.200 Tipo di connessione: SSH Assegna un nome a questo profilo in Sessioni salvate e premi Salva. Puoi usare qualsiasi nome ti piaccia, ad esempio "rpizw_200"
Per accedere, selezionalo dall'elenco e premi Carica. Quindi premere Apri. Inserisci il nome utente e la password per accedere:
nome di accesso: pi
Password predefinita: lampone
Ecco una sessione di esempio mostrata in PuTTY quando accedi:
accedi come: pi
password di [email protected]: Linux raspberrypi 4.14.34+ #1110 Mon Apr 16 14:51:42 BST 2018 armv6l I programmi inclusi nel sistema Debian GNU/Linux sono software libero; i termini esatti di distribuzione per ogni programma sono descritti nei singoli file in /usr/share/doc/*/copyright. Debian GNU/Linux viene fornito con ASSOLUTAMENTE NESSUNA GARANZIA, nella misura consentita dalla legge applicabile. Ultimo accesso: [data e ora] da 192.168.0.[indirizzo IP] SSH è abilitato e la password predefinita per l'utente 'pi' non è stata modificata. Questo è un rischio per la sicurezza: accedi come utente "pi" e digita "passwd" per impostare una nuova password.
Al primo accesso, ti avviserà che non hai ancora cambiato la password. Dovresti cambiarlo in qualcosa di forte ma semplice da ricordare, quindi vai avanti e cambialo digitando passwd e segui le istruzioni.
Dovremmo quindi aggiornare il software sul pi digitando questo:
sudo apt-get update && sudo apt-get upgrade
Questo scaricherà tutti gli aggiornamenti di cui ha bisogno dalla tua connessione Internet. Rispondi S se richiesto per consentirgli di continuare, quindi concedigli un po' di tempo per l'aggiornamento.
A questo punto probabilmente dovremmo anche disattivare l'audio sul pi poiché ha qualche brutto juju con la libreria dei driver LED. Copia, incolla le seguenti righe una alla volta e premi invio dopo ogni riga:
cd ~
gatto <<EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf blacklist snd_bcm2835 EOF sudo update-initramfs -u
L'output sarà qualcosa del genere:
pi@raspberrypi:~ $ cd ~
pi@raspberrypi:~ $ cat < > blacklist snd_bcm2835 > > blacklist EOF snd_bcm2835 pi@raspberrypi:~ $ sudo update-initramfs -u pi@raspberrypi:~ $
Quindi dobbiamo riavviare il pi per rendere effettive le modifiche, quindi digita quanto segue:
sudo riavvia ora
La connessione si interromperà ovviamente mentre il pi si riavvia in modo da poter chiudere PuTTY. Prova a riaccedere un minuto dopo.
Ora è il momento di ottenere un file manager FTP grafico chiamato WinSCP. Puoi scaricare WinSCP da qui
WinSCP è molto simile al file manager su Windows e Ubuntu. Ci consente di trascinare e rilasciare facilmente i file da e verso il pi e creare directory con un semplice clic destro del mouse.
Una volta scaricato, dovrai configurare un profilo per il tuo pi.
Installazione di WinSCP Al popup di accesso, scegliere Nuovo sito. Utilizzare le seguenti impostazioni per la sessione:
Protocollo file: SFTP Nome host: 192.168.0.200 Nome utente: pi Password: {qualunque sia la password con cui hai modificato l'impostazione predefinita nel passaggio PuTTY sopra}
In Impostazioni avanzate del sito vai su Ambiente | Directory e inserisci /home/pi per la directory remota e quello che preferisci per l'impostazione della directory locale.
In Impostazioni avanzate del sito vai su Ambiente | Shell e scegli sudo su - nell'elenco a discesa Shell.
Quindi premi Salva.
Tieni aperti sia WinSCP che PuTTY mentre esegui i seguenti passaggi
Vai al terminale PuTTY e inserisci quanto segue:
cd ~
Questo ci porterà alla nostra home directory all'interno del pi.
Ora possiamo prendere la libreria dei driver LED da github. Per utilizzare il codice più recente, dovremo estrarre il repository, quindi dobbiamo installare l'utilità git.
Inserisci questo in PuTTY:
sudo apt-get install git
rispondi Y per continuare e ci vorranno alcuni secondi per installare git per noi da Internet.
L'output dovrebbe essere simile a questo:
pi@raspberrypi:~ $ sudo apt-get install git
Lettura degli elenchi dei pacchetti… Fatto Compilazione dell'albero delle dipendenze Lettura delle informazioni sullo stato… Fatto Verranno installati i seguenti pacchetti aggiuntivi: git-man liberror-perl Pacchetti suggeriti: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn Verranno installati i seguenti NUOVI pacchetti: git git-man liberror-perl 0 aggiornato, 3 appena installato, 0 da rimuovere e 0 non aggiornato. È necessario ottenere 4.848 kB di archivi. Dopo questa operazione verranno utilizzati 26,4 MB di spazio su disco aggiuntivo. Vuoi continuare? [S/n] y Ottieni:1 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf liberror-perl all 0.17024-1 [26.9 kB] Ottieni:2 https://muug.ca/mirror/ raspbian/raspbian stretch/main armhf git-man all 1:2.11.0-3+deb9u3 [1, 433 kB] Get:3 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf git armhf 1: 2.11.0-3+deb9u3 [3, 388 kB] Recuperato 4, 848 kB in 5 s (878 kB/s) Selezione del pacchetto liberror-perl non selezionato in precedenza.(Lettura del database … 34363 file e directory attualmente installati.) Preparazione alla decompressione …/liberror-perl_0.17024-1_all.deb … Decompressione liberror-perl (0.17024-1) … Selezione del pacchetto precedentemente deselezionato git-man. Preparazione per scompattare …/git-man_1%3a2.11.0-3+deb9u3_all.deb … Disimballaggio di git-man (1:2.11.0-3+deb9u3) … Selezione del pacchetto precedentemente deselezionato git. Preparazione per scompattare …/git_1%3a2.11.0-3+deb9u3_armhf.deb … Disimballaggio di git (1:2.11.0-3+deb9u3) … Configurazione di git-man (1:2.11.0-3+deb9u3) … Configurazione liberror-perl (0.17024-1) … Elaborazione trigger per man-db (2.7.6.1-2) … Configurazione di git (1:2.11.0-3+deb9u3) …
Ora torna a WinSCP e vai alla cartella /home/pi. Quindi, sul lato destro di questa finestra di WinScp, fai clic con il pulsante destro del mouse e scegli di creare una nuova directory chiamata "parcheggio"
Nella schermata PuTTY puoi digitare ls per confermare di aver appena creato una nuova cartella nel pi. Quindi inserisci questo:
cd p[TAB]Suggerimento: premendo il tasto TAB si completerà automaticamente il nome parziale per te
Premi il tasto Invio per entrare in questa directory.
pi@raspberrypi:~ $ cd parcheggio/
pi@raspberrypi:~/parcheggio $ ls
Ora possiamo ottenere i file del driver inserendo quanto segue in PuTTY:
git clone
L'output sarà simile a questo:
pi@raspberrypi:~/parking $ git clone
Clonazione in 'rpi-rgb-led-matrix'… remoto: Conteggio oggetti: 3740, fatto. remoto: Totale 3740 (delta 0), riutilizzato 0 (delta 0), pacchetto riutilizzato 3740 Ricezione di oggetti: 100% (3740/3740), 20,61 MiB | 1,32 MiB/s, fatto. Risoluzione dei delta: 100% (2550/2550), fatto.
Ora compila i file del driver LED andando in questa nuova directory 'rpi-rgb-led-matrix' e digitando il comando make:
cd r[TAB]
fare Ed ecco come appariva sulla nostra bacheca
pi@raspberrypi:~/parcheggio $ cd rpi-rgb-led-matrix/
pi@raspberrypi:~/parking/rpi-rgb-led-matrix $ make make -C./lib make[1]: inserimento della directory '/home/pi/parking/rpi-rgb-led-matrix/lib' g++ - I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-eccezioni -c -o gpio.o gpio.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-eccezioni -c -o led-matrix.o led-matrix.cc g++ -I../include - Muro -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-eccezioni -c -o options-initialize.o options-initialize.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-eccezioni -c -o framebuffer.o framebuffer.cc g++ -I../include -Wall -O3 -g - fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-eccezioni -c -o thread.o thread.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE=' "normale"' -Wextra -Wno-unused-parameter -fno-eccezioni -c -o bdf-font.o bdf-fon t.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-eccezioni -c -o graphics.o graphics.cc g++ - I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-eccezioni -c -o trasformatore.o trasformatore.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-parametro-inutilizzato -fno-eccezioni -c -o led-matrix-co led-matrix-c.cc cc -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -c -o hardware-mapping.o hardware-mapping.c g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-eccezioni -c -o content-streamer.o content-streamer.cc g++ -I../include -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-eccezioni -c -o pixel-mapper.o pixel-mapper.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"normale"' -Wextra -Wno-parametro-inutilizzato -fno-excep tions -c -o multiplex-mappers.o multiplex-mappers.cc ar rcs librgbmatrix.a gpio.o led-matrix.o options-initialize.o framebuffer.o thread.o bdf-font.o graphics.o trasformatore.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mapper.o g++ -shared -Wl, -soname, librgbmatrix.so.1 -o librgbmatrix.so.1 gpio.o led -matrix.o options-initialize.o framebuffer.o thread.o bdf-font.o graphics.o trasformatore.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mapper. o -lpthread -lrt -lm -lpthread make[1]: uscita dalla directory '/home/pi/parking/rpi-rgb-led-matrix/lib' make -C esempi-api-use make[1]: ingresso dalla directory ' /home/pi/parking/rpi-rgb-led-matrix/examples-api-use' g++ -I../include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o demo-main. o demo-main.cc make -C../lib make[2]: accesso alla directory '/home/pi/parking/rpi-rgb-led-matrix/lib' make[2]: uscita dalla directory '/home/pi /parking/rpi-rgb-led-matrix/lib' g++ demo-main.o -o demo -L../lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o minimal-example.o minimal-example.cc g++ minimal-example.o - o minimal-example -L../lib -lrgbmatrix -lrt -lm -lpthread cc -I../include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o c-example.o c- esempio.c cc c-esempio.o -o c-esempio -L../lib -lrgbmatrix -lrt -lm -lpthread -lstdc++ g++ -I../include -Wall -O3 -g -Wextra -Wno-unused- parametro -c -o esempio-testo.o esempio-testo.cc g++ esempio-testo.o -o esempio-testo -L../lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Wall - O3 -g -Wextra -Wno-unused-parameter -c -o scrolling-text-example.o scrolling-text-example.cc g++ scrolling-text-example.o -o scrolling-text-example -L../lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o clock.o clock.cc g++ clock.o -o clock -L.. /lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o ledcat.o ledcat.cc g++ le dcat.o -o ledcat -L../lib -lrgbmatrix -lrt -lm -lpthread make[1]: uscita dalla directory '/home/pi/parking/rpi-rgb-led-matrix/examples-api-use' pi @raspberrypi:~/parking/rpi-rgb-led-matrix $
Il nostro prossimo passo sarà quello di associare la libreria di matrici RGB a Python. Abbiamo usato il Python 2 predefinito per questo progetto. Quindi per fare questo legame inseriamo la seguente riga alla volta come prima:
sudo apt-get update && sudo apt-get install python2.7-dev python-pillow -y
make build-python sudo make install-python
Nota: puoi tranquillamente ignorare l'unico avviso relativo a '-Wstrict-prototype' che viene visualizzato durante l'esecuzione delle due dichiarazioni make. I comandi make impiegano un paio di minuti per essere eseguiti e non dicono nulla mentre sono occupati. Quindi non temere: il tuo pi dovrebbe tornare presto;)
Ecco l'output parziale della prima dichiarazione make:
costruire l'estensione 'grafica'
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-kKRR4y/python2.7-2.7.13=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I../../include -I/usr/include/python2.7 -c rgbmatrix/graphics.cpp -o build/temp.linux- armv6l-2.7/rgbmatrix/graphics.o -O3 -Wall cc1plus: avviso: l'opzione della riga di comando '-Wstrict-prototypes' è valida per C/ObjC ma non per C++ arm-linux-gnueabihf-g++ -pthread -shared -Wl, -O1 -Wl, -Bfunzioni-simboliche -Wl, -z, relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix -map=/build/python2.7-kKRR4y/python2.7-2.7.13=. -fstack-protector-strong -Wformat -Werror=format-security -Wl, -z, relro -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-kKRR4y/python2.7 -2.7.13=. -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-armv6l-2.7/rgbmatrix/graphics.o -L../../lib -lrgbmatrix -o./rgbmatrix/graphics.so make [1]: Uscita dalla directory '/home/pi/parking/rpi-rgb-led-matrix/bindings/python' pi@raspberrypi:~/parking/rpi-rgb-led-matrix $
Successivamente installeremo la libreria pigpio C. Per farlo correttamente, dobbiamo farlo dal sorgente, quindi inserisci le seguenti righe:
cd ~
sudo rm -rf PIGPIO wget abyz.me.uk/rpi/pigpio/pigpio.zip unzip pigpio.zip cd PIGPIO make sudo make install rm pigpio.zip
L'installazione di cui sopra richiede circa 3 minuti.
Ora è il momento di ottenere i nostri file di progetto Python. Digita il seguente:
cd ~
cd /home/pi/parking/rpi-rgb-led-matrix/bindings/python/samples wget https://s3.amazonaws.com/microedco/tinyLiDAR/Raspberry+Pi/tinyL_parking.zip unzip -j tinyL_parking.zip rm tinyL_parking.zip
Quindi per eseguirlo, digita quanto segue:
sudo python parking.py
Ma non è necessario farlo adesso perché dobbiamo ancora collegare tutto…
Passaggio 7: fili
Come accennato in precedenza, abbiamo alimentato il pannello LED dallo stesso alimentatore che alimenta il pi. Per fare ciò, dovrai unire i grossi fili rosso e nero ai pin dell'intestazione maschio in modo che possano essere collegati ai pin 2 e 9 del connettore pi 40 pin.
Scollegare ora l'alimentazione al pi e collegare il pannello LED secondo lo schema illustrato sopra. Tieni il pin 2 disconnesso per ora.
NOTA: il pannello a matrice di LED a volte può accendersi in uno stato strano. Se ciò accade, può caricare gravemente l'alimentatore, indipendentemente dalla capacità attuale che ha. Lo abbiamo notato durante lo sviluppo sulla nostra fornitura da banco che può fornire oltre 4 ampere. La soluzione a questo è eseguire prima il codice pi e quindi collegare il pin 2 per alimentare il pannello LED. In questo modo il pannello dovrebbe presentarsi in uno stato di bassa potenza poiché elimina gli stati casuali del LED. La corrente di riposo (tutti i LED spenti) per il nostro pannello LED era di soli 50 mA a 5 V.
CAT5
Abbiamo utilizzato un cavo Ethernet CAT5 da 25 piedi e l'abbiamo modificato per collegarlo ai pin dell'intestazione pi su un'estremità e accettare i pin del connettore GROVE sull'altro lato in modo da poter estendere la distanza per posizionare il nostro sensore tinyLiDAR laterale. Le foto sopra mostrano questo cavo prima e dopo le modifiche. Ignorare i colori dei fili dei pin dell'intestazione poiché non sono correlati ai diagrammi. Assicurati solo di collegare il tuo sistema come mostrato negli schemi di collegamento illustrati in precedenza nel passaggio 3.
Passaggio 8: accendilo
La corretta sequenza di accensione iniziale dovrebbe essere quella di collegare il caricabatterie microUSB al pi e attendere che i LED blu sui sensori tinyLiDAR lampeggino rapidamente, indicando che stanno effettuando misurazioni. Ciò dimostra che il codice funziona correttamente.
È quindi possibile collegare lentamente ma saldamente il pin 2 per l'alimentazione del pannello LED. Fai attenzione a non fare errori mentre lo fai! Se il pannello LED mostra alcuni LED luminosi congelati, probabilmente è difettoso, quindi rimuovi l'alimentazione microUSB dal pi e attendi qualche secondo per riprovare la sequenza di accensione.
Per eseguire il codice, inserisci quanto segue:
cd /home/pi/parking/rpi-rgb-led-matrix/bindings/python/samples
sudo python parking.py
Se tutto va bene dovresti ottenere un display simile a quello mostrato nel video.
Dai una rapida occhiata al codice parking.py per capire quali limiti abbiamo utilizzato. L'impostazione predefinita per il sensore anteriore è 200 mm. Poiché la gamma del sensore è compresa tra 11 mm e 2 m, è una buona idea mantenere la distanza nom_parked_Front a 200 mm o superiore. Il sensore laterale nom_parked_Side è impostato su 600 mm. Vedi l'immagine sopra per il codice Python che mostra queste opzioni di configurazione.
Se tutto funziona, puoi andare avanti e montare il sistema nel tuo garage e regolare i parametri di cui sopra secondo necessità. Dal momento che sei più connesso al tuo WiFi, puoi sempre entrare e modificare le impostazioni della distanza di cui hai bisogno per la tua particolare configurazione del garage mentre è ancora montato.
È questo adesso?
Perché sì, sì lo è! -- è ora di fare il tuo ballo felice:)
Grazie per aver letto e goditi il tuo nuovo assistente di parcheggio!
Passaggio 9: passaggio facoltativo e comandi utili
Passaggio opzionale - Addon FTP per Sublime Text
Per modificare i file di script Python direttamente sul pi, possiamo installare l'addon FTP chiamato Sublime SFTP di Wbond. Puoi scaricare questo addon seguendo le istruzioni qui
Per configurare questo addon dobbiamo configurare le credenziali FTP nel File | SFTP/FTP | Configurazione del server….
Per la nostra configurazione abbiamo utilizzato:
"type": "sftp", "sync_down_on_open": true, "sync_same_age": true, "host": "192.168.0.200", "user": "pi", "password": "YOUR_RPI_PASSWORD_HERE", "port": "22", "percorso_remoto": "/home/pi/", "permessi_file": "664", "permessi_dir": "775", Usa Ctrl+S o File | Salva per salvare queste informazioni. Ti verrà chiesto un nome per chiamare questa configurazione. L'abbiamo semplicemente chiamato "rpizw_0_200"
Ora per accedere al pi da SublimeText, vai su File | SFTP/FTP | Sfoglia server…
Seleziona dall'elenco di opzioni che compare. Dovrai scegliere il profilo con il nome che hai specificato sopra;) Segui le istruzioni per navigare nelle cartelle e modificare il file desiderato.
Extra utili
Utili comandi Linux da utilizzare sul pi.
Prima di scollegare il pi, assicurati SEMPRE di spegnerlo in modo da non danneggiare i file sulla tua scheda microSD. Inserisci questo comando:
sudo spegnilo ora
e attendere che il led verde si spenga prima di scollegare l'alimentazione. Allo stesso modo per riavviarlo, puoi inserire:
sudo riavvia ora
Per elencare i file in una directory, usa questo:
ls
Puoi trovare altri utili comandi di Linux qui
Consigliato:
Sistema di parcheggio intelligente basato su IoT che utilizza NodeMCU ESP8266: 5 passaggi
Sistema di parcheggio intelligente basato su IoT che utilizza NodeMCU ESP8266: Al giorno d'oggi trovare parcheggio in aree trafficate è molto difficile e non esiste un sistema per ottenere i dettagli della disponibilità del parcheggio online. Immagina di poter ottenere le informazioni sulla disponibilità del parcheggio sul tuo telefono e non hai il roaming in giro per controllare
Assistenza al parcheggio Facile riparazione / diagnosi: 4 passaggi
Assistenza al parcheggio Facile riparazione / diagnosi: Ok, iniziamo, ho una Chevrolet Avalanche del 2010 e ha 4 sensori di assistenza al parcheggio nel paraurti posteriore. Questo intrattabile può essere utilizzato su e veicolo al meglio delle mie conoscenze, se hai davanti o Rea o entrambi. Così sono andato al mio preferito
Parcheggio intelligente basato su IOT: 7 passaggi
Smart Parking basato su IOT: di Tanmay Pathak e Utkarsh Mishra. Studenti @ International Institute of Information Technology, Hyderabad (IIITH)ABSTRACTAbbiamo implementato con successo un sistema di parcheggio intelligente basato su IOT. Con l'aiuto di singoli nodi (sensori di prossimità) a sempre
Fai da te - Assistente di parcheggio basato su Arduino V2: 6 passaggi
Fai da te - Assistente di parcheggio basato su Arduino V2: quando la vita ti dà le banane!!!!! Mangiateli e basta. La necessità è la madre delle invenzioni, e non lo nego. Francamente, questa è la seconda volta che mi imbatto nel muro del nostro garage da quando ci siamo trasferiti in questa nuova casa. Ecco, non ci sarebbe t
Assistenza al parcheggio in retromarcia in garage utilizzando il sensore di sicurezza esistente e il circuito analogico: 5 passaggi
Assistenza al parcheggio in retromarcia in garage utilizzando il sensore di sicurezza esistente e il circuito analogico: sospetto che molte invenzioni nella storia dell'umanità siano state fatte a causa delle mogli che si lamentano. Lavatrice e frigorifero sembrano certamente dei validi candidati. La mia piccola "invenzione" descritto in questo Instructable è un