Inhoudsopgave:
- Stap 1: Wat is een Pi Zero W?
- Stap 2: Scotty, we hebben meer kracht nodig
- Stap 3: Sensorplaatsing en software
- Stap 4: De Pi. instellen
- Stap 5: WiFi-tijd
- Stap 6: Inloggen
- Stap 7: Draden
- Stap 8: Steek het aan
- Stap 9: Optionele stap en handige opdrachten
Video: Pi-gebaseerd parkeerhulpsysteem - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Hoi! Hier is een cool klein project dat je in één middag kunt maken en het vervolgens dagelijks kunt gebruiken. Het is gebaseerd op de Raspberry Pi Zero W en helpt je om je auto elke keer perfect te parkeren.
Hier is de volledige lijst van de onderdelen die je nodig hebt:
- Raspberry Pi Zero W (in dit artikel noemen we dit 'rpi' of 'pi')
- Micro-SD-kaart van 4 GB of groter voor het pi-besturingssysteem
- Twee tinyLiDAR Time of Flight-afstandssensormodules
- 32x32 RGB LED Paneel (er zijn veel fabrikanten hiervoor met verschillende dot pitches, je kunt bijvoorbeeld de Adafruit 1484 of iets dergelijks gebruiken, zoek maar op '32x32 LED Matrix' op Google). Ons paneel had een pitch van 6 mm.
- 25 voet CAT5-kabel
- ongeveer 22 gekleurde mannelijke naar mannelijke header pin jumperdraden
- 5v 2Amp microUSB-voeding (oplader voor mobiele telefoon) Alles klaar? Laten we gaan!
TL;DR Samenvatting
- Download Raspbian Lite OS voor de rpi
- Configureer de pi om headless over wifi te draaien met een statisch IP
- Stel uw pc-ontwikkelomgeving in met PuTTY, WinSCP en optioneel SublimeText met FTP-add-on
- Download, maak en bind de LED-paneeldriver
- Download en installeer pigpio
- Download onze Python-code
- Sluit het 32x32 LED-displaypaneel aan
- Maak de CAT5-verlengkabel voor de side tinyLiDAR-sensor
- Optionele stap (maar alleen voor gevorderde gebruikers): doe een snelle vrolijke dans als alles werkt;)
Stap 1: Wat is een Pi Zero W?
Je hebt ongetwijfeld gehoord van de Raspberry Pi, maar wat is in vredesnaam een pi 'Zero W'?
De Raspberry Pi Zero en Zero W waren recentere toevoegingen aan de Pi-familie die meer bedoeld waren voor IoT en andere goedkope embedded applicaties. Het zijn uitgeklede versies van het originele pi-bord, maar nog steeds met een krachtige 1GHz-processor. Hier is een goede vergelijking van alle modellen.
Het voordeel voor ons bij het kiezen van de Pi Zero W boven andere controllerborden is dat we het gemakkelijk in de Python-taal van een hoger niveau kunnen programmeren terwijl we nog steeds de snelle C/C++ LED-paneelstuurprogramma's gebruiken. Het is ook aantrekkelijk geprijsd voor slechts $ 10 USD.
Houd er rekening mee dat aangezien dit bord een uitgeklede versie van een volledige pi is, er enkele dingen zijn veranderd. Met name de ethernet-aansluiting is geëlimineerd, de HDMI-connector is veranderd in een mini-formaat en de vier USB-poorten zijn vereenvoudigd tot slechts één micro-USB-type. Er is nog een micro-USB-connector aan boord, maar deze is alleen voor het voeden van het bord. Het elimineren van alle USB-connectoren van volledige grootte introduceert enkele complexiteiten. Hoe kun je namelijk een toetsenbord en muis aansluiten? Standaard USB-randapparatuur en hubs gebruiken Type A-connectoren, niet de micro-type.
Dus, wat kunnen we doen?
We kunnen zonder kop gaan!
Nee, we willen niet gek worden, maar een alternatief gebruiken voor de normale direct bedrade opstelling. Headless betekent op afstand "tunnelen" in de pi met behulp van een beveiligde shell (SSH) netwerkverbinding. Voor dit project gebruiken we de headless-aanpak via wifi. Vandaar de reden voor ons om de W-versie van de pi zero te kiezen in plaats van de nog goedkopere pi zero.
Merk op dat er ook een andere manier is om de pi in headless-modus te laten werken met behulp van iets dat VNC wordt genoemd. Het heeft echter speciale VNC-software nodig die op uw pc draait, omdat het een volledig virtueel grafisch bureaublad op uw pc biedt. We hebben de desktop niet nodig (en willen ook niet) voor ons project, dus we houden ons aan de eenvoudigere SSH-methode.
Stap 2: Scotty, we hebben meer kracht nodig
Het 32x32 LED-matrixpaneel kan op zichzelf al meerdere ampère stroom opnemen. Geen grapje! Dat is de reden waarom de meeste van deze panelen een aantal forse stroomkabels bevatten om ze van stroom te voorzien. Gelukkig voor ons hebben we echter geen enorme stroomvoorziening nodig voor dit project. We konden dit hele systeem van stroom voorzien met alleen een reserve 5v/2amp microUSB-oplader voor mobiele telefoons die we hadden liggen. De reden voor de lagere stroom is omdat we relatief eenvoudige grafische afbeeldingen gebruiken en daarom de meeste LED's niet inschakelen. Als je animatie wilt maken of video/heldere graphics wilt gebruiken, moet je zeker overwegen om het paneel via een aparte voeding te voeden.
Stap 3: Sensorplaatsing en software
Is het je opgevallen dat we twee tinyLiDAR's in dit systeem gebruiken in plaats van slechts één? Zoals te zien is in het diagram van de garageopstelling, wordt de ene voor de auto geplaatst en de andere langs een kant van de auto.
De zijsensor zal detecteren of u uit het midden afwijkt terwijl u de auto parkeert en natuurlijk zal de voorste u vertellen wanneer u moet stoppen.
Het 32x32 LED-display helpt u door pijlen te tonen om vooruit, links of rechts te gaan en een afteldisplay met gekleurde hoeken om aan te geven hoe ver u nog moet rijden. Bekijk onze korte video voor alle weergavestatussen.
Game Plan
In een notendop, we gebruiken de immer populaire hzeller C-bibliotheek voor de LED-driver, Python voor de besturingscode en de pipgpio C-bibliotheek voor een goede I2C-besturing van onze sensoren.
Python is een supereenvoudige taal op hoog niveau die je gemakkelijk in elke teksteditor kunt bewerken. We gebruiken normaal gesproken SublimeText en voor dit project hebben we ook een zeer nuttige FTP-plug-in gebruikt waarmee we de scriptbestanden rechtstreeks op de pi kunnen bewerken. Dit is een optionele stap omdat deze alleen nodig is als u de code wilt bewerken. Meer details vindt u aan het einde van dit artikel.
Alle rpi-borden ondersteunen, zoals u wellicht weet, geen native I2C-klokuitrekken. Dus gebruikten we de pigpio-bibliotheek opnieuw voor dit project om de tinyLiDAR-sensoren te besturen, maar deze keer met een kleine draai …
Meerdere tinyLiDAR's
Wanneer u een tinyLiDAR koopt, is deze altijd ingesteld op het standaard slave-adres van 0x10. Dit is prima als je een enkele sensor gebruikt, maar als je er meer dan één op de bus hebt, kan het een probleem zijn als je een commando naar 0x10 schrijft en ze allemaal terug antwoorden!
We hebben hier dus 3 opties:
Ten eerste kunnen we de (tinyLiDAR) "R"-opdracht gebruiken om een nieuw slave-adres te schrijven naar de ene sensor die is aangesloten op de I2C-bus. Herhaal dit vervolgens voor elke sensor. Fysiek bevestigen, schrijven en losmaken van elke sensor voor deze procedure. tinyLiDAR slaat het opgegeven adres op in het niet-vluchtige geheugen aan boord. Het adres blijft behouden, zelfs na uit- en uitschakelen totdat u het wist door het RESET-commando te geven.
De tweede optie is om de handige Auto Assign-functie te gebruiken die we hebben gemaakt als een stretch-doel in de IGG-campagne. Dit houdt in dat u het "AR" -commando verzendt en vervolgens met uw vinger naar elke sensor afzonderlijk wijst om automatisch opeenvolgende I2C-adressen toe te wijzen aan de individuele sensoren, vergelijkbaar met de eerste optie, maar u hoeft niet elke sensor fysiek los te koppelen om dit te doen.
De derde optie is degene die we hier in dit project gebruiken en het is mogelijk dankzij de pigpio-bibliotheek. Om de I2C-standaard correct te implementeren, bitbangt pigpio de GPIO. Daarom kunnen we gemakkelijk afzonderlijke I2C-bussen maken op zowat elk paar extra GPIO-pinnen.
Het is dus niet nodig om slave-adressen voor de meerdere LiDAR-sensoren opnieuw te programmeren. We kunnen gewoon voor elke bus een aparte bus gebruiken:)
Merk op dat de I2C-bus met 100 Kbps eigenlijk behoorlijk robuust is. We gebruiken een gewone oude CAT5-ethernetkabel om de I2C-bus naar de zijwaartse tinyLiDAR-sensor te leiden die maar liefst 25 voet verwijderd is zonder actieve repeatercomponenten! De details van de sensorbedrading worden hierboven weergegeven.
Oké, genoeg geklets, laten we beginnen met het downloaden van de code!
Stap 4: De Pi. instellen
Let op: De pi gebruikt een Linux-bestandssysteem, dus het is het beste om de volgende stappen uit te voeren op een Linux-gebaseerd systeem. U kunt uw SD-kaart opnieuw formatteren als u dit op Windows doet. We gebruikten de geweldige en gratis Ubuntu 18.04-desktop in een virtuele omgeving op een Windows 10-pc, maar je kunt iets soortgelijks proberen.
U moet eerst het besturingssysteem downloaden van raspberrypi.org en het vervolgens op uw microSD-kaart branden. Volg dus deze stappen:
(1) Ga in Ubuntu hierheen en pak de Raspbian Lite-afbeelding. Sla het op in je downloadmap.
(2) Download vervolgens het hulpprogramma Etcher SD-kaart schrijven. Ter info - de officiële Etcher-downloadlink voor de Linux-versie op hun startpagina werkte niet voor ons, dus gebruikten we in plaats daarvan de hier beschreven methode:
Samengevat waren de stappen beschreven in de link:
Voeg Etcher debian-repository toe:
echo "deb https://dl.bintray.com/resin-io/debian stable etcher" | sudo tee /etc/apt/sources.list.d/etcher.list
Vertrouw op de GPG-sleutel van Bintray.com:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
Bijwerken en installeren:
sudo apt-get update
sudo apt-get install etcher-electron
Eenmaal voltooid, kunt u doorgaan en Etcher starten vanaf uw Ubuntu-bureaublad. Het zal u om het bronbestand vragen (dat u in de downloadmap plaatst). De volgende stap in Etcher is het kiezen van het juiste doel. Etcher kan je micro SD-kaart goed detecteren, maar je zou hier paranoïde moeten zijn. Om te controleren of het de juiste bestemming vindt, probeer de microSD-kaart uit te werpen door op uitwerpen te klikken in het Ubuntu-bestandsverkenner-venster en controleer of het verdwijnt als de doeloptie in Etcher. Plaats het er vervolgens weer in en ga verder met de laatste stap, namelijk het bestand naar deze microSD-kaart schrijven.
Wacht even tot het klaar is en ga dan verder.
Stap 5: WiFi-tijd
Oké, nu is het tijd om je wifi-gegevens in te voeren.
Tip: je kunt altijd informatie uit dit artikel kopiëren (Ctrl+C) en plakken (Rechts klikken, Plakken) naar het PuTTY-terminalscherm in plaats van de commando's uit te typen. Kijk ook aan het einde van dit artikel voor een aantal handige Linux-commando's.
Wanneer Etcher klaar is met schrijven naar de micro SD-kaart, worden er 2 schijven weergegeven zoals hierboven weergegeven. De ene heet boot, de andere heet rootfs
We moeten de bestandsbeheerder gebruiken om naar de opstartmap te gaan en een bestand te maken met de naam wpa_supplicant.conf.
Om deze stap uit te voeren, klikt u gewoon aan de linkerkant waar het zegt opstarten en vervolgens aan de rechterkant van het scherm kunt u met de rechtermuisknop op het witte achtergrondgeluid klikken en Openen in Terminal kiezen.
Hierdoor wordt een terminalvenster geopend (vergelijkbaar met CMD in Windows) waar u het volgende kunt typen:
sudo nano wpa_supplicant.conf Tip: je moet je Linux-systeemwachtwoord invoeren zodat het als supergebruiker kan worden uitgevoerd. Dit is vereist, anders kunt u de bestanden niet opslaan als u klaar bent met bewerken
De bovenstaande opdracht start dan de "nano" teksteditor waar u de volgende informatie kunt invoeren:
land = VS
ctrl_interface = DIR = /var/run / wpa_supplicant GROUP = netdev update_config = 1 netwerk = { ssid = "WiFi_SSID" scan_ssid = 1 psk = "WiFi_Password" key_mgmt = WPA - PSK }
Opmerking: vergeet niet om WiFi_SSID en WiFi_Password te vervangen door uw eigen WiFi-netwerknaam en wachtwoord.
Als u klaar bent, klikt u op Ctrl+X om af te sluiten en antwoordt u Ja om het bestand te schrijven bij het afsluiten.
Onze volgende stap is het maken van een leeg bestand met de naam ssh. Om dit te doen, typen we gewoon het volgende in het terminalvenster:
raak ssh. aan
Nu moeten we onze pi een statisch IP-adres geven, zodat we weten waar het is elke keer dat we er verbinding mee willen maken. Typ het volgende in het terminalvenster:
sudo nano /etc/dhcpcd.conf
Dit zou de nano-teksteditor opnieuw moeten openen en we kunnen deze tekst onderaan het bestand toevoegen:
interface wlan0
statisch ip_address=192.168.0.static routers=192.168.0.1 statisch domain_name_servers=192.168.0.1 8.8.8.8
Opmerking: Hierbij wordt ervan uitgegaan dat uw netwerkvoorvoegsel 192.168.0 is. Als je 192.168.1 enz. hebt, gebruik dan in plaats daarvan je netwerk. De domeinnaamserver 8.8.8.8 is voor Google en is hier optioneel.
Typ 'exit' in de Terminal om het af te sluiten. Klik vervolgens met de rechtermuisknop op de opstartnaam aan de linkerkant van het venster Bestandsbeheer en selecteer Uitwerpen.
U kunt nu deze microSD-kaart in uw pi steken en de microUSB-voedingskabel aansluiten om uw pi van stroom te voorzien.
Als alles goed gaat, knippert de groene LED een tijdje alsof hij toegang heeft tot een harde schijf en moet hij u aanmelden bij uw wifi-netwerk. Geef het ongeveer een minuut om tot rust te komen en wacht tot de LED ononderbroken groen wordt.
Om te controleren of het allemaal werkte, kunnen we proberen het te pingen.
Typ dus gewoon de onderstaande regel en controleer of er een reactie is.
192.168.0.200 pingen
In Ubuntu zou je zoiets als dit moeten krijgen:
192.168.0.200 pingen
PING 192.168.0.200 (192.168.0.200) 56(84) bytes aan gegevens. 64 bytes vanaf 192.168.0.200: icmp_seq=1 ttl=128 tijd=752 ms 64 bytes vanaf 192.168.0.200: icmp_seq=2 ttl=128 tijd=5.77 ms 64 bytes vanaf 192.168.0.200: icmp_seq=3 ttl=128 tijd=7.33 ms ^C --- 192.168.0.200 ping-statistieken --- 3 pakketten verzonden, 3 ontvangen, 0% pakketverlies, tijd 2001ms rtt min/avg/max/mdev = 5.777/255.346/752.922/351.839 ms
Merk op dat de ping blijft werken totdat u op Ctrl+C drukt om te stoppen.
In Windows zou je zoiets als dit moeten krijgen:
192.168.0.200 pingen
Pingen 192.168.0.200 met 32 bytes aan gegevens: Antwoord van 192.168.0.200: bytes=32 tijd=4ms TTL=64 Antwoord van 192.168.0.200: bytes=32 tijd=5ms TTL=64 Antwoord van 192.168.0.200: bytes=32 tijd =6ms TTL=64 Antwoord van 192.168.0.200: bytes=32 tijd=5ms TTL=64 Ping-statistieken voor 192.168.0.200: Pakketten: Verzonden = 4, Ontvangen = 4, Verloren = 0 (0% verlies), Geschatte retourtijden in milliseconden: Minimum = 4ms, Maximum = 6ms, Gemiddelde = 5ms
Alles goed? Verder…
Stap 6: Inloggen
Nu we verbinding hebben met de pi, willen we deze opdrachten sturen. Maar hoe? PuTTY natuurlijk! Je kunt PuTTY hier downloaden PuTTY instellen Na het downloaden van de PuTTY-software, maak je een profiel voor je pi met de volgende informatie:
Hostnaam (of IP-adres): 192.168.0.200 Verbindingstype: SSHGeef dit profiel een naam onder Saved Sessions en klik op Save. U kunt elke gewenste naam gebruiken, bijvoorbeeld "rpizw_200"
Om in te loggen, selecteert u het gewoon in de lijst en drukt u op Laden. Druk vervolgens op Openen. Voer de gebruikersnaam en het wachtwoord in om in te loggen:
inlognaam: pi
Standaard wachtwoord: framboos
Hier is een voorbeeldsessie die wordt weergegeven in PuTTY wanneer u inlogt:
inloggen als: pi
[email protected]'s wachtwoord: Linux raspberrypi 4.14.34+ #1110 Mon Apr 16 14:51:42 BST 2018 armv6l De programma's die bij het Debian GNU/Linux-systeem worden geleverd, zijn gratis software; de exacte distributievoorwaarden voor elk programma worden beschreven in de individuele bestanden in /usr/share/doc/*/copyright. Debian GNU/Linux wordt geleverd met ABSOLUUT GEEN GARANTIE, voor zover toegestaan door de toepasselijke wetgeving. Laatste login: [datum en tijd] van 192.168.0.[ip-adres] SSH is ingeschakeld en het standaardwachtwoord voor de 'pi'-gebruiker is niet gewijzigd. Dit is een veiligheidsrisico - log in als de 'pi'-gebruiker en typ 'passwd' om een nieuw wachtwoord in te stellen.
Bij de eerste keer inloggen, zal het waarschuwen dat je het wachtwoord nog niet hebt gewijzigd. Je moet het veranderen in iets sterks en toch eenvoudig te onthouden, dus ga je gang en verander het door passwd te typen en volg de aanwijzingen.
We moeten vervolgens de software op de pi bijwerken door dit te typen:
sudo apt-get update && sudo apt-get upgrade
Hiermee worden alle benodigde updates van uw internetverbinding gedownload. Antwoord JA als u wordt gevraagd om het door te laten gaan en geef het dan wat tijd om bij te werken.
Op dit moment moeten we waarschijnlijk ook het geluid op de pi uitschakelen, omdat deze een slechte juju heeft met de LED-stuurprogrammabibliotheek. Kopieer, plak de volgende regels één voor één en druk na elke regel op enter:
cd ~
kat <<EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf blacklist snd_bcm2835 EOF sudo update-initramfs -u
De uitvoer zal ongeveer als volgt zijn:
pi@raspberrypi:~ $ cd ~
pi@raspberrypi:~ $ cat < > zwarte lijst snd_bcm2835 > > EOF zwarte lijst snd_bcm2835 pi@raspberrypi:~ $ sudo update-initramfs -u pi@raspberrypi:~ $
Vervolgens moeten we de pi opnieuw opstarten om de wijzigingen door te voeren, dus typ het volgende:
sudo reboot nu
De verbinding valt natuurlijk weg als de pi opnieuw wordt opgestart, dus je kunt PuTTY afsluiten. Probeer een minuut later opnieuw in te loggen.
Nu is het tijd om een grafische FTP-bestandsbeheerder te krijgen, genaamd WinSCP. U kunt WinSCP hier downloaden
WinSCP lijkt veel op de bestandsbeheerder op Windows en Ubuntu. Het stelt ons in staat om eenvoudig bestanden van en naar de pi te slepen en neer te zetten en mappen te maken met slechts een rechterklik van de muis.
Na het downloaden moet je een profiel voor je pi instellen.
WinSCP Setup Kies bij de Login pop-up Nieuwe site. Gebruik de volgende instellingen voor de sessie:
Bestandsprotocol: SFTP Hostnaam: 192.168.0.200 Gebruikersnaam: pi Wachtwoord: {welk wachtwoord u de standaardwaarde ook hebt gewijzigd in de PuTTY-stap hierboven}
Ga in Geavanceerde site-instellingen naar Omgeving | Directory's en voer /home/pi in voor de externe map en wat je maar wilt voor de lokale map-instelling.
Ga in Geavanceerde site-instellingen naar Omgeving | Shell en kies sudo su - in de vervolgkeuzelijst Shell.
Druk vervolgens op Opslaan.
Houd zowel WinSCP als PuTTY open terwijl u de volgende stappen uitvoert
Ga naar de PuTTY-terminal en voer het volgende in:
cd ~
Dit brengt ons naar onze homedirectory in de pi.
We kunnen nu de LED-stuurprogrammabibliotheek van github pakken. Om de nieuwste code te gebruiken, moeten we de repo ophalen, dus moeten we het git-hulpprogramma installeren.
Voer dit in PuTTY in:
sudo apt-get install git
antwoord Y om door te gaan en het zal een paar seconden duren om git voor ons van internet te installeren.
De uitvoer zou er ongeveer zo uit moeten zien:
pi@raspberrypi:~ $ sudo apt-get install git
Pakketlijsten lezen… Klaar Afhankelijkheidsboom opbouwen Statusinformatie lezen… Klaar De volgende extra pakketten zullen worden geïnstalleerd: git-man liberror-perl Voorgestelde pakketten: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn De volgende NIEUWE pakketten zullen worden geïnstalleerd: git git-man liberror-perl 0 opgewaardeerd, 3 nieuw geïnstalleerd, 0 om te verwijderen en 0 niet geüpgraded. Moet 4.848 kB aan archieven ophalen. Na deze bewerking wordt 26,4 MB extra schijfruimte gebruikt. Wil je doorgaan? [Y/n] y Get:1 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf lirror-perl all 0.17024-1 [26.9 kB] Get:2 https://muug.ca/mirror/ raspbian/raspbian stretch/main armhf git-man alle 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] 4, 848 kB opgehaald in 5s (878 kB/s) Selecteren van eerder niet-geselecteerd pakket liberror-perl.(Database lezen … 34363 bestanden en mappen die momenteel zijn geïnstalleerd.) Voorbereiden om uit te pakken …/liberror-perl_0.17024-1_all.deb … liberror-perl uitpakken (0.17024-1) … Een eerder niet geselecteerd pakket git-man selecteren. Voorbereiden om uit te pakken …/git-man_1%3a2.11.0-3+deb9u3_all.deb … Git-man uitpakken (1:2.11.0-3+deb9u3) … Eerder niet geselecteerd pakket git. Uitpakken voorbereiden …/git_1%3a2.11.0-3+deb9u3_armhf.deb … git uitpakken (1:2.11.0-3+deb9u3) … Git-man instellen (1:2.11.0-3+deb9u3) … Instellen liberror-perl (0.17024-1) … Verwerkingstriggers voor man-db (2.7.6.1-2) … Git instellen (1:2.11.0-3+deb9u3) …
Ga nu terug naar WinSCP en navigeer naar de map /home/pi. Klik vervolgens aan de rechterkant van dit WinScp-venster met de rechtermuisknop en kies voor het maken van een nieuwe map met de naam "parkeren"
Terug in het PuTTY-scherm kun je ls typen om te bevestigen dat je zojuist een nieuwe map in de pi hebt gemaakt. Vul dan dit in:
cd p[TAB]Tip: Als u op de TAB-toets drukt, wordt de gedeeltelijke naam automatisch voor u aangevuld
Druk op de enter-toets om in deze map te komen.
pi@raspberrypi:~ $ cd parkeren/
pi@raspberrypi:~/parkeren $ ls
Nu kunnen we de stuurprogrammabestanden ophalen door het volgende in PuTTY in te voeren:
git clone
De uitvoer ziet er ongeveer zo uit:
pi@raspberrypi:~/parking $ git clone
Klonen in 'rpi-rgb-led-matrix'… afstandsbediening: Objecten tellen: 3740, klaar. remote: Totaal 3740 (delta 0), hergebruikt 0 (delta 0), pack-hergebruikt 3740 Ontvangende objecten: 100% (3740/3740), 20.61 MiB | 1,32 MiB/s, klaar. Delta's oplossen: 100% (2550/2550), klaar.
Compileer nu de LED-stuurprogrammabestanden door naar deze nieuwe map 'rpi-rgb-led-matrix' te gaan en de opdracht make te typen:
cd r[TAB]
maken En zo zag het eruit op ons bord
pi@raspberrypi:~/parkeren $ cd rpi-rgb-led-matrix/
pi@raspberrypi:~/parking/rpi-rgb-led-matrix $ make make -C./lib make[1]: Ga naar directory '/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='"regulier"' -Wextra -Wno-ongebruikte-parameter -fno-uitzonderingen -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=' "normaal"' -Wextra -Wno-ongebruikte-parameter -fno-uitzonderingen -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 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='"regulier"' -Wextra -Wno-ongebruikte-parameter -fno-uitzonderingen -c -o led-matrix-co led-matrix-c.cc cc -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-ongebruikte-parameter -c -o hardware-mapping.o hardware-mapping.c g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regulier"' -Wextra -Wno-ongebruikte-parameter -fno-uitzonderingen -c -o content-streamer.o content-streamer.cc g++ -I../include -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE='"regulier"' -Wextra -Wno-ongebruikte-parameter -fno-uitzonderingen -c -o pixel-mapper.o pixel-mapper.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regulier"' -Wextra -Wno-ongebruikte-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]: Verlaat directory '/home/pi/parking/rpi-rgb-led-matrix/lib' make -C voorbeelden-api-use make[1]: Ga naar directory ' /home/pi/parkeren/rpi-rgb-led-matrix/examples-api-use' g++ -I../include -Wall -O3 -g -Wextra -Wno-ongebruikte-parameter -c -o demo-main. o demo-main.cc make -C../lib make[2]: directory '/home/pi/parking/rpi-rgb-led-matrix/lib' binnengaan make[2]: directory '/home/pi verlaten /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-ongebruikte-parameter -c -o minimaal-voorbeeld.o minimaal-voorbeeld.cc g++ minimaal-voorbeeld.o - o minimaal-voorbeeld -L../lib -lrgbmatrix -lrt -lm -lpthread cc -I../include -Wall -O3 -g -Wextra -Wno-ongebruikte-parameter -c -o c-voorbeeld.o c- voorbeeld.c cc c-voorbeeld.o -o c-voorbeeld -L../lib -lrgbmatrix -lrt -lm -lpthread -lstdc++ g++ -I../include -Wall -O3 -g -Wextra -Wno-unused- parameter -c -o tekst-voorbeeld.o tekst-voorbeeld.cc g++ tekst-voorbeeld.o -o tekst-voorbeeld -L../lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Wall - O3 -g -Wextra -Wno-ongebruikte-parameter -c -o scrollen-tekst-voorbeeld.o scrollen-tekst-voorbeeld.cc g++ scrollen-tekst-voorbeeld.o -o scrollen-tekst-voorbeeld -L../lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Wall -O3 -g -Wextra -Wno-ongebruikte-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++ bestand dcat.o -o ledcat -L../lib -lrgbmatrix -lrt -lm -lpthread make[1]: Verlaat directory '/home/pi/parking/rpi-rgb-led-matrix/examples-api-use' pi @raspberrypi:~/parkeren/rpi-rgb-led-matrix $
Onze volgende stap zal zijn om de RGB-matrixbibliotheek aan Python te binden. We gebruikten de standaard Python 2 voor dit project. Dus om deze binding te doen, voeren we de volgende regel tegelijk in zoals eerder:
sudo apt-get update && sudo apt-get install python2.7-dev python-pillow -y
make build-python sudo make install-python
Opmerking: je kunt die ene waarschuwing over '-Wstrict-prototype' die verschijnt bij het uitvoeren van de twee make-statements veilig negeren. De make-commando's nemen een paar minuten in beslag en ze zeggen niets terwijl ze bezig zijn. Dus vrees niet - je pi zou snel terug moeten komen;)
Hier is een gedeeltelijke uitvoer van de eerste verklaring:
'grafische' extensie bouwen
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: waarschuwing: opdrachtregeloptie '-Wstrict-prototypes' is geldig voor C/ObjC maar niet voor C++ arm-linux-gnueabihf-g++ -pthread -shared -Wl, -O1 -Wl, -Bsymbolic-functies -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]: map verlaten '/home/pi/parking/rpi-rgb-led-matrix/bindings/python' pi@raspberrypi:~/parking/rpi-rgb-led-matrix $
Vervolgens installeren we de pigpio C-bibliotheek. Om dit goed te doen, moeten we het van de bron maken, dus voer gewoon de volgende regels in:
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
Bovenstaande installatie duurt ongeveer 3 minuten.
Nu is het tijd om onze Python-projectbestanden op te halen. Vul het volgende in:
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_parkeren.zip
Typ vervolgens het volgende om het uit te voeren:
sudo python parking.py
Maar je hoeft dit nu niet te doen, want we moeten het allemaal nog aansluiten…
Stap 7: Draden
Zoals eerder vermeld, hebben we het LED-paneel van stroom voorzien via dezelfde voedingsadapter die de pi van stroom voorziet. Om dit te doen, moet je de forse rode en zwarte draden verbinden met mannelijke header-pinnen, zodat ze kunnen worden aangesloten op pinnen 2 en 9 van de 40-pins pi-connector.
Koppel nu de stroom naar de pi los en sluit het LED-paneel aan volgens het bovenstaande afbeeldingsdiagram. Houd pin 2 voorlopig losgekoppeld.
OPMERKING: Het LED-matrixpaneel kan soms in een funky toestand opstarten. Als dit gebeurt, kan het uw stroomvoorziening ernstig belasten, ongeacht de huidige capaciteit. We merkten dit tijdens de ontwikkeling van onze bankvoeding die meer dan 4 ampère kan leveren. De oplossing hiervoor is om eerst de pi-code uit te voeren en vervolgens pin 2 aan te sluiten om het LED-paneel van stroom te voorzien. Op deze manier zou het paneel in een lage energiestand moeten komen, omdat het de willekeurige LED-statussen wegspoelt. Ruststroom (alle LED's uit) voor ons LED-paneel was slechts 50mA bij 5v.
CAT5
We hebben een CAT5-ethernetkabel van 25 voet gebruikt en deze aangepast om aan het ene uiteinde in de pi-headerpennen te steken en de GROVE-connectorpinnen aan de andere kant te accepteren, zodat we de afstand konden vergroten om onze tinyLiDAR-sensor aan de zijkant te plaatsen. De foto's hierboven tonen deze kabel voor en na modificaties. Negeer de kleuren van de pindraden van de header, aangezien deze niet gecorreleerd zijn met de diagrammen. Zorg ervoor dat u uw systeem aansluit zoals weergegeven in de geïllustreerde aansluitschema's die eerder in stap 3 zijn weergegeven.
Stap 8: Steek het aan
De juiste initiële opstartvolgorde zou moeten zijn om de microUSB-oplader in de pi te steken en te wachten tot de blauwe LED's op de tinyLiDAR-sensoren snel knipperen om aan te geven dat ze metingen verrichten. Dit bewijst dat de code goed werkt.
Je kunt dan langzaam maar zeker pin 2 voor de led-paneelvoeding aansluiten. Pas op dat u het niet glitch terwijl u dit doet! Als het LED-paneel een paar bevroren heldere LED's toont, is er waarschijnlijk een storing, dus verwijder de microUSB-stroom van de pi en wacht een paar seconden om de opstartvolgorde opnieuw te proberen.
Voer het volgende in om de code uit te voeren:
cd /home/pi/parkeren/rpi-rgb-led-matrix/bindingen/python/samples
sudo python parking.py
Als alles goed gaat, zou je een weergave moeten krijgen die lijkt op die in de video.
Bekijk snel de parking.py-code om te begrijpen welke limieten we hebben gebruikt. De standaard voor de frontsensor is 200 mm. Aangezien het sensorbereik 11 mm tot 2 m is, is het een goed idee om de nom_parked_Front-afstand op 200 mm of hoger te houden. De zijsensor nom_parked_Side is ingesteld op 600 mm. Zie bovenstaande afbeelding voor de Python-code die deze configuratie-opties toont.
Als alles werkt, kunt u doorgaan en het systeem in uw garage monteren en de bovenstaande parameters indien nodig aanpassen. Omdat je pi is verbonden met je wifi, kun je altijd naar binnen gaan en je afstandsinstellingen bewerken zoals je nodig hebt voor je specifieke garage-opstelling terwijl deze nog is gemonteerd.
Is dit nu?
Waarom ja, ja dat is het! -- tijd om je vrolijke dansje te doen:)
Bedankt voor het lezen en veel plezier met je nieuwe parkeerassistent!
Stap 9: Optionele stap en handige opdrachten
Optionele stap - FTP-add-on voor sublieme tekst
Om de Python-scriptbestanden rechtstreeks op de pi te bewerken, kunnen we de FTP-add-on genaamd Sublime SFTP van Wbond installeren. U kunt deze add-on downloaden door de instructies hier te volgen
Om deze add-on in te stellen, moeten we de FTP-referenties configureren onder Bestand | SFTP/FTP | Server instellen… pagina.
Voor onze opstelling hebben we gebruikt:
"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", Gebruik Ctrl+S of Bestand | Opslaan om deze informatie op te slaan. U wordt gevraagd om een naam om deze configuratie aan te roepen. We noemden het gewoon "rpizw_0_200"
Om nu in te loggen op de pi vanuit SublimeText, ga naar Bestand | SFTP/FTP | Blader door server…
Maak een keuze uit de lijst met opties die verschijnt. U wilt het profiel kiezen met de naam die u hierboven hebt opgegeven;) Volg de aanwijzingen om door de mappen te navigeren en het gewenste bestand te bewerken.
Handige extra's
Handige Linux-commando's om op de pi te gebruiken.
Voordat u de pi loskoppelt, moet u hem ALTIJD afsluiten, zodat u geen bestandsbeschadiging op uw microSD-kaart krijgt. Voer deze opdracht in:
sudo nu afsluiten
en wacht tot de groene led uitgaat voordat u de stekker uit het stopcontact haalt. Op dezelfde manier kunt u het volgende invoeren om het opnieuw te starten:
sudo reboot nu
Gebruik dit om bestanden in een map weer te geven:
ls
Je kunt hier andere handige Linux-commando's vinden