Spisu treści:

System wspomagania parkowania oparty na Pi: 9 kroków
System wspomagania parkowania oparty na Pi: 9 kroków

Wideo: System wspomagania parkowania oparty na Pi: 9 kroków

Wideo: System wspomagania parkowania oparty na Pi: 9 kroków
Wideo: Próba precyzyjnego parkowania, ultradźwiękowy czujnik odległości, arduino 2024, Listopad
Anonim
System wspomagania parkowania oparty na Pi
System wspomagania parkowania oparty na Pi

No hej! Oto fajny mały projekt, który możesz zrobić w jedno popołudnie, a następnie używać go codziennie. Jest oparty na Raspberry Pi Zero W i pomoże Ci za każdym razem idealnie zaparkować samochód.

Oto pełna lista potrzebnych części:

  • Raspberry Pi Zero W (w tym artykule nazwiemy to „rpi” lub „pi”)
  • Karta micro SD o pojemności 4 GB lub większej dla pi OS
  • Dwa moduły czujników odległości tinyLiDAR Time of Flight
  • Panel LED 32x32 RGB (jest wielu producentów z różnymi punktami, możesz na przykład użyć Adafruit 1484 lub podobnego, po prostu wyszukaj '32x32 LED Matrix' w Google). Nasz panel miał rozstaw 6 mm.
  • 25 stóp kabla CAT5
  • około 22 kolorowe przewody połączeniowe z męskiego na męskie
  • Zasilacz microUSB 5v 2Amp (ładowarka do telefonu komórkowego)Wszystko w zestawie? Chodźmy!

Podsumowanie TL; DR

  • Pobierz Raspbian Lite OS dla rpi
  • Skonfiguruj pi, aby działał bezgłowo przez Wi-Fi ze statycznym adresem IP
  • Skonfiguruj swoje środowisko programistyczne na PC za pomocą PuTTY, WinSCP i opcjonalnie SublimeText z dodatkiem FTP
  • Pobierz, utwórz i powiąż sterownik panelu LED
  • Pobierz i zainstaluj pigpio
  • Pobierz nasz kod Pythona
  • Podłącz panel wyświetlacza LED 32x32
  • Wykonaj przedłużacz CAT5 dla bocznego czujnika tinyLiDAR
  • Opcjonalny krok (ale tylko dla zaawansowanych użytkowników): zrób szybki szczęśliwy taniec, gdy wszystko działa;)

Krok 1: Co to jest Pi Zero W?

Co to jest Pi Zero W?
Co to jest Pi Zero W?

Bez wątpienia słyszałeś o Raspberry Pi, ale co to do cholery jest pi „Zero W”?

Raspberry Pi Zero i Zero W były nowszymi dodatkami do rodziny Pi, co oznaczało więcej dla IoT i innych tanich aplikacji wbudowanych. Są to okrojone wersje oryginalnej płyty pi, ale wciąż z potężnym procesorem 1 GHz. Oto dobre porównanie wszystkich modeli.

Korzyścią dla nas przy wyborze Pi Zero W w porównaniu z innymi płytami kontrolera jest to, że możemy go łatwo zaprogramować w języku Python wyższego poziomu, jednocześnie korzystając z szybkich sterowników panelu LED C/C++. Jest również atrakcyjnie wyceniony za jedyne 10 USD.

Pamiętaj, że skoro ta płyta jest uproszczoną wersją pełnego pi – niektóre rzeczy się zmieniły. W szczególności wyeliminowano gniazdo Ethernet, złącze HDMI zmieniono na rozmiar mini, a cztery porty USB zostały uproszczone do jednego typu micro USB. Na pokładzie jest jeszcze jedno złącze micro USB, ale służy ono tylko do zasilania płyty. Wyeliminowanie wszystkich pełnowymiarowych złączy USB wprowadza pewne komplikacje. Mianowicie, jak podłączyć klawiaturę i mysz? Standardowe urządzenia peryferyjne i koncentratory USB wykorzystują złącza typu A, a nie mikro.

Więc co możemy zrobić?

Możemy iść bez głowy!

Nie, nie zamierzamy zwariować, ale użyć alternatywy dla normalnej bezpośredniej konfiguracji przewodowej. Headless oznacza „tunelowanie” do pi zdalnie za pomocą bezpiecznego połączenia sieciowego (SSH). W tym projekcie użyjemy podejścia bezgłowego przez Wi-Fi. Stąd powód, dla którego wybraliśmy wersję W pi zero zamiast jeszcze niższego kosztu pi zero.

Zauważ, że istnieje również inny sposób na uruchomienie pi w trybie bezgłowym za pomocą czegoś zwanego VNC. Potrzebuje specjalnego oprogramowania VNC działającego na twoim komputerze, ponieważ zapewnia pełny wirtualny pulpit graficzny na twoim komputerze. Nie potrzebujemy (i naprawdę nie chcemy) pulpitu dla naszego projektu, więc pozostaniemy przy prostszej metodzie SSH.

Krok 2: Scotty, potrzebujemy więcej mocy

Scotty, potrzebujemy więcej mocy!
Scotty, potrzebujemy więcej mocy!

Sam panel matrycowy LED 32x32 może pobierać kilka amperów prądu. Bez żartów! Dlatego większość tych paneli zawiera solidnie wyglądające kable zasilające, które je zasilają. Na szczęście dla nas, do tego projektu nie będziemy potrzebować potężnego zasilacza. Byliśmy w stanie zasilić cały ten system tylko z zapasowej ładowarki microUSB 5v/2amp, którą mieliśmy w pobliżu. Powodem niższego prądu jest to, że używamy stosunkowo prostej grafiki i dlatego nie włączamy większości diod LED. Jeśli myślisz o tworzeniu animacji lub użyciu wideo/jasnej grafiki, zdecydowanie powinieneś rozważyć zasilanie panelu z osobnego zasilacza.

Krok 3: Rozmieszczenie czujnika i oprogramowanie

Umieszczenie czujnika i oprogramowanie
Umieszczenie czujnika i oprogramowanie
Umieszczenie czujnika i oprogramowanie
Umieszczenie czujnika i oprogramowanie

Czy zauważyłeś, że w tym systemie używamy dwóch maleńkich LiDARów zamiast jednego? Jak pokazano na schemacie ustawienia garażu, jeden jest umieszczony z przodu samochodu, a drugi wzdłuż jednego boku samochodu.

Boczny czujnik wykryje, czy zbaczasz z centrum podczas parkowania samochodu, a przedni oczywiście poinformuje Cię, kiedy się zatrzymać.

Wyświetlacz LED 32x32 pomoże Ci, pokazując strzałki do poruszania się do przodu, w lewo lub w prawo oraz wyświetlacz odliczający z kolorowymi rogami, aby wskazać, jak daleko jeszcze musisz jechać. Zapraszamy do obejrzenia naszego krótkiego filmu dla wszystkich stanów wyświetlania.

Plan gry

Krótko mówiąc, używamy popularnej biblioteki hzeller C dla sterownika LED, Pythona dla kodu sterującego i biblioteki pipgpio C dla prawidłowego sterowania naszymi czujnikami I2C.

Python to bardzo łatwy język wysokiego poziomu, który można łatwo edytować w dowolnym edytorze tekstu. Zwykle używamy SublimeText, a do tego projektu użyliśmy również bardzo przydatnej wtyczki FTP, która pozwala nam edytować pliki skryptów bezpośrednio na pi. Jest to krok opcjonalny, ponieważ jest potrzebny tylko wtedy, gdy chcesz edytować kod. Więcej szczegółów znajdziesz na końcu tego artykułu.

Jak zapewne wiesz, wszystkie płyty RPI nie obsługują natywnie rozciągania zegara I2C. Dlatego ponownie wykorzystaliśmy bibliotekę pigpio w tym projekcie do sterowania czujnikami tinyLiDAR, ale tym razem z lekkim skręceniem…

Wiele tinyLiDAR

Kiedy kupujesz tinyLiDAR, zawsze jest ustawiony na domyślny adres slave 0x10. Jest to dobre, gdy używasz jednego czujnika, ale jeśli masz więcej niż jeden w magistrali, może być problem, jeśli napiszesz polecenie do 0x10 i wszystkie odpowiedzą!

Mamy więc tutaj 3 opcje:

Po pierwsze, możemy użyć polecenia (tinyLiDAR) „R”, aby zapisać nowy adres urządzenia podrzędnego do jednego czujnika podłączonego do magistrali I2C. Następnie powtórz to dla każdego czujnika. Fizyczne podłączanie, pisanie i odłączanie każdego czujnika na potrzeby tej procedury. tinyLiDAR zachowa podany adres w swojej wbudowanej pamięci nieulotnej. Adres będzie trwał nawet po wyłączeniu zasilania, dopóki go nie wyczyścisz, wydając polecenie RESET.

Drugą opcją jest skorzystanie z wygodnej funkcji Auto Assign, którą stworzyliśmy jako stretch goal w kampanii IGG. Obejmuje to wysłanie polecenia „AR”, a następnie wskazanie palcem każdego czujnika indywidualnie, aby automatycznie przypisać sekwencyjne adresy I2C do poszczególnych czujników, podobnie jak w pierwszej opcji, ale nie musisz fizycznie odłączać każdego czujnika, aby to zrobić.

Trzecia opcja to ta, której używamy w tym projekcie i jest to możliwe dzięki bibliotece pigpio. Aby poprawnie zaimplementować standard I2C, pigpio bije GPIO. Dzięki temu możemy łatwo tworzyć oddzielne magistrale I2C na niemal każdej parze zapasowych pinów GPIO.

Dlatego nie ma potrzeby ponownego programowania adresów urządzeń podrzędnych dla wielu czujników LiDAR. Możemy po prostu skorzystać z osobnego autobusu dla każdego z nich:)

Zauważ, że magistrala I2C działająca z szybkością 100Kbps jest w rzeczywistości dość solidna. Używamy zwykłego starego kabla ethernetowego CAT5, aby poprowadzić magistralę I2C do bocznego czujnika tinyLiDAR, który jest oddalony o pełne 25 stóp bez żadnych aktywnych komponentów wzmacniacza! Szczegóły okablowania czujnika pokazano powyżej.

Dobra, dosyć jibbera, zacznijmy pobierać kod!

Krok 4: Konfiguracja Pi

Konfiguracja Pi
Konfiguracja Pi
Konfiguracja Pi
Konfiguracja Pi

Uwaga: pi używa systemu plików Linux, więc najlepiej wykonać następujące kroki w systemie opartym na systemie Linux. Jeśli zrobisz to w systemie Windows, możesz ponownie sformatować kartę SD. Użyliśmy niesamowitego i darmowego pulpitu Ubuntu 18.04 działającego w środowisku wirtualnym na komputerze z systemem Windows 10, ale możesz spróbować czegoś podobnego.

Musisz najpierw pobrać system operacyjny z raspberrypi.org, a następnie nagrać go na kartę microSD. Więc wykonaj następujące kroki:

(1) W Ubuntu przejdź tutaj i pobierz obraz Raspbian Lite. Zapisz go w folderze pobierania.

(2) Następnie pobierz narzędzie do zapisywania kart SD Etcher. FYI - oficjalny link do pobrania Etcher dla wersji Linux na ich stronie głównej nie działał dla nas, więc zamiast tego użyliśmy metody opisanej tutaj:

Podsumowując kroki opisane w linku to:

Dodaj repozytorium Debiana Etcher:

echo "deb https://dl.bintray.com/resin-io/debian stabilny wytrawiacz" | koszulka sudo /etc/apt/sources.list.d/etcher.list

Zaufaj kluczowi GPG Bintray.com:

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

Zaktualizuj i zainstaluj:

aktualizacja sudo apt-get

sudo apt-get install wytrawiacz-elektron

Po zakończeniu możesz kontynuować i uruchomić Etcher z pulpitu Ubuntu. Poprosi Cię o plik źródłowy (który umieścisz w folderze pobierania). Następnym krokiem w Etcher jest wybranie właściwego miejsca docelowego. Etcher dobrze sobie radzi z wykrywaniem karty micro SD, ale powinieneś być tutaj paranoikiem. Aby sprawdzić, czy znajduje właściwe miejsce docelowe - spróbuj wysunąć kartę microSD, klikając wysuń w oknie eksploratora plików Ubuntu i sprawdź, czy znika jako opcja docelowa w Etcher. Następnie włóż go z powrotem i przejdź do ostatniego kroku, którym jest zapisanie pliku na tej karcie microSD.

Poczekaj chwilę, aż to się skończy, a następnie kontynuuj.

Krok 5: Czas Wi-Fi

Czas Wi-Fi
Czas Wi-Fi
Czas Wi-Fi
Czas Wi-Fi

Okej, więc teraz nadszedł czas, aby wprowadzić dane Wi-Fi.

Wskazówka: zawsze możesz skopiować (Ctrl + C) i wkleić (kliknij prawym przyciskiem myszy, wklej) informacje z tego artykułu do ekranu terminala PuTTY zamiast wpisywać polecenia. Sprawdź również koniec tego artykułu, aby uzyskać kilka przydatnych poleceń systemu Linux.

Gdy Etcher zakończy zapisywanie na karcie micro SD, pojawią się 2 dyski, jak pokazano powyżej. Jeden nazywa się boot, a drugi rootfs

Musimy użyć menedżera plików, aby przejść do folderu rozruchowego i utworzyć plik o nazwie wpa_supplicant.conf.

Aby wykonać ten krok, możesz po prostu kliknąć po lewej stronie, gdzie jest napisane boot, a następnie po prawej stronie ekranu możesz kliknąć prawym przyciskiem myszy białe tło i wybrać Otwórz w terminalu.

Spowoduje to otwarcie okna terminala (podobnego do CMD w systemie Windows), w którym możesz wpisać:

sudo nano wpa_supplicant.conf Wskazówka: musisz wprowadzić hasło systemu Linux, aby mógł działać jako superużytkownik. Jest to wymagane, w przeciwnym razie nie będziesz mógł zapisać plików po zakończeniu edycji

Powyższe polecenie uruchomi edytor tekstu „nano”, w którym możesz wprowadzić następujące informacje:

kraj = Stany Zjednoczone

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 }

Uwaga: Pamiętaj, aby zastąpić WiFi_SSID i WiFi_Password własną nazwą sieci WiFi i hasłem.

Kiedy skończysz, po prostu kliknij Ctrl+X, aby wyjść i odpowiedz Tak, aby zapisać plik po wyjściu.

Naszym następnym krokiem jest utworzenie pustego pliku o nazwie ssh. Aby to zrobić, po prostu wpisujemy w oknie terminala:

dotknij cicho

Teraz musimy nadać naszemu pi statyczny adres IP, abyśmy wiedzieli, gdzie jest za każdym razem, gdy chcemy się z nim połączyć. Wpisz następujące polecenie w oknie terminala:

sudo nano /etc/dhcpcd.conf

Powinno to ponownie otworzyć edytor tekstu nano i możemy dodać ten tekst na dole pliku:

interfejs wlan0

statyczny adres_ip=192.168.0.routery statyczne=192.168.0.1 statyczne serwery_nazw_domeny=192.168.0.1 8.8.8.8

Uwaga: zakłada się, że prefiks sieci to 192.168.0. Jeśli masz 192.168.1 itd., użyj zamiast tego swojej sieci. Serwer nazw domen 8.8.8.8 jest przeznaczony dla Google i jest tutaj opcjonalny.

Wpisz „exit” w terminalu, aby go zamknąć. Następnie kliknij prawym przyciskiem myszy nazwę rozruchu po lewej stronie okna Menedżera plików i wybierz Wysuń.

Możesz teraz podłączyć tę kartę microSD do swojego pi i podłączyć kabel zasilający microUSB, aby zasilić swoje pi.

Jeśli wszystko pójdzie dobrze, zielona dioda LED będzie migać przez chwilę, jakby korzystała z dysku twardego, i powinna zalogować Cię do sieci Wi-Fi. Daj około minuty na uspokojenie i poczekaj, aż dioda LED zaświeci się na zielono.

Aby sprawdzić, czy wszystko działa, możemy spróbować pingować.

Więc po prostu wpisz poniższy wiersz i sprawdź odpowiedź.

ping 192.168.0.200

W Ubuntu powinieneś otrzymać coś podobnego do tego:

ping 192.168.0.200

PING 192.168.0.200 (192.168.0.200) 56(84) bajtów danych. 64 bajty od 192.168.0.200: icmp_seq=1 ttl=128 time=752 ms 64 bajty od 192.168.0.200: icmp_seq=2 ttl=128 time=5.77 ms 64 bajty od 192.168.0.200: icmp_seq=3 ttl=128 time=7.33 ms ^C --- 192.168.0.200 statystyki ping --- 3 pakiety wysłane, 3 odebrane, 0% utraty pakietów, czas 2001ms rtt min/avg/max/mdev = 5.777/255.346/752.922/351.839 ms

Zauważ, że ping będzie działał, dopóki nie naciśniesz Ctrl + C, aby wyjść.

W systemie Windows powinieneś otrzymać coś takiego:

ping 192.168.0.200

Ping 192.168.0.200 z 32 bajtami danych: Odpowiedź od 192.168.0.200: bajtów=32 czas=4ms TTL=64 Odpowiedź od 192.168.0.200: bajtów=32 czas=5ms TTL=64 Odpowiedź od 192.168.0.200: bajtów=32 czas =6ms TTL=64 Odpowiedź z 192.168.0.200: bajty=32 czas=5ms TTL=64 Statystyki ping dla 192.168.0.200: Pakiety: Wysłane = 4, Odebrane = 4, Utracone = 0 (utrata 0%), Przybliżone czasy podróży w obie strony w milisekundach: Minimum = 4ms, Maksimum = 6ms, Średnia = 5ms

Wszystko dobrze? Dalej…

Krok 6: Logowanie

Logowanie
Logowanie

Teraz, gdy mamy łączność z pi, chcemy wysłać do niego polecenia. Ale jak? PuTTY oczywiście! Możesz pobrać PuTTY z tutajKonfigurowanie PuTTY Po pobraniu oprogramowania PuTTY utwórz profil dla swojego pi z następującymi informacjami:

Nazwa hosta (lub adres IP): 192.168.0.200 Typ połączenia: SSHNadaj temu profilowi nazwę w sekcji Zapisane sesje i naciśnij Zapisz. Możesz użyć dowolnej nazwy, na przykład "rpizw_200"

Aby się zalogować, wystarczy wybrać go z listy i nacisnąć Załaduj. Następnie naciśnij Otwórz. Wprowadź nazwę użytkownika i hasło, aby się zalogować:

nazwa logowania: pi

Domyślne hasło: malina

Oto przykładowa sesja pokazana w PuTTY po zalogowaniu:

zaloguj się jako: pi

[email protected] hasło: Linux raspberrypi 4.14.34+ #1110 Mon Apr 16 14:51:42 BST 2018 armv6l Programy zawarte w systemie Debian GNU/Linux są wolnym oprogramowaniem; dokładne warunki dystrybucji dla każdego programu są opisane w osobnych plikach w /usr/share/doc/*/copyright. Debian GNU/Linux nie jest objęty ABSOLUTNIE ŻADNĄ GWARANCJĄ, w zakresie dozwolonym przez obowiązujące prawo. Ostatnie logowanie: [data i godzina] od 192.168.0.[adres ip] SSH jest włączony i domyślne hasło dla użytkownika 'pi' nie zostało zmienione. Jest to zagrożenie bezpieczeństwa - zaloguj się jako użytkownik 'pi' i wpisz 'passwd', aby ustawić nowe hasło.

Przy pierwszym logowaniu wyświetli ostrzeżenie, że nie zmieniłeś jeszcze hasła. Powinieneś zmienić go na coś mocnego, ale łatwego do zapamiętania, więc zmień go, wpisując passwd i postępuj zgodnie z instrukcjami.

Powinniśmy następnie zaktualizować oprogramowanie na pi, wpisując to:

aktualizacja sudo apt-get && aktualizacja sudo apt-get

Spowoduje to pobranie wszystkich potrzebnych aktualizacji z Twojego połączenia internetowego. Odpowiedz TAK, jeśli pojawi się monit, aby zezwolić na kontynuację, a następnie daj mu trochę czasu na aktualizację.

W tym momencie prawdopodobnie powinniśmy również wyłączyć dźwięk na pi, ponieważ ma złe juju z biblioteką sterowników LED. Skopiuj, wklej kolejno następujące wiersze i naciśnij enter po każdym wierszu:

cd ~

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

Dane wyjściowe będą wyglądały mniej więcej tak:

pi@raspberrypi:~ $ cd ~

pi@raspberrypi:~ $ kot < > czarna lista snd_bcm2835 > > EOF czarna lista snd_bcm2835 pi@raspberrypi:~ $ sudo update-initramfs -u pi@raspberrypi:~ $

Następnie musimy zrestartować pi, aby zmiany zaczęły obowiązywać, więc wpisz następujące polecenie:

sudo zrestartuj teraz

Połączenie zostanie oczywiście zerwane, gdy pi zostanie ponownie uruchomiony, więc możesz zamknąć PuTTY. Spróbuj zalogować się ponownie minutę później.

Teraz nadszedł czas na graficzny menedżer plików FTP o nazwie WinSCP. Możesz pobrać WinSCP stąd

WinSCP jest bardzo podobny do menedżera plików w systemach Windows i Ubuntu. Pozwala nam łatwo przeciągać i upuszczać pliki do i z pi oraz tworzyć katalogi za pomocą prawego kliknięcia myszy.

Po pobraniu będziesz musiał skonfigurować profil dla swojego pi.

Konfiguracja WinSCP W wyskakującym okienku logowania wybierz opcję Nowa witryna. Użyj następujących ustawień sesji:

Protokół pliku: SFTP Nazwa hosta: 192.168.0.200 Nazwa użytkownika: pi Hasło: {niezależnie od tego, na jakie hasło zmieniłeś domyślne w kroku PuTTY powyżej}

W Zaawansowanych ustawieniach witryny przejdź do Środowisko | Katalogi i wprowadź /home/pi dla katalogu zdalnego i cokolwiek chcesz dla ustawienia katalogu lokalnego.

W Zaawansowanych ustawieniach witryny przejdź do Środowisko | Shell i wybierz sudo su - z rozwijanej listy Shell.

Następnie naciśnij Zapisz.

Pozostaw otwarte zarówno WinSCP, jak i PuTTY, wykonując następujące czynności

Przejdź do terminala PuTTY i wprowadź:

cd ~

To przeniesie nas do naszego katalogu domowego wewnątrz pi.

Możemy teraz pobrać bibliotekę sterowników LED z github. Aby użyć najnowszego kodu, będziemy musieli ściągnąć repozytorium, więc musimy zainstalować narzędzie git.

Wpisz to w PuTTY:

sudo apt-get zainstaluj git

odpowiedz Y, aby kontynuować, a zainstalowanie git z Internetu zajmie nam kilka sekund.

Wynik powinien wyglądać mniej więcej tak:

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

Odczytywanie list pakietów… Gotowe Budowanie drzewa zależności Odczytywanie informacji o stanie… Gotowe Zostaną zainstalowane następujące dodatkowe pakiety: git-man liberror-perl Sugerowane pakiety: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn Zostaną zainstalowane następujące NOWE pakiety: git git-man liberror-perl 0 zaktualizowany, 3 nowo zainstalowany, 0 do usunięcia i 0 nie zaktualizowany. Potrzebujesz 4 848 kB archiwów. Po tej operacji wykorzystane zostanie 26,4 MB dodatkowego miejsca na dysku. Czy chcesz kontynuować? [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] Get:3 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf git armhf 1: 2.11.0-3+deb9u3 [3, 388 kB] Pobrano 4 848 kB w ciągu 5 s (878 kB/s) Wybieranie wcześniej niewybranego pakietu liberror-perl.(Odczytywanie bazy danych… obecnie zainstalowane 34363 pliki i katalogi.) Przygotowanie do rozpakowania…/liberror-perl_0.17024-1_all.deb… Rozpakowywanie liberror-perl (0.17024-1)… Wybieranie wcześniej niewybranego pakietu git-man. Przygotowanie do rozpakowania …/git-man_1%3a2.11.0-3+deb9u3_all.deb … Rozpakowywanie git-man (1:2.11.0-3+deb9u3) … Wybieranie wcześniej niewybranego pakietu git. Przygotowanie do rozpakowania …/git_1%3a2.11.0-3+deb9u3_armhf.deb … Rozpakowywanie git (1:2.11.0-3+deb9u3) … Konfigurowanie git-mana (1:2.11.0-3+deb9u3) … Konfigurowanie liberror-perl (0.17024-1) … Wyzwalacze przetwarzania dla man-db (2.7.6.1-2) … Konfigurowanie git (1:2.11.0-3+deb9u3) …

Teraz wróć do WinSCP i przejdź do folderu /home/pi. Następnie po prawej stronie tego okna WinScp kliknij prawym przyciskiem myszy i wybierz utworzenie nowego katalogu o nazwie „parkowanie”

Po powrocie do ekranu PuTTY możesz wpisać ls, aby potwierdzić, że właśnie utworzyłeś nowy folder w pi. Następnie wprowadź to:

cd p[TAB]Wskazówka: naciśnięcie klawisza TAB spowoduje automatyczne uzupełnienie częściowej nazwy za Ciebie

Naciśnij klawisz Enter, aby dostać się do tego katalogu.

pi@raspberrypi:~ $ parking na cd/

pi@raspberrypi:~/parking $ ls

Teraz możemy pobrać pliki sterownika, wpisując w PuTTY:

klon git

Wynik będzie wyglądał mniej więcej tak:

pi@raspberrypi:~/parking $ git clone

Klonowanie do „rpi-rgb-led-matrix”… zdalne: Liczenie obiektów: 3740, gotowe. zdalne: Razem 3740 (delta 0), ponownie wykorzystane 0 (delta 0), ponownie wykorzystane 3740 Obiekty odbiorcze: 100% (3740/3740), 20.61 MiB | 1,32 MiB/s, gotowe. Rozwiązujące delty: 100% (2550/2550), gotowe.

Teraz skompiluj pliki sterownika LED, przechodząc do nowego katalogu „rpi-rgb-led-matrix” i wpisując polecenie make:

cd r[TAB]

robić A tak to wyglądało na naszej tablicy

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

pi@raspberrypi:~/parking/rpi-rgb-led-matrix $ make make -C./lib make[1]: Wejście do katalogu '/home/pi/parking/rpi-rgb-led-matrix/lib' g++ - I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"zwykły"' -Wextra -Wno-nieużywany-parametr -fno-wyjątki -c -o gpio.o gpio.cc g++ -I../include -Ściana -O3 -g -fPIC -DDEFAULT_HARDWARE='"zwykły"' -Wextra -Wno-nieużywany-parametr -fno-wyjątki -c -o led-matrix.o led-matrix.cc g++ -I../include - Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"zwykły"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o options-initialize.o options-initialize.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"zwykły"' -Wextra -Wno-nieużywany-parametr -fno-wyjątki -c -o framebuffer.o framebuffer.cc g++ -I../include -Ściana -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=' "zwykły"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o bdf-font.o bdf-fon t.cc g++ -I../include -Ściana -O3 -g -fPIC -DDEFAULT_HARDWARE='"zwykły"' -Wextra -Wno-nieużywany-parametr -fno-wyjątki -c -o grafika.o grafika.cc g++ - I../include -Ściana -O3 -g -fPIC -DDEFAULT_HARDWARE='"zwykły"' -Wextra -Wno-nieużywany-parametr -fno-wyjątki -c -o transformator.o transformator.cc g++ -I../zawiera -Ściana -O3 -g -fPIC -DDEFAULT_HARDWARE='"zwykły"' -Wextra -Wno-nieużywany-parametr -fno-wyjątki -c -o led-macierz-co led-macierz-c.cc cc -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"zwykły"' -Wextra -Wno-unused-parameter -c -o hardware-mapping.o hardware-mapping.c g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"zwykły"' -Wextra -Wno-nieużywany-parametr -fno-exceptions -c -o content-streamer.o content-streamer.cc g++ -I../include -Ściana -O3 - g -fPIC -DDEFAULT_HARDWARE='"zwykły"' -Wextra -Wno-nieużywany-parametr -fno-wyjątki -c -o pixel-mapper.o pixel-mapper.cc g++ -I../include -Ściana -O3 -g -fPIC -DDEFAULT_HARDWARE='"zwykły"' -Wextra -Wno-nieużywany-parametr -fno-wyjątek 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 sprzęt-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 sprzętowe-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers. o -lpthread -lrt -lm -lpthread make[1]: Opuszczenie katalogu '/home/pi/parking/rpi-rgb-led-matrix/lib' make -C przykłady-api-use make[1]: Wejście do katalogu ' /home/pi/parking/rpi-rgb-led-matrix/examples-api-use' g++ -I../include -Ściana -O3 -g -Wextra -Wno-nieużywany-parametr -c -o demo-main. o demo-main.cc make -C../lib make[2]: Wejście do katalogu '/home/pi/parking/rpi-rgb-led-matrix/lib' make[2]: Opuszczenie katalogu '/home/pi /parking/rpi-rgb-led-matrix/lib' g++ demo-main.o -o demo -L../lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Ściana -O3 -g -Wextra -Wno-nieużywany-parametr -c -o minimalny-przykład.o minimalny-przykład.cc g++ minimalny-przykład.o - o minimalny-przykład -L../lib -lrgbmatrix -lrt -lm -lpthread cc -I../include -Wall -O3 -g -Wextra -Wno-nieużywany-parametr -c -o c-przykład.o c- przykład.c cc c-przykład.o -o c-przykład -L../lib -lrgbmatrix -lrt -lm -lpthread -lstdc++ g++ -I../include -Ściana -O3 -g -Wextra -Wno-nieużywane- parametr -c -o tekst-przyklad.o tekst-przyklad.cc g++ tekst-przyklad.o -o tekst-przyklad -L../lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Wall - O3 -g -Wextra -Wno-nieużywany-parametr -c -o przykład-tekstu-przewijania.o przykład-tekstu-przewijania.cc g++ przykład-tekstu-przewijania.o -o przykład-tekstu-przewijania -L../lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Ściana -O3 -g -Wextra -Wno-nieużywany-parametr -c -o zegar.o zegar.cc g++ zegar.o -o zegar -L.. /lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Wall -O3 -g -Wextra -Wno-nieużywany-parametr -c -o ledcat.o ledcat.cc g++ le dcat.o -o ledcat -L../lib -lrgbmatrix -lrt -lm -lpthread make[1]: Opuszczenie katalogu '/home/pi/parking/rpi-rgb-led-matrix/examples-api-use' pi @raspberrypi:~/parking/rpi-rgb-led-matryca $

Naszym następnym krokiem będzie powiązanie biblioteki macierzy RGB z Pythonem. W tym projekcie użyliśmy domyślnego Pythona 2. Aby wykonać to wiązanie, wpisujemy następującą linię na raz, jak poprzednio:

sudo apt-get aktualizacja && sudo apt-get zainstaluj python2.7-dev python-poduszka -y

zrobić sudo build-python zrobić install-python

Uwaga: Możesz bezpiecznie zignorować jedno ostrzeżenie o '-Wstrict-prototype', które pojawia się podczas uruchamiania dwóch instrukcji make. Wykonanie poleceń make zajmuje kilka minut i nic nie mówi, gdy są zajęte. Więc nie bój się - twoje pi powinno wkrótce wrócić;)

Oto częściowe wyjście z pierwszej instrukcji make:

budowanie rozszerzenia „grafika”

arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-kKRR4y/python2.7-2.7.13=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I../../include -I/usr/include/python2.7 -c rgbmatrix/graphics.cpp -o build/temp.linux- armv6l-2.7/rgbmatrix/graphics.o -O3 -Wall cc1plus: ostrzeżenie: opcja wiersza poleceń '-Wstrict-prototypes' jest poprawna dla C/ObjC, ale nie dla C++ arm-linux-gnueabihf-g++ -pthread -shared -Wl, -O1 -Wl, -Bsymbolic-functions -Wl, -z, relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix -map=/build/python2.7-kKRR4y/python2.7-2.7.13=. -fstack-protector-strong -Wformat -Werror=format-security -Wl, -z, relro -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-kKRR4y/python2.7 -2.7.13=. -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-armv6l-2.7/rgbmatrix/graphics.o -L../../lib -lrgbmatrix -o./rgbmatrix/graphics.so make [1]: Opuszczenie katalogu '/home/pi/parking/rpi-rgb-led-matrix/bindings/python' pi@raspberrypi:~/parking/rpi-rgb-led-matrix $

Następnie zainstalujemy bibliotekę pigpio C. Aby zrobić to poprawnie, musimy zrobić to ze źródła, więc po prostu wpisz następujące wiersze:

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

Powyższa instalacja zajmuje około 3 minut.

Teraz nadszedł czas, aby pobrać nasze pliki projektu w Pythonie. Wpisz następujące informacje:

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

Następnie, aby go wykonać, wpisz:

sudo python parking.py

Ale nie musisz tego teraz robić, ponieważ wciąż musimy to wszystko połączyć…

Krok 7: Przewody

Przewody
Przewody
Przewody
Przewody
Przewody
Przewody
Przewody
Przewody

Jak wspomniano wcześniej, zasilaliśmy panel LED z tego samego zasilacza, który zasila pi. Aby to zrobić, będziesz musiał połączyć grube czerwone i czarne przewody z męskimi pinami nagłówka, aby można je było podłączyć do pinów 2 i 9 40-pinowego złącza pi.

Odłącz teraz zasilanie do pi i podłącz panel LED zgodnie z powyższym schematem obrazkowym. Na razie pozostaw pin 2 odłączony.

UWAGA: Panel z matrycą LED może czasami włączać się w stanie funky. Jeśli tak się stanie, może poważnie obciążyć twój zasilacz, bez względu na jego pojemność prądową. Zauważyliśmy to podczas prac rozwojowych na naszej ławce, która może zapewnić ponad 4 ampery. Rozwiązaniem tego jest najpierw uruchomienie kodu pi, a następnie podłączenie pinu 2, aby zasilić panel LED. W ten sposób panel powinien przejść w stan niskiego poboru mocy, ponieważ wypłukuje losowe stany diod LED. Prąd spoczynkowy (wszystkie diody LED wyłączone) dla naszego panelu LED wynosił tylko 50mA przy 5V.

CAT5

Użyliśmy 25-metrowego kabla Ethernet CAT5 i zmodyfikowaliśmy go, aby podłączyć go do pinów nagłówka pi na jednym końcu i zaakceptować piny złącza GROVE z drugiej strony, abyśmy mogli zwiększyć odległość, aby umieścić nasz boczny czujnik tinyLiDAR. Powyższe zdjęcia pokazują ten kabel przed i po modyfikacjach. Zignoruj kolory przewodów pinów nagłówka, ponieważ nie są one skorelowane ze schematami. Tylko upewnij się, że podłączyłeś system, jak pokazano na obrazkowych schematach połączeń pokazanych wcześniej w kroku 3.

Krok 8: Rozświetl to

Image
Image
Opcjonalny krok i pomocne polecenia
Opcjonalny krok i pomocne polecenia

Prawidłowa początkowa sekwencja uruchamiania powinna polegać na podłączeniu ładowarki microUSB do pi i poczekaniu, aż niebieskie diody LED na czujnikach tinyLiDAR zaczną szybko migać, pokazując, że wykonują pomiary. To dowodzi, że kod działa poprawnie.

Następnie można powoli, ale pewnie podłączyć pin 2 do zasilania panelu LED. Uważaj, aby nie uszkodzić go podczas robienia tego! Jeśli panel LED pokazuje kilka zamrożonych jasnych diod LED, prawdopodobnie jest to usterka, więc odłącz zasilanie microUSB od pi i poczekaj kilka sekund, aby spróbować ponownie uruchomić sekwencję.

Aby uruchomić kod, wpisz:

cd /home/pi/parking/rpi-rgb-led-matrix/wiązania/python/próbki

sudo python parking.py

Jeśli wszystko pójdzie dobrze, powinieneś otrzymać wyświetlacz podobny do tego pokazanego na filmie.

Rzuć okiem na kod parking.py, aby zrozumieć, jakich limitów użyliśmy. Domyślna wartość dla czujnika przedniego to 200mm. Ponieważ zasięg czujnika wynosi od 11 mm do 2 m, dobrym pomysłem jest zachowanie odległości nom_parked_Front na poziomie 200 mm lub wyższym. Czujnik boczny nom_parked_Side jest ustawiony na 600mm. Zobacz powyższe zdjęcie, aby zobaczyć kod Pythona przedstawiający te opcje konfiguracji.

Jeśli wszystko działa, możesz śmiało zamontować system w swoim garażu i dostosować powyższe parametry według potrzeb. Ponieważ jesteś pi jest podłączony do Wi-Fi, zawsze możesz wejść i edytować ustawienia odległości zgodnie z potrzebami dla konkretnej konfiguracji garażu, gdy jest jeszcze zamontowany.

Czy to teraz?

Dlaczego tak, tak jest! -- czas na twój szczęśliwy taniec:)

Dziękujemy za przeczytanie i ciesz się nowym asystentem parkowania!

Krok 9: Opcjonalny krok i pomocne polecenia

Opcjonalny krok - dodatek FTP dla Sublime Text

Aby edytować pliki skryptów Pythona bezpośrednio na pi, możemy zainstalować dodatek FTP o nazwie Sublime SFTP firmy Wbond. Możesz pobrać ten dodatek, postępując zgodnie z instrukcjami tutaj

Aby skonfigurować ten dodatek, musimy skonfigurować poświadczenia FTP w sekcji Plik | SFTP/FTP | Konfiguracja serwera… strona.

Do naszej konfiguracji użyliśmy:

"type": "sftp", "sync_down_on_open": true, "sync_same_age": true, "host": "192.168.0.200", "user": "pi", "password": "TWOJE_HASŁO_RPI_TUTAJ", "port": "22", "remote_path": "/home/pi/", "file_permissions": "664", "dir_permissions": "775", Użyj Ctrl+S lub Plik | Zapisz, aby zapisać te informacje. Zostaniesz poproszony o podanie nazwy, aby wywołać tę konfigurację. Po prostu nazwaliśmy to „rpizw_0_200”

Teraz, aby zalogować się do pi z SublimeText, przejdź do Plik | SFTP/FTP | Przeglądaj serwer…

Wybierz z wyskakującej listy opcji. Będziesz chciał wybrać profil o nazwie określonej powyżej;) Postępuj zgodnie z instrukcjami, aby nawigować po folderach i edytować żądany plik.

Pomocne dodatki

Przydatne polecenia Linuksa do użycia na pi.

Przed odłączeniem pi, ZAWSZE pamiętaj o wyłączeniu go, aby nie doszło do uszkodzenia pliku na karcie microSD. Wpisz to polecenie:

wyłączanie sudo teraz

i poczekaj, aż zielona dioda zgaśnie przed odłączeniem zasilania. Podobnie, aby go zrestartować, możesz wpisać:

sudo zrestartuj teraz

Aby wyświetlić listę plików w katalogu, użyj tego:

ls

Możesz znaleźć inne przydatne polecenia Linuksa tutaj

Zalecana: