Visualisieren Sie Informationen zum Beschleunigungssensor von der Mikrocomputerplatine in Echtzeit mit mbed + Python

Ich habe das NXP-Board FRDM-KL25Z verwendet. Ein 3-Achsen-Beschleunigungssensor MMA8451Q wurde veröffentlicht, daher habe ich Informationen von hier durch serielle Kommunikation aufgenommen und sie in Echtzeit mit Python aufgezeichnet. Sah.

(Beschleunigungssensor) FRDM-KL25Z --- (seriell) ---> PC (Echtzeitdiagramm)

FRDM-KL25Z hat die unten gezeigte Konfiguration.

FRDM-KL25Z-1 2.jpg

Farmentwicklung auf der Seite der Mikrocomputerplatine

Ich habe [mbed] verwendet (https://www.mbed.com). Um nun die Datei MMA8451Q.h einzuschließen, gehen Sie zu hier, um die Bibliothek MMA8451Q zum mbed-Compiler hinzuzufügen. Importieren.

accel_serial.cpp


#include "mbed.h"
#include "MMA8451Q.h"
 
#define MMA8451_I2C_ADDRESS (0x1d<<1)
 
DigitalOut myled(LED_GREEN);
Serial pc(USBTX, USBRX);
MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
PwmOut rled(LED_RED);
PwmOut gled(LED_GREEN);
PwmOut bled(LED_BLUE);
    
int main()
{
    pc.printf("Hello World!\n");

    while (true) {
        pc.printf("%f,", acc.getAccX());
        pc.printf("%f,", acc.getAccY());
        pc.printf("%f\n", acc.getAccZ());
        rled = 1.0 - abs(acc.getAccX());
        gled = 1.0 - abs(acc.getAccY());
        bled = 1.0 - abs(acc.getAccZ());
        wait(0.2);
    }
}

Nachdem ich das Programm geschrieben hatte, kompilierte ich es, lud die Binärdatei herunter und schrieb den FRDM-KL25Z durch Ziehen und Ablegen in den von USB erkannten Ordner.

Entwicklung von Visualisierungsanwendungen auf der PC-Seite

Ich habe Python benutzt. Installieren Sie die Bibliothek mit pip

$ pip install numpy matplotlib seaborn pyserial

Verbinden Sie anschließend FRDM-KL25Z mit USB und überprüfen Sie das Zuordnungsziel.

$ ls /dev/tty*

In meiner Umgebung wurde es / dev / ttyACM1 zugewiesen. Wenn sie unterschiedlich sind, schreiben Sie den Teil / dev / ttyACM1 im Programm neu. Erstellen Sie die folgende Python-Datei und führen Sie sie aus, um den Vorgang abzuschließen. (Bitte mit sudo Autorität ausführen) Wenn der FRDM-KL25Z gekippt wird, werden die Beschleunigungsinformationen in der Grafik wiedergegeben.

plot_accel.py


from __future__ import unicode_literals, print_function
import numpy as np
import matplotlib.pyplot as plt
import serial
import seaborn as sns
sns.set(font_scale=2)
s = serial.Serial('/dev/ttyACM1')

fig, ax = plt.subplots(3, 1)

t = np.arange(0,10,0.1)
list_x = np.zeros(100).tolist()
list_y = np.zeros(100).tolist()
list_z = np.zeros(100).tolist()

lines_x, = ax[0].plot(t, list_x)
lines_y, = ax[1].plot(t, list_y)
lines_z, = ax[2].plot(t, list_z)

ax[0].set_ylim((-90,90))
ax[1].set_ylim((-90,90))
ax[2].set_ylim((-1,1))
ax[0].set_ylabel("Rot_X", size=30)
ax[1].set_ylabel("Rot_Y", size=30)
ax[2].set_ylabel("Z", size=30)

acc = s.readline().split(",") # just for warming up

while True:
    t += 0.1
    acc = s.readline().split(",")
    acc_x = float(acc[0])*90
    acc_y = float(acc[1])*90
    acc_z = float(acc[2])

    list_x.pop(0)
    list_x.append(acc_x)
    list_y.pop(0)
    list_y.append(acc_y)
    list_z.pop(0)
    list_z.append(acc_z)

    plt.draw()

    lines_x.set_data(t, list_x)
    lines_y.set_data(t, list_y)
    lines_z.set_data(t, list_z)
    ax[0].set_xlim((t.min(), t.max()))
    ax[1].set_xlim((t.min(), t.max()))
    ax[2].set_xlim((t.min(), t.max()))

    plt.pause(.0001)

Ergänzender Kommentar

Das Abrufen des seriellen Signals ist der folgende Teil:

s = serial.Serial('/dev/ttyACM1')
acc = s.readline().split(",")

Echtzeit-Plotaktualisierungen können mithilfe der folgenden Optionen anstelle von "plt.show ()" erzielt werden:

plt.draw()

# ... matplotlib.Linienelement aktualisieren...

plt.pause(.0001)

Referenz: http://qiita.com/hausen6/items/b1b54f7325745ae43e47

Recommended Posts

Visualisieren Sie Informationen zum Beschleunigungssensor von der Mikrocomputerplatine in Echtzeit mit mbed + Python
Geben Sie die Zeit ab dem Start des Programms in Python aus
Holen Sie sich die Standardausgabe in Echtzeit mit dem Python-Unterprozess
Ich habe versucht, den Datenverkehr mit WebSocket in Echtzeit zu beschreiben
Lesen Sie die Datei in Python mit einem relativen Pfad aus dem Programm
Visualisieren Sie die Häufigkeit von Wortvorkommen in Sätzen mit Word Cloud. [Python]
Sammeln von Informationen von Twitter mit Python (Twitter API)
Füllen Sie die Zeichenfolge mit Nullen in Python und zählen Sie bestimmte Zeichen aus der Zeichenfolge
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Zeigen Sie Python 3 im Browser mit MAMP an
MongoDB mit Python zum ersten Mal
Abrufen und Konvertieren der aktuellen Zeit in der lokalen Systemzeitzone mit Python
Stellen Sie die von Eigen of C ++ erstellte Bibliothek mit Boost.Numpy in Python zur Verfügung.
Was ich getan habe, als ich mit Lambda Python im Zeitlimit steckte
Abrufen von Informationen zu Songwriting, Komposition und Arrangement von der Tower Records-Website mit Python
Erhalten Sie mit Python Informationen zu den 100 einflussreichsten technischen Twitter-Nutzern der Welt.
Anzeige von Positionsinformationsdaten in Python - Versuchen Sie, mit der Kartenanzeigebibliothek (Folium) zu zeichnen -
Drehen Sie in Python mehrere Listen mit for-Anweisung gleichzeitig
Holen Sie sich mit Python Zeitreihendaten von k-db.com
Sammeln von Informationen von Twitter mit Python (Umgebungskonstruktion)
[Python] Holen Sie sich die Dateien mit Python in den Ordner
[Automatisierung] Extrahieren Sie die Tabelle als PDF mit Python
Verwenden Sie vorerst Logger mit Python
Lesen Sie die Ausgabe von subprocess.Popen in Echtzeit
Informationen zum BTC / JPY-Board erhalten Sie von Python --bitflyer
Versuchen Sie, Videos mit OpenCV in Echtzeit zu konvertieren
Mikrocomputer mit Python
Informationen zum Standort (Breiten- und Längengrad) erhalten Sie von der Adresse. Geocode in Python ~ Geocoder und Pydams ~
Grundlegende Informationen Schreiben Sie das Problem mit dem Herbst 2018-Algorithmus in Python
Ändern Sie die Zeitzone in Oracle Database Docker
Lerne Nim mit Python (ab Anfang des Jahres).
Konvertieren Sie die Datumszeitzone (Zeitdifferenz) mit Python (aus Zeichenfolge).
Führen Sie es vorerst mit CentOS7 + Apache2.4 + Python3.6 aus
[Python] Holen Sie sich die Zahlen im Diagramm mit OCR
Sammeln von Informationen von Twitter mit Python (morphologische Analyse mit MeCab)
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Crawlen Sie die im Twitter-Tweet enthaltene URL mit Python
Konvertieren Sie das Bild in .zip mit Python in PDF
Mit Python psycopg2 erhalten Sie Ergebnisse im Diktatformat
Schreiben Sie mit OpenCV-Python Zeichen in die Kartenillustration
Informationen zur Steuerung von Motoren mit Python auf RaspberryPi
Suchen Sie den Teil 575 aus Wikipedia in Python
Installieren Sie das neueste Python von pyenv, das von Homebrew installiert wurde
Ich habe versucht, das Problem von F02 zu lösen, wie man mit Python offline in Echtzeit schreibt
Setzen Sie Ubuntu in Raspi ein, setzen Sie Docker darauf und steuern Sie GPIO mit Python aus dem Container
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Versuchen Sie, Webkamera- / Videokamera-Videos in Echtzeit mit OpenCV zu konvertieren
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Holen Sie sich Ihre Herzfrequenz von der Fitbit-API in Python!
Visualisieren Sie die Ergebnisse von Entscheidungsbäumen, die mit Python scikit-learn erstellt wurden
Verstärkungslernen in kürzester Zeit mit Keras mit OpenAI Gym
Berechnen Sie mit Python Millionen von Stellen in der Quadratwurzel von 2
[In kürzester Zeit verstehen] Python-Grundlagen für die Datenanalyse
Rufen Sie den Wert ab, während Sie den Standardwert aus dict in Python angeben
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
[Python] Zeigt die verstrichene Zeit in Stunden, Minuten und Sekunden an (00:00:00)