Inhaltsverzeichnis:
- Schritt 1: Was ist ein Pi Zero W?
- Schritt 2: Scotty, wir brauchen mehr Leistung
- Schritt 3: Sensorplatzierung und Software
- Schritt 4: Einrichten des Pi
- Schritt 5: WLAN-Zeit
- Schritt 6: Anmelden
- Schritt 7: Drähte
- Schritt 8: Beleuchten Sie es
- Schritt 9: Optionaler Schritt und hilfreiche Befehle
Video: Pi-basiertes Parkassistenzsystem - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Sie da! Hier ist ein cooles kleines Projekt, das Sie an einem einzigen Nachmittag erstellen und dann täglich verwenden können. Es basiert auf dem Raspberry Pi Zero W und hilft Ihnen, Ihr Auto jederzeit perfekt zu parken.
Hier ist die vollständige Liste der Teile, die Sie benötigen:
- Raspberry Pi Zero W (wir werden dies in diesem Artikel "rpi" oder "pi" nennen)
- 4 GB oder größere Micro-SD-Karte für das pi OS
- Zwei tinyLiDAR Time of Flight Distanzsensormodule
- 32x32 RGB LED Panel (dafür gibt es viele Hersteller mit unterschiedlichen Punktabständen, Sie können zum Beispiel das Adafruit 1484 oder ähnliches verwenden, suchen Sie einfach nach '32x32 LED Matrix' bei Google). Unser Panel hatte einen 6mm Pitch.
- 25 Fuß CAT5-Kabel
- ca. 22 farbige Stecker-auf-Stecker-Stift-Überbrückungsdrähte
- 5V 2A microUSB-Netzteil (Handy-Ladegerät)Alles eingestellt? Lass uns gehen!
TL;DR-Zusammenfassung
- Laden Sie Raspbian Lite OS für das rpi. herunter
- Konfigurieren Sie den Pi so, dass er Headless über WLAN mit einer statischen IP läuft
- Richten Sie Ihre PC-Entwicklungsumgebung mit PuTTY, WinSCP und optional SublimeText mit FTP-Add-On ein
- Laden Sie den LED-Panel-Treiber herunter, erstellen und binden Sie ihn
- Pigpio herunterladen und installieren
- Laden Sie unseren Python-Code herunter
- Verdrahten Sie das 32x32 LED-Anzeigefeld
- Machen Sie das CAT5-Verlängerungskabel für den seitlichen tinyLiDAR-Sensor
- Optionaler Schritt (aber nur für Fortgeschrittene): Mache einen schnellen fröhlichen Tanz, wenn alles funktioniert;)
Schritt 1: Was ist ein Pi Zero W?
Sie haben zweifellos vom Raspberry Pi gehört, aber was zum Teufel ist ein Pi 'Zero W'?
Der Raspberry Pi Zero und Zero W waren neuere Ergänzungen der Pi-Familie, die mehr für IoT und andere kostengünstige Embedded-Anwendungen gedacht sind. Sie sind abgespeckte Versionen des ursprünglichen Pi-Boards, aber immer noch mit einem leistungsstarken 1-GHz-Prozessor. Hier ist ein guter Vergleich aller Modelle.
Der Vorteil für uns, den Pi Zero W hier gegenüber anderen Controller-Boards zu wählen, besteht darin, dass wir ihn problemlos in der höheren Python-Sprache programmieren können, während wir weiterhin die schnellen C/C++-LED-Panel-Treiber verwenden. Es hat auch einen attraktiven Preis von nur 10 USD.
Denken Sie daran, dass sich einige Dinge geändert haben, da dieses Board eine abgespeckte Version eines vollständigen Pi ist. Insbesondere wurde die Ethernet-Buchse weggelassen, der HDMI-Anschluss auf Mini-Größe geändert und die vier USB-Ports auf nur einen Micro-USB-Typ vereinfacht. Es gibt einen weiteren Micro-USB-Anschluss an Bord, der jedoch nur zur Stromversorgung des Boards dient. Die Beseitigung aller USB-Anschlüsse in voller Größe führt zu einigen Komplexitäten. Wie können Sie nämlich eine Tastatur und eine Maus anschließen? Standard-USB-Peripheriegeräte und -Hubs verwenden Typ-A-Anschlüsse, nicht die Mikro-Anschlüsse.
Also was können wir tun?
Wir können kopflos werden!
Nein, wir wollen nicht verrückt werden, sondern eine Alternative zum normalen direkten kabelgebundenen Setup verwenden. Headless bedeutet, über eine Secure Shell (SSH)-Netzwerkverbindung aus der Ferne in den Pi zu "tunneln". Für dieses Projekt werden wir den Headless-Ansatz über WiFi verwenden. Dies ist der Grund für uns, die W-Version des Pi Zero anstelle des noch kostengünstigeren Pi Zero zu wählen.
Beachten Sie, dass es auch eine andere Möglichkeit gibt, den Pi im Headless-Modus mit etwas namens VNC auszuführen. Es erfordert jedoch eine spezielle VNC-Software, die auf Ihrem PC ausgeführt wird, da sie einen vollständigen virtuellen grafischen Desktop auf Ihrem PC bereitstellt. Wir benötigen (und wollen) keinen Desktop für unser Projekt, also bleiben wir bei der einfacheren SSH-Methode.
Schritt 2: Scotty, wir brauchen mehr Leistung
Das 32x32 LED-Matrixpanel kann alleine mehrere Ampere Strom aufnehmen. Im Ernst! Aus diesem Grund enthalten die meisten dieser Panels einige kräftig aussehende Stromkabel, um sie mit Strom zu versorgen. Zum Glück für uns werden wir für dieses Projekt jedoch keine massive Stromversorgung benötigen. Wir waren in der Lage, dieses gesamte System mit nur einem 5 V / 2 Ampere microUSB-Handy-Ladegerät zu versorgen, das wir herumliegen hatten. Der Grund für den geringeren Strom ist, dass wir relativ einfache Grafiken verwenden und daher die meisten LEDs nicht einschalten. Wenn Sie daran denken, Animationen zu erstellen oder Video/helle Grafiken zu verwenden, sollten Sie auf jeden Fall in Betracht ziehen, das Panel über ein separates Netzteil mit Strom zu versorgen.
Schritt 3: Sensorplatzierung und Software
Ist Ihnen aufgefallen, dass wir in diesem System zwei tinyLiDARs anstelle von nur einem verwenden? Wie im Garagen-Setup-Diagramm gezeigt, wird einer vor dem Auto und der andere an einer Seite des Autos platziert.
Der seitliche Sensor erkennt, wenn Sie beim Parken des Autos aus der Mitte ausscheren, und der vordere zeigt Ihnen natürlich an, wann Sie anhalten müssen.
Das 32x32 LED-Display unterstützt Sie mit Pfeilen zum Vorwärts-, Links- oder Rechtslauf und einem Countdown-Display mit farbigen Ecken, um anzuzeigen, wie weit Sie noch fahren müssen. Sehen Sie sich unser kurzes Video zu allen Anzeigezuständen an.
Spielplan
Kurz gesagt, wir verwenden die allseits beliebte hzeller C-Bibliothek für den LED-Treiber, Python für den Steuerungscode und die pipgpio C-Bibliothek für die ordnungsgemäße I2C-Steuerung unserer Sensoren.
Python ist eine supereinfache Hochsprache, die Sie problemlos in jedem Texteditor bearbeiten können. Normalerweise verwenden wir SublimeText und für dieses Projekt haben wir auch ein sehr nützliches FTP-Plugin verwendet, mit dem wir die Skriptdateien direkt auf dem Pi bearbeiten können. Dies ist ein optionaler Schritt, da er nur erforderlich ist, wenn Sie den Code bearbeiten möchten. Weitere Details finden Sie am Ende dieses Artikels.
Wie Sie vielleicht wissen, unterstützen alle rpi-Boards nativ kein I2C-Clock-Stretching. Also haben wir für dieses Projekt wieder die pigpio-Bibliothek verwendet, um die tinyLiDAR-Sensoren zu steuern, aber diesmal mit einem kleinen Twist…
Mehrere tinyLiDARs
Wenn Sie ein tinyLiDAR kaufen, ist es immer auf die Standard-Slave-Adresse von 0x10 eingestellt. Dies ist in Ordnung, wenn Sie einen einzelnen Sensor verwenden, aber wenn Sie mehr als einen auf dem Bus haben, kann es ein Problem sein, wenn Sie einen Befehl an 0x10 schreiben und alle antworten!
Also haben wir hier 3 Möglichkeiten:
Zuerst können wir mit dem (tinyLiDAR) "R"-Befehl eine neue Slave-Adresse an den einen Sensor schreiben, der am I2C-Bus angeschlossen ist. Wiederholen Sie dies dann für jeden Sensor. Physisches Anbringen, Schreiben und Abnehmen jedes Sensors für dieses Verfahren. tinyLiDAR speichert die angegebene Adresse in seinem integrierten nichtflüchtigen Speicher. Die Adresse bleibt auch nach dem Aus- und Wiedereinschalten bestehen, bis Sie sie mit dem Befehl RESET löschen.
Die zweite Möglichkeit besteht darin, die praktische Auto-Assign-Funktion zu verwenden, die wir als Stretch Goal in der IGG-Kampagne erstellt haben. Dazu müssen Sie den Befehl "AR" senden und dann mit dem Finger auf jeden Sensor einzeln zeigen, um den einzelnen Sensoren automatisch sequenzielle I2C-Adressen zuzuweisen, ähnlich wie bei der ersten Option, aber Sie müssen dazu nicht jeden Sensor physisch trennen.
Die dritte Option ist die, die wir hier in diesem Projekt verwenden und die dank der pigpio-Bibliothek möglich ist. Um den I2C-Standard richtig zu implementieren, bitbangt pigpio den GPIO. Aus diesem Grund können wir problemlos separate I2C-Busse auf fast jedem Paar von freien GPIO-Pins erstellen.
Daher müssen die Slave-Adressen für die mehreren LiDAR-Sensoren nicht neu programmiert werden. Wir können einfach für jeden einen separaten Bus benutzen:)
Beachten Sie, dass der I2C-Bus mit 100 Kbps eigentlich ziemlich robust ist. Wir verwenden ein einfaches altes CAT5-Ethernet-Kabel, um den I2C-Bus zum seitlichen tinyLiDAR-Sensor zu führen, der volle 25 Fuß entfernt ist, ohne aktive Repeater-Komponenten! Details zur Sensorverdrahtung sind oben gezeigt.
Okay, genug Jibber-Jabber, lass uns den Code herunterladen!
Schritt 4: Einrichten des Pi
Achtung: Das pi verwendet ein Linux-Dateisystem, daher ist es am besten, die folgenden Schritte auf einem Linux-basierten System durchzuführen. Möglicherweise müssen Sie Ihre SD-Karte neu formatieren, wenn Sie dies unter Windows tun. Wir haben den fantastischen und kostenlosen Ubuntu 18.04-Desktop verwendet, der in einer virtuellen Umgebung auf einem Windows 10-PC ausgeführt wird, aber Sie können etwas Ähnliches ausprobieren.
Sie müssen zuerst das Betriebssystem von raspberrypi.org herunterladen und es dann auf Ihre microSD-Karte brennen. Folgen Sie also diesen Schritten:
(1) Gehen Sie in Ubuntu hierher und holen Sie sich das Raspbian Lite-Image. Speichern Sie es in Ihrem Download-Ordner.
(2) Laden Sie als Nächstes das Dienstprogramm zum Schreiben von Etcher SD-Karten herunter. Zu Ihrer Information - der offizielle Etcher-Download-Link für die Linux-Version auf ihrer Homepage hat bei uns nicht funktioniert, also haben wir stattdessen die hier beschriebene Methode verwendet:
Zusammenfassend waren die im Link beschriebenen Schritte:
Etcher-Debian-Repository hinzufügen:
echo "deb https://dl.bintray.com/resin-io/debian stable Etcher" | sudo tee /etc/apt/sources.list.d/etcher.list
Vertrauen Sie dem GPG-Schlüssel von Bintray.com:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
Aktualisieren und installieren:
sudo apt-get update
sudo apt-get install Etcher-Elektron
Sobald Sie fertig sind, können Sie Etcher von Ihrem Ubuntu-Desktop aus starten. Es wird Sie nach der Quelldatei fragen (die Sie in den Download-Ordner legen). Der nächste Schritt in Etcher besteht darin, das richtige Ziel auszuwählen. Etcher erkennt Ihre Micro-SD-Karte gut, aber Sie sollten hier paranoid sein. Um zu überprüfen, ob das richtige Ziel gefunden wurde, versuchen Sie, die microSD-Karte auszuwerfen, indem Sie im Ubuntu-Datei-Explorer-Fenster auf Auswerfen klicken und überprüfen Sie, ob sie als Zieloption in Etcher verschwindet. Stecken Sie es dann wieder ein und fahren Sie mit dem letzten Schritt fort, dem Schreiben der Datei auf diese microSD-Karte.
Warten Sie eine Weile, bis es fertig ist, und fahren Sie dann fort.
Schritt 5: WLAN-Zeit
Okay, jetzt ist es an der Zeit, Ihre WLAN-Daten einzugeben.
Tipp: Sie können jederzeit Informationen aus diesem Artikel in den PuTTY-Terminalbildschirm kopieren (Strg+C) und einfügen (Rechtsklick, Einfügen), anstatt die Befehle einzugeben. Am Ende dieses Artikels finden Sie auch einige hilfreiche Linux-Befehle.
Wenn Etcher mit dem Schreiben auf die Micro-SD-Karte fertig ist, werden 2 Laufwerke angezeigt, wie oben gezeigt. Einer heißt boot, der andere heißt rootfs
Wir müssen den Dateimanager verwenden, um in den Boot-Ordner zu gehen und eine Datei namens wpa_supplicant.conf zu erstellen.
Um diesen Schritt auszuführen, können Sie einfach auf die linke Seite klicken, auf der Boot steht, und dann auf der rechten Seite des Bildschirms mit der rechten Maustaste auf den weißen Hintergrund klicken und Im Terminal öffnen wählen.
Dadurch wird ein Terminalfenster geöffnet (ähnlich CMD in Windows), in das Sie Folgendes eingeben können:
sudo nano wpa_supplicant.conf Tipp: Sie müssen Ihr Linux-Systemkennwort eingeben, damit es als Superuser ausgeführt werden kann. Dies ist erforderlich, sonst können Sie die Dateien nicht speichern, wenn Sie mit der Bearbeitung fertig sind
Der obige Befehl startet dann den "Nano"-Texteditor, in dem Sie die folgenden Informationen eingeben können:
Land = USA
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 }
Hinweis: Denken Sie daran, WiFi_SSID und WiFi_Password durch Ihren eigenen WiFi-Netzwerknamen und Ihr eigenes Passwort zu ersetzen.
Wenn Sie fertig sind, klicken Sie einfach zum Beenden auf Strg+X und antworten Sie mit Ja, um die Datei beim Beenden zu schreiben.
Unser nächster Schritt besteht darin, eine leere Datei namens ssh zu erstellen. Dazu geben wir einfach folgendes in das Terminalfenster ein:
berühren ssh
Jetzt müssen wir unserem Pi eine statische IP-Adresse zuweisen, damit wir jedes Mal wissen, wo es sich befindet, wenn wir eine Verbindung herstellen möchten. Geben Sie im Terminalfenster Folgendes ein:
sudo nano /etc/dhcpcd.conf
Dies sollte den Nano-Texteditor wieder öffnen und wir können diesen Text am Ende der Datei hinzufügen:
Schnittstelle wlan0
statische IP-Adresse=192.168.0.statische Router=192.168.0.1 statische Domänenname_Server=192.168.0.1 8.8.8.8
Hinweis: Dies setzt voraus, dass Ihr Netzwerkpräfix 192.168.0 ist. Wenn Sie 192.168.1 usw. haben, verwenden Sie stattdessen Ihr Netzwerk. Der Domain Name Server 8.8.8.8 ist für Google und hier optional.
Geben Sie 'exit' in das Terminal ein, um es zu schließen. Klicken Sie dann mit der rechten Maustaste auf den Startnamen auf der linken Seite des Dateimanagerfensters und wählen Sie Auswerfen.
Sie können nun diese microSD-Karte in Ihren Pi einstecken und das microUSB-Stromkabel einstecken, um Ihren Pi mit Strom zu versorgen.
Wenn alles gut geht, blinkt die grüne LED eine Weile, als würde sie auf eine Festplatte zugreifen und Sie sollten sich bei Ihrem WLAN-Netzwerk anmelden. Geben Sie ihm etwa eine Minute Zeit, um sich zu beruhigen, und warten Sie, bis die LED durchgehend grün leuchtet.
Um zu überprüfen, ob alles funktioniert hat, können wir versuchen, es zu pingen.
Geben Sie einfach die folgende Zeile ein und suchen Sie nach einer Antwort.
ping 192.168.0.200
Unter Ubuntu sollten Sie etwas Ähnliches erhalten:
ping 192.168.0.200
PING 192.168.0.200 (192.168.0.200) 56(84) Datenbytes. 64 Byte ab 192.168.0.200: icmp_seq=1 ttl=128 time=752 ms 64 Byte ab 192.168.0.200: icmp_seq=2 ttl=128 time=5.77 ms 64 Byte ab 192.168.0.200: icmp_seq=3 ttl=128 time=7.33 ms ^C --- 192.168.0.200 Ping-Statistik --- 3 Pakete gesendet, 3 empfangen, 0% Paketverlust, Zeit 2001ms rtt min/avg/max/mdev = 5.777/255.346/752.922/351.839 ms
Beachten Sie, dass der Ping weiterläuft, bis Sie zum Beenden Strg+C drücken.
Unter Windows sollten Sie so etwas erhalten:
ping 192.168.0.200
Ping 192.168.0.200 mit 32 Byte Daten: Antwort von 192.168.0.200: Byte=32 Zeit=4ms TTL=64 Antwort von 192.168.0.200: Byte=32 Zeit=5ms TTL=64 Antwort von 192.168.0.200: Byte=32 Zeit =6ms TTL=64 Antwort von 192.168.0.200: bytes=32 Zeit=5ms TTL=64 Ping-Statistik für 192.168.0.200: Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust), Ungefähre Roundtrip-Zeiten in Millisekunden: Minimum = 4ms, Maximum = 6ms, Durchschnitt = 5ms
Alles gut? Weiter…
Schritt 6: Anmelden
Nachdem wir nun eine Verbindung zum Pi haben, möchten wir ihm Befehle senden. Aber wie? PuTTY natürlich! Sie können PuTTY von hier herunterladenEinrichten von PuTTY Nachdem Sie die PuTTY-Software heruntergeladen haben, erstellen Sie ein Profil für Ihr pi mit den folgenden Informationen:
Hostname (oder IP-Adresse): 192.168.0.200 Verbindungstyp: SSHGGeben Sie diesem Profil unter Saved Sessions einen Namen und klicken Sie auf Save. Sie können einen beliebigen Namen verwenden, zum Beispiel "rpizw_200"
Um sich anzumelden, wählen Sie es einfach aus der Liste aus und klicken Sie auf Laden. Drücken Sie dann auf Öffnen. Geben Sie den Benutzernamen und das Passwort ein, um sich anzumelden:
Login-Name: pi
Standard-Passwort: Himbeere
Hier ist eine Beispielsitzung, die in PuTTY angezeigt wird, wenn Sie sich anmelden:
Einloggen als: pi
[email protected] Passwort: Linux raspberrypi 4.14.34+ #1110 Mon Apr 16 14:51:42 BST 2018 armv6l Die im Debian GNU/Linux-System enthaltenen Programme sind freie Software; die genauen Vertriebsbedingungen für jedes Programm sind in den einzelnen Dateien in /usr/share/doc/*/copyright beschrieben. Debian GNU/Linux bietet ABSOLUT KEINE GEWÄHRLEISTUNG, soweit dies nach geltendem Recht zulässig ist. Letzte Anmeldung: [Datum und Uhrzeit] von 192.168.0.[IP-Adresse] SSH ist aktiviert und das Standardpasswort für den Benutzer 'pi' wurde nicht geändert. Dies ist ein Sicherheitsrisiko - bitte melden Sie sich als 'pi'-Benutzer an und geben Sie 'passwd' ein, um ein neues Passwort festzulegen.
Bei der ersten Anmeldung wird gewarnt, dass Sie das Passwort noch nicht geändert haben. Sie sollten es in etwas Starkes, aber Einfaches ändern, das Sie sich merken können, also fahren Sie fort und ändern Sie es, indem Sie passwd eingeben und den Anweisungen folgen.
Als nächstes sollten wir die Software auf dem Pi aktualisieren, indem wir Folgendes eingeben:
sudo apt-get update && sudo apt-get upgrade
Dadurch werden alle benötigten Updates von Ihrer Internetverbindung heruntergeladen. Antworten Sie mit JA, wenn Sie aufgefordert werden, die Fortsetzung zuzulassen, und geben Sie ihm dann etwas Zeit zum Aktualisieren.
Zu diesem Zeitpunkt sollten wir wahrscheinlich auch den Ton auf dem Pi ausschalten, da er mit der LED-Treiberbibliothek schlecht läuft. Kopieren Sie die folgenden Zeilen, fügen Sie sie nacheinander ein und drücken Sie nach jeder Zeile die Eingabetaste:
cd ~
Katze <<EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf blacklist snd_bcm2835 EOF sudo update-initramfs -u
Die Ausgabe wird etwa so aussehen:
pi@raspberrypi:~ $ cd ~
pi@raspberrypi:~ $ cat < > blacklist snd_bcm2835 > > EOF blacklist snd_bcm2835 pi@raspberrypi:~ $ sudo update-initramfs -u pi@raspberrypi:~ $
Dann müssen wir das Pi neu starten, damit die Änderungen wirksam werden. Geben Sie also Folgendes ein:
sudo jetzt neu starten
Die Verbindung wird natürlich unterbrochen, wenn der Pi neu gestartet wird, sodass Sie PuTTY schließen können. Versuchen Sie sich eine Minute später erneut anzumelden.
Jetzt ist es an der Zeit, einen grafischen FTP-Dateimanager namens WinSCP zu erwerben. Sie können WinSCP hier herunterladen
WinSCP ist dem Dateimanager unter Windows und Ubuntu sehr ähnlich. Es ermöglicht uns, Dateien einfach per Drag & Drop auf das und vom Pi zu ziehen und Verzeichnisse mit nur einem rechten Mausklick zu erstellen.
Nach dem Herunterladen müssen Sie ein Profil für Ihren Pi einrichten.
WinSCP-Setup Wählen Sie im Anmelde-Popup die Option Neue Site. Verwenden Sie die folgenden Einstellungen für die Sitzung:
Dateiprotokoll: SFTP Hostname: 192.168.0.200 Benutzername: pi Passwort: {das Passwort, auf das Sie den Standard im obigen PuTTY-Schritt geändert haben}
Gehen Sie in den erweiterten Site-Einstellungen zu Umgebung | Verzeichnisse und geben Sie /home/pi für das Remote-Verzeichnis und was auch immer Sie möchten für die Einstellung für das lokale Verzeichnis ein.
Gehen Sie in den erweiterten Site-Einstellungen zu Umgebung | Shell und wählen Sie sudo su - in der Shell-Dropdown-Liste.
Klicken Sie dann auf Speichern.
Lassen Sie WinSCP und PuTTY geöffnet, während Sie die folgenden Schritte ausführen
Gehen Sie zum PuTTY-Terminal und geben Sie Folgendes ein:
cd ~
Dadurch gelangen wir zu unserem Home-Verzeichnis im pi.
Wir können jetzt die LED-Treiberbibliothek von github holen. Um den neuesten Code zu verwenden, müssen wir das Repository abrufen, sodass wir das Dienstprogramm git installieren müssen.
Geben Sie dies in PuTTY ein:
sudo apt-get install git
antworten Sie mit Y, um fortzufahren, und es dauert einige Sekunden, bis wir git aus dem Internet für uns installieren.
Die Ausgabe sollte ungefähr so aussehen:
pi@raspberrypi:~ $ sudo apt-get install git
Paketlisten lesen… Fertig Abhängigkeitsbaum erstellen Statusinformationen lesen… Fertig Die folgenden zusätzlichen Pakete werden installiert: git-man liberror-perl Vorgeschlagene Pakete: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn Die folgenden NEUEN Pakete werden installiert: git git-man liberror-perl 0 aktualisiert, 3 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Benötigen Sie 4.848 kB an Archiven. Nach diesem Vorgang werden 26,4 MB zusätzlicher Speicherplatz verwendet. Wollen Sie fortfahren? [J/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] 4, 848 kB in 5s abgerufen (878 kB/s) Auswahl des zuvor nicht ausgewählten Pakets liberror-perl.(Lesen der Datenbank … 34363 derzeit installierte Dateien und Verzeichnisse.) Vorbereitung zum Entpacken …/liberror-perl_0.17024-1_all.deb … Entpacken von liberror-perl (0.17024-1) … Auswählen des zuvor nicht ausgewählten Pakets git-man. Vorbereitung zum Entpacken …/git-man_1%3a2.11.0-3+deb9u3_all.deb … Entpacken von git-man (1:2.11.0-3+deb9u3) … Auswählen des zuvor nicht ausgewählten Pakets git. Vorbereitung zum Entpacken …/git_1%3a2.11.0-3+deb9u3_armhf.deb … git auspacken (1:2.11.0-3+deb9u3) … git-man einrichten (1:2.11.0-3+deb9u3) … einrichten liberror-perl (0.17024-1) … Trigger für man-db (2.7.6.1-2) verarbeiten … Git einrichten (1:2.11.0-3+deb9u3) …
Gehen Sie nun zurück zu WinSCP und navigieren Sie zum Ordner /home/pi. Klicken Sie dann auf der rechten Seite dieses WinScp-Fensters mit der rechten Maustaste und wählen Sie, um ein neues Verzeichnis namens "parking" zu erstellen.
Zurück im PuTTY-Bildschirm können Sie ls eingeben, um zu bestätigen, dass Sie gerade einen neuen Ordner im pi erstellt haben. Geben Sie dann dieses ein:
cd p[TAB]Tipp: Durch Drücken der TAB-Taste wird der Teilname automatisch für Sie vervollständigt
Drücken Sie die Eingabetaste, um in dieses Verzeichnis zu gelangen.
pi@raspberrypi:~ $ CD-Parkplatz/
pi@raspberrypi:~/parken $ ls
Jetzt können wir die Treiberdateien abrufen, indem wir Folgendes in PuTTY eingeben:
git-Klon
Die Ausgabe sieht in etwa so aus:
pi@raspberrypi:~/parking $ git clone
Klonen in 'rpi-rgb-led-matrix'… remote: Objekte zählen: 3740, fertig. Remote: Gesamt 3740 (Delta 0), wiederverwendet 0 (Delta 0), Pack-wiederverwendet 3740 Empfangende Objekte: 100% (3740/3740), 20,61 MiB | 1,32 MiB/s, fertig. Deltas auflösen: 100 % (2550/2550), fertig.
Kompilieren Sie nun die LED-Treiberdateien, indem Sie in dieses neue Verzeichnis 'rpi-rgb-led-matrix' gehen und den Befehl make eingeben:
cd r[TAB]
machen Und so sah es auf unserem Board aus
pi@raspberrypi:~/parken $ cd rpi-rgb-led-matrix/
pi@raspberrypi:~/parking/rpi-rgb-led-matrix $ make make -C./lib make[1]: Verzeichnis '/home/pi/parking/rpi-rgb-led-matrix/lib' eingeben g++ - I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-Exceptions -c -o gpio.o gpio.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-Exceptions -c -o led-matrix.o led-matrix.cc g++ -I../include - 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=' "regulär"' -Wextra -Wno-unused-parameter -fno-Exceptions -c -o bdf-font.o bdf-fon t.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-Exceptions -c -o graphics.o graphics.cc g++ - I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-Exceptions -c -o Transformator.o Transformator.cc g++ -I../include -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 hardware-mapping.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"' -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 transformator.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 transformator.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mapper. o -lpthread -lrt -lm -lpthread make[1]: Verzeichnis '/home/pi/parking/rpi-rgb-led-matrix/lib' verlassen' make -C Beispiele-api-use make[1]: Verzeichnis betreten ' /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]: Verzeichnis '/home/pi/parking/rpi-rgb-led-matrix/lib' betreten' make[2]: Verzeichnis '/home/pi. verlassen /parking/rpi-rgb-led-matrix/lib' g++ demo-main.o -o demo -L../lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o minimal-example.o minimal-example.cc g++ minimal-example.o - o minimal-example -L../lib -lrgbmatrix -lrt -lm -lpthread cc -I../include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o c-example.o c- example.c cc c-example.o -o c-example -L../lib -lrgbmatrix -lrt -lm -lpthread -lstdc++ g++ -I../include -Wall -O3 -g -Wextra -Wno-unused- Parameter -c -o Textbeispiel.o Textbeispiel.cc g++ Textbeispiel.o -o Textbeispiel -L../lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Wall - O3 -g -Wextra -Wno-unused-parameter -c -o scrolling-text-example.o scrolling-text-example.cc g++ scrolling-text-example.o -o scrolling-text-example -L../lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -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../include -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]: Verlassen des Verzeichnisses '/home/pi/parking/rpi-rgb-led-matrix/examples-api-use' pi @raspberrypi:~/parking/rpi-rgb-led-matrix $
Unser nächster Schritt besteht darin, die RGB-Matrixbibliothek an Python zu binden. Wir haben für dieses Projekt das Standard-Python 2 verwendet. Um diese Bindung durchzuführen, geben wir wie zuvor die folgende Zeile nach der anderen ein:
sudo apt-get update && sudo apt-get install python2.7-dev python-pillow -y
make build-python sudo make install-python
Hinweis: Sie können die eine Warnung zu '-Wstrict-prototype' ignorieren, die beim Ausführen der beiden make-Anweisungen angezeigt wird. Die Ausführung der make-Befehle dauert einige Minuten und sie sagen nichts, während sie beschäftigt sind. Also keine Angst - dein Pi sollte bald wiederkommen;)
Hier ist eine Teilausgabe der ersten make-Anweisung:
'Grafik'-Erweiterung erstellen
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: Warnung: Kommandozeilenoption '-Wstrict-prototypes' ist gültig für C/ObjC aber nicht für C++ arm-linux-gnueabihf-g++ -pthread -shared -Wl, -O1 -Wl, -Bsymbolische-Funktionen -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]: Verzeichnis '/home/pi/parking/rpi-rgb-led-matrix/bindings/python' verlassen pi@raspberrypi:~/parking/rpi-rgb-led-matrix $
Als nächstes installieren wir die pigpio C-Bibliothek. Um dies richtig zu machen, müssen wir es aus der Quelle machen, also geben Sie einfach die folgenden Zeilen ein:
cd ~
sudo rm -rf PIGPIO wget abyz.me.uk/rpi/piggio/piggio.zip entpacken pigpio.zip cd PIGPIO machen sudo machen rm installieren pigpio.zip
Die obige Installation dauert etwa 3 Minuten.
Jetzt ist es an der Zeit, unsere Python-Projektdateien zu erhalten. Geben Sie das folgende ein:
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
Geben Sie dann Folgendes ein, um es auszuführen:
sudo python parkplatz.py
Aber das musst du jetzt nicht machen, da wir noch alles verkabeln müssen…
Schritt 7: Drähte
Wie bereits erwähnt, haben wir das LED-Panel über das gleiche Netzteil mit Strom versorgt, das den Pi mit Strom versorgt. Um dies zu tun, müssen Sie die kräftigen roten und schwarzen Drähte mit den Stiftleisten verbinden, damit sie in die Pins 2 und 9 des 40-Pin-Pi-Anschlusses gesteckt werden können.
Trennen Sie jetzt den Strom vom Pi und verdrahten Sie das LED-Panel gemäß dem obigen Bilddiagramm. Lassen Sie Pin 2 vorerst getrennt.
HINWEIS: Das LED-Matrix-Panel kann manchmal in einem fehlerhaften Zustand hochfahren. Wenn dies passiert, kann dies Ihr Netzteil stark belasten, unabhängig von der aktuellen Kapazität. Dies ist uns während der Entwicklung an unserem Tischnetzteil aufgefallen, das über 4 Ampere liefern kann. Die Lösung hierfür besteht darin, zuerst den Pi-Code auszuführen und dann Pin 2 anzuschließen, um das LED-Panel mit Strom zu versorgen. Auf diese Weise sollte das Panel in einem Energiesparzustand erscheinen, da es die zufälligen LED-Zustände ausspült. Der Ruhestrom (alle LEDs aus) für unser LED-Panel betrug nur 50 mA bei 5 V.
CAT5
Wir haben ein 25-Fuß-CAT5-Ethernet-Kabel verwendet und es so modifiziert, dass es an einem Ende in die Pi-Header-Pins eingesteckt wird und die GROVE-Anschlusspins auf der anderen Seite akzeptiert, damit wir den Abstand verlängern können, um unseren seitlichen tinyLiDAR-Sensor zu platzieren. Die Fotos oben zeigen dieses Kabel vor und nach den Modifikationen. Vernachlässigen Sie die Farben der Kopfstiftdrähte, da sie nicht mit den Diagrammen korrelieren. Stellen Sie einfach sicher, dass Sie Ihr System wie in den bildlichen Anschlussdiagrammen gezeigt verdrahten, die zuvor in Schritt 3 gezeigt wurden.
Schritt 8: Beleuchten Sie es
Die richtige anfängliche Einschaltsequenz sollte darin bestehen, das microUSB-Ladegerät an den pi anzuschließen und zu warten, bis die blauen LEDs an den tinyLiDAR-Sensoren schnell blinken, um anzuzeigen, dass sie Messungen vornehmen. Dies beweist, dass der Code ordnungsgemäß funktioniert.
Sie können dann langsam aber fest Pin 2 für die LED-Panel-Versorgung anschließen. Passen Sie auf, dass Sie dabei keinen Fehler machen! Wenn das LED-Panel ein paar eingefrorene helle LEDs anzeigt, ist es wahrscheinlich defekt. Entfernen Sie also die microUSB-Stromversorgung vom Pi und warten Sie einige Sekunden, um die Einschaltsequenz erneut zu versuchen.
Geben Sie Folgendes ein, um den Code auszuführen:
cd /home/pi/parking/rpi-rgb-led-matrix/bindings/python/samples
sudo python parkplatz.py
Wenn alles gut geht, sollten Sie eine ähnliche Anzeige wie im Video erhalten.
Werfen Sie einen kurzen Blick auf den Parking.py-Code, um zu verstehen, welche Limits wir verwendet haben. Die Standardeinstellung für den Frontsensor beträgt 200 mm. Da der Sensorbereich 11 mm bis 2 m beträgt, ist es eine gute Idee, den nom_parked_Front-Abstand bei 200 mm oder höher zu halten. Der Seitensensor nom_parked_Side ist auf 600mm eingestellt. Siehe obiges Bild für den Python-Code, der diese Konfigurationsoptionen zeigt.
Wenn alles funktioniert, können Sie das System in Ihrer Garage montieren und die oben genannten Parameter nach Bedarf anpassen. Da Ihr Pi mit Ihrem WLAN verbunden ist, können Sie Ihre Entfernungseinstellungen jederzeit nach Bedarf für Ihr spezielles Garagen-Setup bearbeiten, während es noch montiert ist.
Ist das jetzt?
Warum ja, ja ist es! -- Zeit für deinen fröhlichen Tanz:)
Vielen Dank fürs Lesen und viel Spaß mit Ihrem neuen Parkassistenten!
Schritt 9: Optionaler Schritt und hilfreiche Befehle
Optionaler Schritt - FTP-Addon für Sublime Text
Um die Python-Skriptdateien direkt auf dem Pi zu bearbeiten, können wir das FTP-Addon namens Sublime SFTP von Wbond installieren. Sie können dieses Add-on herunterladen, indem Sie den Anweisungen hier folgen
Um dieses Addon einzurichten, müssen wir die FTP-Anmeldeinformationen unter Datei |. konfigurieren SFTP/FTP | Seite Server einrichten….
Für unser Setup haben wir verwendet:
"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", Verwenden Sie Strg+S oder Datei | Speichern, um diese Informationen zu speichern. Sie werden nach einem Namen gefragt, um diese Konfiguration aufzurufen. Wir nannten es einfach "rpizw_0_200"
Um sich nun von SublimeText beim pi anzumelden, gehen Sie zu Datei | SFTP/FTP | Server durchsuchen…
Wählen Sie aus der Liste der angezeigten Optionen aus. Sie sollten das Profil mit dem oben angegebenen Namen auswählen;) Folgen Sie den Anweisungen, um durch die Ordner zu navigieren und die gewünschte Datei zu bearbeiten.
Hilfreiche Extras
Nützliche Linux-Befehle zur Verwendung auf dem Pi.
Bevor Sie den Pi ausstecken, stellen Sie IMMER sicher, dass Sie ihn herunterfahren, damit Sie keine Dateibeschädigung auf Ihrer microSD-Karte erhalten. Geben Sie diesen Befehl ein:
sudo jetzt herunterfahren
und warten Sie, bis die grüne LED erlischt, bevor Sie den Netzstecker ziehen. Um es neu zu starten, können Sie auf ähnliche Weise Folgendes eingeben:
sudo jetzt neu starten
Verwenden Sie dies, um Dateien in einem Verzeichnis aufzulisten:
ls
Weitere hilfreiche Linux-Befehle finden Sie hier