Indholdsfortegnelse:

Pi -baseret parkeringsassistentsystem: 9 trin
Pi -baseret parkeringsassistentsystem: 9 trin

Video: Pi -baseret parkeringsassistentsystem: 9 trin

Video: Pi -baseret parkeringsassistentsystem: 9 trin
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, November
Anonim
Pi -baseret parkeringsassistentsystem
Pi -baseret parkeringsassistentsystem

Hej med dig! Her er et fedt lille projekt, du kan lave på en enkelt eftermiddag og derefter bruge det dagligt. Den er baseret på Raspberry Pi Zero W og hjælper dig med at parkere din bil perfekt hver gang.

Her er den komplette liste over de dele, du skal bruge:

  • Raspberry Pi Zero W (vi vil kalde dette 'rpi' eller 'pi' i denne artikel)
  • 4 GB eller større micro SD -kort til pi OS
  • To tinyLiDAR Time of Flight afstandssensormoduler
  • 32x32 RGB LED -panel (der er mange producenter til dette med varierende prikhøjder, du kan f.eks. Bruge Adafruit 1484 eller lignende, bare søg efter '32x32 LED Matrix' på Google). Vores panel havde en afstand på 6 mm.
  • 25 fod CAT5 -kabel
  • ca 22 farvede han- til hanstikhovedstifter
  • 5v 2Amp microUSB strømforsyning (mobiltelefon oplader) Er alt klar? Lad os gå!

TL; DR Resumé

  • Download Raspbian Lite OS til rpi
  • Konfigurer pi'et til at køre hovedløst over WiFi med en statisk IP
  • Konfigurer dit pc -udviklingsmiljø med PuTTY, WinSCP og eventuelt SublimeText w/ FTP -tilføjelse
  • Download, lav og bind LED -paneldriveren
  • Download og installer pigpio
  • Download vores Python -kode
  • Tilslut 32x32 LED -displaypanelet
  • Lav CAT5 -forlængerkablet til den lille tinyLiDAR -sensor på siden
  • Valgfrit trin (men kun for avancerede brugere): lav en hurtig glad dans, når alt fungerer;)

Trin 1: Hvad er en Pi Zero W?

Hvad er en Pi Zero W?
Hvad er en Pi Zero W?

Du har utvivlsomt hørt om Raspberry Pi, men hvad fanden er en pi 'Zero W'?

Raspberry Pi Zero og Zero W var nyere tilføjelser til Pi -familien betød mere for IoT og andre billige integrerede applikationer. De er fjernet versioner af det originale pi -kort, men stadig med en kraftfuld 1 GHz processor. Her er en god sammenligning af alle modellerne.

Fordelen for os ved at vælge Pi Zero W her frem for andre controller boards er, at vi let kan programmere det på et højere niveau Python -sprog, mens vi stadig bruger de hurtige C/C ++ LED -paneldrivere. Det er også attraktivt prissat til kun $ 10USD.

Husk, at da dette bord er en strippet version af en fuld pi - har nogle ting ændret sig. Især ethernetstikket er elimineret, HDMI -stikket er ændret til en mini -størrelse, og de fire USB -porte er blevet forenklet til kun en mikro -USB -type. Der er et andet mikro -USB -stik ombord, men det er kun til at forsyne kortet. Eliminering af alle USB -stik i fuld størrelse introducerer nogle kompleksiteter. Nemlig, hvordan kan du tilslutte et tastatur og en mus? Standard USB -periferiudstyr og hubs bruger Type A -stik, ikke mikro -typen.

Så hvad kan vi gøre?

Vi kan gå hovedløse!

Nej, vi mener ikke at blive vanvittige, men at bruge et alternativ til den normale direkte kablede opsætning. Hovedløs betyder at "tunnelere" ind i pi eksternt ved hjælp af en sikker shell (SSH) netværksforbindelse. Til dette projekt vil vi bruge hovedløs tilgang via WiFi. Derfor er grunden til, at vi vælger W -versionen af pi zero i stedet for den endnu lavere pris pi zero.

Bemærk, at der også er en anden måde at køre pi i hovedløs tilstand ved hjælp af noget, der hedder VNC. Det har dog brug for særlig VNC -software, der kører på din pc, da det giver et fuldt virtuelt grafisk skrivebord på din pc. Vi kræver ikke (og vil virkelig ikke) skrivebordet til vores projekt, så vi holder os til den enklere SSH -metode.

Trin 2: Scotty, vi har brug for mere strøm

Scotty, vi har brug for mere kraft!
Scotty, vi har brug for mere kraft!

32x32 LED -matrixpanelet kan i sig selv tage flere ampere strøm. Det siger du ikke! Derfor indeholder de fleste af disse paneler nogle kraftige strømkabler til strømforsyning. Heldigvis for os, selvom vi ikke behøver at få en massiv strømforsyning til dette projekt. Vi var i stand til at drive hele dette system fra kun en ekstra 5v/2amp microUSB mobiltelefon oplader, vi havde liggende. Grunden til den lavere strøm er, at vi bruger relativt enkel grafik og derfor ikke tænder de fleste lysdioder. Hvis du overvejer at lave animationer eller bruge video/lys grafik, bør du helt sikkert overveje at tænde panelet fra en separat strømforsyning.

Trin 3: Sensorplacering og software

Sensorplacering og software
Sensorplacering og software
Sensorplacering og software
Sensorplacering og software

Har du bemærket, at vi bruger to tinyLiDAR'er i dette system i stedet for kun en? Som vist i garagekonfigurationsdiagrammet er den ene placeret foran bilen, og den anden er placeret langs den ene side af bilen.

Sidesensoren registrerer, om du vender ud af midten, mens du parkerer bilen, og den forreste vil selvfølgelig fortælle dig, hvornår du skal stoppe.

32x32 LED -displayet hjælper dig med at vise pile til at gå fremad, til venstre eller højre og et nedtællingsdisplay med farvede hjørner for at angive, hvor langt du stadig skal køre. Se vores korte video for alle skærmtilstande.

Spilplan

I en nøddeskal bruger vi det altid populære hzeller C -bibliotek til LED -driveren, Python til styringskoden og pipgpio C -biblioteket til korrekt I2C -kontrol af vores sensorer.

Python er et super let sprog på højt niveau, som du nemt kan redigere i enhver tekstredigerer. Vi bruger normalt SublimeText, og til dette projekt brugte vi også et meget nyttigt FTP -plugin, der giver os mulighed for at redigere scriptfilerne direkte på pi. Dette er et valgfrit trin, da det kun er nødvendigt, hvis du vil redigere koden. Flere detaljer er tilgængelige i slutningen af denne artikel.

Alle rpi -boards understøtter, som du måske ved, ikke indbygget I2C -urstrækning. Så vi brugte pigpio -biblioteket igen til dette projekt til at styre tinyLiDAR -sensorer, men denne gang med et lille twist …

Flere tinyLiDAR'er

Når du køber en tinyLiDAR, er den altid indstillet til standard slave -adressen 0x10. Dette er fint, når du bruger en enkelt sensor, men hvis du har mere end en i bussen, er det måske et problem, hvis du skriver en kommando til 0x10, og alle svarer tilbage!

Så vi har 3 muligheder her:

Først kan vi bruge kommandoen (tinyLiDAR) "R" til at skrive en ny slave -adresse til den ene sensor, der er forbundet til I2C -bussen. Gentag derefter dette for hver sensor. Fysisk vedhæftning, skrivning og afmontering af hver sensor til denne procedure. tinyLiDAR gemmer den givne adresse i sin indbyggede ikke-flygtige hukommelse. Adressen vil fortsætte, selv efter strømcyklus, indtil du sletter den ved at udsende kommandoen RESET.

Den anden mulighed er at bruge den praktiske Auto Assign -funktion, som vi skabte som et strækningsmål i IGG -kampagnen. Dette indebærer at sende kommandoen "AR" og derefter pege din finger til hver sensor individuelt for automatisk at tildele sekventielle I2C -adresser til de enkelte sensorer svarende til den første mulighed, men du behøver ikke fysisk at afbryde hver sensor for at gøre dette.

Den tredje mulighed er den, vi bruger her i dette projekt, og det er muligt takket være pigpio -biblioteket. For at implementere I2C -standarden korrekt, pigpio bitbangs GPIO. Så på grund af dette kan vi nemt oprette separate I2C -busser på stort set alle par ekstra GPIO -ben.

Derfor er det ikke nødvendigt at omprogrammere slave-adresser til de flere LiDAR-sensorer. Vi kan bare bruge en separat bus til hver enkelt:)

Bemærk, at I2C -bussen, der kører med 100Kbps, faktisk er ret robust. Vi bruger almindeligt gammelt CAT5 ethernet -kabel til at køre I2C -bussen ud til siden tinyLiDAR -sensor, der er hele 25 fod væk uden aktive repeaterkomponenter! Sensorledningsdetaljer er vist ovenfor.

Okay, nok jibber jabber, lad os begynde at downloade koden!

Trin 4: Opsætning af Pi

Opsætning af Pi
Opsætning af Pi
Opsætning af Pi
Opsætning af Pi

Forsigtig: Pi bruger et Linux -filsystem, så det er bedst at udføre følgende trin på et Linux -baseret system. Du kan ende med at omformatere dit SD -kort, hvis du gør dette på Windows. Vi brugte det fantastiske og gratis Ubuntu 18.04 -skrivebord, der kører i et virtuelt miljø på en Windows 10 -pc, men du kan prøve noget lignende.

Du skal først downloade operativsystemet fra raspberrypi.org og derefter brænde det til dit microSD -kort. Så følg disse trin:

(1) I Ubuntu skal du gå her og få fat i Raspbian Lite -billedet. Gem det i din downloads -mappe.

(2) Download derefter Etcher SD -kortskrivningsværktøj. FYI - det officielle Etcher -downloadlink til Linux -versionen på deres hjemmeside fungerede ikke for os, så vi brugte metoden beskrevet her i stedet:

Sammenfattende var trinnene beskrevet i linket:

Tilføj Etcher debian -depot:

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

Tillid til Bintray.com's GPG -nøgle:

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

Opdater og installer:

sudo apt-get opdatering

sudo apt-get install etcher-elektron

Når du er færdig, kan du fortsætte og starte Etcher fra dit Ubuntu -skrivebord. Det vil bede dig om kildefilen (som du lægger i overførselsmappen). Det næste trin i Etcher er at vælge det korrekte mål. Etcher gør et godt stykke arbejde med at opdage dit micro SD -kort, men du burde være paranoid her. For at verificere, at den finder den rigtige destination - prøv at skubbe microSD -kortet ud ved at klikke på eject i vinduet Ubuntu file explorer og kontrollere, at det forsvinder som målmulighed inde i Etcher. Derefter popes den tilbage og fortsætter til det sidste trin, det vil sige at skrive filen til dette microSD -kort.

Vent et stykke tid, indtil det er gjort, og fortsæt derefter videre.

Trin 5: WiFi -tid

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

Okay, så nu er det tid til at indtaste dine WiFi -detaljer.

Tip: du kan altid kopiere (Ctrl+C) og indsætte (højreklik, indsæt) oplysninger fra denne artikel til PuTTY -terminalskærmen i stedet for at indtaste kommandoerne. Se også slutningen på denne artikel for flere nyttige Linux -kommandoer.

Når Etcher er færdig med at skrive til micro SD -kortet, vises der 2 drev som vist ovenfor. Den ene kaldes boot den anden kaldes rootfs

Vi skal bruge filhåndteringen til at gå ind i bootmappen og lave en fil kaldet wpa_supplicant.conf.

For at udføre dette trin kan du bare klikke på venstre side, hvor der står boot, og derefter på højre side af skærmen kan du højreklikke på den hvide baggrunde og vælge Åbn i terminal.

Dette åbner et terminalvindue (ligner CMD i Windows), hvor du kan skrive følgende:

sudo nano wpa_supplicant.conf Tip: Du skal indtaste din Linux -systemadgangskode, så den kan køre som Superbruger. Dette er påkrævet, ellers kan du ikke gemme filerne, når du er færdig med at redigere

Ovenstående kommando starter derefter "nano" teksteditor, hvor du kan indtaste følgende oplysninger:

land = USA

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

Bemærk: Husk at udskifte WiFi_SSID og WiFi_Password med dit eget WiFi -netværksnavn og adgangskode.

