Kazalo:
- 1. korak: Kaj je Pi Zero W?
- 2. korak: Scotty, potrebujemo več moči
- 3. korak: Namestitev senzorja in programska oprema
- 4. korak: Nastavitev Pi
- 5. korak: čas WiFi
- 6. korak: Prijava
- 7. korak: Žice
- 8. korak: Prižgite
- 9. korak: Izbirni korak in koristni ukazi
Video: Sistem pomoči pri parkiranju na osnovi Pi: 9 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Živijo! Tukaj je kul projekt, ki ga lahko naredite v enem popoldnevu in ga nato uporabite vsak dan. Temelji na Raspberry Pi Zero W in vam bo pomagal pri popolnem parkiranju avtomobila.
Tu je celoten seznam delov, ki jih potrebujete:
- Raspberry Pi Zero W (temu bomo v tem članku rekli »rpi« ali »pi«)
- 4 GB ali več kartica micro SD za operacijski sistem pi
- Dva modula senzorja razdalje tinyLiDAR za čas letenja
- 32x32 RGB LED plošča (za to obstaja veliko proizvajalcev z različnimi pikami, lahko na primer uporabite Adafruit 1484 ali podobno, samo poiščite »32x32 LED Matrix« v Googlu). Naša plošča je imela korak 6 mm.
- 25 čevljev kabla CAT5
- Približno 22 barvnih mostičkov za moške na moških
- 5v 2Amp napajanje microUSB (polnilec za mobilni telefon) Vse nastavljeno? Pojdimo!
TL; DR Povzetek
- Prenesite Raspbian Lite OS za rpi
- Konfigurirajte pi, da brezglavo teče prek WiFi s statičnim IP -jem
- Nastavite okolje za razvoj računalnika z dodatkom PuTTY, WinSCP in po izbiri dodatkom SublimeText z dodatkom FTP
- Prenesite, naredite in povežite gonilnik LED plošče
- Prenesite in namestite pigpio
- Prenesite našo kodo Python
- Priključite LED zaslon 32x32
- Naredite podaljšek CAT5 za stransko tipalo tinyLiDAR
- Izbirni korak (vendar samo za napredne uporabnike): na hitro razveselite ples, ko vse deluje;)
1. korak: Kaj je Pi Zero W?
Nedvomno ste slišali za Raspberry Pi, ampak kaj za vraga je pi 'Zero W'?
Raspberry Pi Zero in Zero W sta bila novejša dodatka družini Pi, ki sta pomenila več za IoT in druge nizkocenovne vdelane aplikacije. So odstranjene različice prvotne pi plošče, vendar še vedno z zmogljivim 1GHz procesorjem. Tukaj je dobra primerjava vseh modelov.
Prednost pri izbiri Pi Zero W v primerjavi z drugimi krmilnimi ploščami je v tem, da ga lahko preprosto programiramo v jeziku Python na višji ravni, medtem ko še vedno uporabljamo hitre gonilnike LED plošče C/C ++. Prav tako je privlačna cena le 10 USD.
Upoštevajte, da so se nekatere plošče, odkar je ta plošča skrajšana različica celotnega pi -ja, spremenile. Zlasti je bil odpravljen vtič za ethernet, priključek HDMI se je spremenil v mini velikost, štiri vrata USB pa so bila poenostavljena do enega tipa mikro USB. Na krovu je še en priključek mikro USB, ki pa je namenjen samo napajanju plošče. Odprava vseh priključkov USB polne velikosti prinaša nekatere zaplete. Namreč, kako lahko priključite tipkovnico in miško? Standardni USB perfiferi in zvezdišča uporabljajo priključke tipa A, ne mikro.
Kaj lahko torej storimo?
Lahko gremo brez glave!
Ne, ne mislimo noreti, ampak uporabiti alternativo običajni neposredni žični nastavitvi. Brez glave pomeni "tunel" v pi na daljavo z uporabo omrežne povezave SSH. Za ta projekt bomo uporabili pristop brez glave prek WiFi. Zato smo pri izbiri W različice pi nič namesto še nižjih stroškov pi nič.
Upoštevajte, da obstaja tudi drug način za zagon pi v načinu brez glave z uporabo nečesa, kar se imenuje VNC. Potrebuje posebno programsko opremo VNC, ki se izvaja na vašem računalniku, saj zagotavlja popolno virtualno grafično namizje na vašem računalniku. Za naš projekt ne potrebujemo (in res ne želimo) namizja, zato se bomo držali preprostejše metode SSH.
2. korak: Scotty, potrebujemo več moči
LED matrična plošča 32x32 lahko sama po sebi sprejme več amperov toka. Brez heca! Zato večina teh plošč vključuje nekaj močnih kablov za napajanje. Na srečo pa nam za ta projekt ne bo treba dobiti velikega napajanja. Celoten sistem smo lahko napajali le iz rezervnega polnilnika za mikrofon USB 5V/2amp, ki smo ga imeli naokoli. Razlog za nižji tok je, ker uporabljamo razmeroma preprosto grafiko in zato večine LED ne vklopimo. Če razmišljate o animaciji ali uporabi video/svetle grafike, morate vsekakor razmisliti o napajanju plošče iz ločenega napajalnika.
3. korak: Namestitev senzorja in programska oprema
Ali ste opazili, da v tem sistemu uporabljamo dva drobnaLiDAR -ja namesto enega? Kot je prikazano na diagramu nastavitve garaže, je eden postavljen pred avtomobil, drugi pa vzdolž ene strani avtomobila.
Stranski senzor bo zaznal, če pri parkiranju avtomobila zavijete iz središča, in seveda vam bo sprednji povedal, kdaj se morate ustaviti.
Zaslon LED 32x32 vam bo pomagal s puščicami za premikanje naprej, levo ali desno in prikazom odštevanja z barvnimi vogali, ki označuje, kako daleč morate še voziti. Oglejte si naš kratek videoposnetek za vsa stanja prikaza.
Načrt igre
Na kratko, uporabljamo vedno priljubljeno knjižnico hzeller C za gonilnik LED, Python za krmilno kodo in knjižnico pipgpio C za pravilen I2C nadzor naših senzorjev.
Python je zelo enostaven jezik na visoki ravni, ki ga lahko preprosto uredite v katerem koli urejevalniku besedil. Običajno uporabljamo SublimeText, za ta projekt pa smo uporabili tudi zelo uporaben vtičnik FTP, ki nam omogoča urejanje datotek skript neposredno na pi. To je neobvezen korak, saj je potreben le, če želite urediti kodo. Več podrobnosti je na voljo na koncu tega članka.
Kot veste, vse plošče rpi ne podpirajo raztezanja ure I2C. Tako smo za ta projekt znova uporabili knjižnico pigpio za nadzor drobnih senzorjev LiDAR, vendar tokrat z rahlim zasukom …
Več drobnihLiDAR -jev
Ko kupite tinyLiDAR, je vedno nastavljen na privzeti pomožni naslov 0x10. To je v redu, če uporabljate en senzor, če pa imate na vodilu več kot enega, je morda težava, če napišete ukaz na 0x10 in vsi odgovorijo nazaj!
Tako imamo tukaj 3 možnosti:
Najprej lahko z ukazom (tinyLiDAR) "R" napišemo nov pomožni naslov na en senzor, priključen na vodilo I2C. Nato to ponovite za vsak senzor. Za ta postopek fizično pritrdite, zapišite in odstranite vsak senzor. tinyLiDAR bo dani naslov shranil v svoj vgrajen nehlapni pomnilnik. Naslov bo obstajal tudi po vklopu napajanja, dokler ga ne počistite z izdajo ukaza RESET.
Druga možnost je, da uporabite priročno funkcijo samodejnega dodeljevanja, ki smo jo ustvarili kot cilj raztezanja v oglaševalski akciji IGG. To vključuje pošiljanje ukaza "AR" in nato s prstom na vsak senzor posebej za samodejno dodelitev zaporednih naslovov I2C posameznim senzorjem, podobno kot pri prvi možnosti, vendar vam za to ni treba fizično odklopiti vsakega senzorja.
Tretja možnost je tista, ki jo uporabljamo tukaj v tem projektu, in to je mogoče zaradi knjižnice pigpio. Za pravilno izvajanje standarda I2C pigpio bitbangs GPIO. Zaradi tega lahko preprosto ustvarimo ločena vodila I2C na skoraj vsakem paru rezervnih zatičev GPIO.
Zato za več senzorjev LiDAR ni treba ponovno programirati pomožnih naslovov. Za vsakega lahko uporabimo samo ločen avtobus:)
Upoštevajte, da je vodilo I2C, ki deluje pri 100Kbps, pravzaprav precej robustno. Uporabljamo navaden stari Ethernetni kabel CAT5 za vodenje vodila I2C do stranskega senzorja tinyLiDAR, ki je oddaljen 25 čevljev brez aktivnih komponent repetitorja! Podrobnosti o ožičenju senzorja so prikazane zgoraj.
V redu, dovolj jibber jabber, začnimo s prenosom kode!
4. korak: Nastavitev Pi
Pozor: Pi uporablja datotečni sistem Linux, zato je najbolje, da v sistemu, ki temelji na Linuxu, izvedete naslednje korake. Če to storite v sistemu Windows, boste morda preoblikovali kartico SD. Uporabili smo odlično in brezplačno namizje Ubuntu 18.04, ki deluje v virtualnem okolju na računalniku z operacijskim sistemom Windows 10, vendar lahko poskusite nekaj podobnega.
Najprej morate prenesti operacijski sistem s spletnega mesta raspberrypi.org in ga nato zapisati na kartico microSD. Zato sledite tem korakom:
(1) V Ubuntuju pojdite sem in vzemite sliko Raspbian Lite. Shranite ga v mapo za prenos.
(2) Nato prenesite pripomoček za pisanje kartice Etcher SD. FYI - uradna povezava za prenos Etcherja za različico Linuxa na njihovi domači strani nam ni delovala, zato smo namesto tega uporabili tukaj opisano metodo:
Če povzamemo, so koraki, opisani na povezavi, naslednji:
Dodajte skladišče Etcher debian:
echo "deb https://dl.bintray.com/resin-io/debian stabilen jedilnik" | sudo tee /etc/apt/sources.list.d/etcher.list
Zaupajte ključu GPG Bintray.com:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
Posodobite in namestite:
sudo apt-get posodobitev
sudo apt-get install etcher-electron
Ko končate, lahko nadaljujete in zaženete Etcher z namizja Ubuntu. Od vas bo zahteval izvorno datoteko (ki jo postavite v mapo za prenos). Naslednji korak v Etcherju je izbira pravilnega cilja. Etcher dobro odkrije vašo kartico micro SD, vendar bi morali biti tukaj paranoični. Če želite preveriti, ali najde pravi cilj - poskusite izvrtati kartico microSD tako, da v oknu raziskovalca datotek Ubuntu kliknete izvrži in preverite, ali gre za ciljno možnost v Etcherju. Nato ga znova vstavite in nadaljujte do zadnjega koraka, ki je zapis datoteke na to kartico microSD.
Počakajte nekaj časa, dokler ni končano, nato pa nadaljujte.
5. korak: čas WiFi
Zdaj je čas, da vnesete svoje podatke o WiFi.
Nasvet: informacije iz tega članka lahko vedno kopirate (Ctrl+C) in prilepite (Desni klik, Prilepi) na zaslon terminala PuTTY, namesto da bi vnašali ukaze. Na koncu tega članka si oglejte tudi nekaj koristnih ukazov za Linux.
Ko Etcher konča s pisanjem na kartico micro SD, se prikažeta 2 pogona, kot je prikazano zgoraj. Eden se imenuje zagonski, drugi pa rootfs
Z upraviteljem datotek moramo iti v zagonsko mapo in narediti datoteko z imenom wpa_supplicant.conf.
Če želite narediti ta korak, preprosto kliknite na levi strani, kjer piše zagon, nato pa na desni strani zaslona z desno miškino tipko kliknite belo ozadje in izberite Odpri v terminalu.
To bo odprlo terminalsko okno (podobno kot CMD v sistemu Windows), kamor lahko vnesete naslednje:
sudo nano wpa_supplicant.conf Nasvet: Vnesti morate sistemsko geslo za Linux, da bo lahko delovalo kot super uporabnik. To je potrebno, sicer ne boste mogli shraniti datotek, ko končate urejanje
Zgornji ukaz bo nato zagnal urejevalnik besedil "nano", kamor lahko vnesete naslednje podatke:
država = ZDA
ctrl_interface = DIR = /var /run /wpa_supplicant GROUP = netdev update_config = 1 network = {ssid = "WiFi_SSID" scan_ssid = 1 psk = "WiFi_Password" key_mgmt = WPA - PSK}
Opomba: Ne pozabite zamenjati WiFi_SSID in WiFi_Password z lastnim imenom in geslom za omrežje WiFi.
Ko končate, kliknite Ctrl+X za izhod in odgovorite z Da, da datoteko napišete ob izhodu.
Naš naslednji korak je ustvariti prazno datoteko, imenovano ssh. Če želite to narediti, v terminalsko okno vnesemo le naslednje:
dotaknite se ssh
Zdaj moramo dati pi statični naslov IP, da vemo, kje je vsakič, ko se želimo povezati z njim. V okno terminala vnesite naslednje:
sudo nano /etc/dhcpcd.conf
To bi moralo znova odpreti urejevalnik besedila nano in to besedilo lahko dodamo na dno datoteke:
vmesnik wlan0
static ip_address = 192.168.0.static routers = 192.168.0.1 static domain_name_servers = 192.168.0.1 8.8.8.8
Opomba: To predpostavlja, da je vaša omrežna predpona 192.168.0. Če imate 192.168.1 itd., Namesto tega uporabite svoje omrežje. Strežnik domenskih imen 8.8.8.8 je za Google in tukaj ni obvezen.
V terminal vnesite 'exit', da ga zaprete. Nato z desno miškino tipko kliknite ime zagona na levi strani okna Upravitelj datotek in izberite Izvrzi.
Zdaj lahko to kartico microSD priključite v svoj pi in priključite napajalni kabel microUSB za napajanje pi.
Če je vse v redu, bo zelena LED -dioda nekaj časa utripala, kot da dostopa do trdega diska, zato se mora prijaviti v omrežje WiFi. Pustite približno minuto, da se umiri in počakajte, da LED sveti zeleno.
Če želimo preveriti, ali je vse delovalo, lahko poskusimo preveriti ping.
Zato samo vnesite spodnjo vrstico in preverite odgovor.
ping 192.168.0.200
V Ubuntuju bi morali dobiti nekaj podobnega:
ping 192.168.0.200
PING 192.168.0.200 (192.168.0.200) 56 (84) bajtov podatkov. 64 bajtov iz 192.168.0.200: icmp_seq = 1 ttl = 128 čas = 752 ms 64 bajtov iz 192.168.0.200: icmp_seq = 2 ttl = 128 čas = 5,77 ms 64 bajtov iz 192.168.0.200: icmp_seq = 3 ttl = 128 čas = 7,33 ms ^C --- 192.168.0.200 statistika pinga --- 3 poslani paketi, 3 prejeti, 0% izgube paketov, čas 2001ms rtt min/avg/max/mdev = 5.777/255.346/752.922/351.839 ms
Upoštevajte, da ping deluje, dokler ne pritisnete Ctrl+C za izhod.
V sistemu Windows bi morali dobiti nekaj takega:
ping 192.168.0.200
Ping 192.168.0.200 s 32 bajti podatkov: Odgovor od 192.168.0.200: bajti = 32 čas = 4 ms TTL = 64 Odgovor od 192.168.0.200: bajti = 32 čas = 5 ms TTL = 64 Odgovor od 192.168.0.200: bajti = 32 čas = 6ms TTL = 64 Odgovor od 192.168.0.200: bajti = 32 čas = 5ms TTL = 64 Statistika pinga za 192.168.0.200: Paketi: Poslano = 4, Prejeto = 4, Izgubljeno = 0 (izguba 0%), Približni časi povratnega potovanja v mili sekundah: Najmanj = 4 ms, Največ = 6 ms, Povprečje = 5 ms
Vse v redu? Naprej…
6. korak: Prijava
Zdaj, ko imamo povezavo s pi, mu želimo poslati ukaze. Ampak kako? PuTTY seveda! Tu lahko prenesete PuTTY Nastavitev PuTTY -ja Po prenosu programske opreme PuTTY naredite profil za svoj pi z naslednjimi informacijami:
Ime gostitelja (ali naslov IP): 192.168.0.200 Vrsta povezave: SSH Dajte temu profilu ime pod Shranjene seje in pritisnite Shrani. Uporabite lahko poljubno ime, na primer "rpizw_200"
Če se želite prijaviti, jo izberite s seznama in pritisnite Naloži. Nato pritisnite Odpri. Za prijavo vnesite uporabniško ime in geslo:
prijavno ime: pi
Geslo za defalt: malina
Tukaj je vzorčna seja, prikazana v programu PuTTY, ko se prijavite:
prijavite se kot: pi
geslo [email protected]: Linux raspberrypi 4.14.34+ #1110 Pon Apr 16 14:51:42 BST 2018 armv6l Programi, vključeni v sistem Debian GNU/Linux, so brezplačna programska oprema; natančni pogoji distribucije za vsak program so opisani v posameznih datotekah v/usr/share/doc/*/copyright. Debian GNU/Linux ima ABSOLUTNO BREZ GARANCIJE, kolikor to dovoljuje veljavna zakonodaja. Zadnja prijava: [datum in čas] od 192.168.0. [Naslov ip] SSH je omogočen in privzeto geslo za uporabnika 'pi' ni spremenjeno. To je varnostno tveganje - prijavite se kot uporabnik 'pi' in vnesite 'passwd', da nastavite novo geslo.
Ob prvi prijavi vas bo opozorilo, da gesla še niste spremenili. Spremeniti ga morate v nekaj močnega, a preprostega za zapomniti, zato ga spremenite tako, da vnesete passwd in sledite pozivom.
Nato bi morali posodobiti programsko opremo na pi, tako da vnesemo to:
sudo apt-get update && sudo apt-get upgrade
S tem boste z internetne povezave prenesli vse potrebne posodobitve. Če ste pozvani, da dovolite nadaljevanje, odgovorite z DA, nato pa mu dajte nekaj časa za posodobitev.
V tem času bi verjetno morali izklopiti tudi zvok na pi, saj ima nekaj slabega jujuja z knjižnico gonilnikov LED. Kopirajte, prilepite naslednje vrstice eno za drugo in pritisnite Enter za vsako vrstico:
cd ~
mačka << EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf črni seznam snd_bcm2835 EOF sudo update-initramfs -u
Izhod bo nekako tak:
pi@raspberrypi: ~ $ cd ~
pi@raspberrypi: ~ $ cat <> črni seznam snd_bcm2835>> črni seznam EOF snd_bcm2835 pi@raspberrypi: ~ $ sudo update -initramfs -u pi@raspberrypi: ~ $
Nato moramo znova zagnati pi, da bodo spremembe začele veljati, zato vnesite naslednje:
sudo znova zaženi
Povezava bo seveda padla, ko se pi znova zažene, tako da lahko zaprete PuTTY. Poskusite se prijaviti minuto kasneje.
Zdaj je čas, da dobite grafični upravitelj datotek FTP, imenovan WinSCP. WinSCP lahko prenesete od tukaj
WinSCP je zelo podoben upravitelju datotek v sistemih Windows in Ubuntu. Omogoča nam preprosto vlečenje in spuščanje datotek v in iz pi ter ustvarjanje imenikov z le desnim klikom miške.
Ko prenesete, boste morali nastaviti profil za svoj pi.
Nastavitev WinSCP V pojavnem oknu Prijava izberite Novo mesto. Za sejo uporabite naslednje nastavitve:
Datotečni protokol: Ime gostitelja SFTP: 192.168.0.200 Uporabniško ime: pi Geslo: {katero koli geslo ste spremenili privzeto v zgornjem koraku PuTTY}
V naprednih nastavitvah spletnega mesta pojdite na Okolje | Imenike in vnesite /home /pi za oddaljeni imenik in karkoli želite za nastavitev lokalnega imenika.
V naprednih nastavitvah spletnega mesta pojdite na Okolje | Shell in izberite sudo su - na spustnem seznamu Shell.
Nato pritisnite Shrani.
Med izvajanjem naslednjih korakov naj bosta WinSCP in PuTTY odprta
Pojdite na terminal PuTTY in vnesite naslednje:
cd ~
To nas bo pripeljalo do našega domačega imenika znotraj pi.
Knjižnico gonilnikov LED lahko zdaj vzamemo iz github -a. Za uporabo najnovejše kode bomo morali potegniti repo, zato moramo namestiti pripomoček git.
Vnesite to v PuTTY:
sudo apt-get install git
odgovor Y za nadaljevanje in traja nekaj sekund, da nam namesti git iz interneta.
Izhod bi moral izgledati nekako tako:
pi@raspberrypi: ~ $ sudo apt-get install git
Branje seznamov paketov … Končano Izdelava drevesa odvisnosti Branje informacij o stanju … Končano Nameščeni bodo naslednji dodatni paketi: git-man liberror-perl Predlagani paketi: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn Nameščeni bodo naslednji NOVI paketi: git git-man liberror-perl 0 nadgrajen, 3 na novo nameščen, 0 odstraniti in 0 ne nadgraditi. Morate dobiti 4, 848 kB arhivov. Po tej operaciji bo porabljenih 26,4 MB dodatnega prostora na disku. Ali želite nadaljevati? [Y/n] y Pridobite: 1 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf liberror-perl vse 0,17024-1 [26,9 kB] Pridobite: 2 https://muug.ca/mirror/ raspbian/raspbian stretch/main armhf git-man vse 1: 2.11.0-3+deb9u3 [1, 433 kB] Pridobite: 3 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf git armhf 1: 2.11.0-3+deb9u3 [3, 388 kB] Pridobljeno 4, 848 kB v 5 s (878 kB/s) Izbira prej neizbranega paketa liberror-perl.(Branje zbirke podatkov … Trenutno nameščenih 34363 datotek in imenikov.) Priprava na razpakiranje…/liberror-perl_0.17024-1_all.deb… Razpakiranje liberror-perl (0.17024-1) … Izbira prej neizbranega paketa git-man. Priprava na razpakiranje…/git-man_1%3a2.11.0-3+deb9u3_all.deb… Razpakiranje git-man (1: 2.11.0-3+deb9u3) … Izbira prej neizbranega paketa git. Priprava na razpakiranje…/git_1%3a2.11.0-3+deb9u3_armhf.deb… Razpakiranje git (1: 2.11.0-3+deb9u3) … Nastavitev git-man (1: 2.11.0-3+deb9u3) … Nastavitev liberror-perl (0.17024-1)… Obdelava sprožilcev za man-db (2.7.6.1-2)… Nastavitev gita (1: 2.11.0-3+deb9u3)…
Zdaj se vrnite na WinSCP in se pomaknite do mape /home /pi. Nato na desni strani tega okna WinScp z desno miškino tipko kliknite in izberite ustvarjanje novega imenika, imenovanega "parkiranje"
Nazaj na zaslonu PuTTY lahko vnesete ls, da potrdite, da ste naredili novo mapo v pi. Nato vnesite to:
cd p [TAB]Nasvet: Če pritisnete tipko TAB, se bo delno ime samodejno dokončalo
Za vstop v ta imenik pritisnite tipko enter.
pi@raspberrypi: ~ $ cd parkiranje/
pi@raspberrypi: ~/parking $ ls
Zdaj lahko dobimo gonilniške datoteke tako, da v PuTTY vnesemo naslednje:
git clone
Izhod bo videti nekako takole:
pi@raspberrypi: ~/parking $ git clone
Kloniranje v 'rpi-rgb-led-matrix' … daljinsko: štetje predmetov: 3740, končano. daljinsko: Skupaj 3740 (delta 0), ponovno uporabljeno 0 (delta 0), ponovno uporabljeno 3740 Prejemni predmeti: 100% (3740/3740), 20,61 MiB | 1,32 MiB/s, končano. Reševanje delt: 100% (2550/2550), končano.
Zdaj sestavite datoteke gonilnikov LED, tako da greste v ta novi imenik 'rpi-rgb-led-matrix' in vnesete ukaz make:
cd r [TAB]
narediti In tako je izgledalo na naši deski
pi@raspberrypi: ~/parkiranje $ cd rpi-rgb-led-matrix/
pi@raspberrypi: ~/parking/rpi-rgb-led-matrix $ make make -C./lib make [1]: Vnos imenika '/home/pi/parking/rpi-rgb-led-matrix/lib' g ++- I../ vključi -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o gpio.o gpio.cc g ++ -I../ vključi -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o led -matrix.o led-matrix.cc g ++ -I../ vključi - Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o options -initialize.o options-initialize.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o framebuffer.o framebuffer.cc g ++ -I../ include -Wall -O3 -g - fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o thread.o thread.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = ' "regular" '-Wextra -Wno -unused -parameter -fno -exceptions -c -o bdf -font.o bdf -fon t.cc g ++ -I../ vključi -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '' navaden '' -Wextra -Wno -neuporabljen -parameter -fno -izjeme -c -o grafika.o grafika.cc g ++ - I../ vključi -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o transformer.o transformer.cc g ++ -I../ vključi -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o led -matrix -co led-matrix-c.cc cc -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -c -o map -hardware.o hardware -mapping.c g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o content -streamer.o content-streamer.cc g ++ -I../ include -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o pixel -mapper.o pixel-mapper.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -excep tions -c -o multiplex-mappers.o multiplex-mappers.cc ar rcs librgbmatrix.a gpio.o led-matrix.o options-initialize.o framebuffer.o thread.o bdf-font.o graphics.o transformer.o led-matrix-co strojno preslikavanje.o vsebina-streamer.o pixel-mapper.o multiplex-mappers.o g ++-deljena -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 preslikava strojne opreme.o content-streamer.o pixel-mapper.o multiplex-mappers. o -lpthread -lrt -lm -lpthread make [1]: Zapustitev imenika '/home/pi/parking/rpi -rgb -led -matrix/lib' make -C examples -api -use make [1]: Vnos imenika ' /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]: Vnos imenika '/home/pi/parking/rpi-rgb-led-matrix/lib' make [2]: Zapustitev imenika '/home/pi /parking/rpi-rgb-led-matrix/lib 'g ++ demo-main.o -o demo -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ vključujejo -Wall -O3 -g -Wextra -Wno -unused -parameter -c -o minimal -example.o minimalno-example.cc g ++ minimalno -example.o - o minimalni primer -L../ lib -lrgbmatrix -lrt -lm -lpthread cc -I../ vključi -Wall -O3 -g -Wextra -Wno -unused -parameter -c -o c -example.o c- example.c cc c -example.o -o c -primer -L../ lib -lrgbmatrix -lrt -lm -lpthread -lstdc ++ g ++ -I../ vključi -Wall -O3 -g -Wextra -Wno -unused- parameter -c -o text -example.o text-example.cc g ++ text -example.o -o text -example -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall - O3 -g -Wextra -Wno-unused-parameter -c -o drsenje-besedilo-example.o drsenje-besedilo-primer.cc g ++ drsenje-besedilo-primer.o -o drsenje-besedilo-primer -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ vključujejo -Wall -O3 -g -Wextra -Wno -unused -parameter -c -o clock.o clock.cc g ++ clock.o -o clock -L.. /lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ vključujejo -Wall -O3 -g -Wextra -Wno -unused -parameter -c -o ledcat.o ledcat.cc g ++ le dcat.o -o ledcat -L../ lib -lrgbmatrix -lrt -lm -lpthread make [1]: Zapustitev imenika '/home/pi/parking/rpi -rgb -led -matrix/examples -api -use' pi @raspberrypi: ~/parking/rpi-rgb-led-matrix $
Naš naslednji korak bo vezava matrične knjižnice RGB na Python. Za ta projekt smo uporabili privzeti Python 2. Zato za to vezavo vnesemo naslednjo vrstico naenkrat, kot prej:
sudo apt-get update && sudo apt-get install python2.7-dev python-pillow -y
make build-python sudo make install-python
Opomba: Eno opozorilo o '-Wstrict-prototype', ki se prikaže pri izvajanju obeh stavkov make, lahko varno prezrete. Ukazi make naredijo nekaj minut za zagon in v času, ko so zaposleni, ne rečejo ničesar. Zato se ne bojte - vaš pi bi se moral kmalu vrniti;)
Tu je delni izpis prve izjave o izdelavi:
gradnja "grafične" razširitve
arm -linux -gnueabihf -gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict -prototipi -fno -strog -vzdevek -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 -varnost -fPIC -I../../ vključi -I/usr/include/python2.7 -c rgbmatrix/graphics.cpp -o build/temp.linux- armv6l-2.7/rgbmatrix/graphics.o -O3 -Wall cc1plus: opozorilo: možnost ukazne vrstice '-Wstrict-prototypes' velja za C/ObjC, ne pa za C ++ arm-linux-gnueabihf-g ++ -pthread -shared -Wl, -O1 -Wl, -Bsymbolic -functions -Wl, -z, relro -fno -striktno -vzdevek -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict -prototipi -Wdate -time -D_FORTIFY_SOURCE = 2 -g -fdebug -predpona -map =/build/python2.7-kKRR4y/python2.7-2.7.13 =. -fstack -protector -strong -Wformat -Werror = format -varnost -Wl, -z, relro -Wdate -time -D_FORTIFY_SOURCE = 2 -g -fdebug -prefix -map =/build/python2.7 -kKRR4y/python2.7 -2,73,13 =. -fstack -protector -strong -Wformat -Werror = format -varnost build/temp.linux -armv6l -2.7/rgbmatrix/graphics.o -L../../ lib -lrgbmatrix -o./rgbmatrix/graphics.so naredi [1]: Zapustitev imenika '/home/pi/parking/rpi-rgb-led-matrix/bindings/python' pi@raspberrypi: ~/parking/rpi-rgb-led-matrix $
Nato bomo namestili knjižnico pigpio C. Če želite to narediti pravilno, morate to narediti iz vira, zato vnesite naslednje vrstice:
cd ~
sudo rm -rf PIGPIO wget abyz.me.uk/rpi/pigpio/pigpio.zip razpakiraj pigpio.zip cd PIGPIO make sudo make install rm pigpio.zip
Zgornja namestitev traja približno 3 minute.
Zdaj je čas, da dobimo projektne datoteke Python. Vnesite naslednje:
cd ~
cd/home/pi/parking/rpi-rgb-led-matrix/bindings/python/vzorci wget https://s3.amazonaws.com/microedco/tinyLiDAR/Raspberry+Pi/tinyL_parking.zip unzip -j tinyL_parking.zip rm tinyL_parking.zip
Nato za izvedbo vnesite naslednje:
sudo python parking.py
Ampak tega vam ni treba storiti zdaj, saj moramo še vedno vse povezati …
7. korak: Žice
Kot smo že omenili, smo LED ploščo napajali iz istega napajalnika, ki napaja pi. Če želite to narediti, boste morali zajetne rdeče in črne žice spojiti na moške zatiče glave, da jih boste lahko priključili na zatiča 2 in 9 40 -pinskega priključka pi.
Zdaj izklopite napajanje pi in priključite LED ploščo, kot je prikazano na zgornji slikovni shemi. Zaenkrat pustite odklopljen pin 2.
OPOMBA: Matrična plošča LED se lahko včasih vklopi v funky stanju. Če se to zgodi, lahko močno obremeni vaš napajalnik, ne glede na to, kakšno trenutno zmogljivost ima. To smo opazili med razvojem naše klopi, ki lahko zagotovi več kot 4 ampere. Rešitev tega je, da najprej zaženete kodo pi in nato priključite pin 2 za napajanje LED plošče. Na ta način naj bi plošča prišla v stanje nizke porabe, saj izpira naključna stanja LED. Tišni tok (vse LED diode so izklopljene) za našo LED ploščo je bil le 50 mA pri 5v.
CAT5
Uporabili smo 25 -metrski ethernetni kabel CAT5 in ga prilagodili, da smo ga na enem koncu priklopili na zatiče pi glave in na drugi strani sprejeli zatiče konektorja GROVE, da bi lahko podaljšali razdaljo do našega senzorja tinyLiDAR. Zgornje fotografije prikazujejo ta kabel pred in po spremembah. Barv žic zatiča glave ne upoštevajte, ker niso povezane z diagrami. Prepričajte se, da sistem priključite, kot je prikazano na slikovnih diagramih povezav, prikazanih prej v 3. koraku.
8. korak: Prižgite
Pravilno začetno zaporedje vklopa mora biti, da polnilnik microUSB priključite v pi in počakate, da modre LED na senzorjih tinyLiDAR hitro utripajo, kar kaže, da izvajajo meritve. To dokazuje, da koda deluje pravilno.
Nato lahko počasi, a trdno priključite nožico 2 za napajanje LED plošče. Bodite previdni, da pri tem ne pride do napake! Če LED plošča prikazuje nekaj zamrznjenih svetlih LED, potem je verjetno napaka, zato odstranite napajanje microUSB iz pi in počakajte nekaj sekund, da znova poskusite zaporedje vklopa.
Če želite zagnati kodo, vnesite naslednje:
cd/home/pi/parking/rpi-rgb-led-matrix/vezave/python/vzorci
sudo python parking.py
Če je vse v redu, bi morali dobiti zaslon, podoben tistemu, ki je prikazan v videoposnetku.
Na hitro si oglejte kodo parking.py, če želite razumeti, katere omejitve smo uporabili. Privzeto za sprednji senzor je 200 mm. Ker je razpon senzorjev od 11 mm do 2 m, je dobro, da razdaljo nom_parked_Front ohranite na 200 mm ali več. Stranski senzor nom_parked_Side je nastavljen na 600 mm. Za kodo Python, ki prikazuje te konfiguracijske možnosti, si oglejte zgornjo sliko.
Če vse deluje, lahko namestite sistem v svojo garažo in po potrebi prilagodite zgornje parametre. Ker je vaš pi povezan z vašim WiFi -jem, lahko vedno vstopite in uredite nastavitve razdalje, kot jih potrebujete za določeno nastavitev garaže, medtem ko je še vedno nameščena.
Je to zdaj?
Zakaj da, da je! - čas za veseli ples:)
Hvala za branje in uživajte v svojem novem parkirnem asistentu!
9. korak: Izbirni korak in koristni ukazi
Izbirni korak - dodatek FTP za sublimno besedilo
Za urejanje datotek skripta Python neposredno na pi lahko namestimo dodatek FTP, imenovan Sublime SFTP by Wbond. Ta dodatek lahko prenesete po naslednjih navodilih
Za nastavitev tega dodatka moramo konfigurirati poverilnice FTP pod datoteko | SFTP/FTP | Nastavitveni strežnik … stran.
Za namestitev smo uporabili:
"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",
Uporabite Ctrl+S ali Datoteka | Shrani, če želite shraniti te podatke. Od vas bo zahtevano ime, da pokličete to konfiguracijo. Preprosto smo ga poimenovali "rpizw_0_200"
Zdaj se prijavite v pi iz SublimeText, pojdite na Datoteka | SFTP/FTP | Brskanje po strežniku…
Na seznamu možnosti, ki se odprejo, izberite. Želeli boste izbrati profil z imenom, ki ste ga navedli zgoraj;) Sledite navodilom za krmarjenje po mapah in urejanje želene datoteke.
Koristni dodatki
Uporabni ukazi Linuxa za uporabo na pi.
Preden odklopite pi, ga vedno IZKLOPITE, da ne pride do poškodb datotek na kartici microSD. Vnesite ta ukaz:
sudo shutdown zdaj
in počakajte, da se zelena lučka izklopi, preden izklopite napajanje. Podobno za ponovni zagon lahko vnesete:
sudo znova zaženi
Za seznam datotek v imeniku uporabite to:
ls
Tu lahko najdete druge koristne ukaze za Linux
Priporočena:
Arduino pomočnik pri parkiranju - vsakič parkirajte avto na pravo mesto: 5 korakov (s slikami)
Arduino pomočnik pri parkiranju - vsakič parkirajte avto na pravo mesto: v tem projektu vam bom pokazal, kako z uporabo Arudina zgraditi svojega lastnega parkirnega pomočnika. Ta pomočnik pri parkiranju meri razdaljo do vašega avtomobila in vas vodi, da ga parkirate na pravem mestu z odčitkom LCD zaslona in LED, ki napreduje
Naredi sam - Arduino pomočnik pri parkiranju V2: 6 korakov
Naredi sam - Arduino pomočnik pri parkiranju V2: Ko ti življenje podari banane !!!!! Samo pojejte jih. Nujnost je mati izumov in tega dejstva ne bom zanikal. Odkrito povedano, to je drugič, da sem naletel na našo garažno steno, odkar smo se vselili v to novo hišo. To je to, ne bi bilo t
Laserski pomočnik pri parkiranju: 12 korakov
Laserski pomočnik pri parkiranju: Žal moram svojo garažno delavnico deliti z našimi avtomobili! To ponavadi dobro deluje, če pa je kateri od naših avtomobilov parkiran predaleč na stojnici, se komaj premikam po vrtalnem stroju, rezkalnem stroju, namizni žagi itd. Nasprotno, če
Pomočnik pri parkiranju v garaži: 10 korakov (s slikami)
Pomočnik pri parkiranju v garaži: Pozdravljeni, tako da …… Teniška žogica mi visi s strehe v garaži, da pokaže, kje se ustaviti pri parkiranju v garaži. (Veš ….. tista, ki te nenehno rotira po glavi, ko hodiš po garaži!): OTo ne reši t
Arduino pomočnik pri parkiranju: 17 korakov (s slikami)
Arduino pomočnik pri parkiranju: Tisti, ki imamo majhne garaže, poznamo razočaranje zaradi parkiranja malo predaleč ali malo predaleč in ne moremo hoditi okoli vozila. Pred kratkim smo kupili večje vozilo, ki ga je treba popolnoma parkirati v garaži, da