- Projektablauf:
- Projektanforderungen
- Schaltplan:
- Installieren Sie Abhängigkeiten für das Raspberry Pi-Oszilloskop:
- Python-Code für das Raspberry Pi-Oszilloskop:
- Himbeer-Pi-Oszilloskop in Aktion:
Hallo Leute, willkommen zum heutigen Beitrag. Das Faszinierendste daran, ein Hersteller zu sein, ist das Wissen, wie man provisorische Werkzeuge entwickelt. Wenn Sie über diese Vielseitigkeit verfügen, werden Sie nie an einem Projekt hängen bleiben. Daher werde ich heute erläutern, wie eine provisorische Version auf Raspberry Pi- Basis eines der wichtigsten Werkzeuge in der Elektrotechnik / Elektronik erstellt wird. Das Oszilloskop.
Das Oszilloskop ist ein elektronisches Testinstrument, das die Visualisierung und Beobachtung variierender Signalspannungen ermöglicht, üblicherweise als zweidimensionales Diagramm mit einem oder mehreren gegen die Zeit aufgetragenen Signalen. Das heutige Projekt wird versuchen, die Signalvisualisierungsfunktionen des Oszilloskops mithilfe des Raspberry Pi und eines Analog-Digital-Wandlermoduls zu replizieren.
Projektablauf:
Das Replizieren der Signalvisualisierung des Oszilloskops mit dem Raspberry Pi erfordert die folgenden Schritte.
1. Führen Sie eine Digital-Analog-Wandlung des Eingangssignals durch
2. Bereiten Sie die resultierenden Daten für die Darstellung vor
3. Zeichnen Sie die Daten in ein Live-Zeitdiagramm
Ein vereinfachtes Blockdiagramm für dieses Projekt würde wie folgt aussehen.
Projektanforderungen
Die Anforderung für dieses Projekt kann in zwei Kategorien unterteilt werden:
- Hardware-Anforderungen
- Software Anforderungen
Hardware-Anforderungen
Um dieses Projekt zu erstellen, sind die folgenden Komponenten / Teile erforderlich.
- Himbeer pi 2 (oder ein anderes Modell)
- 8 oder 16 GB SD-Karte
- LAN / Ethernet-Kabel
- Netzteil oder USB-Kabel
- ADS1115 ADC
- LDR (optional als Testzweck)
- 10k oder 1k Widerstand
- Überbrückungsdrähte
- Steckbrett
- Monitor oder eine andere Art, den Desktop des Pi zu sehen (einschließlich VNC)
Software Anforderungen
Die Softwareanforderungen für dieses Projekt sind im Wesentlichen die Python-Module ( Matplotlib und Drawow ), die für die Datenvisualisierung verwendet werden, und das Adafruit-Modul für die Schnittstelle zum ADS1115-ADC-Chip. Ich werde zeigen, wie diese Module im weiteren Verlauf auf dem Raspberry Pi installiert werden.
Während dieses Tutorial unabhängig vom verwendeten Himbeer-Pi-Betriebssystem funktioniert, verwende ich das Raspberry Pi-Stretch-Betriebssystem und gehe davon aus, dass Sie mit dem Einrichten des Raspberry Pi mit dem Raspbian-Stretch-Betriebssystem vertraut sind und wissen, wie man SSH in die Himbeere einfügt pi mit einer Terminal-Software wie Putty. Wenn Sie Probleme damit haben, finden Sie auf dieser Website unzählige Raspberry Pi-Tutorials, die Ihnen helfen können.
Nachdem alle Hardwarekomponenten vorhanden sind, erstellen wir die Schaltpläne und verbinden die Komponenten miteinander.
Schaltplan:
Um die analogen Eingangssignale in digitale Signale umzuwandeln, die mit dem Raspberry Pi visualisiert werden können, verwenden wir den ADS1115 ADC-Chip. Dieser Chip wird wichtig, da der Raspberry Pi im Gegensatz zu Arduino und den meisten Mikrocontrollern keinen integrierten Analog-Digital-Wandler (ADC) hat. Wir hätten zwar jeden Himbeer-Pi-kompatiblen ADC-Chip verwenden können, aber ich bevorzuge diesen Chip aufgrund seiner hohen Auflösung (16 Bit) und seines gut dokumentierten Datenblattes sowie der Gebrauchsanweisung von Adafruit. Sie können auch unser Raspberry Pi ADC-Tutorial lesen, um mehr darüber zu erfahren.
Der ADC ist ein I2C-basiertes Gerät und sollte wie in den folgenden Schaltplänen gezeigt an den Raspberry Pi angeschlossen werden.
Aus Gründen der Übersichtlichkeit wird im Folgenden auch die Stiftverbindung zwischen den beiden Komponenten beschrieben.
ADS1115- und Raspberry Pi-Verbindungen:
VDD - 3.3v
GND - GND
SDA - SDA
SCL - SCL
Wenn alle Verbindungen hergestellt sind, schalten Sie Ihren Pi ein und installieren Sie die unten genannten Abhängigkeiten.
Installieren Sie Abhängigkeiten für das Raspberry Pi-Oszilloskop:
Bevor wir mit dem Schreiben des Python-Skripts beginnen, um Daten aus dem ADC abzurufen und in einem Live-Diagramm darzustellen, müssen wir die I2C-Kommunikationsschnittstelle des Himbeer-Pi aktivieren und die zuvor genannten Softwareanforderungen installieren. Dies erfolgt in den folgenden Schritten, damit es leicht zu befolgen ist:
Schritt 1: Aktivieren Sie die Raspberry Pi I2C-Schnittstelle
Führen Sie zum Aktivieren des I2C vom Terminal aus Folgendes aus:
sudo raspi-config
Wenn die Konfigurationsfenster geöffnet werden, wählen Sie Schnittstellenoptionen, wählen Sie I2C und klicken Sie auf Aktivieren.
Schritt 2: Aktualisieren Sie den Himbeer-Pi
Das erste, was ich mache, bevor ich ein Projekt starte, ist das Aktualisieren des Pi. Dadurch bin ich sicher, dass alles auf dem Betriebssystem auf dem neuesten Stand ist und ich keine Kompatibilitätsprobleme mit der neuesten Software habe, die ich auf dem Pi installiert habe. Führen Sie dazu die folgenden zwei Befehle aus:
sudo apt-get update sudo apt-get upgrade
Schritt 3: Installieren Sie die Adafruit ADS1115-Bibliothek für ADC
Nach dem Update können wir nun die Abhängigkeiten installieren, beginnend mit dem Adafruit-Python-Modul für den ADS115-Chip. Stellen Sie sicher, dass Sie sich im Raspberry Pi-Ausgangsverzeichnis befinden, indem Sie ausführen.
cd ~
Installieren Sie dann die Build-Essentials, indem Sie ausführen.
sudo apt-get install build-essentielles python-dev python-smbus git
Klonen Sie anschließend den Adafruit-Git-Ordner für die Bibliothek, indem Sie ausführen.
Git-Klon https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Wechseln Sie in das Verzeichnis der geklonten Datei und führen Sie die Setup-Datei aus.
cd Adafruit_Python_ADS1x1z sudo python setup.py installieren
Nach der Installation sollte Ihr Bildschirm wie im Bild unten aussehen.
Schritt 4: Testen Sie die Bibliothek und die 12C-Kommunikation.
Bevor wir mit dem Rest des Projekts fortfahren, ist es wichtig, die Bibliothek zu testen und sicherzustellen, dass der ADC über I2C mit dem Himbeer-Pi kommunizieren kann. Dazu verwenden wir ein Beispielskript, das mit der Bibliothek geliefert wird.
Wechseln Sie im Verzeichnis Adafruit_Python_ADS1x15 durch Ausführen in das Beispielverzeichnis.
CD-Beispiele
Führen Sie als Nächstes das Beispiel sampletest.py aus, in dem der Wert der vier Kanäle auf dem ADC in tabellarischer Form angezeigt wird.
Führen Sie das Beispiel aus mit:
python simpletest.py
Wenn das I2C-Modul aktiviert ist und die Verbindungen gut sind, sollten Sie die Daten wie in der Abbildung unten gezeigt sehen.
Wenn ein Fehler auftritt, überprüfen Sie, ob der ADC gut mit dem PI verbunden ist und die I2C-Kommunikation auf dem Pi aktiviert ist.
Schritt 5: Installieren Sie Matplotlib
Um die Daten zu visualisieren, müssen wir das matplotlib- Modul installieren, mit dem alle Arten von Diagrammen in Python gezeichnet werden. Dies kann durch Ausführen erfolgen.
sudo apt-get install python-matplotlib
Sie sollten ein Ergebnis wie das Bild unten sehen.
Schritt 6: Installieren Sie das Drawnow- Python-Modul
Zuletzt müssen wir das gezeichnete Python-Modul installieren. Dieses Modul hilft uns, Live-Updates für das Datenplot bereitzustellen.
Wir werden drawow über das Python-Paket-Installationsprogramm installieren. pip , also müssen wir sicherstellen, dass es installiert ist. Dies kann durch Ausführen erfolgen.
sudo apt-get installiere python-pip
Wir können dann pip verwenden, um das gezeichnete Paket zu installieren, indem wir Folgendes ausführen :
sudo pip install gezeichnet
Sie sollten nach dem Ausführen ein Ergebnis wie das folgende Bild erhalten.
Nachdem alle Abhängigkeiten installiert sind, können wir den Code jetzt schreiben.
Python-Code für das Raspberry Pi-Oszilloskop:
Der Python-Code für dieses Pi-Oszilloskop ist ziemlich einfach, insbesondere wenn Sie mit dem Python- Matplotlib- Modul vertraut sind. Bevor ich uns den gesamten Code zeige, werde ich versuchen, ihn in Teile zu zerlegen und zu erklären, was jeder Teil des Codes tut, damit Sie genug Wissen haben, um den Code zu erweitern, um mehr Dinge zu tun.
In diesem Stadium ist es wichtig, zu einem Monitor zu wechseln oder den VNC-Viewer zu verwenden. Alles, über das Sie den Desktop Ihres Raspberry Pi sehen können, da das geplottete Diagramm nicht auf dem Terminal angezeigt wird.
Öffnen Sie mit dem Monitor als Schnittstelle eine neue Python-Datei. Sie können es einen beliebigen Namen nennen, aber ich werde es scope.py nennen.
sudo nano scope.py
Nachdem die Datei erstellt wurde, importieren wir zunächst die Module, die wir verwenden werden.
Importzeit importieren matplotlib.pyplot als plt aus gezeichnetem Import * importieren Adafruit_ADS1x15
Als Nächstes erstellen wir eine Instanz der ADS1x15-Bibliothek, die den ADS1115-ADC angibt
adc = Adafruit_ADS1x15.ADS1115 ()
Als nächstes stellen wir die Verstärkung des ADC ein. Es gibt verschiedene Verstärkungsbereiche und sollten basierend auf der Spannung ausgewählt werden, die Sie am Eingang des ADC erwarten. Für dieses Tutorial schätzen wir 0 - 4,09 V, sodass wir eine Verstärkung von 1 verwenden. Weitere Informationen zur Verstärkung finden Sie im Datenblatt ADS1015 / ADS1115.
GEWINN = 1
Als nächstes müssen wir die Array-Variablen erstellen, die zum Speichern der zu zeichnenden Daten verwendet werden, und eine weitere, die als Zählung dient.
Val = cnt = 0
Als nächstes machen wir unsere Absichten bekannt, die Handlung interaktiv bekannt zu machen, damit wir die Daten live zeichnen können.
plt.ion ()
Als nächstes starten wir die kontinuierliche ADC-Konvertierung unter Angabe des ADC-Kanals, in diesem Fall Kanal 0, und geben auch die Verstärkung an.
Es ist zu beachten, dass alle vier ADC-Kanäle des ADS1115 gleichzeitig gelesen werden können, für diese Demonstration jedoch 1 Kanal ausreicht.
adc.start_adc (0, Gain = GAIN)
Als nächstes erstellen wir eine Funktion def makeFig , um die Attribute des Diagramms zu erstellen und festzulegen , das unser Live-Diagramm enthält. Zuerst setzen wir die Grenzen der y-Achse mit ylim , danach geben wir den Titel des Plots und den Beschriftungsnamen ein, bevor wir mit plt.plot () die zu plottenden Daten sowie deren Plotstil und Farbe angeben.. Wir können auch den Kanal angeben (wie Kanal 0 angegeben wurde), damit wir jedes Signal identifizieren können, wenn die vier Kanäle des ADC verwendet werden. Mit plt.legend wird angegeben, wo die Informationen zu diesem Signal (z. B. Kanal 0) in der Abbildung angezeigt werden sollen.
plt.ylim (-5000,5000) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('ADC-Ausgänge') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'unten rechts')
Als nächstes schreiben wir die while- Schleife, die verwendet wird, um ständig Daten aus dem ADC zu lesen und den Plot entsprechend zu aktualisieren.
Als erstes lesen wir den ADC-Konvertierungswert
value = adc.get_last_result ()
Als nächstes drucken wir den Wert auf das Terminal, um die aufgezeichneten Daten auf andere Weise zu bestätigen. Nach dem Drucken warten wir einige Sekunden, dann hängen wir die Daten an die Liste (val) an, die zum Speichern der Daten für diesen Kanal erstellt wurde.
print ('Kanal 0: {0}'. Format (Wert)) time.sleep (0.5) val.append (int (Wert))
Wir rufen dann drawown auf, um die Handlung zu aktualisieren.
gezeichnet (makeFig)
Um sicherzustellen, dass die neuesten Daten auf dem Plot verfügbar sind, löschen wir die Daten bei Index 0 nach jeweils 50 Datenzählungen.
cnt = cnt + 1 wenn (cnt> 50): val.pop (0)
Das ist alles!
Den vollständigen Python-Code finden Sie am Ende dieses Tutorials.
Himbeer-Pi-Oszilloskop in Aktion:
Kopieren Sie den vollständigen Python-Code und fügen Sie ihn in die zuvor erstellte Python-Datei ein. Denken Sie daran, dass wir einen Monitor benötigen, um den Plot anzuzeigen. All dies sollte entweder von VNC oder mit einem angeschlossenen Monitor oder Bildschirm erfolgen.
Speichern Sie den Code und führen Sie ihn aus.
sudo python scope.py
Wenn Sie einen anderen Namen als scope.py verwendet haben, vergessen Sie nicht, diesen Namen entsprechend zu ändern.
Nach einigen Minuten sollten die ADC-Daten auf dem Terminal gedruckt werden. Gelegentlich erhalten Sie möglicherweise eine Warnung von matplotlib (wie in der Abbildung unten gezeigt), die unterdrückt werden sollte, sich jedoch nicht auf die angezeigten Daten oder den Plot auswirkt. Um die Warnung zu unterdrücken, können die folgenden Codezeilen nach den Importzeilen in unserem Code hinzugefügt werden.
Warnungen importieren matplotlib.cbook importieren warnings.filterwarnings ("ignorieren", Kategorie = matplotlib.cbook.mplDeprecation)
Um Ihr Oszilloskop vollständig zu testen, können Sie ein analoges Gerät wie ein Potentiometer an einen Kanal des ADC anschließen. Die Daten sollten sich mit jeder Umdrehung des Potentiometers ändern. Oder Sie können eine Sinus- oder Rechteckwelle eingeben, um die Ausgabe zu testen.
Vielen Dank fürs Lesen. Wenn Sie Fragen haben oder etwas, das ich hinzufügen soll, hinterlassen Sie mir einfach einen Kommentar.
Bis zum nächsten Mal, mach weiter!