Innholdsfortegnelse:

Pi -basert parkeringsassistentsystem: 9 trinn
Pi -basert parkeringsassistentsystem: 9 trinn

Video: Pi -basert parkeringsassistentsystem: 9 trinn

Video: Pi -basert parkeringsassistentsystem: 9 trinn
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, November
Anonim
Pi -basert parkeringsassistentsystem
Pi -basert parkeringsassistentsystem

Hei der! Her er et kult lite prosjekt du kan lage på en ettermiddag og deretter bruke det daglig. Den er basert på Raspberry Pi Zero W og hjelper deg å parkere bilen din perfekt hver gang.

Her er den komplette listen over delene du trenger:

  • Raspberry Pi Zero W (vi vil kalle dette 'rpi' eller 'pi' i denne artikkelen)
  • 4 GB eller større micro SD -kort for pi OS
  • To tinyLiDAR Time of Flight distansesensormoduler
  • 32x32 RGB LED -panel (det er mange produsenter for dette med varierende prikkhastigheter, du kan for eksempel bruke Adafruit 1484 eller lignende, bare søk etter '32x32 LED Matrix' på Google). Panelet vårt hadde en avstand på 6 mm.
  • 25 fot CAT5 -kabel
  • ca 22 fargede hodestifter for mann til mann
  • 5v 2Amp microUSB strømforsyning (mobiltelefon lader) Er alt klart? La oss gå!

TL; DR Sammendrag

  • Last ned Raspbian Lite OS for rpi
  • Konfigurer pi til å kjøre hodeløst over WiFi med en statisk IP
  • Sett opp PC -utviklingsmiljøet ditt med PuTTY, WinSCP og eventuelt SublimeText w/ FTP -tillegg
  • Last ned, lag og bind LED -paneldriveren
  • Last ned og installer pigpio
  • Last ned vår Python -kode
  • Koble til 32x32 LED -displaypanelet
  • Lag CAT5 -forlengelseskabelen for siden tinyLiDAR -sensoren
  • Valgfritt trinn (men bare for avanserte brukere): gjør en rask gladdans når alt fungerer;)

Trinn 1: Hva er en Pi Zero W?

Hva er en Pi Zero W?
Hva er en Pi Zero W?

Du har utvilsomt hørt om Raspberry Pi, men hva er pi 'Zero W'?

Raspberry Pi Zero og Zero W var nyere tillegg til Pi -familien betydde mer for IoT og andre billige innebygde applikasjoner. De er avskalede versjoner av det originale pi -kortet, men fortsatt med en kraftig 1 GHz -prosessor. Her er en god sammenligning av alle modellene.

Fordelen for oss ved å velge Pi Zero W her fremfor andre kontrollerkort er at vi enkelt kan programmere det på et høyere nivå Python -språk mens vi fortsatt bruker de raske C/C ++ LED -paneldriverne. Det er også attraktivt priset til bare $ 10USD.

Husk at siden dette brettet er en strippet versjon av en full pi - har noen ting endret seg. Spesielt er ethernet -kontakten eliminert, HDMI -kontakten er endret til en ministørrelse og de fire USB -portene er forenklet til bare en mikro -USB -type. Det er en annen mikro -USB -kontakt ombord, men det er bare for å drive kortet. Eliminering av alle USB -kontaktene i full størrelse introduserer noen kompleksiteter. Nemlig, hvordan kan du koble til et tastatur og en mus? Standard USB -periferiutstyr og -hubber bruker Type A -kontakter, ikke mikro -typen.

Så hva kan vi gjøre?

Vi kan gå hodeløse!

Nei, vi mener ikke å bli gale, men å bruke et alternativ til det vanlige direkte kablede oppsettet. Hodeløs betyr å "tunnelere" inn i pi eksternt ved hjelp av en sikker shell (SSH) nettverkstilkobling. For dette prosjektet vil vi bruke den hodeløse tilnærmingen over WiFi. Derfor er grunnen til at vi valgte W -versjonen av pi zero i stedet for den enda lavere kostnaden pi zero.

Vær oppmerksom på at det også er en annen måte å kjøre pi på i hodeløs modus ved å bruke noe som kalles VNC. Den trenger spesiell VNC -programvare som kjører på din PC, men den gir et fullt virtuelt grafisk skrivebord på din PC. Vi krever ikke (og ønsker virkelig ikke) skrivebordet for prosjektet vårt, så vi holder oss til den enklere SSH -metoden.

Trinn 2: Scotty, vi trenger mer kraft

Scotty, vi trenger mer kraft!
Scotty, vi trenger mer kraft!

32x32 LED -matrisepanelet kan i seg selv ta flere ampere strøm. Tuller ikke! Det er derfor de fleste av disse panelene inneholder noen kraftige strømkabler for å drive den. Heldigvis for oss selv om vi ikke trenger å skaffe en massiv strømforsyning til dette prosjektet. Vi klarte å drive hele dette systemet fra bare en ekstra 5v/2amp microUSB mobiltelefonlader vi hadde liggende. Grunnen til den lavere strømmen er fordi vi bruker relativt enkel grafikk og derfor ikke slår på de fleste lysdiodene. Hvis du tenker på å lage animasjoner eller bruke video/lys grafikk, bør du definitivt vurdere å slå panelet fra en separat strømforsyning.

Trinn 3: Sensorplassering og programvare

Sensorplassering og programvare
Sensorplassering og programvare
Sensorplassering og programvare
Sensorplassering og programvare

La du merke til at vi bruker to tinyLiDAR i dette systemet i stedet for bare en? Som vist i oppsettdiagrammet for garasjen, er den ene plassert foran bilen og den andre er plassert langs den ene siden av bilen.

Sidesensoren vil oppdage om du vender av midten mens du parkerer bilen, og selvfølgelig vil den forreste fortelle deg når du skal stoppe.

32x32 LED -displayet vil hjelpe deg med å vise piler for å gå fremover, venstre eller høyre og en nedtelling med fargede hjørner for å indikere hvor langt du fremdeles må kjøre. Ta en titt på vår korte video for alle displaytilstandene.

Spill plan

I et nøtteskall bruker vi det alltid populære hzeller C -biblioteket for LED -driveren, Python for kontrollkoden og pipgpio C -biblioteket for riktig I2C -kontroll av sensorene våre.

Python er et superenkelt språk på høyt nivå som du enkelt kan redigere i alle tekstredigerere. Vi bruker normalt SublimeText, og for dette prosjektet brukte vi også en veldig nyttig FTP -plugin som lar oss redigere skriptfilene direkte på pi. Dette er et valgfritt trinn, ettersom det bare er nødvendig hvis du vil redigere koden. Flere detaljer er tilgjengelige på slutten av denne artikkelen.

Alle rpi -kort, som du kanskje vet, støtter ikke innfødt I2C -tøyning av klokker. Så vi brukte pigpio -biblioteket igjen for dette prosjektet for å kontrollere tinyLiDAR -sensorene, men denne gangen med en liten vri …

Flere tinyLiDAR

Når du kjøper en tinyLiDAR, er den alltid satt til standard slaveadresse på 0x10. Dette er greit når du bruker en enkelt sensor, men hvis du har mer enn en på bussen, kan det være et problem hvis du skriver en kommando til 0x10 og alle svarer tilbake!

Så vi har 3 alternativer her:

Først kan vi bruke kommandoen (tinyLiDAR) "R" til å skrive en ny slave -adresse til sensoren som er koblet til I2C -bussen. Gjenta deretter dette for hver sensor. Fysisk feste, skrive og koble fra hver sensor for denne prosedyren. tinyLiDAR vil lagre den gitte adressen i sitt innebygde ikke-flyktige minne. Adressen vil vedvare selv etter strømsyklus til du sletter den ved å sende RESET -kommandoen.

Det andre alternativet er å bruke den praktiske Auto Assign -funksjonen som vi laget som et strekkmål i IGG -kampanjen. Dette innebærer å sende "AR" -kommandoen og deretter peke fingeren til hver sensor individuelt for automatisk å tildele sekvensielle I2C -adresser til de enkelte sensorene som ligner på det første alternativet, men du trenger ikke å koble hver sensor fysisk for å gjøre dette.

Det tredje alternativet er det vi bruker her i dette prosjektet, og det er mulig takket være pigpio -biblioteket. For å implementere I2C -standarden på riktig måte, gir pigpio bitbangs GPIO. Så på grunn av dette kan vi enkelt lage separate I2C -busser på omtrent alle par ekstra GPIO -pinner.

Derfor er det ikke nødvendig å omprogrammere slaveadresser for flere LiDAR-sensorer. Vi kan bare bruke en egen buss for hver:)

Vær oppmerksom på at I2C -bussen som kjører på 100Kbps faktisk er ganske robust. Vi bruker vanlig gammel CAT5 ethernet -kabel for å kjøre I2C -bussen ut til siden tinyLiDAR -sensoren som er hele 25 fot unna uten noen aktive repeaterkomponenter! Sensorledningsdetaljer er vist ovenfor.

Ok, nok jibber jabber, la oss begynne å laste ned koden!

Trinn 4: Sette opp Pi

Sette opp Pi
Sette opp Pi
Sette opp Pi
Sette opp Pi

Forsiktig: Pi bruker et Linux -filsystem, så det er best å utføre følgende trinn på et Linux -basert system. Du kan ende opp med å formatere SD -kortet på nytt hvis du gjør dette på Windows. Vi brukte det fantastiske og gratis Ubuntu 18.04 -skrivebordet som kjørte i et virtuelt miljø på en Windows 10 -PC, men du kan prøve noe lignende.

Du må først laste ned operativsystemet fra raspberrypi.org og deretter brenne det til microSD -kortet. Så følg disse trinnene:

(1) I Ubuntu går du hit og tar Raspbian Lite -bildet. Lagre den i nedlastingsmappen.

(2) Last deretter ned Etcher SD -kortskriververktøy. FYI - den offisielle Etcher -nedlastingskoblingen for Linux -versjonen på hjemmesiden deres fungerte ikke for oss, så vi brukte metoden beskrevet her i stedet:

Oppsummert var trinnene beskrevet i lenken:

Legg til Etcher debian -depot:

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

Stol på Bintray.com sin GPG -nøkkel:

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

Oppdater og installer:

sudo apt-get oppdatering

sudo apt-get install etcher-elektron

Når du er ferdig, kan du fortsette og starte Etcher fra Ubuntu -skrivebordet. Det vil be deg om kildefilen (som du legger i nedlastingsmappen). Det neste trinnet i Etcher er å velge riktig mål. Etcher gjør en god jobb med å oppdage micro SD -kortet ditt, men du burde være paranoid her. For å bekrefte at den finner den riktige destinasjonen - prøv å kaste ut microSD -kortet ved å klikke på utløs i vinduet for filutforskeren i Ubuntu og bekreft at det forsvinner som målalternativ inne i Etcher. Deretter slår du den tilbake og fortsetter til det siste trinnet, som er å skrive filen til dette microSD -kortet.

Vent en stund til det er gjort, og fortsett deretter videre.

Trinn 5: WiFi -tid

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

Ok, så nå er det på tide å skrive inn WiFi -detaljene dine.

Tips: du kan alltid kopiere (Ctrl+C) og lime inn (Høyreklikk, Lim inn) informasjon fra denne artikkelen til PuTTY -terminalskjermen i stedet for å skrive ut kommandoene. Se slutten av denne artikkelen for flere nyttige Linux -kommandoer også.

Når Etcher er ferdig med å skrive til micro SD -kortet, vil det vises 2 stasjoner som vist ovenfor. Den ene kalles boot den andre kalles rootfs

Vi må bruke filbehandleren til å gå inn i oppstartsmappen og lage en fil som heter wpa_supplicant.conf.

For å gjøre dette trinnet kan du bare klikke på venstre side der det står boot, og deretter på høyre side av skjermen kan du høyreklikke på den hvite bakgrunnen og velge Åpne i Terminal.

Dette åpner et terminalvindu (ligner CMD i Windows) hvor du kan skrive følgende:

sudo nano wpa_supplicant.conf Tips: Du må skrive inn ditt Linux -systempassord slik at det kan kjøres som Superbruker. Dette er påkrevd, ellers kan du ikke lagre filene når du er ferdig med å redigere

Kommandoen ovenfor starter deretter tekstredigereren "nano", hvor du kan legge inn følgende informasjon:

land = USA

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

Merk: Husk å erstatte WiFi_SSID og WiFi_Password med ditt eget WiFi -nettverksnavn og passord.

Når du er ferdig, klikker du bare Ctrl+X for å avslutte og svare Ja for å skrive filen ved avslutning.

Vårt neste trinn er å lage en tom fil som heter ssh. For å gjøre dette, skriver vi bare inn følgende i terminalvinduet:

berør ssh

Nå må vi gi pi en statisk IP -adresse slik at vi vet hvor det er hver gang vi vil koble til den. Skriv inn følgende i terminalvinduet:

sudo nano /etc/dhcpcd.conf

Dette bør åpne nano -tekstredigereren igjen, og vi kan legge denne teksten til bunnen av filen:

grensesnitt 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

Merk: Dette forutsetter at nettverksprefikset ditt er 192.168.0. Hvis du har 192.168.1 etc, så bruk nettverket ditt i stedet. Domenenavnserveren 8.8.8.8 er for Google og den er valgfri her.

Skriv 'exit' i terminalen for å lukke den. Høyreklikk deretter over oppstartsnavnet i venstre side av Filbehandling -vinduet og velg Løs ut.

Du kan nå koble dette microSD -kortet til pi -en og koble til microUSB -strømkabelen for å koble pi -en.

Hvis alt går bra, vil den grønne LED -en blinke en stund som om den får tilgang til en harddisk, og den bør logge deg på WiFi -nettverket ditt. Gi det et minutt til å slå seg ned og vent til LED -lampen lyser grønt.

For å bekrefte at alt fungerte, kan vi prøve å pinge det.

Så bare skriv inn linjen nedenfor og se etter svar.

ping 192.168.0.200

I Ubuntu bør du få noe lignende:

ping 192.168.0.200

PING 192.168.0.200 (192.168.0.200) 56 (84) byte med data. 64 byte fra 192.168.0.200: icmp_seq = 1 ttl = 128 tid = 752 ms 64 byte fra 192.168.0.200: icmp_seq = 2 ttl = 128 tid = 5.77 ms 64 byte fra 192.168.0.200: icmp_seq = 3 ttl = 128 tid = 7.33 ms ^C --- 192.168.0.200 pingstatistikk --- 3 pakker overført, 3 mottatt, 0% tap av pakker, tid 2001ms rtt min/avg/max/mdev = 5.777/255.346/752.922/351.839 ms

Vær oppmerksom på at pingen fortsetter å fungere til du trykker Ctrl+C for å avslutte.

I Windows bør du få noe slikt:

ping 192.168.0.200

Pinger 192.168.0.200 med 32 byte med data: Svar fra 192.168.0.200: bytes = 32 time = 4ms TTL = 64 Svar fra 192.168.0.200: bytes = 32 time = 5ms TTL = 64 Svar fra 192.168.0.200: bytes = 32 tid = 6ms TTL = 64 Svar fra 192.168.0.200: byte = 32 tid = 5ms TTL = 64 Ping -statistikk for 192.168.0.200: Pakker: Sendt = 4, mottatt = 4, tapt = 0 (0% tap), omtrentlige rundturstider i milli-sekunder: Minimum = 4 ms, maksimum = 6 ms, gjennomsnitt = 5 ms

Helt fint? Fremover…

Trinn 6: Logge på

Logger inn
Logger inn

Nå som vi har tilkobling til pi, vil vi sende kommandoer. Men hvordan? PuTTY selvfølgelig! Du kan laste ned PuTTY herfraSette opp PuTTY Etter å ha lastet ned PuTTY -programvaren, lag en profil for din pi med følgende informasjon:

Vertsnavn (eller IP -adresse): 192.168.0.200 Tilkoblingstype: SSH Gi denne profilen et navn under Lagrede økter og trykk Lagre. Du kan bruke hvilket som helst navn du liker, for eksempel "rpizw_200"

For å logge deg på, velg den bare fra listen og trykk på Last inn. Trykk deretter på Åpne. Skriv inn brukernavn og passord for å logge inn:

påloggingsnavn: pi

Defalt passord: bringebær

Her er en eksempeløkt vist i PuTTY når du logger på:

logg inn som: pi

[email protected] passord: Linux raspberrypi 4.14.34+ #1110 man apr 16 14:51:42 BST 2018 armv6l Programmene som følger med Debian GNU/Linux -systemet er gratis programvare; de eksakte distribusjonsvilkårene for hvert program er beskrevet i de enkelte filene i/usr/share/doc/*/copyright. Debian GNU/Linux leveres ABSOLUTT INGEN GARANTI, i den utstrekning det er tillatt av gjeldende lov. Siste pålogging: [dato og klokkeslett] fra 192.168.0. [Ip -adresse] SSH er aktivert og standardpassordet for "pi" -brukeren har ikke blitt endret. Dette er en sikkerhetsrisiko - vennligst logg inn som 'pi' bruker og skriv 'passwd' for å angi et nytt passord.

Ved første pålogging vil det advare om at du ennå ikke har endret passordet. Du bør endre det til noe sterkt, men enkelt å huske, så fortsett og endre det ved å skrive passwd og følg instruksjonene.

Vi bør deretter oppdatere programvaren på pi ved å skrive dette:

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

Dette vil laste ned alle oppdateringer du trenger fra internettforbindelsen din. Svar JA hvis du blir bedt om å la det fortsette, og gi det litt tid til å oppdatere.

På dette tidspunktet bør vi sannsynligvis også slå av lyden på pi, siden den har en dårlig juju med LED -driverbiblioteket. Kopier, lim inn følgende linjer en om gangen og trykk enter etter hver linje:

cd ~

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

Utgangen vil være omtrent slik:

pi@raspberrypi: ~ $ cd ~

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

Deretter må vi starte pi på nytt for at endringene skal tre i kraft, så skriv følgende:

sudo start på nytt nå

Tilkoblingen vil selvfølgelig falle etter hvert som pi starter på nytt, slik at du kan stenge PuTTY. Prøv å logge deg på igjen et minutt senere.

Nå er det på tide å få en grafisk FTP -filbehandling som heter WinSCP. Du kan laste ned WinSCP herfra

WinSCP ligner mye på filmangeren på Windows og Ubuntu. Det lar oss enkelt dra og slippe filer til og fra pi og lage mapper med bare et høyreklikk med musen.

Når du er lastet ned, må du sette opp en profil for din pi.

WinSCP -oppsett Velg Nytt nettsted ved påloggingsvinduet. Bruk følgende innstillinger for økten:

Filprotokoll: SFTP -vertsnavn: 192.168.0.200 Brukernavn: pi Passord: {hvilket passord du endret standard til i PuTTY -trinnet ovenfor}

Gå til Avanserte nettstedinnstillinger til Miljø | Kataloger og skriv inn /home /pi for fjernkatalogen og hva du vil for innstillingen for lokal katalog.

Gå til Avanserte nettstedinnstillinger til Miljø | Shell og velg sudo su - i rullegardinlisten Shell.

Trykk deretter på Lagre.

Hold både WinSCP og PuTTY åpne mens du utfører følgende trinn

Gå til PuTTY -terminalen og skriv inn følgende:

cd ~

Dette vil bringe oss til vår hjemmekatalog inne i pi.

Vi kan nå hente LED -driverbiblioteket fra github. For å bruke den nyeste koden må vi trekke repoen, så vi må installere git -verktøyet.

Skriv inn dette i PuTTY:

sudo apt-get install git

svar Y for å fortsette, og det vil ta noen sekunder å installere git for oss fra internett.

Utgangen skal se omtrent slik ut:

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

Lese pakkelister… Ferdig Bygge avhengighetstre Les informasjon om tilstand… Utført Følgende tilleggspakker installeres: git-man liberror-perl Foreslåtte pakker: 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ølgende nye pakker installeres: git git-man liberror-perl 0 oppgradert, 3 nylig installert, 0 for å fjerne og 0 ikke oppgradert. Trenger å få 4, 848 kB arkiver. Etter denne operasjonen vil 26,4 MB ekstra diskplass bli brukt. Vil du fortsette? [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] Hentet 4, 848 kB på 5 sekunder (878 kB/s) Valg av tidligere ikke-valgt pakke liberror-perl.(Leser databasen… 34363 filer og kataloger som er installert for øyeblikket.) Forbereder pakking…/liberror-perl_0.17024-1_all.deb… Pakker ut liberror-perl (0.17024-1)… Velger tidligere ikke-valgt pakke git-man. Forbereder å pakke ut …/git-man_1%3a2.11.0-3+deb9u3_all.deb … Pakker ut git-man (1: 2.11.0-3+deb9u3) … Velger tidligere ikke valgt git. Forbereder å pakke ut …/git_1%3a2.11.0-3+deb9u3_armhf.deb… Pakke ut git (1: 2.11.0-3+deb9u3)… Konfigurere git-man (1: 2.11.0-3+deb9u3)… Sette opp liberror-perl (0.17024-1)… Behandler utløsere for man-db (2.7.6.1-2) … Setter opp git (1: 2.11.0-3+deb9u3)…

Gå nå tilbake til WinSCP og naviger til /home /pi -mappen. Høyreklikk deretter på høyre side av dette WinScp -vinduet og velg å opprette en ny katalog kalt "parkering"

Tilbake i PuTTY -skjermen kan du skrive ls for å bekrefte at du nettopp har laget en ny mappe i pi. Skriv deretter inn dette:

cd p [TAB]Tips: Trykk på TAB -tasten for å fullføre det delvise navnet for deg automatisk

Trykk på enter -tasten for å komme til denne katalogen.

pi@raspberrypi: ~ $ cd parkering/

pi@raspberrypi: ~/parkering $ ls

Nå kan vi få driverfilene ved å skrive inn følgende i PuTTY:

git-klon

Utgangen vil se omtrent slik ut:

pi@raspberrypi: ~/parking $ git clone

Kloning til 'rpi-rgb-led-matrix' … fjernkontroll: Teller objekter: 3740, ferdig. fjernkontroll: Totalt 3740 (delta 0), gjenbrukt 0 (delta 0), pakke gjenbrukt 3740 Mottakende objekter: 100% (3740/3740), 20,61 MiB | 1,32 MiB/s, ferdig. Løse deltas: 100% (2550/2550), ferdig.

Kompiler nå LED-driverfilene ved å gå inn i denne nye 'rpi-rgb-led-matrix' katalogen og skrive kommandoen make:

cd r [TAB]

gjøre Og slik så det ut på styret vårt

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

pi@raspberrypi: ~/parking/rpi-rgb-led-matrix $ make make -C./lib make [1]: Gå inn i katalogen '/home/pi/parking/rpi-rgb-led-matrix/lib' g ++- I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig' '-Wextra -Wno -ubrukt -parameter -fno -unntak -c -o gpio.o gpio.cc g ++ -I../ inkluderer -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig' '-Wextra -Wno -ubrukt -parameter -fno -unntak -c -o led -matrix.o led-matrix.cc g ++ -I../ inkluderer - Vegg -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig"' -Wextra -Wno -ubrukt -parameter -fno -unntak -c -o alternativer -initialiser.o alternativer-initialize.cc g ++ -I../ inkluderer -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig' '-Wextra -Wno -ubrukt -parameter -fno -unntak -c -o framebuffer.o framebuffer.cc g ++ -I../ inkluderer -Wall -O3 -g - fPIC -DDEFAULT_HARDWARE = '"vanlig' '-Wextra -Wno -ubrukt -parameter -fno -unntak -c -o thread.o thread.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE =' "vanlig" -Wextra -Wno -ubrukt -parameter -fno -unntak -c -o bdf -font.o bdf -fon t.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig' '-Wextra -Wno -ubrukt -parameter -fno -unntak -c -o graphics.o graphics.cc g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig' '-Wextra -Wno -ubrukt -parameter -fno -unntak -c -o transformer.o transformer.cc g ++ -I../ inkluderer -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig' '-Wextra -Wno -ubrukt -parameter -fno -unntak -c -o led -matrise -co led-matrix-c.cc cc -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig' '-Wextra -Wno -ubrukt -parameter -c -o hardware -mapping.o hardware -mapping.c g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"vanlig' '-Wextra -Wno -ubrukt -parameter -fno -unntak -c -o content -streamer.o content-streamer.cc g ++ -I../ inkluderer -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE = '' vanlig '' -Wextra -Wno -ubrukt -parameter -fno -unntak -c -o pixel -mapper.o pixel-mapper.cc g ++ -I../ inkluderer -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '' vanlig '' -Vextra -Wno -ubrukt -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 -matrise.o alternativer-initialiser.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]: Forlater katalogen '/home/pi/parking/rpi -rgb -led -matrix/lib' make -C eksempler -api -bruk make [1]: Gå inn i katalogen ' /home/pi/parking/rpi -rgb -led -matrix/examples -api -use 'g ++ -I../ include -Wall -O3 -g -Wextra -Wno -ubrukt -parameter -c -o demo -main. o demo-main.cc make -C../lib make [2]: Gå inn 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../ inkluderer -Wall -O3 -g -Wextra -Wno -ubrukt -parameter -c -o minimal -eksempel.o minimal-eksempel.cc g ++ minimal -eksempel.o - o minimal -eksempel -L../ lib -lrgbmatrix -lrt -lm -lpthread cc -I../ inkluderer -Wall -O3 -g -Wextra -Wno -ubrukt -parameter -c -o c -eksempel.o c- eksempel.c cc c -eksempel.o -o c -eksempel -L../ lib -lrgbmatrix -lrt -lm -lpthread -lstdc ++ g ++ -I../ inkludere -Wall -O3 -g -Wextra -Wno -ubrukt- parameter -c -o tekst -eksempel.o tekst-eksempel.cc g ++ tekst -eksempel.o -o tekst -eksempel -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ inkludere -Wall - O3 -g -Wextra -Wno-ubrukt-parameter -c -o rullende-tekst-eksempel. O rullende-tekst- eksempel.cc g ++ rulling-tekst-eksempel. O -o rulling-tekst-eksempel -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ inkluderer -Wall -O3 -g -Wextra -Wno -ubrukt -parameter -c -o clock.o clock.cc g ++ clock.o -o klokke -L.. /lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ inkluderer -Wall -O3 -g -Wextra -Wno -ubrukt -parameter -c -o ledcat.o ledcat.cc g ++ le dcat.o -o ledcat -L../ lib -lrgbmatrix -lrt -lm -lpthread make [1]: Leaving directory '/home/pi/parking/rpi -rgb -led -matrix/examples -api -use' pi @raspberrypi: ~/parking/rpi-rgb-led-matrix $

Vårt neste trinn vil være å binde RGB -matrisebiblioteket til Python. Vi brukte standard Python 2 for dette prosjektet. Så for å gjøre denne bindingen angir vi følgende én linje om gangen som før:

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

lage build-python sudo lage install-python

Merk: Du kan trygt ignorere den ene advarselen om '-Wstrict-prototype' som dukker opp når du kjører de to uttalelsene. Make -kommandoene tar et par minutter å kjøre, og de sier ikke noe mens de er opptatt. Så frykt ikke - din pi skal komme tilbake snart;)

Her er delvis utgang fra den første uttalelsen:

bygge utvidelse av 'grafikk'

arm -linux -gnueabihf -gcc -pread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict -prototyper -fno -streng -aliasing -Wdate -time -D_FORTIFY_SOURCE = 2 -g -fdebug -prefiks -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: advarsel: kommandolinjealternativet '-Wstrict-prototyper' er gyldig for C/ObjC, men ikke for C ++ arm-linux-gnueabihf-g ++ -tråd -delt -Wl, -O1 -Wl, -Bsymboliske -funksjoner -Wl, -z, relro -fno -strict -aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict -prototyper -Wdate -time -D_FORTIFY_SOURCE = 2 -g -fdebug -prefiks -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]: Leaving directory '/home/pi/parking/rpi-rgb-led-matrix/bindings/python' pi@raspberrypi: ~/parking/rpi-rgb-led-matrix $

Deretter installerer vi pigpio C -biblioteket. For å gjøre dette riktig må vi lage det fra kilden, så bare skriv inn følgende linjer:

cd ~

sudo rm -rf PIGPIO wget abyz.me.uk/rpi/pigpio/pigpio.zip pakke ut pigpio.zip cd PIGPIO lage sudo make install rm pigpio.zip

Installasjonen ovenfor tar omtrent 3 minutter.

Nå er det på tide å få våre Python -prosjektfiler. Skriv inn følgende:

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

Deretter skriver du følgende for å utføre det:

sudo python parking.py

Men du trenger ikke å gjøre dette akkurat nå, ettersom vi fremdeles må koble alt sammen …

Trinn 7: Ledninger

Ledninger
Ledninger
Ledninger
Ledninger
Ledninger
Ledninger
Ledninger
Ledninger

Som nevnt tidligere, drev vi LED -panelet fra den samme strømadapteren som driver pi. For å gjøre dette må du spleise de heftige røde og svarte ledningene til mannlige toppstifter, slik at de kan plugges inn i pinne 2 og 9 på 40pin pi -kontakten.

Koble fra strømmen til pi nå og koble til LED -panelet i henhold til bildediagrammet ovenfor. Hold pin 2 frakoblet for nå.

MERK: LED -matrisepanelet kan noen ganger slå seg på i funky tilstand. Hvis dette skjer, kan det lade ned strømforsyningen din alvorlig uansett hvilken strømkapasitet den har. Vi la merke til dette under utviklingen på vår benkforsyning som kan gi over 4 ampere. Løsningen på dette er å kjøre pi -koden først og deretter koble til pin 2 for å drive LED -panelet. På denne måten skal panelet komme opp i lav strømtilstand siden det skyller ut de tilfeldige LED -tilstandene. Hvilestrøm (alle lysdioder av) for LED -panelet vårt var bare 50mA ved 5v.

CAT5

Vi brukte en 25 fot CAT5 ethernet -kabel og modifiserte den for å koble til pi -toppnålene i den ene enden og godta GROVE -kontaktpinnene på den andre siden, slik at vi kunne forlenge avstanden for å plassere vår lille tinyLiDAR -sensor. Bildene ovenfor viser denne kabelen før og etter endringer. Se bort fra fargene på toppnålene da de ikke er korrelert med diagrammene. Bare sørg for at du kobler opp systemet ditt som vist på de tilkoblingsdiagrammene som ble vist tidligere i trinn 3.

Trinn 8: Lys det opp

Image
Image
Valgfritt trinn og nyttige kommandoer
Valgfritt trinn og nyttige kommandoer

Den riktige innledende oppstartssekvensen bør være å koble microUSB -laderen til pi og vente på at de blå lysdiodene på tinyLiDAR -sensorene blinker raskt og viser at de tar målinger. Dette viser at koden fungerer som den skal.

Du kan deretter sakte men fast koble til pin 2 for LED -panelforsyningen. Vær forsiktig så du ikke feiler det mens du gjør dette! Hvis LED -panelet viser noen frosne lyse lysdioder, er det sannsynligvis feil, så fjern mikroUSB -strømmen fra pi -en og vent noen sekunder for å prøve oppstartssekvensen igjen.

For å kjøre koden, skriv inn følgende:

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

sudo python parking.py

Hvis alt går bra, bør du få en skjerm som ligner den som vises i videoen.

Ta en rask titt på parking.py -koden for å forstå hvilke grenser vi brukte. Standard for sensoren foran er 200 mm. Ettersom sensorområdet er 11 mm til 2 m, er det en god idé å holde nom_parked_Front -avstanden på 200 mm eller høyere. Sidesensoren nom_parked_Side er satt til 600 mm. Se bildet ovenfor for Python -koden som viser disse konfigurasjonsalternativene.

Hvis alt fungerer, kan du fortsette og montere systemet i garasjen din og justere parametrene ovenfor etter behov. Siden du er pi er koblet til WiFi -en din, kan du alltid gå inn og redigere avstandsinnstillingene som du trenger for ditt spesifikke garasjeoppsett mens det fremdeles er montert.

Er dette nå?

Hvorfor ja, ja det er det! - på tide å gjøre din lykkelige dans:)

Takk for at du leser og nyt den nye parkeringsassistenten!

Trinn 9: Valgfrie trinn og nyttige kommandoer

Valgfritt trinn - FTP -tillegg for sublim tekst

For å redigere Python -skriptfilene direkte på pi, kan vi installere FTP -tilleggsprogrammet Sublime SFTP av Wbond. Du kan laste ned dette tillegget ved å følge instruksjonene her

For å sette opp dette tillegget må vi konfigurere FTP -legitimasjonen under Fil | SFTP/FTP | Oppsett Server … side.

For oppsettet vårt brukte 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", Bruk Ctrl+S eller Fil | Lagre for å lagre denne informasjonen. Du blir bedt om et navn for å kalle denne konfigurasjonen. Vi kalte det ganske enkelt "rpizw_0_200"

Nå for å logge på pi fra SublimeText, gå til Fil | SFTP/FTP | Bla gjennom server …

Velg fra listen over alternativer som dukker opp. Du vil velge profilen med navnet du angav ovenfor;) Følg instruksjonene for å navigere i mappene og redigere ønsket fil.

Nyttig tillegg

Nyttige Linux -kommandoer å bruke på pi.

Før du kobler fra pi, må du ALLTID sørge for å slå den av, slik at du ikke får filkorrupsjon på microSD -kortet. Skriv inn denne kommandoen:

sudo nedleggelse nå

og vent på at den grønne lampen slås av før du trekker ut strømmen. På samme måte for å starte den på nytt, kan du skrive inn:

sudo start på nytt nå

Bruk denne for å vise filer i en katalog:

ls

Du kan finne andre nyttige Linux -kommandoer her

Anbefalt: