Innehållsförteckning:

Pi -baserat parkeringshjälpsystem: 9 steg
Pi -baserat parkeringshjälpsystem: 9 steg

Video: Pi -baserat parkeringshjälpsystem: 9 steg

Video: Pi -baserat parkeringshjälpsystem: 9 steg
Video: Pi Technical Daily 29/01/2024 2024, November
Anonim
Pi -baserat parkeringsassistentsystem
Pi -baserat parkeringsassistentsystem

Hallå där! Här är ett coolt litet projekt du kan göra på en eftermiddag och sedan använda det dagligen. Den är baserad på Raspberry Pi Zero W och hjälper dig att parkera din bil perfekt varje gång.

Här är den fullständiga listan över de delar du behöver:

  • Raspberry Pi Zero W (vi kommer att kalla detta 'rpi' eller 'pi' i den här artikeln)
  • 4 GB eller större micro SD -kort för pi OS
  • Två tinyLiDAR Time of Flight distanssensormoduler
  • 32x32 RGB LED -panel (det finns många tillverkare för detta med varierande punkter, du kan till exempel använda Adafruit 1484 eller liknande, bara söka efter '32x32 LED Matrix' på Google). Vår panel hade en 6 mm delning.
  • 25 fot CAT5 -kabel
  • ca 22 färgade han- till hanstycke med huvudkabeln
  • 5v 2Amp microUSB strömförsörjning (mobiltelefonladdare) Allt klart? Nu går vi!

TL; DR Sammanfattning

  • Ladda ner Raspbian Lite OS för rpi
  • Konfigurera pi för att köra utan huvud via WiFi med en statisk IP
  • Konfigurera din PC -utvecklingsmiljö med PuTTY, WinSCP och eventuellt SublimeText w/ FTP -tillägg
  • Ladda ner, skapa och bind till LED -panelens drivrutin
  • Ladda ner och installera pigpio
  • Ladda ner vår Python -kod
  • Koppla upp 32x32 LED -displaypanelen
  • Gör CAT5 -förlängningskabeln för den lilla tinyLiDAR -sensorn på sidan
  • Valfritt steg (men bara för avancerade användare): gör en snabb gladdans när allt fungerar;)

Steg 1: Vad är en Pi Zero W?

Vad är en Pi Zero W?
Vad är en Pi Zero W?

Du har utan tvekan hört talas om Raspberry Pi men vad fan är en pi 'Zero W'?

Raspberry Pi Zero och Zero W var nyare tillägg till Pi -familjen betydde mer för IoT och andra billiga inbäddade applikationer. De är avskalade versioner av det ursprungliga pi -kortet men fortfarande med en kraftfull 1 GHz -processor. Här är en bra jämförelse av alla modeller.

Fördelen för oss när vi väljer Pi Zero W här framför andra styrkort är att vi enkelt kan programmera det på ett högre Python -språk medan vi fortfarande använder de snabba C/C ++ LED -paneldrivrutinerna. Det är också attraktivt prissatt till endast $ 10USD.

Tänk på att eftersom det här kortet är en avskalad version av en fullständig pi - har vissa saker förändrats. I synnerhet har Ethernet -uttaget eliminerats, HDMI -kontakten har ändrats till en ministorlek och de fyra USB -portarna har förenklats till bara en mikro -USB -typ. Det finns en annan mikro -USB -kontakt ombord, men det är bara för att driva kortet. Eliminering av alla USB -kontakter i full storlek introducerar vissa komplexiteter. Nämligen, hur kan du ansluta ett tangentbord och en mus? Standard USB -kringutrustning och nav använder typ A -kontakter, inte av mikrosorten.

Så vad kan vi göra?

Vi kan gå utan huvud!

Nej, vi menar inte att bli galen utan att använda ett alternativ till den normala direktkopplade installationen. Huvudlöst betyder att "tunnla" in i pi på distans med hjälp av en säker skal (SSH) nätverksanslutning. För detta projekt kommer vi att använda det huvudlösa tillvägagångssättet via WiFi. Därav anledningen till att vi väljer W -versionen av pi -noll istället för den ännu lägre kostnaden pi -noll.

Observera att det också finns ett annat sätt att köra pi i huvudlöst läge med något som kallas VNC. Den behöver dock speciell VNC -programvara som körs på din dator eftersom den ger ett fullständigt virtuellt grafiskt skrivbord på din dator. Vi kräver inte (och vill verkligen inte) skrivbordet för vårt projekt så vi kommer att hålla oss till den enklare SSH -metoden.

Steg 2: Scotty, vi behöver mer kraft

Scotty, vi behöver mer kraft!
Scotty, vi behöver mer kraft!

32x32 LED -matrispanelen kan helt och hållet ta flera ampere ström. Inget skoj! Det är därför de flesta av dessa paneler innehåller några kraftiga snygga kablar för att driva den. Lyckligtvis för oss, men vi behöver inte få en massiv strömförsörjning för detta projekt. Vi kunde driva hela detta system från endast en extra 5v/2amp microUSB mobiltelefonladdare vi hade liggande. Anledningen till den lägre strömmen är att vi använder relativt enkel grafik och därför inte tänder de flesta lysdioderna. Om du funderar på att göra animeringar eller använda video/ljus grafik bör du definitivt överväga att driva panelen från en separat strömförsörjning.

Steg 3: Sensorplacering och programvara

Sensorplacering och programvara
Sensorplacering och programvara
Sensorplacering och programvara
Sensorplacering och programvara

Märkte du att vi använder två tinyLiDAR i detta system istället för bara en? Som visas i garageanläggningsdiagrammet placeras en framför bilen och den andra placeras längs ena sidan av bilen.

Sidosensorn känner av om du avviker från mitten när du parkerar bilen och naturligtvis kommer den främre att berätta när du ska stanna.

32x32 LED -displayen hjälper dig genom att visa pilar för att gå framåt, vänster eller höger och en nedräkningsdisplay med färgade hörn för att indikera hur långt du fortfarande har att köra. Ta en titt på vår korta video för alla visningslägen.

Spelplan

I ett nötskal använder vi det alltid populära hzeller C -biblioteket för LED -drivrutinen, Python för kontrollkoden och pipgpio C -biblioteket för korrekt I2C -kontroll av våra sensorer.

Python är ett superenkelt språk på hög nivå som du enkelt kan redigera i valfri textredigerare. Vi använder normalt SublimeText och för detta projekt använde vi också ett mycket användbart FTP -plugin som gör att vi kan redigera skriptfilerna direkt på pi: n. Detta är ett valfritt steg eftersom det bara behövs om du vill redigera koden. Mer information finns i slutet av denna artikel.

Alla rpi -kort, som du kanske vet, stöder inte inbyggt I2C -klocksträckning. Så vi använde pigpio -biblioteket igen för detta projekt för att styra tinyLiDAR -sensorerna men den här gången med en liten vridning …

Flera småLiDAR

När du köper en tinyLiDAR är den alltid inställd på standardslavadressen 0x10. Detta är bra för när du använder en enda sensor, men om du har mer än en på bussen kan det vara ett problem om du skriver ett kommando till 0x10 och alla svarar tillbaka!

Så vi har 3 alternativ här:

Först kan vi använda kommandot (tinyLiDAR) "R" för att skriva en ny slavadress till den ena sensorn som är ansluten till I2C -bussen. Upprepa sedan detta för varje sensor. Fysiskt fästa, skriva och ta bort varje sensor för denna procedur. tinyLiDAR kommer att lagra den angivna adressen i sitt inbyggda icke-flyktiga minne. Adressen kvarstår även efter strömcykel tills du rensar den genom att utföra kommandot RESET.

Det andra alternativet är att använda den praktiska Auto Assign -funktionen som vi skapade som ett sträckmål i IGG -kampanjen. Detta innebär att du skickar "AR" -kommandot och sedan pekar fingret mot varje sensor individuellt för att automatiskt tilldela sekventiella I2C -adresser till de enskilda sensorerna som liknar det första alternativet, men du behöver inte fysiskt koppla bort varje sensor för att göra detta.

Det tredje alternativet är det som vi använder här i det här projektet och det är möjligt tack vare pigpio -biblioteket. För att implementera I2C -standarden på rätt sätt, pigpio bitbangs GPIO. Så på grund av detta kan vi enkelt skapa separata I2C -bussar på nästan alla par extra GPIO -stift.

Därför behöver du inte programmera om slavadresser för flera LiDAR-sensorer. Vi kan bara använda en separat buss för var och en:)

Observera att I2C -bussen som kör med 100 Kbps faktiskt är ganska robust. Vi använder vanlig gammal CAT5 -ethernetkabel för att köra I2C -bussen ut till sidan tinyLiDAR -sensorn som är hela 30 meter bort utan några aktiva repeaterkomponenter! Sensorkabeldetaljer visas ovan.

Okej, nog jibber jabber, låt oss börja ladda ner koden!

Steg 4: Konfigurera Pi

Konfigurera Pi
Konfigurera Pi
Konfigurera Pi
Konfigurera Pi

Varning: Pi använder ett Linux -filsystem så det är bäst att utföra följande steg på ett Linux -baserat system. Du kan sluta formatera om ditt SD -kort om du gör detta på Windows. Vi använde det fantastiska och gratis Ubuntu 18.04 -skrivbordet som körs i en virtuell miljö på en Windows 10 -dator men du kan prova något liknande.

Du måste först ladda ner operativsystemet från raspberrypi.org och sedan bränna det till ditt microSD -kort. Så följ dessa steg:

(1) I Ubuntu går du hit och tar Raspbian Lite -bilden. Spara den i din nedladdningsmapp.

(2) Ladda sedan ner skrivarverktyget för Etcher SD -kort. FYI - den officiella Etcher -nedladdningslänken för Linux -versionen på deras hemsida fungerade inte för oss så vi använde metoden som beskrivs här istället:

Sammanfattningsvis var stegen som beskrivs i länken:

Lägg till Etcher debian -arkiv:

echo "deb https://dl.bintray.com/resin-io/debian stabil etsare" | sudo tee /etc/apt/sources.list.d/etcher.list

Lita på Bintray.com: s GPG -nyckel:

sudo apt-key adv-keyserver keyserver.ubuntu.com --recv-nycklar 379CE192D401AB61

Uppdatera och installera:

sudo apt-get uppdatering

sudo apt-get install etcher-elektron

När du är klar kan du fortsätta och starta Etcher från ditt Ubuntu -skrivbord. Det kommer att be dig om källfilen (som du lägger i nedladdningsmappen). Nästa steg i Etcher är att välja rätt mål. Etcher gör ett bra jobb med att upptäcka ditt micro SD -kort men du borde vara paranoid här. För att verifiera att den hittar rätt destination - försök mata ut microSD -kortet genom att klicka på mata ut i Ubuntu -filutforskarfönstret och kontrollera att det försvinner som målalternativ inuti Etcher. Släpp sedan in den igen och fortsätt till det sista steget, det vill säga att skriva filen till detta microSD -kort.

Vänta ett tag tills det är klart och fortsätt sedan vidare.

Steg 5: WiFi -tid

WiFi -tid
WiFi -tid
WiFi -tid
WiFi -tid

Okej, så nu är det dags att ange dina WiFi -detaljer.

Tips: du kan alltid kopiera (Ctrl+C) och klistra in (högerklicka, klistra in) information från den här artikeln till PuTTY -terminalskärmen istället för att skriva ut kommandona. Kontrollera slutet av den här artikeln för flera användbara Linux -kommandon också.

När Etcher har skrivit till micro SD -kortet kommer det att visas 2 enheter som visas ovan. Den ena kallas boot den andra kallas rootfs

Vi måste använda filhanteraren för att gå in i startmappen och skapa en fil som heter wpa_supplicant.conf.

För att göra detta steg kan du bara klicka på vänster sida där det står boot och sedan på höger sida av skärmen kan du högerklicka på den vita bakgrunden och välja Öppna i Terminal.

Detta öppnar ett terminalfönster (liknande CMD i Windows) där du kan skriva följande:

sudo nano wpa_supplicant.conf Tips: Du måste ange ditt Linux -systemlösenord så att det kan köras som superanvändare. Detta krävs, annars kommer du inte att kunna spara filerna när du är klar med redigeringen

Kommandot ovan startar sedan textredigeraren "nano" där du kan ange följande information:

land = USA

ctrl_interface = DIR = /var /run /wpa_supplicant GROUP = netdev update_config = 1 nätverk = {ssid = "WiFi_SSID" scan_ssid = 1 psk = "WiFi_Password" key_mgmt = WPA - PSK}

Obs! Kom ihåg att ersätta WiFi_SSID och WiFi_Password med ditt eget WiFi -nätverksnamn och lösenord.

När du är klar klickar du bara på Ctrl+X för att avsluta och svara Ja för att skriva filen vid avslutning.

Vårt nästa steg är att skapa en tom fil som heter ssh. För att göra detta skriver vi bara följande i terminalfönstret:

tryck på ssh

Nu måste vi ge vår pi en statisk IP -adress så att vi vet var det är varje gång vi vill ansluta till det. Skriv följande i terminalfönstret:

sudo nano /etc/dhcpcd.conf

Detta bör öppna nano -textredigeraren igen och vi kan lägga till den här texten längst ner i filen:

gränssnitt wlan0

statisk ip_address = 192.168.0.static routers = 192.168.0.1 static domain_name_servers = 192.168.0.1 8.8.8.8

Obs! Detta förutsätter att ditt nätverksprefix är 192.168.0. Om du har 192.168.1 etc, använd ditt nätverk istället. Domännamnservern 8.8.8.8 är för Google och dess valfria här.

Skriv "exit" i terminalen för att stänga av den. Högerklicka sedan över startnamnet till vänster i filhanterarfönstret och välj Mata ut.

Du kan nu ansluta detta microSD -kort till din pi och ansluta microUSB -strömkabeln för att driva din pi.

Om allt går bra kommer den gröna lysdioden att blinka ett tag som om den kommer åt en hårddisk och den borde logga in på ditt WiFi -nätverk. Ge det ungefär en minut för att slå sig ner och vänta tills lysdioden blir fast grön.

För att verifiera att allt fungerade kan vi försöka pinga det.

Så skriv bara raden nedan och kolla efter ett svar.

ping 192.168.0.200

I Ubuntu bör du få något liknande det här:

ping 192.168.0.200

PING 192.168.0.200 (192.168.0.200) 56 (84) byte med data. 64 byte från 192.168.0.200: icmp_seq = 1 ttl = 128 tid = 752 ms 64 byte från 192.168.0.200: icmp_seq = 2 ttl = 128 tid = 5.77 ms 64 byte från 192.168.0.200: icmp_seq = 3 ttl = 128 tid = 7.33 ms ^C --- 192.168.0.200 pingstatistik --- 3 paket överförda, 3 mottagna, 0% paketförlust, tid 2001ms rtt min/avg/max/mdev = 5.777/255.346/752.922/351.839 ms

Observera att pingen fortsätter att fungera tills du trycker på Ctrl+C för att avsluta.

I Windows bör du få något så här:

ping 192.168.0.200

Pingar 192.168.0.200 med 32 byte med data: Svar från 192.168.0.200: bytes = 32 tid = 4ms TTL = 64 Svar från 192.168.0.200: bytes = 32 tid = 5ms TTL = 64 Svar från 192.168.0.200: byte = 32 gånger = 6ms TTL = 64 Svar från 192.168.0.200: bytes = 32 tid = 5ms TTL = 64 Pingstatistik för 192.168.0.200: Paket: Skickat = 4, Mottaget = 4, Förlorat = 0 (0% förlust), Ungefärliga rundturstider i millisekunder: Minsta = 4 ms, Maximal = 6 ms, Medel = 5 ms

Allt väl? Framåt…

Steg 6: Logga in

Loggar in
Loggar in

Nu när vi har anslutning till pi, vill vi skicka kommandon. Men hur? PuTTY förstås! Du kan ladda ner PuTTY härifrån Konfigurera PuTTY När du har laddat ner PuTTY -programvaran gör du en profil för din pi med följande information:

Värdnamn (eller IP -adress): 192.168.0.200 Anslutningstyp: SSH Ge den här profilen ett namn under Sparade sessioner och tryck på Spara. Du kan använda vilket namn du vill, till exempel "rpizw_200"

För att logga in, välj det bara från listan och tryck på Ladda. Tryck sedan på Öppna. Ange användarnamn och lösenord för att logga in:

inloggningsnamn: pi

Defalt lösenord: hallon

Här är en provsession som visas i PuTTY när du loggar in:

logga in som: pi

[email protected] lösenord: Linux raspberrypi 4.14.34+ #1110 mån apr 16 14:51:42 BST 2018 armv6l Programmen som ingår i Debian GNU/Linux -systemet är gratis programvara; de exakta distributionsvillkoren för varje program beskrivs i de enskilda filerna i/usr/share/doc/*/copyright. Debian GNU/Linux levereras med ABSOLUT INGEN GARANTI, i den utsträckning det är tillåtet enligt tillämplig lag. Senaste inloggning: [datum och tid] från 192.168.0. [Ip -adress] SSH är aktiverat och standardlösenordet för "pi" -användaren har inte ändrats. Detta är en säkerhetsrisk - logga in som "pi" -användare och skriv "passwd" för att ställa in ett nytt lösenord.