Når du er færdig, skal du bare klikke på Ctrl+X for at afslutte og svare Ja til at skrive filen ved afslutning.

Vores næste trin er at oprette en tom fil kaldet ssh. For at gøre dette skriver vi bare følgende i terminalvinduet:

tryk på ssh

Nu skal vi give vores pi en statisk IP -adresse, så vi ved, hvor det er, hver gang vi vil oprette forbindelse til det. Indtast følgende i terminalvinduet:

sudo nano /etc/dhcpcd.conf

Dette skulle åbne nano -teksteditoren igen, og vi kan tilføje denne tekst til bunden af filen:

grænseflade wlan0

statisk ip_address = 192.168.0.statiske routere = 192.168.0.1 statisk domænenavn_servere = 192.168.0.1 8.8.8.8

Bemærk: Dette forudsætter, at dit netværksprefiks er 192.168.0. Hvis du har 192.168.1 osv., Så brug dit netværk i stedet. Domænenavneserveren 8.8.8.8 er til Google og er valgfri her.

Skriv 'exit' i terminalen for at lukke den. Højreklik derefter på boot -navnet i venstre side af Filhåndteringsvinduet og vælg Skub ud.

Du kan nu tilslutte dette microSD -kort til din pi og tilslutte microUSB -strømkablet for at forsyne din pi.

Hvis alt går godt, blinker den grønne LED et stykke tid, som om den får adgang til et harddiskdrev, og den skal logge dig på dit WiFi -netværk. Giv det cirka et minut til at slå sig ned, og vent på, at lysdioden bliver fast grøn.

For at kontrollere, at det hele fungerede, kan vi prøve at pinge det.

Så skriv bare linjen herunder og se efter et svar.

ping 192.168.0.200

I Ubuntu bør du få noget, der ligner dette:

ping 192.168.0.200

PING 192.168.0.200 (192.168.0.200) 56 (84) bytes data. 64 bytes fra 192.168.0.200: icmp_seq = 1 ttl = 128 tid = 752 ms 64 bytes fra 192.168.0.200: icmp_seq = 2 ttl = 128 tid = 5.77 ms 64 bytes fra 192.168.0.200: icmp_seq = 3 ttl = 128 tid = 7.33 ms ^C --- 192.168.0.200 ping-statistik --- 3 pakker sendt, 3 modtaget, 0% tab af pakker, tid 2001ms rtt min/avg/max/mdev = 5.777/255.346/752.922/351.839 ms

Bemærk, at pingen fortsætter med at fungere, indtil du trykker på Ctrl+C for at afslutte.

I Windows bør du få noget som dette:

ping 192.168.0.200

Ping 192.168.0.200 med 32 bytes data: Svar fra 192.168.0.200: bytes = 32 tid = 4ms TTL = 64 Svar fra 192.168.0.200: bytes = 32 tid = 5ms TTL = 64 Svar fra 192.168.0.200: bytes = 32 tid = 6ms TTL = 64 Svar fra 192.168.0.200: bytes = 32 tid = 5ms TTL = 64 Ping -statistik for 192.168.0.200: Pakker: Sendt = 4, modtaget = 4, tabt = 0 (0% tab), omtrentlige rundturstider i milli-sekunder: Minimum = 4 ms, maksimum = 6 ms, gennemsnit = 5 ms

Alt godt? Fremover…

Trin 6: Log ind

Logger ind
Logger ind

Nu hvor vi har forbindelse til pi, vil vi sende det kommandoer. Men hvordan? PuTTY selvfølgelig! Du kan downloade PuTTY herfra Opsætning af PuTTY Efter download af PuTTY -softwaren skal du oprette en profil til din pi med følgende oplysninger:

Værtsnavn (eller IP -adresse): 192.168.0.200 Forbindelsestype: SSH Giv denne profil et navn under Gemte sessioner, og tryk på Gem. Du kan bruge ethvert navn, du kan lide, f.eks. "Rpizw_200"

For at logge ind skal du bare vælge det fra listen og trykke på Indlæs. Tryk derefter på Åbn. Indtast brugernavn og adgangskode for at logge ind:

login navn: pi

Defalt adgangskode: hindbær

Her er en eksempelsession, der vises i PuTTY, når du logger ind:

log ind som: pi

[email protected]'s adgangskode: Linux raspberrypi 4.14.34+ #1110 man apr. 16 14:51:42 BST 2018 armv6l Programmerne, der følger med Debian GNU/Linux -systemet, er gratis software; de nøjagtige distributionsbetingelser for hvert program er beskrevet i de enkelte filer i/usr/share/doc/*/copyright. Debian GNU/Linux leveres ABSOLUTT INGEN GARANTI, i det omfang det er tilladt ved gældende lov. Sidste login: [dato og klokkeslæt] fra 192.168.0. [Ip -adresse] SSH er aktiveret, og standardadgangskoden for 'pi' -brugeren er ikke blevet ændret. Dette er en sikkerhedsrisiko - log venligst ind som 'pi' -brugeren, og skriv' passwd 'for at angive en ny adgangskode.

Ved første login advarer det om, at du endnu ikke har ændret adgangskoden. Du bør ændre det til noget stærkt, men simpelt at huske, så fortsæt og skift det ved at skrive passwd og følg vejledningen.

Vi bør derefter opdatere softwaren på pi ved at skrive dette:

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

Dette vil downloade alle nødvendige opdateringer fra din internetforbindelse. Svar JA, hvis du bliver bedt om at lade det fortsætte, og giv det tid til at opdatere.

På dette tidspunkt skal vi nok også slukke lyden på pi'en, da den har en dårlig juju med LED -driverbiblioteket. Kopier, indsæt følgende linjer en ad gangen, og tryk på enter efter hver linje:

cd ~

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

Outputtet vil være sådan noget:

pi@raspberrypi: ~ $ cd ~

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

Derefter skal vi genstarte pi'en for at få ændringerne til at træde i kraft, så skriv følgende:

sudo genstart nu

Forbindelsen vil naturligvis falde, da pi'en genstarter, så du kan lukke PuTTY. Prøv at logge ind igen et minut senere.

Nu er det tid til at få en grafisk FTP -filhåndtering kaldet WinSCP. Du kan downloade WinSCP herfra

WinSCP ligner meget filmangeren på Windows og Ubuntu. Det giver os mulighed for nemt at trække og slippe filer til & fra pi'en og oprette mapper med bare et klik med musen.

Når du er downloadet, skal du konfigurere en profil til dit pi.

WinSCP -opsætning Vælg Ny websted ved login -popup -vinduet. Brug følgende indstillinger til sessionen:

Filprotokol: SFTP -værtsnavn: 192.168.0.200 Brugernavn: pi Password: {uanset hvilken adgangskode du ændrede standarden til i PuTTY -trinnet ovenfor}

I Avancerede webstedsindstillinger skal du gå til Miljø | Kataloger og indtast /home /pi for Remote -biblioteket og hvad du vil til indstillingen Local Directory.

I Avancerede webstedsindstillinger skal du gå til Miljø | Skal og vælg sudo su - i rullelisten Shell.

Tryk derefter på Gem.

Hold både WinSCP og PuTTY åbne, mens du udfører følgende trin

Gå til PuTTY -terminalen, og indtast følgende:

cd ~

Dette får os til vores hjemmemappe inde i pi.

Vi kan nu få fat i LED -driverbiblioteket fra github. For at bruge den nyeste kode skal vi trække i repoen, så vi skal installere git -værktøjet.

Indtast dette i PuTTY:

sudo apt-get install git

svar Y for at fortsætte, og det vil tage et par sekunder at installere git for os fra internettet.

Outputtet skal se sådan ud:

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

Læser pakkelister … Udført Bygning af afhængighedstræ Læsning af statens oplysninger … Udført Følgende ekstra pakker installeres: git-man liberror-perl Foreslåede 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 opgraderet, 3 nyinstalleret, 0 for at fjerne og 0 ikke opgraderet. Har brug for at få 4, 848 kB arkiver. Efter denne operation vil 26,4 MB ekstra diskplads blive brugt. Vil du fortsætte? [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] Hent: 3 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf git armhf 1: 2.11.0-3+deb9u3 [3, 388 kB] Hentede 4, 848 kB i 5s (878 kB/s) Valg af tidligere ikke-valgt pakke liberror-perl.(Læser database… 34363 filer og mapper installeret i øjeblikket.) Forbereder udpakning…/liberror-perl_0.17024-1_all.deb… Udpakning af liberror-perl (0.17024-1)… Valg af tidligere ikke-valgt pakke git-man. Forbereder udpakning…/git-man_1%3a2.11.0-3+deb9u3_all.deb… Udpakning af git-man (1: 2.11.0-3+deb9u3)… Valg af tidligere ikke valgt pakke-git. Forbereder udpakning…/git_1%3a2.11.0-3+deb9u3_armhf.deb… Udpakning af git (1: 2.11.0-3+deb9u3)… Opsætning af git-man (1: 2.11.0-3+deb9u3)… Opsætning liberror-perl (0.17024-1) … Behandler udløsere til man-db (2.7.6.1-2) … Opsætning af git (1: 2.11.0-3+deb9u3) …

Gå nu tilbage til WinSCP og naviger til mappen /home /pi. Højreklik derefter på højre side af dette WinScp -vindue og vælg at oprette et nyt bibliotek kaldet "parkering"

Tilbage i PuTTY -skærmen kan du skrive ls for at bekræfte, at du lige har lavet en ny mappe i pi. Indtast derefter dette:

cd p [TAB]Tip: Hvis du trykker på TAB -tasten, udfyldes delnavnet automatisk for dig

Tryk på enter -tasten for at komme ind i dette bibliotek.

pi@raspberrypi: ~ $ cd parkering/

pi@raspberrypi: ~/parkering $ ls

Nu kan vi hente driverfilerne ved at indtaste følgende i PuTTY:

git-klon

Outputtet ser sådan ud:

pi@raspberrypi: ~/parkering $ git klon

Kloning til 'rpi-rgb-led-matrix' … fjernbetjening: Tæller objekter: 3740, udført. remote: Total 3740 (delta 0), genbrugt 0 (delta 0), pack genbrugt 3740 Modtagende objekter: 100% (3740/3740), 20,61 MiB | 1,32 MiB/s, udført. Løser deltaer: 100% (2550/2550), udført.

Kompilér nu LED-driverfilerne ved at gå ind i denne nye 'rpi-rgb-led-matrix' bibliotek og skrive kommandoen make:

cd r [TAB]

lave Og sådan så det ud på vores board

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

pi@raspberrypi: ~/parking/rpi-rgb-led-matrix $ make make -C./lib make [1]: Indtastning af bibliotek '/home/pi/parking/rpi-rgb-led-matrix/lib' g ++- I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"almindelig' '-Wextra -Wno -ubrugt -parameter -fno -undtagelser -c -o gpio.o gpio.cc g ++ -I../ inkluderer -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"almindelig' '-Wextra -Wno -ubrugt -parameter -fno -undtagelser -c -o led -matrix.o led-matrix.cc g ++ -I../ omfatter - Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"almindelig' '-Wextra -Wno -ubrugt -parameter -fno -undtagelser -c -o optioner -initialize.o options-initialize.cc g ++ -I../ inkluderer -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"almindelig' '-Wextra -Wno -ubrugt -parameter -fno -undtagelser -c -o framebuffer.o framebuffer.cc g ++ -I../ inkluderer -Væg -O3 -g - fPIC -DDEFAULT_HARDWARE = '"regelmæssig' '-Wextra -Wno -ubrugt -parameter -fno -undtagelser -c -o thread.o thread.cc g ++ -I../ inkludere -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE =' "almindelig" '-Vextra -Wno -ubrugt -parameter -fno -undtagelser -c -o bdf -font.o bdf -fon t.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"almindelig' '-Wextra -Wno -ubrugt -parameter -fno -undtagelser -c -o graphics.o graphics.cc g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"almindelig' '-Wextra -Wno -ubrugt -parameter -fno -undtagelser -c -o transformer.o transformer.cc g ++ -I../ inkluderer -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"almindelig' '-Wextra -Wno -ubrugt -parameter -fno -undtagelser -c -o led -matrix -co led-matrix-c.cc cc -I../ inkludere -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"almindelig' '-Wextra -Wno -ubrugt -parameter -c -o hardware -mapping.o hardware -mapping.c g ++ -I../ inkludere -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"almindelig' '-Wextra -Wno -ubrugt -parameter -fno -undtagelser -c -o content -streamer.o content-streamer.cc g ++ -I../ inkluderer -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE = '"almindelig' '-Wextra -Wno -ubrugt -parameter -fno -undtagelser -c -o pixel -mapper.o pixel-mapper.cc g ++ -I../ inkluderer -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"almindelig' '-Wextra -Wno -ubrugt -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]: Forlader bibliotek '/home/pi/parking/rpi -rgb -led -matrix/lib' make -C eksempler -api -brug make [1]: Gå ind i bibliotek ' /home/pi/parkering/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]: Indtastning af bibliotek '/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 -ubrugt -parameter -c -o minimal -eksempel.o minimal-eksempel.cc g ++ minimal -eksempel.o - o minimal -eksempel -L../ lib -lrgbmatrix -lrt -lm -lpthread cc -I../ inkludere -Wall -O3 -g -Wextra -Wno -ubrugt -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 -ubrugt- 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-ubrugt-parameter -c -o rullende-tekst-eksempel. O rullende-tekst- eksempel.cc g ++ rullende-tekst-eksempel. O -o rulning-tekst-eksempel -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ inkluderer -Wall -O3 -g -Wextra -Wno -ubrugt -parameter -c -o clock.o clock.cc g ++ clock.o -o ur -L.. /lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ inkludere -Wall -O3 -g -Wextra -Wno -ubrugt -parameter -c -o ledcat.o ledcat.cc g ++ le dcat.o -o ledcat -L../ lib -lrgbmatrix -lrt -lm -lpthread make [1]: Forlader bibliotek '/home/pi/parkering/rpi -rgb -led -matrix/eksempler -api -brug' pi @raspberrypi: ~/parkering/rpi-rgb-led-matrix $

Vores næste trin vil være at binde RGB -matrixbiblioteket til Python. Vi brugte standard Python 2 til dette projekt. Så for at gøre denne binding indtaster vi følgende en linje ad gangen som før:

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

lav build-python sudo lav install-python

Bemærk: Du kan roligt ignorere den ene advarsel om '-Wstrict-prototype', der vises, når du kører de to udsagn. Make -kommandoerne tager et par minutter at køre, og de siger ikke noget, mens de har travlt. Så frygt ikke - din pi skal snart komme tilbage;)

Her er delvis output på den første make -erklæring:

bygge 'grafik' udvidelse

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

Dernæst installerer vi pigpio C -biblioteket. For at gøre dette korrekt skal vi lave det fra kilden, så indtast bare følgende linjer:

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

Ovenstående installation tager cirka 3 minutter.

Nu er det tid til at få vores Python -projektfiler. Indtaste følgende:

cd ~

cd/home/pi/parkering/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 derefter følgende for at udføre det:

sudo python parkering.py

Men du behøver ikke at gøre dette lige nu, da vi stadig skal tilslutte det hele …

Trin 7: Ledninger

Ledninger
Ledninger
Ledninger
Ledninger
Ledninger
Ledninger
Ledninger
Ledninger

Som tidligere nævnt drev vi LED -panelet fra den samme strømadapter, der driver pi'en. For at gøre dette bliver du nødt til at splejse de heftige røde og sorte ledninger til mandlige headerstifter, så de kan sættes i ben 2 og 9 på 40pin pi -stikket.

Afbryd strømmen til pi'en nu, og led LED -panelet op som vist på billeddiagrammet ovenfor. Hold pin 2 frakoblet for nu.

BEMÆRK: LED -matrixpanelet kan nogle gange tænde i funky tilstand. Hvis dette sker, kan det nedbringe din strømforsyning alvorligt, uanset hvilken strømkapacitet den har. Vi bemærkede dette under udviklingen på vores bænkforsyning, der kan levere over 4 ampere. Løsningen på dette er at køre pi -koden først og derefter tilslutte pin 2 for at drive LED -panelet. På denne måde skulle panelet komme op i en lav strømtilstand, da det skyller de tilfældige LED -tilstande ud. Hvilestrøm (alle lysdioder slukket) for vores LED -panel var kun 50mA ved 5v.

CAT5

Vi brugte et 25 fod CAT5 ethernet -kabel og modificerede det til at slutte til pi -headerstifterne i den ene ende og acceptere GROVE -stikstifterne på den anden side, så vi kunne forlænge afstanden for at placere vores side tinyLiDAR -sensor. Billederne ovenfor viser dette kabel før og efter ændringer. Se bort fra farverne på headerpinnetrådene, da de ikke er korreleret med diagrammerne. Bare sørg for at tilslutte dit system som vist i de billedforbindelsesdiagrammer, der blev vist tidligere i trin 3.

Trin 8: Tænd det

Image
Image
Valgfri trin og nyttige kommandoer
Valgfri trin og nyttige kommandoer

Den korrekte indledende opstartsekvens bør være at tilslutte microUSB -opladeren til pi'en og vente på, at de blå lysdioder på de tinyLiDAR -sensorer blinker hurtigt, hvilket viser, at de foretager målinger. Dette beviser, at koden fungerer korrekt.

Du kan derefter langsomt men fast tilslutte pin 2 til LED -panelforsyningen. Vær forsigtig med ikke at fejle det, mens du gør dette! Hvis LED -panelet viser et par frosne lyse lysdioder, er det sandsynligvis glittet, så fjern microUSB -strømmen fra pi'en, og vent et par sekunder for at prøve opstartssekvensen igen.

For at køre koden skal du indtaste følgende:

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

sudo python parkering.py

Hvis alt går godt, bør du få et display, der ligner det, der vises i videoen.

Få et hurtigt kig på parking.py -koden for at forstå, hvilke grænser vi brugte. Standard for den forreste sensor er 200 mm. Da sensorens rækkevidde er 11 mm til 2 m, er det en god idé at holde nom_parked_Front -afstanden på 200 mm eller højere. Sidesensoren nom_parked_Side er indstillet til 600 mm. Se billedet ovenfor for Python -koden, der viser disse konfigurationsmuligheder.

Hvis alt fungerer, kan du gå videre og montere systemet i din garage og justere ovenstående parametre efter behov. Da din pi er forbundet til din WiFi, kan du altid gå ind og redigere dine afstandsindstillinger, som du har brug for til din særlige garageopsætning, mens den stadig er monteret.

Er det nu?

Hvorfor ja, ja det er det! - tid til at lave din glade dans:)

Tak fordi du læste og nyd din nye parkeringsassistent!

Trin 9: Valgfri trin og nyttige kommandoer

Valgfrit trin - FTP -tilføjelse til sublim tekst

For at redigere Python -scriptfilerne direkte på pi'en kan vi installere FTP -tilføjelsen kaldet Sublime SFTP af Wbond. Du kan downloade denne tilføjelse ved at følge instruktionerne her

For at konfigurere denne tilføjelse skal vi konfigurere FTP -legitimationsoplysningerne under Filen | SFTP/FTP | Opsætning Server… side.

Til vores opsætning brugte 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", Brug Ctrl+S eller Fil | Gem for at gemme disse oplysninger. Du bliver bedt om et navn for at kalde denne konfiguration. Vi kaldte det simpelthen "rpizw_0_200"

Nu for at logge ind på pi'en fra SublimeText, gå til File | SFTP/FTP | Gennemse server …

Vælg fra listen over muligheder, der dukker op. Du vil vælge profilen med det navn, du har angivet ovenfor;) Følg vejledningen for at navigere i mapperne og redigere den ønskede fil.

Nyttige ekstramateriale

Nyttige Linux -kommandoer til brug på pi.

Inden stikket til pi'en tages ud, skal du ALTID sørge for at lukke det ned, så du ikke får filkorruption på dit microSD -kort. Indtast denne kommando:

sudo lukning nu

og vent på, at den grønne lysdiode slukkes, før strømmen tages ud. Tilsvarende for at genstarte det kan du indtaste:

sudo genstart nu

Hvis du vil liste filer i et bibliotek, skal du bruge dette:

ls

Du kan finde andre nyttige Linux -kommandoer her

Anbefalede: