Sommario:

Traccia i dati DHT11 usando Raspberry Pi e Arduino UNO: 7 passaggi
Traccia i dati DHT11 usando Raspberry Pi e Arduino UNO: 7 passaggi

Video: Traccia i dati DHT11 usando Raspberry Pi e Arduino UNO: 7 passaggi

Video: Traccia i dati DHT11 usando Raspberry Pi e Arduino UNO: 7 passaggi
Video: Getting data from DHT11 sensor through SIM900 GSM Shield with Arduino #arduino #electronics #diy 2024, Dicembre
Anonim
Traccia i dati DHT11 usando Raspberry Pi e Arduino UNO
Traccia i dati DHT11 usando Raspberry Pi e Arduino UNO

Questa istruzione spiega come tracciare i dati DHT11 del sensore di temperatura utilizzando Arduino Uno e Raspberry Pi. In questo sensore di temperatura è collegato con Arduino Uno e Arduino Uno è collegato in serie con Raspberry Pi. In Raspberry Pi Side, le librerie matplotlib, numpy e drawow vengono utilizzate per tracciare i grafici.

Passaggio 1: cose necessarie per il progetto

Cose necessarie per il progetto
Cose necessarie per il progetto
Cose necessarie per il progetto
Cose necessarie per il progetto
Cose necessarie per il progetto
Cose necessarie per il progetto

1. Lampone Pi

2. Arduino Uno

3. Sensore di temperatura DHT11

4. Ponticelli

5. Tagliere

Passaggio 2: scarica e installa Arduino IDE in Raspberry Pi

Scarica e installa Arduino IDE in Raspberry Pi
Scarica e installa Arduino IDE in Raspberry Pi
Scarica e installa Arduino IDE in Raspberry Pi
Scarica e installa Arduino IDE in Raspberry Pi
Scarica e installa Arduino IDE in Raspberry Pi
Scarica e installa Arduino IDE in Raspberry Pi

Nota: - È possibile utilizzare l'IDE Arduino di Windows, Linux o Mac per caricare lo schizzo in Arduino UNO.

Il primo passo è installare Arduino IDE per quel browser aperto in Raspberry Pi e aprire il collegamento indicato di seguito

Arduino IDE precedente

Quindi scarica la versione Linux ARM ed estraila usando il comando

nome file tar -xf

Dopo l'estrazione vedrai una nuova directory. Qui sto usando arduino-1.8.2 IDE. Quindi vai alla directory usando il comando.

cd arduino-1.8.1

Per eseguire Arduino IDE, usa questo comando nella directory arduino-1.8.2

./arduino

Come usare le librerie

Per installare qualsiasi libreria in Arduino, è sufficiente scaricare la libreria e incollarla nella cartella delle librerie di arduino 1.8.2 ==>.

NOTA: - Assicurati che non ci sia (-) nella cartella della libreria, ad esempio (sensore DHT). Se c'è (-), rinominalo.

useremo due librerie in questo istruibile, DHT_Sensor e Adafruit_Sensor

Passaggio 3: codice per Arduino

Codice per Arduino
Codice per Arduino

Ora mettiamo Python e Arduino a parlare insieme. Per prima cosa abbiamo bisogno di un semplice programma per far sì che Arduino invii dati sulla porta seriale. Il seguente programma è un semplice programma che avrà il conteggio di Arduino e invierà i dati alla porta seriale.

Codice Arduino

#include "DHT.h" float tempC; // Variabile o mantenimento della temperatura in C float tempF; // Variabile per mantenere la temperatura nell'umidità F float; //Variabile per mantenere la lettura della pressione

#define DHTPIN 7 // a quale pin digitale siamo connessi

#define DHTTYPE DHT11 // DHT 11

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

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

// Inizializza il sensore DHT.

DHT dht(DHTPIN, DHTTYPE);

void setup(){Serial.begin(115200); //accendi il monitor seriale

dht.begin(); //inizializzo dht }

void loop() {tempC = dht.readTemperature(); // Assicurati di dichiarare le tue variabili

umidità = dht.readHumidity(); // Leggi l'umidità

Serial.print(tempC);

Serial.print(", ");

Serial.print(umidità);

Serial.print("\n"); // per new linedelay(2000); //Pausa tra le letture. }

Una volta compilato lo schizzo, seleziona scheda e porta e caricalo.

Passaggio 4: configurare Raspberry Pi

Configura Raspberry Pi
Configura Raspberry Pi

Una volta caricato il codice, installa alcune librerie in modo da poter tracciare il grafico dei dati che provengono in serie da Arduino Uno.

1. PySerial è una libreria che fornisce supporto per le connessioni seriali su una varietà di dispositivi diversi. Per installarlo usa il comando.

Sudo apt-get install python-serial

2. Numpy è un pacchetto che definisce un oggetto array multidimensionale e le funzioni matematiche veloci associate che operano su di esso. Fornisce inoltre semplici routine per l'algebra lineare e la FFT (Fast Fourier Transform) e la generazione di numeri casuali sofisticati. Puoi installarlo in molti modi usando il pacchetto apt o pip. Qui sto installando usando pip perché prima dobbiamo installare pip

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

sudo pip install numpy

o se vuoi usare il pacchetto apt

sudo apt install python-numpy

3. Matplotlib è una libreria di plottaggio 2D che fornisce un'API orientata agli oggetti per incorporare grafici in applicazioni utilizzando toolkit GUI generici come Tkinter, wxPython, Qt o GTK+. Per installarlo usa il comando

sudo pip install matplotlib

o

sudo apt install python-matplotlib

4. Drawnow è generalmente usato per vedere i risultati dopo ogni iterazione poiché usiamo "imshow" in MATLAB. Per installarlo usa il comando

sudo pip install drawow

Passaggio 5: Python Scipt

Python Scipt
Python Scipt
Python Scipt
Python Scipt

Il prossimo passo è scrivere uno script Python per cui puoi usare qualsiasi editor per scriverlo.

1. Traccia i dati in un grafico

import serial # import Serial Library

import numpy # Importa numpy

import matplotlib.pyplot come plt #import libreria matplotlib

dall'importazione del prelievo *

tempC = #Array vuotoumidità =

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

plt.ion() # modalità interattiva per tracciare il conteggio dei dati in tempo reale = 0

def makeFig(): #Crea una funzione che crei il nostro grafico desiderato

plt.ylim(20, 30) #Imposta i valori minimo e massimo

plt.title('Dati DHT11 in tempo reale') #Traccia il titolo

plt.grid(True) #Accendi la griglia

plt.ylabel('Temp C') #Set ylabel

plt.plot(tempC, 'b^-', label='Degree C') #traccia la temperatura

plt.legend(loc='in alto a destra') #traccia la legenda

plt2=plt.twinx() #Crea un secondo asse y

plt.ylim(50, 70) #Imposta i limiti del secondo asse y

plt2.plot(humidity, 'g*-', label='Humidity') #plot pressione dati

plt2.set_ylabel('Humidity') #label secondo asse y

plt2.ticklabel_format(useOffset=False)

plt2.legend(loc='in alto a sinistra')

while True: # ciclo While che si ripete all'infinito

while (arduino.inWaiting()==0): #Aspetta qui finché non ci sono dati

passa #non fare nulla

arduinoString = arduino.readline()

dataArray = arduinoString.split(', ') #Dividilo in un array

temp = float(dataArray[0])

ronzio = float(dataArray[1])

tempC.append(temp)

umidità.append (ronzio)

disegnato (makeFig)

plt.pause(.000001)

count=count+1 if(count>20): #prende solo gli ultimi 20 dati se i dati sono di più, verranno visualizzati per primi

tempC.pop(0)

umidità.pop(0)

2. Per tracciare l'umidità e la temperatura separatamente

import serial # import Serial Library

import numpy # Importa numpy

import matplotlib.pyplot come plt #import libreria matplotlib

dall'importazione del prelievo *

tempC = #array vuoto

umidità =

arduino = serial. Serial("/dev/ttyACM0", 115200) #Porta seriale a cui è connesso arduino e Baudrate

plt.ion() #Dì a matplotlib che vuoi che la modalità interattiva tracci i dati in tempo reale

def CreatePlot(): #Crea una funzione che crei il nostro grafico desiderato

plt.subplot(2, 1, 1) #Altezza, Larghezza, Primo grafico

plt.ylim(22, 34) #Imposta i valori minimo e massimo

plt.title('Dati DHT11 in tempo reale') #Traccia il titolo

plt.grid(True) #Accendi la griglia

plt.ylabel('Temp C') #Set ylabels

plt.plot(tempC, 'b^-', label='Degree C') #traccia la temperatura

plt.legend(loc='superiore al centro') #traccia la legenda

plt.subplot(2, 1, 2) # Altezza, Larghezza, Secondo grafico

plt.grid (Vero)

plt.ylim(45, 70) #Imposta i limiti del secondo asse y

plt.plot(humidity, 'g*-', label='Humidity (g/m^3)') #plot umidità data

plt.ylabel('Humidity (g/m^3)') #label secondo asse y

plt.ticklabel_format(useOffset=False) #per interrompere la scalabilità automatica dell'asse y

plt.legend(loc='centro superiore')

while True: # ciclo While che si ripete all'infinito

while (arduino.inWaiting()==0): #Attendi qui finché non ci sono dati passati #non fare nulla

arduinoString = arduino.readline() #legge i dati dalla porta seriale

dataArray = arduinoString.split(', ') #Dividilo in un array

temp = float(dataArray[0]) #Converti il primo elemento in un numero mobile e inserisci temp

hum = float(dataArray[1]) #Converti il secondo elemento in un numero mobile e inserisci hum

tempC.append(temp) #Costruisci il nostro array tempC aggiungendo la lettura temporanea

umidità.append(hum) #Costruire il nostro array di umidità aggiungendo la lettura del ronzio

drawow(CreaPlot)

plt.pause(.000001)

conta=conta+1

if(count>20): #prende solo gli ultimi 20 dati se i dati sono di più, verranno visualizzati per primi

tempC.pop(0) # estrae il primo elemento

umidità.pop(0)

Passaggio 6: diagramma del circuito

Schema elettrico
Schema elettrico
Schema elettrico
Schema elettrico
Schema elettrico
Schema elettrico

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> FUORI

Consigliato: