Taula de continguts:
- Pas 1: coses necessàries per al projecte
- Pas 2: descarregueu i instal·leu Arduino IDE a Raspberry Pi
- Pas 3: Codi per a Arduino
- Pas 4: configureu Raspberry Pi
- Pas 5: Python Scipt
- Pas 6: Diagrama de circuits
- Pas 7: Resultat
Vídeo: Representar dades DHT11 mitjançant Raspberry Pi i Arduino UNO: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Aquest instructiu explica com dibuixo les dades del sensor DHT11 del sensor de temperatura mitjançant Arduino Uno i Raspberry Pi. En aquest sensor de temperatura es connecta Arduino Uno i Arduino Uno es connecta en sèrie amb Raspberry Pi. A Raspberry Pi Side, les biblioteques matplotlib, numpy i drawow s’utilitzen per representar gràfics.
Pas 1: coses necessàries per al projecte
1. Raspberry Pi
2. Arduino Uno
3. Sensor de temperatura DHT11
4. Cables de pont
5. Taula de pa
Pas 2: descarregueu i instal·leu Arduino IDE a Raspberry Pi
Nota: - Podeu utilitzar Arduino IDE de Windows, Linux o Mac per penjar esbossos a Arduino UNO.
El primer pas és instal·lar Arduino IDE per a aquest navegador obert a Raspberry Pi i obrir l'enllaç que es mostra a continuació
Arduino IDE anterior
A continuació, descarregueu la versió de Linux ARM i extracteu-la amb l'ordre
nom del fitxer tar -xf
Després d’extreure-la, veureu un nou directori. Aquí estic fent servir arduino-1.8.2 IDE. A continuació, aneu al directori mitjançant l'ordre.
cd arduino-1.8.1
Per executar Arduino IDE, utilitzeu aquesta ordre al directori arduino-1.8.2
./arduino
Com s'utilitzen les biblioteques
Per instal·lar qualsevol biblioteca a Arduino, simplement descarregueu-la i enganxeu-la a la carpeta arduino 1.8.2 ==> biblioteques.
NOTA: - Assegureu-vos que no hi ha cap (-) a la carpeta de la biblioteca per ex (sensor DHT). Si n'hi ha algun (-), canvieu-lo.
utilitzarem dues biblioteques en aquest instructiu, DHT_Sensor i Adafruit_Sensor
Pas 3: Codi per a Arduino
Ara, permetem que Python i Arduino parlin junts. En primer lloc, necessitem un programa senzill per fer que l’Arduino enviï dades pel port sèrie. El següent programa és un programa senzill que tindrà el recompte d'Arduino i enviarà les dades al port sèrie.
Codi Arduino
#include tempC flotant "DHT.h"; // Temperatura variable o de manteniment en C float tempF; // Variable per mantenir la temperatura en humitat flotant F; // Variable per mantenir la lectura de pressió
#define DHTPIN 7 // a quin pin digital estem connectats
#define DHTTYPE DHT11 // DHT 11
// # defineix DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
// # defineix DHTTYPE DHT21 // DHT 21 (AM2301)
// Inicialitzar el sensor DHT.
DHT dht (DHTPIN, DHTTYPE);
configuració nul·la () {Serial.begin (115200); // activar el monitor sèrie
dht.begin (); // inicialitzar dht}
bucle buit () {tempC = dht.readTemperature (); // Assegureu-vos de declarar les vostres variables
humitat = dht.readHumidity (); // Llegir Humitat
Serial.print (tempC);
Serial.print (",");
Serial.print (humitat);
Serial.print ("\ n"); // per a nou linedelay (2000); // Pausa entre lectures. }
Un cop s'hagi compilat l'esbós, seleccioneu el tauler i el port i pengeu-lo.
Pas 4: configureu Raspberry Pi
Un cop carregat el codi, instal·leu algunes biblioteques perquè puguem traçar un gràfic de dades que provenen en sèrie d'Arduino Uno.
1. PySerial és una biblioteca que proporciona suport per a connexions en sèrie a través de diversos dispositius. Per instal·lar-lo utilitzeu l'ordre.
Sudo apt-get install python-serial
2. Numpy és un paquet que defineix un objecte de matriu multidimensional i funcions matemàtiques ràpides associades que hi operen. També proporciona rutines simples per a l’àlgebra lineal i FFT (Transformada de Fourier ràpida) i sofisticada generació de nombres aleatoris. Podeu instal·lar-lo de moltes maneres: utilitzeu apt package o pip. Aquí estic instal·lant amb pip perquè primer hem d’instal·lar pip
sudo apt-get install python-pip python-dev build-essential
sudo pip instal·la numpy
o si voleu utilitzar el paquet apt
sudo apt install python-numpy
3. Matplotlib és una biblioteca de dibuix 2D que proporciona una API orientada a objectes per incrustar gràfics en aplicacions que utilitzen jocs d’eines GUI d’ús general com Tkinter, wxPython, Qt o GTK +. Per instal·lar-lo utilitzeu l'ordre
sudo pip instal·lar matplotlib
o bé
sudo apt install python-matplotlib
4. El dibuix s'utilitza generalment per veure els resultats després de cada iteració, ja que fem servir "imshow" a MATLAB. Per instal·lar-lo utilitzeu l'ordre
sudo pip instal·la drawow
Pas 5: Python Scipt
El següent pas és escriure un script Python per al qual pugueu utilitzar qualsevol editor per escriure'l.
1. Representa les dades en un gràfic
importa la sèrie # importa la biblioteca serial
import numpy # Importa numpy
importa matplotlib.pyplot com a llibreria # import matplotlib
des de la importació de dibuixos *
tempC = #Ehumid array array =
arduino = serial. Serial ("/ dev / ttyACM0", 115200)
plt.ion () # mode interactiu per representar el recompte de dades en viu = 0
def makeFig (): #Crea una funció que faci la trama desitjada
plt.ylim (20, 30) # Establir valors mínims i màxims
plt.title ("Dades DHT11 en temps real") # Traceu el títol
plt.grid (True) # Activa la graella
plt.ylabel ('Temp C') #Set ylabel
plt.plot (tempC, 'b ^ -', label = 'Grau C') #plot la temperatura
plt.legend (loc = 'superior dret') #plot la llegenda
plt2 = plt.twinx () # Crea un segon eix y
plt.ylim (50, 70) # Establir límits del segon eix y
plt2.plot (humitat, 'g * -', label = 'Humitat') #plot dades de pressió
plt2.set_ylabel ('Humitat') #label segon eix y
plt2.ticklabel_format (useOffset = False)
plt2.legend (loc = 'esquerra superior')
mentre és cert: # bucle mentre es fa un bucle per sempre
while (arduino.inWaiting () == 0): # Espereu aquí fins que hi hagi dades
passar # no fer res
arduinoString = arduino.readline ()
dataArray = arduinoString.split (',') #Split en una matriu
temp = float (dataArray [0])
hum = float (dataArray [1])
tempC.append (temp)
humitat.afegir (brunzit)
dibuixat (makeFig)
plt.pause (.000001)
compta = compta + 1 si (compta> 20): # només pren les últimes 20 dades si les dades són més, apareixerà primer
tempC.pop (0)
humitat.pop (0)
2. Representar la humitat i la temperatura per separat
importa la sèrie # importa la biblioteca serial
import numpy # Importa numpy
importa matplotlib.pyplot com a llibreria # import matplotlib
des de la importació de dibuixos *
tempC = # Matriu buida
humitat =
arduino = serial. Serial ("/ dev / ttyACM0", 115200) # Port serial al qual està connectat arduino i Baudrate
plt.ion () #Tell matplotlib que voleu el mode interactiu per representar dades en viu
def CreatePlot (): #Crea una funció que faci la trama desitjada
plt.subplot (2, 1, 1) #Altura, Amplada, Primera parcel·la
plt.ylim (22, 34) #Set y valors mínims i màxims
plt.title ("Dades DHT11 en temps real") # Traceu el títol
plt.grid (True) # Activa la graella
plt.ylabel ('Temp C') #Set ylabels
plt.plot (tempC, 'b ^ -', label = 'Grau C') #plot la temperatura
plt.legend (loc = 'centre superior') #plot la llegenda
plt.subplot (2, 1, 2) # Altura, amplada, segona trama
plt.grid (True)
plt.ylim (45, 70) # Establir límits del segon eix y
plt.plot (humitat, 'g * -', label = 'Humitat (g / m ^ 3)') #plot data data
plt.ylabel ('Humitat (g / m ^ 3)') #label segon eix y
plt.ticklabel_format (useOffset = False) # per aturar l’escala automàtica de l’eix y
plt.legend (loc = 'centre superior')
mentre és cert: # Mentre es fa un bucle per sempre
while (arduino.inWaiting () == 0): # Espereu aquí fins que hi hagi dades passades # no fer res
arduinoString = arduino.readline () #llegeix les dades des del port sèrie
dataArray = arduinoString.split (',') #Split en una matriu
temp = float (dataArray [0]) #Converteix el primer element en nombre flotant i posa temp
hum = float (dataArray [1]) #Converteix el segon element en nombre flotant i posa-hi hum
tempC.append (temp) #Construeix el nostre array tempC afegint la lectura temporal
humitat.append (brunzit) #Construint la nostra matriu d'humitat afegint la lectura del brunzit
dibuixat (CreatePlot)
plt.pause (.000001)
comptar = comptar + 1
if (recompte> 20): #nol prendre les últimes 20 dades si les dades són més, apareixerà primer
tempC.pop (0) # surt el primer element
humitat.pop (0)
Pas 6: Diagrama de circuits
Arduino ==> DHT11
3,3 V ==> VCC
GND ==> GND
D7 ==> OUT
Recomanat:
Feu parcel·les precioses a partir de dades Arduino en viu (i deseu les dades a Excel): 3 passos
Feu gràfics bonics a partir de dades Arduino en viu (i deseu les dades a Excel): a tots ens agrada jugar amb la nostra funció de loteria P … a l’IDE Arduino. Tot i que, si bé pot ser útil per a aplicacions bàsiques, les dades s’esborren com més s’afegeixen punts i no resulta especialment agradable als ulls. El traçador IDE Arduino no
Com fer un registre de dades en temps real de la humitat i la temperatura amb Arduino UNO i targeta SD - Simulació de registre de dades DHT11 a Proteus: 5 passos
Com fer un registre de dades en temps real d’humitat i temperatura amb Arduino UNO i targeta SD | Simulació de registre de dades DHT11 a Proteus: Introducció: hola, aquest és Liono Maker, aquí teniu l'enllaç de YouTube. Estem fent un projecte creatiu amb Arduino i treballem en sistemes incrustats
Com enviar dades DHT11 al servidor MySQL mitjançant NodeMCU: 6 passos
Com s’envien dades DHT11 al servidor MySQL mitjançant NodeMCU: en aquest projecte hem interfaçat DHT11 amb nodemcu i, a continuació, estem enviant dades de dht11, que són la humitat i la temperatura, a la base de dades phpmyadmin
Interfície LCD múltiple a Arduino Uno mitjançant una línia de dades comuna: 5 passos
Interfície LCD múltiple a Arduino Uno mitjançant la línia de dades comuna: Avui, en aquest instructiu, us mostraré com interfície de diversos mòduls LCD de 16x2 amb una placa arduino uno mitjançant una línia de dades comuna. El més interessant d’aquest projecte és que utilitza una línia de dades comuna i mostra diferents dades en e
Arduino envia dades Dht11 al servidor MySQL (PHPMYADMIN) mitjançant Python: 5 passos
Arduino està enviant dades Dht11 al servidor MySQL (PHPMYADMIN) mitjançant Python: en aquest projecte he interfaçat DHT11 amb arduino i després envio dades de dht11, que són la humitat i la temperatura, a la base de dades phpmyadmin. A diferència del nostre projecte anterior, en aquest cas no fem servir cap escut Ethernet, aquí només estem llegint t