Visualisez les informations du capteur d'accélération de la carte micro-ordinateur en temps réel avec mbed + Python

J'ai utilisé la carte NXP FRDM-KL25Z. Depuis que le capteur d'accélération 3 axes MMA8451Q a été répertorié, j'ai repris les informations par communication série à partir d'ici et les ai tracées en temps réel avec Python. Vu.

(Capteur d'accélération) FRDM-KL25Z --- (Série) ---> PC (tracé en temps réel)

FRDM-KL25Z a la configuration ci-dessous.

FRDM-KL25Z-1 2.jpg

Développement de la ferme côté carte micro-ordinateur

J'ai utilisé mbed. Maintenant, pour inclure le fichier MMA8451Q.h, allez sur here pour ajouter la bibliothèque MMA8451Q au compilateur mbed. Importer.

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);
    }
}

Après avoir écrit le programme, je l'ai compilé, téléchargé le fichier binaire et écrit le FRDM-KL25Z dans le dossier reconnu par USB par glisser-déposer.

Développement d'applications de visualisation côté PC

J'ai utilisé Python. Installez la bibliothèque avec pip

$ pip install numpy matplotlib seaborn pyserial

Ensuite, connectez FRDM-KL25Z avec USB et vérifiez la destination d'allocation.

$ ls /dev/tty*

Dans mon environnement, il a été attribué à / dev / ttyACM1. S'ils sont différents, réécrivez la partie / dev / ttyACM1 dans le programme. Créez le fichier python suivant et exécutez-le pour terminer. (Veuillez exécuter avec l'autorité sudo) Lorsque le FRDM-KL25Z est incliné, les informations d'accélération sont reflétées dans le graphique.

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)

Commentaire complémentaire

L'obtention du signal série est la partie suivante:

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

Les mises à jour des tracés en temps réel peuvent être effectuées en utilisant ce qui suit au lieu de plt.show ().

plt.draw()

# ... matplotlib.Mise à jour des éléments de lignes...

plt.pause(.0001)

Référence: http://qiita.com/hausen6/items/b1b54f7325745ae43e47

Recommended Posts

Visualisez les informations du capteur d'accélération de la carte micro-ordinateur en temps réel avec mbed + Python
Affiche l'heure à partir du moment où le programme a été lancé en python
Obtenez une sortie standard en temps réel avec le sous-processus Python
J'ai essayé de décrire le trafic en temps réel avec WebSocket
Lisez le fichier en Python avec un chemin relatif depuis le programme
Visualisez la fréquence des occurrences de mots dans les phrases avec Word Cloud. [Python]
Collecter des informations sur Twitter avec Python (API Twitter)
Remplissez la chaîne avec des zéros en python et comptez certains caractères de la chaîne
Comment obtenir la différence de date et d'heure en secondes avec Python
Afficher Python 3 dans le navigateur avec MAMP
MongoDB avec Python pour la première fois
Obtenez et convertissez l'heure actuelle dans le fuseau horaire local du système avec python
Rendre la bibliothèque créée par Eigen of C ++ disponible à partir de Python avec Boost.Numpy.
Ce que j'ai fait quand je suis resté coincé dans le délai avec lambda python
Récupération des informations sur l'écriture, la composition et l'arrangement du site Tower Records avec Python
Obtenez des informations sur les 100 utilisateurs techniques de Twitter les plus influents au monde avec python.
Affichage des données d'informations de position en Python --Essayez de tracer avec la bibliothèque d'affichage de carte (folium) -
Transformez plusieurs listes avec l'instruction for en même temps en Python
Obtenez des données de séries chronologiques de k-db.com avec Python
Collecter des informations depuis Twitter avec Python (construction de l'environnement)
[Python] Récupérez les fichiers dans le dossier avec Python
[Automation] Extraire le tableau en PDF avec Python
Utilisez Logger avec Python pour le moment
Lire la sortie du sous-processus, ouvrir en temps réel
Obtenez des informations sur la carte BTC / JPY de Python --bitflyer
Essayez de convertir des vidéos en temps réel avec OpenCV
Micro-ordinateur avec Python
Obtenez des informations de localisation (latitude et longitude) à partir de l'adresse. Géocodage en Python ~ Géocodeur et pydams ~
Informations de base Écrire le problème d'algorithme de l'automne 2018 en Python
Modifier le fuseau horaire dans Oracle Database Docker
Apprenez Nim avec Python (dès le début de l'année).
Convertir le fuseau horaire de la date (décalage horaire) avec Python (à partir de la chaîne)
Exécutez avec CentOS7 + Apache2.4 + Python3.6 pour le moment
[Python] Obtenez les nombres dans l'image graphique avec OCR
Collecte d'informations sur Twitter avec Python (analyse morphologique avec MeCab)
Visualisez la gamme d'insertions internes et externes avec python
Explorez l'URL contenue dans le tweet Twitter avec python
Convertissez l'image au format .zip en PDF avec Python
Obtenez des résultats au format dict avec Python psycopg2
Ecrire des caractères dans l'illustration de la carte avec OpenCV python
Informations pour contrôler les moteurs avec Python sur RaspberryPi
Trouvez la partie 575 de Wikipedia en Python
Installez le dernier Python de pyenv installé par homebrew
J'ai essayé de résoudre le problème de F02 comment écrire en temps réel hors ligne avec Python
Mettez Ubuntu dans Raspi, mettez Docker dessus et contrôlez GPIO avec python à partir du conteneur
Essayez de gratter les données COVID-19 Tokyo avec Python
Essayez de convertir des vidéos de caméra Web / caméra vidéo en temps réel avec OpenCV
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
Obtenez votre fréquence cardiaque à partir de l'API fitbit en Python!
Visualisez les résultats des arbres de décision réalisés avec Python scikit-learn
Apprentissage par renforcement dans les plus brefs délais avec Keras avec OpenAI Gym
Calculez des millions de chiffres dans la racine carrée de 2 avec python
[Comprendre au plus court] Principes de base de Python pour l'analyse des données
Obtenez la valeur tout en spécifiant la valeur par défaut de dict en Python
[Homologie] Comptez le nombre de trous dans les données avec Python
[Python] Afficher le temps écoulé en heures, minutes et secondes (00:00:00)