Inhaltsverzeichnis:

TinyLiDAR auf einem Pi? - Gunook
TinyLiDAR auf einem Pi? - Gunook

Video: TinyLiDAR auf einem Pi? - Gunook

Video: TinyLiDAR auf einem Pi? - Gunook
Video: tinyLiDAR DIY ParkingAssist 2024, November
Anonim
TinyLiDAR auf einem Pi?
TinyLiDAR auf einem Pi?

Hallo wieder!

Nun, da Sie einige Zeit mit tinyLiDAR und Ihrem Arduino verbracht haben - Ihr Raspberry Pi fühlt sich vielleicht ein bisschen einsam;)

Der Pi hat einen I2C-Port, oder? Warum also nicht anschließen und dort anprobieren?! Guter Plan, aber wenn Sie es bereits versucht haben, haben Sie vielleicht bemerkt, dass die Daten etwas seltsam aussehen.

Ja, der Pi hat bereits 1,8K-Pull-Ups eingebaut, so dass Sie die I2C-Pads auf tinyLiDAR schneiden müssen, um die 4,7K-Pull-Ups aus dem Stromkreis zu bekommen - siehe Referenzhandbuch für Details. Aber das ist nicht der Grund für die seltsamen Daten.

Dies liegt daran, dass der I2C-Bus des Pi nicht genau den Spezifikationen entspricht. Das ist seit der ersten Einführung des Pi aufgrund des Broadcom-Chipsatzes so. Von Anfang an haben sie eine I2C-Funktion namens "Clock Stretching" nicht richtig unterstützt.

Sie können hier mehr über diesen H/W-Bug lesen.

Schritt 1: Was ist Clock-Stretching?

Was ist Clock-Stretching?
Was ist Clock-Stretching?

Wie Sie vielleicht wissen, besteht der I2C-Bus aus 3 Drähten. Diese sind für Takt (SCL), Daten (SDA) und gemeinsame Masse. Die Takt- und Datenleitungen sind vom Typ Open-Collector/Open-Drain, was bedeutet, dass sie Pull-up-Widerstände benötigen, die mit einer positiven Versorgungsschiene verbunden sind, um ihnen ein logisches High zu geben. Um ein logisches Low zu erhalten, kann jedes Gerät am Bus die Leitung auf gemeinsame Masse ziehen.

Gemäß dem I2C-Standard ist das Master-Gerät dasjenige, das das Taktsignal auf der SCL-Leitung liefert, aber wenn diese Rate zu hoch ist, kann das Slave-Gerät es verlangsamen, indem es einfach die Taktleitung gedrückt hält, bis es bereit ist mit den Informationen. Dies nennen wir "Uhrendehnung".

Offiziell wurde Clock-Stretching als optionale Funktion im I2C-Standard aufgeführt, aber es ist eine sehr verbreitete Funktion, die für die meisten "intelligenten" Slaves erforderlich ist, die etwas mehr Zeit benötigen, um Sensordaten usw. bereitzustellen.

Schritt 2: Ein wenig Hilfe von fliegenden Schweinen

Um diesen I2C-H/W-Fehler zu beheben, haben wir eine nette kleine kostenlose Bibliothek namens "pigpio" gefunden. Es ist eine sehr beliebte, schnelle und leichte Bibliothek, die in C geschrieben wurde. Sie läuft als Hintergrund-Daemon für den Raspberry Pi und ermöglicht es uns, den I2C sowie jeden GPIO einfach von Python aus zu steuern. Die Bibliothek behandelt die I2C-Ports eher wie GPIO und hat damit den I2C-Clock-Stretching-Bug umgangen. Wie alle Software auf dem pi ist die pigpio-Bibliothek nur ein einfaches "include" entfernt, also los geht's!

Schritt 3: TL; DR-Version

Richten Sie PiEnable SSH ein, um sich mit Putty anzumelden. Installieren Sie die pigpio-Bibliothek. Holen Sie sich die tinyLiDAR-Zip-Datei

Optional:

SublimeText mit WinSCP einrichten

Schritt 4: Installation

Installation
Installation

Für unseren Raspberry Pi 3 haben wir das Standard-Betriebssystem New Out Of the Box Software (NOOBS Lite v2.4) verwendet. Es enthält eine bereits installierte Standardversion von Python, mit der wir codieren können. Sie können das Betriebssystem von hier herunterladen.

Nach der Installation auf einer Micro-SD-Karte müssen Sie eine Tastatur und einen Monitor anschließen, damit Sie sich zum ersten Mal am pi anmelden können:

Benutzername: pi Passwort: Himbeere

Dann können Sie mit diesen Befehlen einen Secure Shell Server (SSH) starten:

sudo systemctl aktivieren sshsudo systemctl start ssh

Als nächstes benötigen wir die IP-Adresse des Pi in Ihrem Netzwerk, damit wir uns mit PuTTY anmelden können. Um dies zu erhalten, geben Sie einfach Folgendes ein:

Hostname -I

Und suchen Sie nach einer Adresse im IPv4-Format (für unser Setup war es: 192.168.0.27)

Die obigen Schritte ermöglichen es dem Pi, "headless" zu laufen, was bedeutet, dass Sie nicht mehr auf dieser Tastatur tippen müssen und auch kein Videomonitor mehr erforderlich ist. Wir werden uns in Zukunft über das Netzwerk über eine sichere SSH-Verbindung anmelden. Der obige Befehl bewirkt, dass der SSH-Server jedes Mal automatisch gestartet wird, wenn der pi eingeschaltet wird. Dies ist für uns praktisch, während wir codieren, aber es könnte später ein Sicherheitsrisiko darstellen (paranoid zu sein ist gut). Wenn Sie also bereit sind, können Sie diese automatische SSH-Funktion mit diesem Befehl deaktivieren:

sudo systemctl deaktivieren ssh

Dieser Befehl sollte natürlich auf der Tastatur eingegeben werden, die mit dem Pi verbunden ist.

PuTTY ist ein Terminalprogramm, das benötigt wird, um Befehle vom PC an den Pi zu erteilen, daher sollten Sie die neueste Kopie von hier herunterladen.

Installieren und starten Sie PuTTY. Sie müssen die IP-Adresse von oben beim Eintrag Hostname eingeben und die Standard-SSH-Einstellungen verwenden. Geben Sie der Sitzung einen beliebigen Namen und klicken Sie auf Speichern. Klicken Sie dann auf Laden und klicken Sie auf ÖFFNEN, um eine Sitzung zu starten.

Es sollte Sie zum Anmeldebildschirm für das pi bringen. Verwenden Sie denselben Benutzernamen und dasselbe Kennwort, die Sie zuvor verwendet haben.

Schritt 5: Installieren Sie Piggio

Jetzt müssen wir nur noch die pigpio-Bibliothek installieren, und wir können dies mit den folgenden Befehlen tun.

Tipp: Sie können diese und alle anderen Befehle einfach mit [Strg+c] kopieren und [Maus-Rechtsklick] in das PuTTY-Terminal einfügen

sudo apt-get update

sudo apt-get install pigpio python-pigpio python3-pigpio

Schritt 6: Optional: Einrichtung des Dev-Systems

Optional: Dev-System-Setup
Optional: Dev-System-Setup

Hier ist also ein Tipp, der Ihnen helfen kann, in Ihrer Codeentwicklungswelt etwas Zeit zu sparen. Wir hassen die Unix-basierten Texteditoren wirklich. Die Benutzeroberfläche ist normalerweise ungeschickt und die Schriftarten sind scheiße. GNU nano ist fast erträglich, aber keines ist so raffiniert wie SublimeText, das Sie hier herunterladen können

Wir haben eine Windows-basierte Entwicklungsumgebung und verwenden diesen Texteditor gerne, wann immer es möglich ist. Der Tipp hier ist also, Ihr System so einzurichten, dass Sie diesen professionellen Texteditor nativ auf Ihrem Windows-Desktop verwenden können, um direkt auf Ihrem Headless-Pi zu codieren.

Wie? Mit einer kostenlosen App namens WinSCP, die Sie hier herunterladen können

Schritt 7: WinSCP einrichten

Einrichten von WinSCP
Einrichten von WinSCP
Einrichten von WinSCP
Einrichten von WinSCP

WinSCP ist ein sicheres Dateiübertragungsprogramm, das eine grafische Darstellung der auf Ihrem rpi vorhandenen Dateien bietet, ähnlich dem, was Sie im Dateimanager Ihres Windows-PCs sehen.

Also fahren Sie fort und installieren Sie jetzt auch die beiden oben genannten Programme.

Als nächstes müssen Sie einige Anpassungen vornehmen, damit sie alle ordnungsgemäß funktionieren.

Für WinSCP können Sie auf NEUE Site klicken. Wir verwenden die Standard-SFTP-Einstellungen und Sie müssen nur die IP-Adresse (für den Hostnamen) Ihres pi und den Anmeldenamen (für den Benutzernamen) eingeben. Sie können das Passwort leer lassen, wenn Sie möchten - es wird Sie jedes Mal nach dem Passwort fragen, wenn Sie sich anmelden.

Klicken Sie als Nächstes auf die Schaltfläche Erweitert und dann auf die linke Seite für die Einstellungen der Umgebungsshell. Ändern Sie auf der rechten Seite das Pulldown-Menü "Default" auf die Option "sudo su -". Dadurch können Änderungen ohne Berechtigungsfehler in Ihr Pi geschrieben werden, wenn Sie von SublimeText auf Speichern klicken.

Setzen Sie SublimeText als Standardeditor in WinSCP

Klicken Sie dazu auf die Schaltfläche Tools auf dem Bildschirm mit den WinSCP-Anmeldeeinstellungen, auf dem Sie Ihr NewSite-Dialogfeld gestartet haben. Die beiden Screenshots zeigen, wie dies konfiguriert ist, aber im Grunde klicken Sie auf, um die Einstellungen für Editoren zu konfigurieren und einen Editor hinzuzufügen, der ein externer Editor ist. Sie können dann nach der.exe-Datei suchen, in der sich dieser Editor auf Ihrem Computer befindet.

Schritt 8: (w) den Code erhalten

(w) den Code bekommen
(w) den Code bekommen

Wenn Sie fertig sind, melden Sie sich mit WinSCP und PuTTY an.

Jetzt sind wir fertig und können unseren tinyLiDAR-Code starten.

Erstellen Sie ein Verzeichnis namens tinyLiDAR unter Ihrem home/pi-Verzeichnis.

Sie können dies tun, indem Sie mit der rechten Maustaste auf die rechte Seite des WinSCP-Bildschirms klicken und Neu / Verzeichnis wählen.

Jetzt können Sie am PuTTY-Terminal eingeben

cd t

und drücken Sie die Tabulatortaste, damit Ihr Befehl automatisch vervollständigt wird, um zum tinyLiDAR-Verzeichnis zu gelangen.

Geben Sie hier Folgendes ein:

wget

um die Dateien direkt von unserem Server zu beziehen. Wir können sie dann durch Eingabe entpacken

entpacken r

und drücken Sie die Tabulatortaste, um den Namen erneut automatisch zu vervollständigen

Um es auszuführen, geben Sie einfach ein

Python tlgui.py

Und dein tinyLiDAR reagiert auf jeden deiner Befehle auf dem Pi:)

Schritt 9: Hinweis für zukünftige Hacker

Gehen Sie weiter und werfen Sie einen Blick unter die Haube, indem Sie auf eine der Codedateien von WinSCP doppelklicken. Sie sind diejenigen mit einer.py-Erweiterung. Die Dateien sollten sich in SublimeText direkt auf Ihrem PC öffnen. Ändern Sie, was Sie möchten, und klicken Sie dann auf Speichern. Ihre Änderungen werden direkt auf Ihrem Pi gespeichert.

Wenn Sie fertig sind, führen Sie es erneut aus, indem Sie die Aufwärtspfeiltaste für den zuletzt eingegebenen Befehl verwenden, oder geben Sie ihn einfach erneut ein und drücken Sie die Eingabetaste:

Python tlgui.py

Sie haben vielleicht bemerkt, dass das Terminal-GUI-Layout etwas schöner aussieht als die Arduino-Version. Das liegt daran, dass PuTTY Unicode-Zeichen unterstützt, sodass wir einige zusätzliche Cursorsteuerzeichen verwenden konnten, um es verfeinert aussehen zu lassen.

Es gibt hier auch einen zusätzlichen Befehl (im Vergleich zur Arduino-Version), der "dc" für die Continuous Read-Funktion ist. Probieren Sie es aus und sehen Sie, was Sie denken.

Das ist alles!

Danke fürs Lesen und viel Spaß beim Hacken auf dem Pi:)

Empfohlen: