Table des matières:

Tracer les données DHT11 à l'aide de Raspberry Pi et Arduino UNO : 7 étapes
Tracer les données DHT11 à l'aide de Raspberry Pi et Arduino UNO : 7 étapes

Vidéo: Tracer les données DHT11 à l'aide de Raspberry Pi et Arduino UNO : 7 étapes

Vidéo: Tracer les données DHT11 à l'aide de Raspberry Pi et Arduino UNO : 7 étapes
Vidéo: Enregistrer les données des capteurs dans une base de données 2024, Novembre
Anonim
Tracer les données DHT11 à l'aide de Raspberry Pi et Arduino UNO
Tracer les données DHT11 à l'aide de Raspberry Pi et Arduino UNO

Cette instructable explique comment je trace les données du capteur de température DHT11 à l'aide d'Arduino Uno et de Raspberry Pi. Dans ce capteur de température est connecté avec Arduino Uno et Arduino Uno est connecté en série avec Raspberry Pi. Chez Raspberry Pi Side, les bibliothèques matplotlib, numpy et drawow sont utilisées pour tracer des graphiques.

Étape 1: Choses nécessaires pour le projet

Choses nécessaires pour le projet
Choses nécessaires pour le projet
Choses nécessaires pour le projet
Choses nécessaires pour le projet
Choses nécessaires pour le projet
Choses nécessaires pour le projet

1. Framboise Pi

2. Arduino Uno

3. Capteur de température DHT11

4. Fils de cavalier

5. Planche à pain

Étape 2: Téléchargez et installez Arduino IDE dans Raspberry Pi

Téléchargez et installez Arduino IDE dans Raspberry Pi
Téléchargez et installez Arduino IDE dans Raspberry Pi
Téléchargez et installez Arduino IDE dans Raspberry Pi
Téléchargez et installez Arduino IDE dans Raspberry Pi
Téléchargez et installez Arduino IDE dans Raspberry Pi
Téléchargez et installez Arduino IDE dans Raspberry Pi

Remarque:- Vous pouvez utiliser l'IDE Arduino de Windows, Linux ou Mac pour télécharger un croquis dans Arduino UNO.

La première étape consiste à installer Arduino IDE pour ce navigateur ouvert dans Raspberry Pi et à ouvrir le lien ci-dessous

IDE précédent Arduino

Ensuite, téléchargez la version Linux ARM et extrayez-la à l'aide de la commande

tar -xf nom de fichier

Après l'extraction, vous verrez un nouveau répertoire. Ici, j'utilise arduino-1.8.2 IDE. Ensuite, allez dans le répertoire en utilisant la commande.

cd arduino-1.8.1

Pour exécuter Arduino IDE, utilisez cette commande dans le répertoire arduino-1.8.2

./arduino

Comment utiliser les bibliothèques

Pour installer des bibliothèques dans Arduino, téléchargez simplement la bibliothèque et collez-la dans arduino 1.8.2 ==> dossier des bibliothèques.

REMARQUE: - Assurez-vous qu'il n'y a pas de (-) dans le dossier de la bibliothèque par ex (capteur DHT). S'il y en a (-), renommez-le.

nous utiliserons deux bibliothèques dans cette instructable, DHT_Sensor et Adafruit_Sensor

Étape 3: Coder pour Arduino

Code pour Arduino
Code pour Arduino

Maintenant, faisons parler Python et Arduino ensemble. Tout d'abord, nous avons besoin d'un programme simple pour que l'Arduino envoie des données sur le port série. Le programme suivant est un programme simple qui aura le compte Arduino et enverra les données au port série.

Code Arduino

#include "DHT.h" float tempC; // Variable ou maintien de la température en C float tempF; // Variable pour maintenir la température dans F float humidité; //Variable pour la lecture de la pression de maintien

#define DHTPIN 7 // à quelle broche numérique nous sommes connectés

#définir DHTTYPE DHT11 // DHT 11

//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

//#define DHTTYPE DHT21 // DHT 21 (AM2301)

// Initialiser le capteur DHT.

DHT dht (DHTPIN, DHTTYPE);

void setup(){Serial.begin(115200); //activer le moniteur série

dht.begin(); //initialiser dht }

boucle vide() {tempC = dht.readTemperature(); // Assurez-vous de déclarer vos variables

humidité = dht.readHumidity(); // Lire l'humidité

Serial.print(tempC);

Serial.print(", ");

Serial.print(humidité);

Serial.print("\n"); // pour un nouveau délai de ligne (2000); // Pause entre les lectures. }

Une fois le croquis compilé, sélectionnez la carte et le port et téléchargez-le.

Étape 4: Configurer Raspberry Pi

Configurer Raspberry Pi
Configurer Raspberry Pi

Une fois le code téléchargé, installez des bibliothèques afin que nous puissions tracer un graphique de données provenant en série d'Arduino Uno.

1. PySerial est une bibliothèque qui prend en charge les connexions série sur une variété d'appareils différents. Pour l'installer, utilisez la commande.

Sudo apt-get install python-serial

2. Numpy est un package qui définit un objet tableau multidimensionnel et les fonctions mathématiques rapides associées qui fonctionnent dessus. Il fournit également des routines simples pour l'algèbre linéaire et la FFT (Fast Fourier Transform) et la génération sophistiquée de nombres aléatoires. Vous pouvez l'installer de plusieurs manières, soit en utilisant le package apt, soit en pip. Ici, j'installe en utilisant pip pour cela, nous devons d'abord installer pip

sudo apt-get install python-pip python-dev build-essential

sudo pip installer numpy

ou si vous voulez utiliser le package apt

sudo apt installer python-numpy

3. Matplotlib est une bibliothèque de traçage 2D qui fournit une API orientée objet pour intégrer des tracés dans des applications à l'aide de kits d'outils d'interface graphique à usage général tels que Tkinter, wxPython, Qt ou GTK+. Pour l'installer, utilisez la commande

sudo pip installer matplotlib

ou

sudo apt installer python-matplotlib

4. Drawnow est généralement utilisé pour voir les résultats après chaque itération car nous utilisons "imshow" dans MATLAB. Pour l'installer, utilisez la commande

sudo pip install drawow

Étape 5: Script Python

Script Python
Script Python
Script Python
Script Python

L'étape suivante consiste à écrire un script python pour lequel vous pouvez utiliser n'importe quel éditeur pour l'écrire.

1. Tracer les données dans un graphique

importer le numéro de série importer la bibliothèque de série

importer numpy # Importer numpy

importer matplotlib.pyplot en tant que plt # importer la bibliothèque matplotlib

à partir de l'import de tirage *

tempC = #Tableau videhumidité =

arduino = serial. Serial("/dev/ttyACM0", 115200)

plt.ion() # mode interactif pour tracer le compteur de données en direct = 0

def makeFig(): #Créer une fonction qui crée le tracé souhaité

plt.ylim (20, 30) #Définir les valeurs y min et max

plt.title('Données DHT11 en temps réel') #Tracer le titre

plt.grid(True) #Activer la grille

plt.ylabel('Temp C') #Définir ylabel

plt.plot(tempC, 'b^-', label='Degree C') #tracer la température

plt.legend(loc='en haut à droite') #tracer la légende

plt2=plt.twinx() #Créer un deuxième axe y

plt.ylim (50, 70) #Définir les limites du deuxième axe y

plt2.plot(humidité, 'g*-', label='Humidity') #plot données de pression

plt2.set_ylabel('Humidité') #étiquette deuxième axe y

plt2.ticklabel_format(useOffset=False)

plt2.legend(loc='en haut à gauche')

while True: # Boucle While qui boucle pour toujours

while (arduino.inWaiting()==0): #Attendez ici jusqu'à ce qu'il y ait des données

passer #ne rien faire

chaîne arduino = arduino.readline()

dataArray = arduinoString.split(', ') # Divisez-le en un tableau

temp = float(tableaudonnées[0])

hum = float(dataArray[1])

tempC.append(temp)

humidité.append (hum)

dessiner(makeFig)

plt.pause(.000001)

count=count+1 if(count>20): #ne prends que les 20 dernières données si les données sont plus, elles apparaîtront en premier

tempC.pop(0)

humidité.pop(0)

2. Pour tracer l'humidité et la température séparément

importer le numéro de série importer la bibliothèque de série

importer numpy # Importer numpy

importer matplotlib.pyplot en tant que plt # importer la bibliothèque matplotlib

à partir de l'import de tirage *

tempC = #Tableau vide

humidité =

arduino = serial. Serial("/dev/ttyACM0", 115200) #Serial port auquel arduino est connecté et Baudrate

plt.ion() #Dites à matplotlib que vous voulez que le mode interactif trace des données en direct

def CreatePlot(): #Créer une fonction qui crée le tracé souhaité

plt.subplot(2, 1, 1) #Hauteur, Largeur, Premier tracé

plt.ylim(22, 34) #Définir les valeurs y min et max

plt.title('Données DHT11 en temps réel') #Tracer le titre

plt.grid(True) #Activer la grille

plt.ylabel('Temp C') #Définir les étiquettes y

plt.plot(tempC, 'b^-', label='Degree C') #tracer la température

plt.legend(loc='upper center') #tracer la légende

plt.subplot(2, 1, 2) # Hauteur, Largeur, Deuxième tracé

plt.grid (Vrai)

plt.ylim(45, 70) #Définir les limites du deuxième axe y

plt.plot(humidité, 'g*-', label='Humidité (g/m^3)') #plot données d'humidité

plt.ylabel('Humidité (g/m^3)') #label deuxième axe y

plt.ticklabel_format(useOffset=False) #pour arrêter la mise à l'échelle automatique de l'axe y

plt.legend(loc='centre supérieur')

while True: # boucle While qui boucle pour toujours

while (arduino.inWaiting()==0): #Attendez ici jusqu'à ce qu'il y ait une transmission de données #ne rien faire

arduinoString = arduino.readline() #lire les données du port série

dataArray = arduinoString.split(', ') # Divisez-le en un tableau

temp = float(dataArray[0]) #Convertir le premier élément en nombre flottant et le mettre en temp

hum = float(dataArray[1]) #Convertir le deuxième élément en nombre flottant et le mettre dans hum

tempC.append(temp) #Construisez notre tableau tempC en ajoutant la lecture temporaire

humidite.append(hum) #Construire notre tableau d'humidité en ajoutant la lecture de bourdonnement

dessiner(Créer un tracé)

plt.pause(.000001)

compte=compte+1

if(count>20): #ne prends que les 20 dernières données si les données sont plus, elles apparaîtront en premier

tempC.pop(0) # fait apparaître le premier élément

humidité.pop(0)

Étape 6: Schéma de circuit

Schéma
Schéma
Schéma
Schéma
Schéma
Schéma

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> SORTIE

Conseillé: