Tabla de contenido:

Trazar datos DHT11 usando Raspberry Pi y Arduino UNO: 7 pasos
Trazar datos DHT11 usando Raspberry Pi y Arduino UNO: 7 pasos

Video: Trazar datos DHT11 usando Raspberry Pi y Arduino UNO: 7 pasos

Video: Trazar datos DHT11 usando Raspberry Pi y Arduino UNO: 7 pasos
Video: Control de arduino por comunicación serial con Raspberry Pi y Python Módulo 7 IoT 2024, Noviembre
Anonim
Trazar datos DHT11 usando Raspberry Pi y Arduino UNO
Trazar datos DHT11 usando Raspberry Pi y Arduino UNO

Este instructivo explica cómo trazo los datos del sensor de temperatura DHT11 usando Arduino Uno y Raspberry Pi. En este sensor de temperatura está conectado con Arduino Uno y Arduino Uno está conectado en serie con Raspberry Pi. En Raspberry Pi Side, las bibliotecas matplotlib, numpy y drawnow se utilizan para trazar gráficos.

Paso 1: Cosas necesarias para el proyecto

Cosas necesarias para el proyecto
Cosas necesarias para el proyecto
Cosas necesarias para el proyecto
Cosas necesarias para el proyecto
Cosas necesarias para el proyecto
Cosas necesarias para el proyecto

1. Raspberry Pi

2. Arduino Uno

3. Sensor de temperatura DHT11

4. Cables de puente

5. Tablero de pruebas

Paso 2: Descargue e instale Arduino IDE en Raspberry Pi

Descargue e instale Arduino IDE en Raspberry Pi
Descargue e instale Arduino IDE en Raspberry Pi
Descargue e instale Arduino IDE en Raspberry Pi
Descargue e instale Arduino IDE en Raspberry Pi
Descargue e instale Arduino IDE en Raspberry Pi
Descargue e instale Arduino IDE en Raspberry Pi

Nota: - Puede usar Arduino IDE de Windows, Linux o Mac para cargar bocetos en Arduino UNO.

El primer paso es instalar Arduino IDE para ese navegador abierto en Raspberry Pi y abrir el enlace que se muestra a continuación.

IDE anterior de Arduino

Luego descargue la versión de ARM de Linux y extráigala usando el comando

tar -xf nombre de archivo

Después de extraer, verá un nuevo directorio. Aquí estoy usando arduino-1.8.2 IDE. Luego vaya al directorio usando el comando.

cd arduino-1.8.1

Para ejecutar Arduino IDE, use este comando en el directorio arduino-1.8.2

./arduino

Cómo utilizar las bibliotecas

Para instalar cualquier biblioteca en Arduino, simplemente descargue la biblioteca y péguela en arduino 1.8.2 ==> carpeta de bibliotecas.

NOTA: - Asegúrese de que no haya (-) en la carpeta de la biblioteca por ejemplo (sensor DHT). Si hay alguno (-), cámbiele el nombre.

Usaremos dos bibliotecas en este instructable, DHT_Sensor y Adafruit_Sensor

Paso 3: Código para Arduino

Código para Arduino
Código para Arduino

Ahora, hagamos que Python y Arduino hablen juntos. En primer lugar, necesitamos un programa simple para que Arduino envíe datos a través del puerto serie. El siguiente programa es un programa simple que tendrá el recuento de Arduino y enviará los datos al puerto serie.

Código Arduino

#include "DHT.h" float tempC; // Temperatura variable o de mantenimiento en C float tempF; // Variable para mantener la temperatura en F la humedad del flotador; // Variable para la lectura de la presión de mantenimiento

#define DHTPIN 7 // a qué pin digital estamos conectados

#define DHTTYPE DHT11 // DHT 11

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

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

// Inicializar el sensor DHT.

DHT dht (DHTPIN, DHTTYPE);

configuración vacía () {Serial.begin (115200); // enciende el monitor en serie

dht.begin (); // inicializar dht}

bucle vacío () {tempC = dht.readTemperature (); // Asegúrate de declarar tus variables

humedad = dht.readHumidity (); // Leer humedad

Serial.print (tempC);

Serial.print (",");

Serial.print (humedad);

Serial.print ("\ n"); // para nuevo retardo de línea (2000); // Pausa entre lecturas. }

Una vez compilado el boceto, seleccione la placa y el puerto y cárguelo.

Paso 4: Configura Raspberry Pi

Configurar Raspberry Pi
Configurar Raspberry Pi

Una vez que se cargue el código, instale algunas bibliotecas para que podamos trazar el gráfico de los datos que provienen en serie de Arduino Uno.

1. PySerial es una biblioteca que brinda soporte para conexiones seriales en una variedad de dispositivos diferentes. Para instalarlo use el comando.

Sudo apt-get install python-serial

2. Numpy es un paquete que define un objeto de matriz multidimensional y funciones matemáticas rápidas asociadas que operan en él. También proporciona rutinas simples para álgebra lineal y FFT (Transformada rápida de Fourier) y generación sofisticada de números aleatorios. Puede instalarlo de muchas formas utilizando el paquete apt o pip. Aquí estoy instalando usando pip para eso primero tenemos que instalar pip

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

sudo pip instalar numpy

o si quieres usar el paquete apt

sudo apt install python-numpy

3. Matplotlib es una biblioteca de trazado en 2D que proporciona una API orientada a objetos para incrustar trazados en aplicaciones que utilizan kits de herramientas de GUI de propósito general como Tkinter, wxPython, Qt o GTK +. Para instalarlo use el comando

sudo pip instalar matplotlib

o

sudo apt instalar python-matplotlib

4. Drawnow se usa generalmente para ver los resultados después de cada iteración, ya que usamos "imshow" en MATLAB. Para instalarlo use el comando

sudo pip instalar drawnow

Paso 5: Python Scipt

Python Scipt
Python Scipt
Python Scipt
Python Scipt

El siguiente paso es escribir un script de Python para el que puede usar cualquier editor para escribirlo.

1. Trace los datos en un gráfico

importar serial # importar biblioteca serial

importar numpy # Importar numpy

importar matplotlib.pyplot como plt #importar biblioteca matplotlib

desde la importación de drawnow *

tempC = # matriz vacía humedad =

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

plt.ion () # modo interactivo para trazar el recuento de datos en vivo = 0

def makeFig (): #Crear una función que haga nuestro gráfico deseado

plt.ylim (20, 30) #Establecer y valores mínimos y máximos

plt.title ('Datos DHT11 en tiempo real') #Escriba el título

plt.grid (True) #Enciende la cuadrícula

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

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

plt.legend (loc = 'superior derecha') # trazar la leyenda

plt2 = plt.twinx () #Crear un segundo eje y

plt.ylim (50, 70) #Establecer límites del segundo eje y

plt2.plot (humedad, 'g * -', label = 'Humedad') #plot presiones de datos

plt2.set_ylabel ('Humedad') #label segundo eje y

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = 'superior izquierda')

while True: # Bucle while que se repite para siempre

while (arduino.inWaiting () == 0): #Espera aquí hasta que haya datos

pasar # no hacer nada

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #Dividirlo en una matriz

temp = float (dataArray [0])

hum = float (dataArray [1])

tempC.append (temp)

humedad.append (zumbido)

dibujar ahora (makeFig)

plt.pause (.000001)

count = count + 1 if (count> 20): # solo tome los últimos 20 datos si los datos son más, aparecerán primero

tempC.pop (0)

humedad.pop (0)

2. Para trazar la humedad y la temperatura por separado

importar serial # importar biblioteca serial

importar numpy # Importar numpy

importar matplotlib.pyplot como plt #importar biblioteca matplotlib

desde la importación de drawnow *

tempC = # matriz vacía

humedad =

arduino = serial. Serial ("/ dev / ttyACM0", 115200) # Puerto serial al que arduino está conectado y velocidad en baudios

plt.ion () # Dígale a matplotlib que desea que el modo interactivo trace datos en vivo

def CreatePlot (): #Crear una función que haga nuestro gráfico deseado

plt.subplot (2, 1, 1) #Altura, Ancho, Primera parcela

plt.ylim (22, 34) #Establecer y valores mínimos y máximos

plt.title ('Datos DHT11 en tiempo real') #Escriba el título

plt.grid (True) #Enciende la cuadrícula

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

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

plt.legend (loc = 'upper center') # trazar la leyenda

plt.subplot (2, 1, 2) # Alto, Ancho, Segunda parcela

plt.grid (verdadero)

plt.ylim (45, 70) #Establecer límites del segundo eje y

plt.plot (humedad, 'g * -', label = 'Humedad (g / m ^ 3)') #plot humedad datos

plt.ylabel ('Humedad (g / m ^ 3)') #label segundo eje y

plt.ticklabel_format (useOffset = False) # para detener el eje y de autoescala

plt.legend (loc = 'centro superior')

while True: # Bucle while que se repite para siempre

while (arduino.inWaiting () == 0): #Espere aquí hasta que haya un paso de datos # no haga nada

arduinoString = arduino.readline () # leer los datos del puerto serie

dataArray = arduinoString.split (',') #Dividirlo en una matriz

temp = float (dataArray [0]) #Convertir el primer elemento a un número flotante y ponerlo en temp

hum = float (dataArray [1]) #Convierta el segundo elemento a un número flotante y póngalo en zumbido

tempC.append (temp) #Construye nuestra matriz tempC agregando lectura temporal

humedad.append (hum) #Construir nuestra matriz de humedad agregando lectura de zumbido

dibujar ahora (CreatePlot)

plt.pause (.000001)

cuenta = cuenta + 1

if (count> 20): # solo tome los últimos 20 datos si los datos son más, aparecerán primero

tempC.pop (0) # emerge el primer elemento

humedad.pop (0)

Paso 6: diagrama de circuito

Diagrama de circuito
Diagrama de circuito
Diagrama de circuito
Diagrama de circuito
Diagrama de circuito
Diagrama de circuito

Arduino ==> DHT11

3,3 V ==> VCC

GND ==> GND

D7 ==> FUERA

Recomendado: