Taula de continguts:
- Pas 1: què és un Pi Zero W?
- Pas 2: Scotty, necessitem més poder
- Pas 3: ubicació i programari de sensors
- Pas 4: Configuració del Pi
- Pas 5: hora de WiFi
- Pas 6: iniciar la sessió
- Pas 7: cables
- Pas 8: enceneu-lo
- Pas 9: Pas opcional i ordres útils
Vídeo: Sistema d’assistència a l’estacionament basat en Pi: 9 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Hola! Aquí teniu un petit projecte que podeu fer en una sola tarda i després fer-lo servir diàriament. Es basa en el Raspberry Pi Zero W i us ajudarà a aparcar el cotxe perfectament cada vegada.
Aquí teniu la llista completa de les peces que necessitareu:
- Raspberry Pi Zero W (en aquest article l'anomenarem "rpi" o "pi")
- Targeta micro SD de 4 GB o més per al sistema operatiu pi
- Dos mòduls de sensor de distància tinyLiDAR Time of Flight
- Tauler LED de 32x32 RGB (hi ha molts fabricants per a això amb tocs de punts diferents, per exemple, podeu utilitzar l'Adafruit 1484 o similar, només cal cercar "Matriu LED de 32x32" a Google). El nostre panell tenia un pas de 6 mm.
- 25 peus de cable CAT5
- aproximadament 22 cables de pont de pas de cap a masculí de color
- Font d'alimentació microUSB de 5v 2Amp (carregador de telèfon mòbil) Tot preparat? Som-hi!
TL; Resum DR
- Descarregueu Raspbian Lite OS per al rpi
- Configureu el pi perquè funcioni sense cap per WiFi amb una IP estàtica
- Configureu el vostre entorn de desenvolupament de PC amb PuTTY, WinSCP i opcionalment SublimeText amb complement FTP
- Descarregueu, fabriqueu i enllaceu el controlador del panell LED
- Descarregueu i instal·leu pigpio
- Baixeu-vos el codi Python
- Connecteu el tauler de visualització LED de 32x32
- Feu el cable d’extensió CAT5 per al sensor tinyLiDAR lateral
- Pas opcional (però només per a usuaris avançats): feu un ball feliç ràpid quan tot funciona;)
Pas 1: què és un Pi Zero W?
Sens dubte, heu sentit a parlar del Raspberry Pi, però què diables és un pi 'Zero W'?
Raspberry Pi Zero i Zero W van ser incorporacions més recents a la família Pi, cosa que significava més per a IoT i altres aplicacions incrustades de baix cost. Són versions descartades de la placa pi original, però encara amb un potent processador a 1 GHz. Aquí hi ha una bona comparació de tots els models.
L’avantatge que tenim per escollir aquí el Pi Zero W per sobre d’altres plaques de control és que el podem programar fàcilment en el llenguatge Python de nivell superior sense deixar d’utilitzar els controladors ràpids del panell LED C / C ++. També té un preu atractiu a només 10 USD.
Tingueu en compte que, ja que aquest tauler és una versió reduïda d’un pi complet, algunes coses han canviat. En particular, s'ha eliminat la presa Ethernet, el connector HDMI ha canviat a una mida mínima i els quatre ports USB s'han simplificat fins a un sol tipus micro USB. Hi ha un altre connector micro USB a bord, però només serveix per alimentar la placa. L'eliminació de tots els connectors USB de mida completa introdueix algunes complexitats. És a dir, com es pot connectar un teclat i un ratolí? Els concentradors i perifèrics USB estàndard utilitzen connectors de tipus A que no són de tipus micro.
Què podem fer, doncs?
Podem quedar-nos sense cap!
No, no volem tornar-nos bojos, sinó utilitzar una alternativa a la configuració per cable directa directa. Sense cap significa "túnel" cap al pi remotament mitjançant una connexió de xarxa de shell segur (SSH). Per a aquest projecte utilitzarem l'enfocament sense cap sobre WiFi. D’aquí ve la raó per la qual escollim la versió W del pi zero en lloc del cost zero encara més baix.
Tingueu en compte que també hi ha una altra manera d'executar el pi en mode sense cap mitjançant una cosa anomenada VNC. Necessita programari VNC especial que s’executi al vostre PC, ja que proporciona un escriptori gràfic virtual complet al vostre PC. No necessitem (i realment no volem) l’escriptori per al nostre projecte, així que ens complirem amb el mètode SSH més senzill.
Pas 2: Scotty, necessitem més poder
El panell de matriu LED de 32x32 pot, per si mateix, agafar diversos amplificadors de corrent. No és broma! És per això que la majoria d’aquests panells inclouen uns cables d’alimentació d’aspecte fort per alimentar-lo. Afortunadament per a nosaltres, però, no caldrà obtenir una font d'alimentació massiva per a aquest projecte. Vam poder alimentar tot aquest sistema només amb un carregador de mòbil microUSB de 5v / 2amp de recanvi que teníem. El motiu del corrent inferior és perquè fem servir gràfics relativament senzills i, per tant, no encenem la majoria dels LED. Si esteu pensant en fer animacions o utilitzar gràfics de vídeo / brillants, hauríeu de considerar l’alimentació del tauler des d’una font d’alimentació independent.
Pas 3: ubicació i programari de sensors
T’has adonat que estem utilitzant dos tinyLiDAR en aquest sistema en lloc de només un? Com es mostra al diagrama de configuració del garatge, un es col·loca davant del cotxe i l’altre es col·loca al llarg d’un costat del cotxe.
El sensor lateral detectarà si es desvia del centre mentre estaciona el cotxe i, per descomptat, el frontal us indicarà quan s’ha d’aturar.
La pantalla LED de 32x32 us ajudarà mostrant fletxes per avançar, esquerra o dreta i una pantalla de compte enrere amb cantonades de colors per indicar fins on heu de conduir. Mireu el nostre breu vídeo per a tots els estats de visualització.
Pla de joc
En poques paraules, estem utilitzant la sempre popular biblioteca hzeller C per al controlador LED, Python per al codi de control i la biblioteca pipgpio C per al control I2C adequat dels nostres sensors.
Python és un llenguatge d'alt nivell súper fàcil que podeu editar fàcilment en qualsevol editor de text. Normalment fem servir SublimeText i per a aquest projecte també hem utilitzat un complement FTP molt útil que ens permet editar els fitxers de script directament al pi. Aquest és un pas opcional, ja que només és necessari si voleu editar el codi. Hi ha més detalls disponibles al final d’aquest article.
Totes les plaques rpi, com potser sabeu, no admeten nativament l'estirament del rellotge I2C. Així que vam tornar a utilitzar la biblioteca pigpio per a aquest projecte per controlar els sensors tinyLiDAR, però aquesta vegada amb un lleuger gir …
Diversos tinyLiDAR
Quan compreu un tinyLiDAR, sempre es defineix a l’adreça esclava per defecte de 0x10. Està bé quan utilitzeu un sensor únic, però si teniu més d’un al bus, pot ser que tingueu problemes si escriviu una ordre a 0x10 i tots responen.
Per tant, tenim aquí tres opcions:
En primer lloc, podem utilitzar l'ordre (tinyLiDAR) "R" per escriure una nova adreça esclava al sensor connectat al bus I2C. A continuació, repetiu això per a cada sensor. Fixar, escriure i separar físicament cada sensor per a aquest procediment. tinyLiDAR emmagatzemarà l'adreça indicada a la memòria no volàtil incorporada. L'adreça persistirà fins i tot després de la potència fins que la borreu emetent l'ordre RESET.
La segona opció és utilitzar la convenient funció d'assignació automàtica que hem creat com a objectiu extensiu a la campanya IGG. Això implica enviar l'ordre "AR" i després assenyalar el dit cap a cada sensor individualment per assignar adreces I2C seqüencials automàticament als sensors individuals de manera similar a la primera opció, però no cal desconnectar físicament cada sensor per fer-ho.
La tercera opció és la que fem servir aquí en aquest projecte i és possible gràcies a la biblioteca pigpio. Per implementar l'estàndard I2C correctament, el pigpio bitbangs el GPIO. Per això, podem crear fàcilment busos I2C separats en gairebé qualsevol parell de pins GPIO de recanvi.
Per tant, no cal tornar a programar adreces esclaus per als múltiples sensors LiDAR. Només podem utilitzar un autobús separat per a cada un:)
Tingueu en compte que el bus I2C que funciona a 100 Kbps és realment bastant robust. Utilitzem un cable Ethernet CAT5 senzill i antic per executar el bus I2C cap al sensor tinyLiDAR lateral situat a 25 peus de distància sense components de repetidor actius. Els detalls del cablejat del sensor es mostren a la part superior.
Molt bé, comencem a descarregar el codi.
Pas 4: Configuració del Pi
Atenció: el pi utilitza un sistema de fitxers Linux, de manera que és millor realitzar els passos següents en un sistema basat en Linux. Podeu acabar de reformatar la targeta SD si feu això al Windows. Hem utilitzat l’impressionant i gratuït escriptori Ubuntu 18.04 que s’executa en un entorn virtual en un PC amb Windows 10, però podeu provar alguna cosa similar.
Primer haureu de descarregar el SO des de raspberrypi.org i després gravar-lo a la vostra targeta microSD. Per tant, seguiu aquests passos:
(1) A Ubuntu, aneu aquí i agafeu la imatge de Raspbian Lite. Deseu-lo a la carpeta de descàrregues.
(2) A continuació, baixeu la utilitat d'escriptura de la targeta SD Etcher. FYI: l'enllaç oficial de descàrrega d'Etcher per a la versió de Linux a la seva pàgina principal no ens va funcionar, de manera que hem utilitzat el mètode descrit aquí:
En resum, els passos descrits a l'enllaç van ser:
Afegiu el repositori debian de Etcher:
echo "deb https://dl.bintray.com/resin-io/debian stable etcher" | sudo tee /etc/apt/sources.list.d/etcher.list
Confieu en la clau GPG de Bintray.com:
sudo apt-key adv --keyyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
Actualitzeu i instal·leu:
sudo apt-get update
sudo apt-get install etcher-electron
Un cop finalitzat, podeu continuar endavant i llançar Etcher des del vostre escriptori Ubuntu. Us demanarà el fitxer font (que heu introduït a la carpeta de descàrregues). El següent pas a Etcher és escollir la destinació correcta. Etcher fa una bona feina detectant la vostra targeta micro SD, però hauríeu de ser paranoic aquí. Per verificar que troba la destinació adequada, proveu d'expulsar la targeta microSD fent clic a expulsa a la finestra de l'explorador de fitxers Ubuntu i verifiqueu que desaparegui com a opció de destinació dins d'Etcher. A continuació, torneu a introduir-lo i continueu fins al pas final, que consisteix a escriure el fitxer a aquesta targeta microSD.
Espereu una estona fins que estigui acabat i, a continuació, continueu endavant.
Pas 5: hora de WiFi
Molt bé, ara és hora d’introduir les vostres dades de WiFi.
Consell: sempre podeu copiar (Ctrl + C) i enganxar (Feu clic amb el botó dret, enganxa) la informació d’aquest article a la pantalla del terminal PuTTY en lloc d’escriure les ordres. Consulteu també el final d’aquest article per obtenir diverses ordres útils de Linux.
Quan Etcher hagi acabat d’escriure a la targeta micro SD, apareixeran 2 unitats com es mostra a la part superior. Un es diu boot i l’altre s’anomena rootfs
Hem d’utilitzar el gestor de fitxers per entrar a la carpeta d’arrencada i crear un fitxer anomenat wpa_supplicant.conf.
Per fer aquest pas, només cal que feu clic a la part esquerra on es diu arrencar i, a continuació, a la part dreta de la pantalla, podeu fer clic amb el botó dret del ratolí sobre el fons blanc i triar Obre al terminal.
Això obrirà una finestra de terminal (similar a CMD al Windows) on podeu escriure el següent:
sudo nano wpa_supplicant.conf Consell: haureu d'introduir la contrasenya del sistema Linux perquè pugui funcionar com a superusuari. Això és necessari o bé no podreu desar els fitxers quan hàgiu acabat d'editar
A continuació, l'ordre anterior iniciarà l'editor de text "nano" on podreu introduir la informació següent:
país = EUA
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1 network = {ssid = "WiFi_SSID" scan_ssid = 1 psk = "WiFi_Password" key_mgmt = WPA - PSK}
Nota: recordeu que heu de substituir WiFi_SSID i WiFi_Password pel vostre propi nom i contrasenya de xarxa WiFi.
Quan hàgiu acabat, feu clic a Ctrl + X per sortir i responeu Sí per escriure el fitxer en sortir.
El nostre següent pas és crear un fitxer buit anomenat ssh. Per fer-ho, només cal escriure el següent a la finestra del terminal:
toca ssh
Ara hem de donar al nostre pi una adreça IP estàtica per saber on es troba cada vegada que ens hi volem connectar. Escriviu el següent a la finestra del terminal:
sudo nano /etc/dhcpcd.conf
Això hauria d'obrir l'editor de text nano de nou i podem afegir aquest text a la part inferior del fitxer:
interfície wlan0
static ip_address = 192.168.0.static routers = 192.168.0.1 static domain_name_servers = 192.168.0.1 8.8.8.8
Nota: suposa que el prefix de xarxa és 192.168.0. Si teniu 192.168.1, feu servir la vostra xarxa. El servidor de noms de domini 8.8.8.8 és per a Google i és opcional aquí.
Escriviu "exit" a la terminal per tancar-la. A continuació, feu clic amb el botó dret sobre el nom d'arrencada a la part esquerra de la finestra del gestor de fitxers i seleccioneu Expulsa.
Ara podeu connectar aquesta targeta microSD al vostre pi i connectar el cable d’alimentació microUSB per alimentar el vostre pi.
Si tot va bé, el LED verd parpellejarà una estona com si accedís a una unitat de disc dur i hauria d’iniciar sessió a la vostra xarxa WiFi. Dediqueu-hi aproximadament un minut per assentar-se i esperar que el LED es posi de color verd fix.
Per verificar que tot hagi funcionat, podem intentar fer ping.
Per tant, només cal escriure la línia següent i comprovar si hi ha resposta.
ping 192.168.0.200
A Ubuntu hauríeu d'obtenir alguna cosa similar a això:
ping 192.168.0.200
PING 192.168.0.200 (192.168.0.200) 56 (84) bytes de dades. 64 bytes de 192.168.0.200: icmp_seq = 1 ttl = 128 temps = 752 ms 64 bytes de 192.168.0.200: icmp_seq = 2 ttl = 128 temps = 5,77 ms 64 bytes de 192.168.0.200: icmp_seq = 3 ttl = 128 temps = 7,33 ms ^ C --- 192.168.0.200 estadístiques de ping --- 3 paquets transmesos, 3 rebuts, 0% de pèrdua de paquets, temps 2001ms rtt min / avg / max / mdev = 5.777 / 255.346 / 752.922 / 351.839 ms
Tingueu en compte que el ping continua funcionant fins que premeu Ctrl + C per sortir.
Al Windows hauríeu d'obtenir alguna cosa així:
ping 192.168.0.200
Ping 192.168.0.200 amb 32 bytes de dades: Resposta de 192.168.0.200: bytes = 32 temps = 4ms TTL = 64 Resposta de 192.168.0.200: bytes = 32 temps = 5ms TTL = 64 Resposta de 192.168.0.200: bytes = 32 temps = 6ms TTL = 64 Resposta de 192.168.0.200: bytes = 32 temps = 5ms TTL = 64 Estadístiques de ping per a 192.168.0.200: Paquets: enviats = 4, rebuts = 4, perduts = 0 (pèrdua del 0%), temps aproximats d'anada i tornada en mil·lisegons: mínim = 4 ms, màxim = 6 ms, mitjana = 5 ms
Tot bé? Endavant…
Pas 6: iniciar la sessió
Ara que tenim connectivitat al pi, volem enviar-li ordres. Però, com? PUTTY, és clar! Podeu descarregar PuTTY des d’aquí Configurar PuTTY Després de descarregar el programari PuTTY, creeu un perfil per al vostre pi amb la informació següent:
Nom de l’amfitrió (o adreça IP): 192.168.0.200 Tipus de connexió: SSH Doneu un nom a aquest perfil a Sessions desades i premeu Desa. Podeu utilitzar qualsevol nom que vulgueu, per exemple "rpizw_200"
Per iniciar la sessió, només cal que el seleccioneu a la llista i premeu Carrega. A continuació, premeu Obre. Introduïu el nom d'usuari i la contrasenya per iniciar la sessió:
nom d’inici de sessió: pi
Defaltar contrasenya: gerd
A continuació, es mostra una sessió de mostra a PuTTY quan inicieu la sessió:
iniciar sessió com: pi
contrasenya de [email protected]: Linux raspberrypi 4.14.34+ # 1110 Mon Apr 16 14:51:42 BST 2018 armv6l Els programes inclosos amb el sistema Debian GNU / Linux són programari lliure; els termes de distribució exactes de cada programa es descriuen als fitxers individuals a / usr / share / doc / * / copyright. Debian GNU / Linux no inclou cap GARANTIA, en la mesura permesa per la legislació aplicable. Darrer inici de sessió: [data i hora] del 192.168.0. [Adreça IP] SSH està habilitat i la contrasenya predeterminada per a l'usuari "pi" no s'ha canviat. Aquest és un risc de seguretat. Inicieu la sessió com a usuari 'pi' i escriviu 'passwd' per establir una nova contrasenya.
Al primer inici de sessió, avisarà que encara no heu canviat la contrasenya. Hauríeu de canviar-lo per quelcom fort però senzill de recordar, així que, endavant, canvieu-lo escrivint passwd i seguiu les instruccions.
A continuació, hauríem d’actualitzar el programari al pi escrivint això:
sudo apt-get update && sudo apt-get upgrade
Això descarregarà les actualitzacions que necessiti de la vostra connexió a Internet. Responeu SÍ si se us demana que permeti continuar i, a continuació, doneu-li un temps per actualitzar-lo.
En aquest moment probablement també hauríem d’apagar el so del pi, ja que té un mal joc amb la biblioteca de controladors LED. Copieu, enganxeu les línies següents una a la vegada i premeu Retorn després de cada línia:
cd ~
gat << EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf blacklist snd_bcm2835 EOF sudo update-initramfs -u
La sortida serà així:
pi @ raspberrypi: ~ $ cd ~
pi @ raspberrypi: ~ $ cat <> llista negra snd_bcm2835>> llista negra EOF snd_bcm2835 pi @ raspberrypi: ~ $ sudo update-initramfs -u pi @ raspberrypi: ~ $
Després hem de reiniciar el pi per fer efectius els canvis, així que escriviu el següent:
sudo reiniciar ara
La connexió es reduirà, per descomptat, a mesura que es reinicia el pi per poder tancar PuTTY. Proveu de tornar a iniciar la sessió un minut després.
Ara és hora d’obtenir un gestor de fitxers FTP gràfic anomenat WinSCP. Podeu descarregar WinSCP des d’aquí
WinSCP s’assembla molt al gestor de fitxers de Windows i Ubuntu. Ens permet arrossegar i deixar anar fitxers fàcilment des del & pi i crear directoris amb només fer clic amb el botó dret del ratolí.
Un cop descarregat, haureu de configurar un perfil per al vostre pi.
Configuració de WinSCP A la finestra emergent d'inici de sessió, trieu Lloc nou. Utilitzeu la configuració següent per a la sessió:
Protocol d'arxiu: Nom d'amfitrió SFTP: 192.168.0.200 Nom d'usuari: pi Contrasenya: {sigui la contrasenya que hàgiu canviat per defecte al pas PuTTY anterior}
A Configuració avançada del lloc, aneu a Medi ambient | Directoris i introduïu / home / pi per al directori remot i el que vulgueu per a la configuració del directori local.
A Configuració avançada del lloc, aneu a Medi ambient | Shell i trieu sudo su - a la llista desplegable Shell.
A continuació, feu clic a Desa.
Mantingueu oberts tant WinSCP com PuTTY mentre realitzeu els passos següents
Aneu al terminal PuTTY i introduïu el següent:
cd ~
Això ens portarà al nostre directori inicial dins del pi.
Ara podem agafar la biblioteca de controladors LED de github. Per utilitzar el codi més recent, haurem d’extreure la reposició, de manera que haurem d’instal·lar la utilitat git.
Introduïu-ho a MASSET:
sudo apt-get install git
contesteu Y per continuar i trigareu uns segons a instal·lar-nos git des d'Internet.
La sortida hauria de ser semblant a aquesta:
pi @ raspberrypi: ~ $ sudo apt-get install git
Llegint llistes de paquets … Fet Construint l'arbre de dependències Lectura d'informació d'estat … Fet S'instal·laran els següents paquets addicionals: git-man liberror-perl Paquets suggerits: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn S'instal·laran els nous paquets següents: git git-man liberror-perl 0 actualitzat, 3 instal·lat recentment, 0 per eliminar i 0 no actualitzat. Necessiteu obtenir 4, 848 kB d’arxius. Després d'aquesta operació, s'utilitzaran 26,4 MB d'espai addicional al disc. Vols continuar? [Sí / n] y Obteniu: 1 https://muug.ca/mirror/raspbian/raspbian stretch / main armhf liberror-perl all 0.17024-1 [26,9 kB] Obteniu: 2 https://muug.ca/mirror/ raspbian / raspbian stretch / main armhf git-man all 1: 2.11.0-3 + deb9u3 [1, 433 kB] Obteniu: 3 https://muug.ca/mirror/raspbian/raspbian stretch / main armhf git armhf 1: 2.11.0-3 + deb9u3 [3, 388 kB] Obtingut 4, 848 kB en 5 s (878 kB / s) Selecció del paquet liberror-perl no seleccionat prèviament.(S'està llegint la base de dades … 34363 fitxers i directoris instal·lats actualment.) Preparació per descomprimir … / liberror-perl_0.17024-1_all.deb … Desempaquetar liberror-perl (0.17024-1) … Seleccionar el paquet git-man no seleccionat anteriorment. Preparació per desempaquetar … / git-man_1% 3a2.11.0-3 + deb9u3_all.deb … Desempaquetament de git-man (1: 2.11.0-3 + deb9u3) … Selecció del paquet git no seleccionat prèviament. Preparació per desempaquetar … / git_1% 3a2.11.0-3 + deb9u3_armhf.deb … Desempaquetament de git (1: 2.11.0-3 + deb9u3) … Configuració de git-man (1: 2.11.0-3 + deb9u3) … Configuració liberror-perl (0.17024-1) … Processant activadors de man-db (2.7.6.1-2) … Configuració de git (1: 2.11.0-3 + deb9u3) …
Ara torneu a WinSCP i aneu a la carpeta / home / pi. A continuació, a la part dreta d'aquesta finestra de WinScp, feu clic amb el botó dret i trieu crear un directori nou anomenat "aparcament".
De nou a la pantalla de MASCOTA, podeu escriure ls per confirmar que acabeu de crear una nova carpeta al pi. A continuació, introduïu això:
cd p [TAB]Consell: si premeu la tecla TAB, el nom parcial es completarà automàticament
Premeu la tecla d'inici per accedir a aquest directori.
pi @ raspberrypi: ~ $ cd parking /
pi @ raspberrypi: ~ / parking $ ls
Ara podem obtenir els fitxers del controlador introduint el següent a PuTTY:
git clone
La sortida tindrà un aspecte semblant a això:
pi @ raspberrypi: ~ / parking $ git clon
Clonació a 'rpi-rgb-led-matrix' … remot: Compte d'objectes: 3740, fet. remot: 3740 totals (delta 0), reutilitzat 0 (delta 0), reutilitzat en paquets 3740 Objectes receptors: 100% (3740/3740), 20,61 MiB | 1,32 MiB / s, fet. Resolució de deltes: 100% (2550/2550), fet.
Ara compileu els fitxers del controlador LED entrant a aquest nou directori 'rpi-rgb-led-matrix' i escrivint l'ordre make:
cd r [TAB]
fer I això és el que semblava al nostre tauler
pi @ raspberrypi: ~ / parking $ cd rpi-rgb-led-matrix /
pi @ raspberrypi: ~ / parking / rpi-rgb-led-matrix $ make make -C./lib make [1]: Introduint el directori '/ home / pi / parking / rpi-rgb-led-matrix / lib' g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o gpio.o gpio.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o led-matrix.o led-matrix.cc g ++ -I../ include - Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o options-initialize.o options-initialize.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o framebuffer.o framebuffer.cc g ++ -I../ include -Wall -O3 -g - fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o thread.o thread.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = ' "regular" '-Wextra -Wno-unused-parameter -fno-exceptions -c -o bdf-font.o bdf-fon t.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o graphics.o graphics.cc graphics.cc g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o transformer.o transformer.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -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-exceptions -c -o content-streamer.o content-streamer.cc g ++ -I../ include -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o pixel-mapper.o pixel-mapper.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-unused-parameter -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 transformer.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers.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 transformer.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers. o -lpthread -lrt -lm -lpthread make [1]: Sortint del directori '/ home / pi / parking / rpi-rgb-led-matrix / lib' make -C examples-api-use make [1]: Introducing 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]: Introduint el directori '/ home / pi / parking / rpi-rgb-led-matrix / lib' make [2]: Surt del directori '/ 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 exemple mínim -L../ lib -lrgbmatrix -lrt -lm -lpthread cc -I../ inclou -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o c-example.o c- example.c cc c-example.o -o c-example -L../ lib -lrgbmatrix -lrt -lm -lpthread -lstdc ++ g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused- paràmetre -c -o text-example.o text-example.cc g ++ text-example.o -o text-example -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../ inclou -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]: Sortint del directori '/ home / pi / parking / rpi-rgb-led-matrix / examples-api-use' pi @raspberrypi: ~ / parking / rpi-rgb-led-matrix $
El nostre següent pas serà lligar la biblioteca de matrius RGB a Python. Hem utilitzat el Python 2 per defecte per a aquest projecte. Per fer aquest enllaç, introduïm la següent línia a la vegada com abans:
sudo apt-get update && sudo apt-get install python2.7-dev python-pillow -y
make build-python sudo make install-python
Nota: Podeu ignorar de forma segura l’única advertència sobre ‘-Wstrict-prototype’ que apareix quan s’executen les dues declaracions. Les ordres make triguen un parell de minuts a executar-se i no diuen res mentre estiguin ocupades. Així que no tingueu por: el vostre pi hauria de tornar aviat;)
Aquí teniu una sortida parcial de la primera declaració make:
construcció d'extensions "gràfiques"
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: advertiment: l'opció de línia d'ordres '-Wstrict-prototypes' és vàlida per a C / ObjC però no per a C ++ arm-linux-gnueabihf-g ++ -pthread -shared -Wl, -O1 -Wl, -Bsymbolic-functions -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]: Sortint del directori '/ home / pi / parking / rpi-rgb-led-matrix / bindings / python' pi @ raspberrypi: ~ / parking / rpi-rgb-led-matrix $
A continuació, instal·larem la biblioteca pigpio C. Per fer-ho correctament, hem de fer-ho des de la font, de manera que només cal que introduïu les línies següents:
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
La instal·lació anterior triga uns 3 minuts.
Ara és hora d’obtenir els nostres fitxers de projecte Python. Introdueixi la següent:
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
A continuació, per executar-lo, escriviu el següent:
sudo python parking.py
Però no cal fer-ho ara mateix, ja que encara ho hem de connectar tot …
Pas 7: cables
Com s’ha esmentat anteriorment, hem alimentat el tauler LED des del mateix adaptador d’alimentació que alimenta el pi. Per fer-ho, haureu d’empalmar els forts cables vermells i negres als pins masculins de la capçalera perquè es puguin connectar als pins 2 i 9 del connector pi de 40 pins.
Desconnecteu l’alimentació del pi ara i connecteu el tauler LED segons el diagrama pictòric anterior. Mantingueu el pin 2 desconnectat per ara.
NOTA: El panell de la matriu LED de vegades pot encendre's en un estat funky. Si això passa, pot carregar la font d'alimentació greument, independentment de la capacitat actual que tingui. Ho hem notat durant el desenvolupament del subministrament al nostre banc que pot proporcionar més de 4 amperes. La solució a això és executar primer el codi pi i després endollar el pin 2 per alimentar el tauler LED. D’aquesta manera, el panell hauria d’aparèixer en un estat de baixa potència, ja que expulsa els estats LED aleatoris. El corrent en repòs (tots els LED apagats) del nostre panell LED només era de 50 mA a 5 v.
CAT5
Vam fer servir un cable ethernet CAT5 de 25 peus i el vam modificar per connectar-lo als pins de capçalera pi d’un extrem i acceptar els pins del connector GROVE de l’altre costat per poder ampliar la distància per col·locar el nostre sensor tinyLiDAR lateral. Les fotografies anteriors mostren aquest cable abans i després de les modificacions. No tingueu en compte els colors dels cables dels passadors de capçalera, ja que no estan correlacionats amb els diagrames. Assegureu-vos que heu connectat el vostre sistema tal com es mostra als diagrames de connexions que es mostren anteriorment al pas 3.
Pas 8: enceneu-lo
La seqüència d’engegada inicial adequada hauria de ser connectar el carregador microUSB al pi i esperar a que els LED blaus dels sensors tinyLiDAR parpellegin ràpidament mostrant que estan prenent mesures. Això demostra que el codi funciona correctament.
A continuació, podeu connectar lentament però fermament el pin 2 per al subministrament del panell LED. Aneu amb compte de no fallar-ho mentre feu això. Si el tauler LED mostra uns quants LED brillants congelats, probablement estigui fallat, així que traieu l’alimentació microUSB del pi i espereu uns segons per provar de nou la seqüència d’engegada.
Per executar el codi, introduïu el següent:
cd / home / pi / parking / rpi-rgb-led-matrix / bindings / python / samples
sudo python parking.py
Si tot va bé, hauríeu d'obtenir una pantalla similar a la que es mostra al vídeo.
Feu una ullada ràpida al codi parking.py per entendre quins límits hem utilitzat. El valor predeterminat del sensor frontal és de 200 mm. Com que l'abast del sensor és d'entre 11 i 2 m, és una bona idea mantenir la distància frontal nom_parked_ a 200 mm o superior. El sensor lateral nom_parked_Side està definit a 600 mm. Vegeu la imatge superior per al codi Python que mostra aquestes opcions de configuració.
Si tot funciona, podeu continuar muntant el sistema al garatge i ajustant els paràmetres anteriors segons calgui. Com que pi està connectat a la vostra connexió WiFi, sempre podeu entrar i editar la configuració de la distància que necessiteu per a la configuració del garatge en particular mentre encara estigui muntat.
Ara és això?
Per què sí, sí que ho és! - és hora de fer el vostre feliç ball:)
Gràcies per llegir i gaudir del vostre nou ajudant d’aparcament.
Pas 9: Pas opcional i ordres útils
Pas opcional: complement FTP per a text sublim
Per editar els fitxers de script Python directament al pi, podem instal·lar l’addon FTP anomenat Sublime SFTP per Wbond. Podeu descarregar aquest complement seguint les instruccions aquí
Per configurar aquest complement, hem de configurar les credencials FTP a la secció Fitxer | SFTP / FTP | Configuració del servidor … pàgina.
Per a la nostra configuració hem utilitzat:
"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", "remote_path": "/ home / pi /", "file_permissions": "664", "dir_permissions": "775", Utilitzeu Ctrl + S o Fitxer | Desa per desar aquesta informació. Se us demanarà un nom per trucar a aquesta configuració. Simplement l’hem anomenat "rpizw_0_200"
Ara per iniciar sessió al pi des de SublimeText, aneu a Fitxer | SFTP / FTP | Navega pel servidor …
Seleccioneu a la llista d'opcions que apareixeran. Voldreu triar el perfil amb el nom que heu especificat anteriorment;) Seguiu les instruccions per navegar per les carpetes i editar el fitxer desitjat.
Extres útils
Utilitzeu ordres Linux útils per utilitzar al pi.
Abans de desconnectar el pi, assegureu-vos SEMPRE que el tanqueu perquè no obtingueu cap dany de fitxers a la vostra targeta microSD. Introduïu aquesta ordre:
apagat sudo ara
i espereu que el led verd s’apagui abans de desconnectar l’energia. De manera similar, per reiniciar-lo, podeu introduir:
sudo reiniciar ara
Per llistar fitxers en un directori, utilitzeu això:
ls
Aquí podeu trobar altres ordres útils de Linux
Recomanat:
Sistema d'alerta d'estacionament invers de cotxes Arduino - Pas a pas: 4 passos
Sistema d'alerta d'estacionament invers de cotxes Arduino | Pas a pas: en aquest projecte, dissenyaré un senzill circuit de sensor d’estacionament invers de cotxes Arduino amb Arduino UNO i el sensor d’ultrasons HC-SR04. Aquest sistema d’alerta inversa de cotxe basat en Arduino es pot utilitzar per a navegacions autònomes, intervals de robots i altres
Sistema d’assistència basat en empremtes digitals i RFID que utilitza la base de dades Raspberry Pi i MySQL: 5 passos
Sistema d’assistència basat en empremta digital i RFID que utilitza la base de dades Raspberry Pi i MySQL: vídeo d’aquest projecte
Sistema d’alarma d’estacionament de vehicles mitjançant sensor PIR: bricolatge: 7 passos (amb imatges)
Sistema d’alarma d’estacionament de vehicles que utilitza el sensor PIR: bricolatge: alguna vegada heu tingut problemes en aparcar per a vehicles com cotxes, camions, motocicletes o qualsevol altre, en aquest instructiu us mostraré com superar aquest problema mitjançant una senzilla alarma d’estacionament de vehicles sistema mitjançant sensor PIR. En aquest sistema que
SISTEMA D'ASSISTÈNCIA BASAT EN RFID AMB ARDUINO I GSM: 5 passos
SISTEMA D'ASSISTÈNCIA BASAT EN RFID AMB ARDUINO I GSM: Aquest projecte utilitza la tecnologia RFID per fer una nota de tots els estudiants que entren a l'aula i també per calcular el temps que resideix a la classe. En aquest sistema proposat, cada estudiant té una etiqueta RFID. El procés d'assistència pot ser
Un simple prototip del sistema d’estacionament mitjançant Ebot: 3 passos
Un prototip simple del sistema d’estacionament amb Ebot: he fet un prototip simple del sistema d’estacionament amb Ebot. En aquest sistema, hi ha un sensor d’ultrasons per detectar el vehicle / objecte. El mòdul LCD mostrarà el nombre de vehicles detectats. Un cop el nombre arribi al màxim, es mostrarà el missatge & q