Vid första inloggningen kommer det att varna för att du ännu inte har ändrat lösenordet. Du bör ändra det till något starkt men enkelt att komma ihåg så fortsätt och ändra det genom att skriva passwd och följ anvisningarna.

Vi bör nästa uppdatera programvaran på pi genom att skriva detta:

sudo apt-get update && sudo apt-get upgrade

Detta kommer att ladda ner alla uppdateringar som behövs från din internetanslutning. Svara JA om du uppmanas att låta det fortsätta och ge det lite tid att uppdatera.

Vid den här tiden bör vi förmodligen också stänga av ljudet på pi eftersom det har lite dålig juju med LED -drivrutinsbiblioteket. Kopiera, klistra in följande rader en i taget och tryck på enter efter varje rad:

cd ~

katt << EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf blacklist snd_bcm2835 EOF sudo update-initramfs -u

Utdata kommer att vara ungefär så här:

pi@raspberrypi: ~ $ cd ~

pi@raspberrypi: ~ $ cat <> blacklist snd_bcm2835>> EOF blacklist snd_bcm2835 pi@raspberrypi: ~ $ sudo update -initramfs -u pi@raspberrypi: ~ $

Sedan måste vi starta om pi för att ändringarna ska träda i kraft, så skriv följande:

sudo starta om nu

Anslutningen kommer naturligtvis att upphöra när pi startar om så att du kan stänga av PuTTY. Försök att logga in igen en minut senare.

Nu är det dags att skaffa en grafisk FTP -filhanterare som heter WinSCP. Du kan ladda ner WinSCP härifrån

WinSCP liknar mycket filhanteraren på Windows och Ubuntu. Det gör att vi enkelt kan dra och släppa filer till & från pi och skapa mappar med bara ett högerklick med musen.

När du har laddat ner måste du konfigurera en profil för din pi.

WinSCP -inställning Välj Ny webbplats vid inloggningsmenyn. Använd följande inställningar för sessionen:

Filprotokoll: SFTP -värdnamn: 192.168.0.200 Användarnamn: pi Lösenord: {vilket lösenord du ändrade standard till i PuTTY -steget ovan}

Gå till Avancerade webbplatsinställningar till Miljö | Kataloger och ange /home /pi för fjärrkatalogen och vad du vill för inställningen för lokal katalog.

Gå till Avancerade webbplatsinställningar till Miljö | Skala och välj sudo su - i rullgardinsmenyn Shell.

Klicka sedan på Spara.

Håll både WinSCP och PuTTY öppna medan du utför följande steg

Gå till PuTTY -terminalen och ange följande:

cd ~

Detta kommer att ta oss till vår hemkatalog inuti pi.

Vi kan nu ta LED -drivrutinsbiblioteket från github. För att använda den senaste koden måste vi dra repo så vi måste installera git -verktyget.

Ange detta i PuTTY:

sudo apt-get install git

svara Y för att fortsätta och det tar några sekunder att installera git för oss från internet.

Utdata ska se ut ungefär så här:

pi@raspberrypi: ~ $ sudo apt-get install git

Läser paketlistor … Klart Byggnadsberoende-träd Läser information om tillstånd … Klart Följande ytterligare paket installeras: git-man liberror-perl Föreslagna paket: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn Följande nya paket kommer att installeras: git git-man liberror-perl 0 uppgraderade, 3 nyinstallerad, 0 att ta bort och 0 inte uppgraderad. Behöver skaffa 4, 848 kB arkiv. Efter denna operation kommer 26,4 MB extra diskutrymme att användas. Vill du fortsätta? [Y/n] y Get: 1 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf liberror-perl all 0.17024-1 [26.9 kB] Get: 2 https://muug.ca/mirror/ raspbian/raspbian stretch/main armhf git-man all 1: 2.11.0-3+deb9u3 [1, 433 kB] Få: 3 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf git armhf 1: 2.11.0-3+deb9u3 [3, 388 kB] Hämtade 4, 848 kB på 5s (878 kB/s) Väljer tidigare ovalat paket liberror-perl.(Läser databas… 34363 filer och kataloger installerade för närvarande.) Förbereder uppackning…/liberror-perl_0.17024-1_all.deb… Packar upp liberror-perl (0.17024-1)… Väljer tidigare ovalat paket git-man. Förbereder att packa upp…/git-man_1%3a2.11.0-3+deb9u3_all.deb… Packa upp git-man (1: 2.11.0-3+deb9u3)… Väljer tidigare ovalat paket git. Förbereder att packa upp…/git_1%3a2.11.0-3+deb9u3_armhf.deb… Packa upp git (1: 2.11.0-3+deb9u3)… Konfigurera git-man (1: 2.11.0-3+deb9u3)… Konfigurera liberror-perl (0.17024-1) … Bearbetar utlösare för man-db (2.7.6.1-2) … Konfigurera git (1: 2.11.0-3+deb9u3) …

Gå nu tillbaka till WinSCP och navigera till mappen /home /pi. Högerklicka på höger sida i detta WinScp -fönster och välj att skapa en ny katalog som heter "parkering"

Tillbaka i PuTTY -skärmen kan du skriva ls för att bekräfta att du just har skapat en ny mapp i pi: n. Ange sedan detta:

cd p [TAB]Tips: Genom att trycka på TAB -tangenten fylls delnamnet i automatiskt i dig

Tryck på enter -knappen för att komma till den här katalogen.

pi@raspberrypi: ~ $ cd parkering/

pi@raspberrypi: ~/parkering $ ls

Nu kan vi hämta drivrutinsfilerna genom att ange följande i PuTTY:

git-klon

Utmatningen kommer att se ut ungefär så här:

pi@raspberrypi: ~/parkering $ git klon

Kloning till 'rpi-rgb-led-matrix' … fjärrkontroll: Räkna objekt: 3740, klart. fjärrkontroll: Totalt 3740 (delta 0), återanvänd 0 (delta 0), pack återanvänd 3750 Mottagande objekt: 100% (3740/3740), 20,61 MiB | 1,32 MiB/s, klar. Lösa deltor: 100% (2550/2550), klar.

Kompilera nu LED-drivrutinsfilerna genom att gå in i den nya 'rpi-rgb-led-matrix'-katalogen och skriva kommandot make:

cd r [TAB]

göra Och så här såg det ut på vår styrelse

pi@raspberrypi: ~/parkering $ cd rpi-rgb-led-matrix/

pi@raspberrypi: ~/parking/rpi-rgb-led-matrix $ make make -C./lib make [1]: Gå in i katalogen '/home/pi/parking/rpi-rgb-led-matrix/lib' g ++- Jag … -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig"' -Wextra -Wno -oanvänd -parameter -fno -undantag -c -o led -matrix.o led-matrix.cc g ++ -I../ inkluderar - Vägg -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig"' -Wextra -Wno -oanvänd -parameter -fno -undantag -c -o alternativ -initiera.o alternativ- initiera.cc g ++ -I../ inkludera -Vägg -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig"' -Wextra -Wno -oanvänd -parameter -fno -undantag -c -o framebuffer.o framebuffer.cc g ++ -I../ inkluderar -Wall -O3 -g - fPIC -DDEFAULT_HARDWARE = '"vanlig"' -Wextra -Wno -oanvänd -parameter -fno -undantag -c -o tråd.o tråd.cc g ++ -I../ inkluderar -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = ' "vanlig" -Wextra -Wno -oanvänd -parameter -fno -undantag -c -o bdf -font.o bdf -fon t.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"normal' '-Wextra -Wno -oanvänd -parameter -fno -undantag -c -o graphics.o graphics.cc g ++ - Jag … -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig"' -Wextra -Wno -oanvänd -parameter -fno -undantag -c -o led -matrix -co led-matrix-c.cc cc -I../ inkludera -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig"' -Wextra -Wno -oanvänd -parameter -c -o hardware -mapping.o hardware -mapping.c g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig"' -Wextra -Wno -oanvänd -parameter -fno -undantag -c -o content -streamer.o content-streamer.cc g ++ -I../ inkluderar -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE = '' vanlig '' -Wextra -Wno -oanvänd -parameter -fno -undantag -c -o pixel -mapper.o pixel-mapper.cc g ++ -I../ inkluderar -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '' vanlig '' -Wextra -Wno -oanvänd -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]: lämnar katalogen '/home/pi/parking/rpi -rgb -led -matrix/lib' make -C exempel -api -use make [1]: Ange katalog ' /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]: Gå in i katalogen '/home/pi/parking/rpi-rgb-led-matrix/lib' make [2]: Leaving directory '/home/pi /parkering/rpi-rgb-led-matrix/lib 'g ++ demo-main.o -o demo -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ inkluderar -Wall -O3 -g -Wextra -Wno -oanvänd -parameter -c -o minimal -exempel.o minimal-exempel.cc g ++ minimal -exempel.o - o minimal -exempel -L../ lib -lrgbmatrix -lrt -lm -lpthread cc -I../ inkluderar -Wall -O3 -g -Wextra -Wno -oanvänd -parameter -c -o c -exempel.o c- exempel.c cc c -exempel.o -o c -exempel -L../ lib -lrgbmatrix -lrt -lm -lpthread -lstdc ++ g ++ -I../ inkluderar -Wall -O3 -g -Wextra -Wno -oanvänd- parameter -c -o text -exempel.o text-exempel.cc g ++ text -exempel.o -o text -exempel -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ inkluderar -Wall - O3 -g -Wextra -Wno-oanvänd-parameter -c -o rullning-text-exempel. O rullning- text-exempel.cc g ++ rullning-text-exempel.o -o rullning-text-exempel -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I … /lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ inkluderar -Wall -O3 -g -Wextra -Wno -oanvänd -parameter -c -o ledcat.o ledcat.cc g ++ le dcat.o -o ledcat -L../ lib -lrgbmatrix -lrt -lm -lpthread make [1]: lämnar katalogen '/home/pi/parking/rpi -rgb -led -matrix/examples -api -use' pi @raspberrypi: ~/parking/rpi-rgb-led-matrix $

Vårt nästa steg blir att binda RGB -matrisbiblioteket till Python. Vi använde standard Python 2 för detta projekt. Så för att göra denna bindning anger vi följande en rad i taget som tidigare:

sudo apt-get update && sudo apt-get install python2.7-dev python-pillow -y

gör build-python sudo gör install-python

Obs! Du kan säkert ignorera den enda varningen om '-Wstrict-prototyp' som dyker upp när de två uttalandena körs. Make -kommandona tar ett par minuter att köra och de säger ingenting när de är upptagna. Så var inte rädd - din pi borde komma tillbaka snart;)

Här är en partiell utmatning från det första uttalandet:

bygga "grafik" tillägg

arm -linux -gnueabihf -gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict -prototyper -fno -strikt -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: varning: kommandoradsalternativet '-Wstrict-prototyper' är giltigt för C/ObjC men inte för C ++ arm-linux-gnueabihf-g ++ -tråd -delat -Wl, -O1 -Wl, -Bsymboliska funktioner -Wl, -z, relro -fno -strikt -aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict -prototyper -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]: Lämnar katalogen '/home/pi/parking/rpi-rgb-led-matrix/bindings/python' pi@raspberrypi: ~/parking/rpi-rgb-led-matrix $

Därefter installerar vi pigpio C -biblioteket. För att göra detta korrekt måste vi göra det från källan så skriv bara följande rader:

cd ~

sudo rm -rf PIGPIO wget abyz.me.uk/rpi/pigpio/pigpio.zip packa upp pigpio.zip cd PIGPIO gör sudo make install rm pigpio.zip

Installationen ovan tar cirka 3 minuter.

Nu är det dags att skaffa våra Python -projektfiler. Skriv följande:

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

Skriv sedan följande för att köra det:

sudo python parking.py

Men du behöver inte göra det här nu eftersom vi fortfarande måste koppla ihop allt …

Steg 7: Ledningar

Trådar
Trådar
Trådar
Trådar
Trådar
Trådar
Trådar
Trådar

Som nämnts tidigare drev vi LED -panelen från samma nätadapter som driver pi. För att göra detta måste du skarva de rejäla röda och svarta trådarna till hanstiften så att de kan anslutas till stift 2 och 9 på 40 -stifts pi -kontakten.

Koppla ur strömmen till pi: n och anslut LED -panelen enligt bilddiagrammet ovan. Håll stift 2 bortkopplad för tillfället.

OBS: LED -matrispanelen kan ibland starta i ett funky tillstånd. Om detta händer kan det ladda ner din strömförsörjning kraftigt oavsett vilken strömkapacitet den har. Vi märkte detta under utvecklingen på vår bänkförsörjning som kan ge över 4 ampere. Lösningen på detta är att köra pi -koden först och sedan koppla in stift 2 för att driva LED -panelen. På detta sätt bör panelen komma upp i ett lågt effektläge eftersom den spolar ut slumpmässiga LED -tillstånd. Tyst ström (alla lysdioder släckta) för vår LED -panel var bara 50mA vid 5v.

CAT5

Vi använde en 25 fot CAT5 ethernet -kabel och modifierade den för att ansluta till pi -huvudstiften i ena änden och acceptera GROVE -kontaktstiften på den andra sidan så att vi kunde förlänga avståndet för att placera vår sida tinyLiDAR -sensor. Bilderna ovan visar denna kabel före och efter ändringar. Bortse från färgerna på huvudstifttrådarna eftersom de inte är korrelerade med diagrammen. Se bara till att du kopplar upp ditt system enligt bilden i anslutningsdiagrammen som visades tidigare i steg 3.

Steg 8: Tänd upp det

Image
Image
Valfritt steg och användbara kommandon
Valfritt steg och användbara kommandon

Den korrekta initiala uppstartssekvensen bör vara att ansluta microUSB -laddaren till pi och vänta på att de blå lysdioderna på tinyLiDAR -sensorerna ska blinka snabbt och visa att de gör mätningar. Detta bevisar att koden fungerar korrekt.

Du kan sedan sakta men stadigt ansluta stift 2 för LED -panelen. Var försiktig så att du inte misslyckas när du gör detta! Om LED -panelen visar några frysta ljusa lysdioder är det förmodligen fel, så ta bort microUSB -strömmen från pi och vänta några sekunder för att försöka starta sekvensen igen.

För att köra koden, ange följande:

cd/home/pi/parkering/rpi-rgb-led-matrix/bindings/python/samples

sudo python parking.py

Om allt går bra bör du få en skärm som liknar den som visas i videon.

Ta en snabb titt på parking.py -koden för att förstå vilka gränser vi använde. Standard för den främre sensorn är 200 mm. Eftersom sensorns räckvidd är 11 mm till 2 m är det en bra idé att hålla avståndet nom_parked_Front på 200 mm eller högre. Sidosensorn nom_parked_Side är inställd på 600 mm. Se bilden ovan för Python -koden som visar dessa konfigurationsalternativ.

Om allt fungerar kan du gå vidare och montera systemet i ditt garage och justera ovanstående parametrar efter behov. Eftersom din pi är ansluten till din WiFi kan du alltid gå in och redigera dina avståndsinställningar som du behöver för din specifika garageinställning medan den fortfarande är monterad.

"Är det här nu?"

Varför ja, ja det är det! - dags att göra din glada dans:)

Tack för att du läste och njut av din nya parkeringsassistent!

Steg 9: Valfria steg och användbara kommandon

Valfritt steg - FTP -tillägg för sublim text

För att redigera Python -skriptfilerna direkt på pi kan vi installera FTP -tillägget Sublime SFTP av Wbond. Du kan ladda ner detta tillägg genom att följa instruktionerna här

För att konfigurera detta tillägg måste vi konfigurera FTP -referenser under filen | SFTP/FTP | Setup Server … sida.

För vår installation använde vi:

"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",

Använd Ctrl+S eller Arkiv | Spara för att spara denna information. Du kommer att uppmanas att ange ett namn för att konfigurera den här konfigurationen. Vi kallade det helt enkelt "rpizw_0_200"

Nu för att logga in på pi från SublimeText, gå till Arkiv | SFTP/FTP | Bläddra bland servern …

Välj från listan med alternativ som dyker upp. Du kommer att vilja välja profilen med namnet du angav ovan;) Följ anvisningarna för att navigera i mapparna och redigera önskad fil.

Praktiska tillägg

Användbara Linux -kommandon att använda på pi.

Innan du kopplar ur kontakten ska du ALLTID stänga av den så att du inte får filkorruption på ditt microSD -kort. Ange detta kommando:

sudo avstängning nu

och vänta tills den gröna lysdioden slocknar innan du kopplar ur strömmen. På samma sätt för att starta om det kan du ange:

sudo starta om nu

För att lista filer i en katalog, använd följande:

ls

Du kan hitta andra användbara Linux -kommandon här

Rekommenderad: