- Flux de projet:
- Exigences du projet
- Schéma:
- Installez les dépendances pour l'oscilloscope Raspberry Pi:
- Code Python pour l'oscilloscope Raspberry Pi:
- Oscilloscope Raspberry Pi en action:
Salut les gars, bienvenue dans le message d'aujourd'hui. L'une des choses les plus fascinantes à propos du métier de fabricant est de savoir comment développer des outils de fortune, vous ne serez jamais coincé à travailler sur un projet lorsque vous avez ce genre de polyvalence. Donc aujourd'hui, je vais partager comment construire une version de fortune basée sur Raspberry Pi de l'un des outils les plus importants de l'ingénierie électrique / électronique; L'Oscilloscope.
L'oscilloscope est un instrument de test électronique qui permet la visualisation et l'observation de tensions de signal variables, généralement sous forme de tracé bidimensionnel avec un ou plusieurs signaux tracés en fonction du temps. Le projet d'aujourd'hui cherchera à reproduire les capacités de visualisation du signal de l'oscilloscope à l'aide du Raspberry Pi et d'un module de conversion analogique-numérique.
Flux de projet:
La réplication de la visualisation du signal de l'oscilloscope à l'aide du Raspberry Pi nécessitera les étapes suivantes;
1. Effectuez une conversion numérique-analogique du signal d'entrée
2. Préparez les données résultantes pour la représentation
3. Tracez les données sur un graphique en temps réel
Un diagramme simplifié pour ce projet ressemblerait au diagramme ci-dessous.
Exigences du projet
L'exigence pour ce projet peut être classée en deux:
- Exigences matérielles
- Logiciels requis
Exigences matérielles
Pour construire ce projet, les composants / pièces suivants sont requis;
- Raspberry pi 2 (ou tout autre modèle)
- Carte SD 8 ou 16 Go
- Câble LAN / Ethernet
- Bloc d'alimentation ou câble USB
- ADS1115 ADC
- LDR (facultatif car il est destiné au test)
- Résistance 10k ou 1k
- Fils de cavalier
- Planche à pain
- Surveiller ou tout autre moyen de voir le bureau du pi (VNC inclus)
Logiciels requis
Les exigences logicielles pour ce projet sont essentiellement les modules python ( matplotlib et drawnow ) qui seront utilisés pour la visualisation des données et le module Adafruit pour l'interfaçage avec la puce ADS1115 ADC. Je vais montrer comment installer ces modules sur le Raspberry Pi au fur et à mesure.
Bien que ce didacticiel fonctionne quel que soit le système d'exploitation raspberry pi utilisé, j'utiliserai le système d'exploitation extensible Raspberry Pi et je suppose que vous êtes familiarisé avec la configuration du Raspberry Pi avec le système d'exploitation extensible Raspbian, et que vous savez comment SSH dans la framboise pi en utilisant un logiciel de terminal comme putty. Si vous rencontrez des problèmes avec tout cela, il existe des tonnes de tutoriels Raspberry Pi sur ce site Web qui peuvent vous aider.
Avec tous les composants matériels en place, créons les schémas et connectons les composants ensemble.
Schéma:
Pour convertir les signaux d'entrée analogiques en signaux numériques qui peuvent être visualisés avec le Raspberry Pi, nous utiliserons la puce ADS1115 ADC. Cette puce devient importante car le Raspberry Pi, contrairement à Arduino et à la plupart des micro-contrôleurs, ne dispose pas d'un convertisseur analogique-numérique (ADC) intégré. Alors que nous aurions pu utiliser n'importe quelle puce ADC compatible raspberry pi, je préfère cette puce en raison de sa haute résolution (16 bits) et de sa fiche technique bien documentée et des instructions d'utilisation d'Adafruit. Vous pouvez également consulter notre tutoriel Raspberry Pi ADC pour en savoir plus.
L'ADC est un appareil basé sur I2C et doit être connecté au Raspberry Pi comme indiqué dans les schémas ci-dessous.
Pour plus de clarté, la connexion par broches entre les deux composants est également décrite ci-dessous.
Connexions ADS1115 et Raspberry Pi:
VDD - 3,3 V
GND - GND
SDA - SDA
SCL - SCL
Une fois les connexions terminées, allumez votre pi et procédez à l'installation des dépendances mentionnées ci-dessous.
Installez les dépendances pour l'oscilloscope Raspberry Pi:
Avant de commencer à écrire le script python pour extraire les données de l'ADC et les tracer sur un graphique en direct, nous devons activer l'interface de communication I2C du raspberry pi et installer les exigences logicielles mentionnées précédemment. Cela sera fait dans les étapes ci-dessous, donc c'est facile à suivre:
Étape 1: Activez l'interface Raspberry Pi I2C
Pour activer l'I2C, à partir du terminal, exécutez;
sudo raspi-config
Lorsque les panneaux de configuration s'ouvrent, sélectionnez les options d'interface, sélectionnez I2C et cliquez sur activer.
Étape 2: Mettez à jour le Raspberry pi
La première chose que je fais avant de démarrer un projet est de mettre à jour le Pi. Grâce à cela, je suis sûr que tout sur le système d'exploitation est à jour et que je ne rencontrerai aucun problème de compatibilité avec les derniers logiciels que je choisirai d'installer sur le Pi. Pour ce faire, exécutez ci-dessous deux commandes:
sudo apt-get mise à jour sudo apt-get mise à jour
Étape 3: Installez la bibliothèque Adafruit ADS1115 pour ADC
Une fois la mise à jour terminée, nous sommes maintenant prêts à installer les dépendances en commençant par le module python Adafruit pour la puce ADS115. Assurez-vous que vous êtes dans le répertoire de base du Raspberry Pi en exécutant;
cd ~
puis installez les build-essentials en exécutant;
sudo apt-get install build-essential python-dev python-smbus git
Ensuite, clonez le dossier git Adafruit pour la bibliothèque en exécutant;
git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
Accédez au répertoire du fichier cloné et exécutez le fichier d'installation;
cd Adafruit_Python_ADS1x1z sudo python setup.py installer
Après l'installation, votre écran devrait ressembler à l'image ci-dessous.
Étape 4: Testez la bibliothèque et la communication 12C.
Avant de poursuivre le reste du projet, il est important de tester la bibliothèque et de s'assurer que l'ADC peut communiquer avec le raspberry pi via I2C. Pour ce faire, nous utiliserons un exemple de script fourni avec la bibliothèque.
Alors que toujours dans le dossier Adafruit_Python_ADS1x15, changez de répertoire dans le répertoire des exemples en exécutant;
exemples de cd
Ensuite, exécutez l'exemple sampletest.py qui affiche la valeur des quatre canaux sur l'ADC sous forme de tableau.
Exécutez l'exemple en utilisant:
python simpletest.py
Si le module I2C est activé et que les connexions sont bonnes, vous devriez voir les données comme indiqué dans l'image ci-dessous.
Si une erreur se produit, assurez-vous que l'ADC est bien connecté au PI et que la communication I2C est activée sur le Pi.
Étape 5: Installez Matplotlib
Pour visualiser les données, nous devons installer le module matplotlib qui est utilisé pour tracer toutes sortes de graphiques en python. Cela peut être fait en exécutant;
sudo apt-get install python-matplotlib
Vous devriez voir un résultat comme l'image ci-dessous.
Étape 6: Installez le module python Drawnow
Enfin, nous devons installer le module python drawnow . Ce module nous aide à fournir des mises à jour en direct du diagramme de données.
Nous installerons drawow via le programme d'installation du package python; pip , nous devons donc nous assurer qu'il est installé. Cela peut être fait en exécutant;
sudo apt-get installer python-pip
Nous pouvons ensuite utiliser pip pour installer le package drawnow en exécutant:
sudo pip install drawow
Vous devriez obtenir un résultat comme l'image ci-dessous après l'avoir exécuté.
Avec toutes les dépendances installées, nous sommes maintenant prêts à écrire le code.
Code Python pour l'oscilloscope Raspberry Pi:
Le code python de cet oscilloscope Pi est assez simple, surtout si vous êtes familier avec le module python matplotlib . Avant de nous montrer tout le code, je vais essayer de le diviser en partie et d'expliquer ce que fait chaque partie du code afin que vous puissiez avoir suffisamment de connaissances pour étendre le code pour faire plus de choses.
À ce stade, il est important de passer à un moniteur ou d'utiliser la visionneuse VNC, tout ce à travers lequel vous pouvez voir le bureau de votre Raspberry Pi, car le graphique en cours de tracé ne s'affichera pas sur le terminal.
Avec le moniteur comme interface, ouvrez un nouveau fichier python. Vous pouvez l'appeler comme vous le souhaitez, mais je l'appellerai scope.py.
sudo nano scope.py
Une fois le fichier créé, la première chose que nous faisons est d'importer les modules que nous allons utiliser;
import time import matplotlib.pyplot as plt from drawnow import * import Adafruit_ADS1x15
Ensuite, nous créons une instance de la bibliothèque ADS1x15 spécifiant l'ADC ADS1115
adc = Adafruit_ADS1x15.ADS1115 ()
Ensuite, nous définissons le gain de l'ADC. Il existe différentes plages de gain et doivent être choisies en fonction de la tension que vous attendez à l'entrée du CAN. Pour ce tutoriel, nous estimons un 0 - 4.09v donc nous utiliserons un gain de 1. Pour plus d'informations sur le gain, vous pouvez consulter la fiche technique ADS1015 / ADS1115.
GAIN = 1
Ensuite, nous devons créer les variables de tableau qui seront utilisées pour stocker les données à tracer et une autre pour servir de décompte.
Val = cnt = 0
Ensuite, nous faisons connaître nos intentions de rendre le graphique interactif afin de nous permettre de tracer les données en direct.
plt.ion ()
Ensuite, nous commençons la conversion ADC continue en spécifiant le canal ADC, dans ce cas, le canal 0 et nous spécifions également le gain.
Il convient de noter que les quatre canaux ADC sur l'ADS1115 peuvent être lus en même temps, mais 1 canal suffit pour cette démonstration.
adc.start_adc (0, gain = GAIN)
Ensuite, nous créons une fonction def makeFig , pour créer et définir les attributs du graphe qui contiendra notre tracé en direct. Nous définissons tout d'abord les limites de l'axe y en utilisant ylim , après quoi nous entrons le titre du tracé et le nom de l'étiquette avant de spécifier les données qui seront tracées ainsi que son style et sa couleur de tracé à l' aide de plt.plot (). Nous pouvons également indiquer le canal (comme le canal 0 a été indiqué) afin que nous puissions identifier chaque signal lorsque les quatre canaux du CAN sont utilisés. plt.legend est utilisé pour spécifier où nous voulons que les informations sur ce signal (par exemple le canal 0) soient affichées sur la figure.
plt.ylim (-5000,5000) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('Sorties ADC') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = 'en bas à droite')
Ensuite, nous l'écrire en boucle qui sera utilisé en permanence des données lues à partir de l'ADC et mettre à jour la parcelle en conséquence.
La première chose que nous faisons est de lire la valeur de conversion ADC
valeur = adc.get_last_result ()
Ensuite, nous imprimons la valeur sur le terminal juste pour nous donner un autre moyen de confirmer les données tracées. Nous attendons quelques secondes après l'impression puis nous ajoutons les données à la liste (val) créée pour stocker les données pour ce canal.
print ('Channel 0: {0}'. format (valeur)) time.sleep (0.5) val.append (int (value))
Nous appelons ensuite drawow pour mettre à jour le graphique.
drawow (makeFig)
Pour nous assurer que les dernières données sont celles disponibles sur le graphique, nous supprimons les données à l'index 0 tous les 50 comptages de données.
cnt = cnt + 1 si (cnt> 50): val.pop (0)
C'est tout!
Le code Python complet est donné à la fin de ce tutoriel.
Oscilloscope Raspberry Pi en action:
Copiez le code python complet et collez-le dans le fichier python que nous avons créé précédemment, rappelez-vous que nous aurons besoin d'un moniteur pour afficher le tracé, donc tout cela devrait être fait soit par VNC, soit avec un moniteur ou un écran connecté.
Enregistrez le code et exécutez en utilisant;
sudo python scope.py
Si vous avez utilisé un autre nom que scope.py, n'oubliez pas de le modifier pour qu'il corresponde.
Après quelques minutes, vous devriez voir les données ADC en cours d'impression sur le terminal. Parfois, vous pouvez recevoir un avertissement de matplotlib (comme indiqué dans l'image ci-dessous) qui devrait être supprimé, mais cela n'affecte en aucun cas les données affichées ou le tracé. Pour supprimer l'avertissement cependant, les lignes de code suivantes peuvent être ajoutées après les lignes d'importation dans notre code.
Importer les avertissements import matplotlib.cbook warnings.filterwarnings («ignorer», category = matplotlib.cbook.mplDeprecation)
C'est tout pour ce tutoriel, pour tester complètement votre oscilloscope, vous pouvez connecter un appareil analogique comme un potentiomètre à un canal sur l'ADC et vous devriez voir les données changer à chaque tour de potentiomètre. Ou vous pouvez entrer une onde sinusoïdale ou une onde carrée pour tester la sortie.
Merci d'avoir lu, si vous avez des questions ou quelque chose que vous aimeriez que j'ajoute, laissez-moi un commentaire.
Jusqu'à la prochaine fois, continuez à faire!