Índice:

Traçar dados DHT11 usando Raspberry Pi e Arduino UNO: 7 etapas
Traçar dados DHT11 usando Raspberry Pi e Arduino UNO: 7 etapas

Vídeo: Traçar dados DHT11 usando Raspberry Pi e Arduino UNO: 7 etapas

Vídeo: Traçar dados DHT11 usando Raspberry Pi e Arduino UNO: 7 etapas
Vídeo: Bluetooth Low Energy ( BLE ) Peripherals with Arduino for Beginners 2024, Novembro
Anonim
Traçar dados DHT11 usando Raspberry Pi e Arduino UNO
Traçar dados DHT11 usando Raspberry Pi e Arduino UNO

Este instrutível explica como ploto os dados do sensor de temperatura DHT11 usando Arduino Uno e Raspberry Pi. Neste sensor de temperatura está conectado com o Arduino Uno e o Arduino Uno está conectado em série com o Raspberry Pi. No Raspberry Pi Side, as bibliotecas matplotlib, numpy e drawnow são usadas para plotar gráficos.

Etapa 1: Coisas necessárias para o projeto

Coisas necessárias para o projeto
Coisas necessárias para o projeto
Coisas necessárias para o projeto
Coisas necessárias para o projeto
Coisas necessárias para o projeto
Coisas necessárias para o projeto

1. Raspberry Pi

2. Arduino Uno

3. Sensor de temperatura DHT11

4. Fios de ligação

5. Placa de ensaio

Etapa 2: Baixe e instale o IDE do Arduino no Raspberry Pi

Baixe e instale o IDE do Arduino no Raspberry Pi
Baixe e instale o IDE do Arduino no Raspberry Pi
Baixe e instale o IDE do Arduino no Raspberry Pi
Baixe e instale o IDE do Arduino no Raspberry Pi
Baixe e instale o IDE do Arduino no Raspberry Pi
Baixe e instale o IDE do Arduino no Raspberry Pi

Nota: - Você pode usar o IDE do Arduino do Windows, Linux ou Mac para fazer upload do esboço no Arduino UNO.

O primeiro passo é instalar o Arduino IDE para esse navegador aberto no Raspberry Pi e abrir o link fornecido abaixo

Arduino IDE anterior

Em seguida, baixe a versão Linux ARM e extraia usando o comando

nome do arquivo tar -xf

Depois de extrair, você verá um novo diretório. Aqui estou usando o IDE arduino-1.8.2. Em seguida, vá para o diretório usando o comando.

cd arduino-1.8.1

Para executar o Arduino IDE, use este comando no diretório arduino-1.8.2

./arduino

Como usar bibliotecas

Para instalar qualquer biblioteca no Arduino, basta baixar a biblioteca e colar no arduino 1.8.2 ==> pasta libraries.

NOTA: - Certifique-se de que não há (-) na pasta da biblioteca para ex (sensor DHT). Se houver algum (-), renomeie-o.

usaremos duas bibliotecas neste instrutível, DHT_Sensor e Adafruit_Sensor

Etapa 3: Código para Arduino

Código para Arduino
Código para Arduino

Agora, vamos colocar Python e Arduino conversando. Primeiramente, precisamos de um programa simples para fazer o Arduino enviar dados pela porta serial. O programa a seguir é um programa simples que fará a contagem do Arduino e enviará os dados para a porta serial.

Código Arduino

#include "DHT.h" float tempC; // Variável ou temperatura de retenção em C float tempF; // Variável para manter a temperatura em F float umidade; // Variável para manter a leitura da pressão

#define DHTPIN 7 // a qual pino digital estamos conectados

# define DHTTYPE DHT11 // DHT 11

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

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

// Inicializa o sensor DHT.

DHT dht (DHTPIN, DHTTYPE);

void setup () {Serial.begin (115200); // liga o monitor serial

dht.begin (); // inicializar dht}

void loop () {tempC = dht.readTemperature (); // Certifique-se de declarar suas variáveis

umidade = dht.readHumidity (); // Ler umidade

Serial.print (tempC);

Serial.print (",");

Serial.print (umidade);

Serial.print ("\ n"); // para novo linedelay (2000); // Pausa entre as leituras. }

Depois que o esboço for compilado, selecione a placa e a porta e faça o upload.

Etapa 4: configuração do Raspberry Pi

Configuração do Raspberry Pi
Configuração do Raspberry Pi

Depois de fazer o upload do código, instale algumas bibliotecas para que possamos traçar o gráfico dos dados que vêm em série do Arduino Uno.

1. PySerial é uma biblioteca que fornece suporte para conexões seriais em uma variedade de dispositivos diferentes. Para instalá-lo, use o comando.

Sudo apt-get install python-serial

2. Numpy é um pacote que define um objeto de matriz multidimensional e funções matemáticas rápidas associadas que operam nele. Ele também fornece rotinas simples para álgebra linear e FFT (Fast Fourier Transform) e geração sofisticada de números aleatórios. Você pode instalá-lo de várias maneiras usando o pacote apt ou pip. Aqui estou instalando usando o pip para que primeiro temos que instalar o pip

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

sudo pip install numpy

ou se você quiser usar o pacote apt

sudo apt install python-numpy

3. Matplotlib é uma biblioteca de plotagem 2D que fornece uma API orientada a objetos para embutir plotagens em aplicativos usando kits de ferramentas GUI de uso geral, como Tkinter, wxPython, Qt ou GTK +. Para instalá-lo, use o comando

sudo pip install matplotlib

ou

sudo apt install python-matplotlib

4. Drawnow é geralmente usado para ver os resultados após cada iteração, pois usamos "imshow" no MATLAB. Para instalá-lo, use o comando

sudo pip install drawnow

Etapa 5: Python Scipt

Python Scipt
Python Scipt
Python Scipt
Python Scipt

O próximo passo é escrever um script python para que você possa usar qualquer editor para escrevê-lo.

1. Plote os dados em um gráfico

import serial # import Biblioteca serial

import numpy # Import numpy

import matplotlib.pyplot as plt #import matplotlib library

de importação drawnow *

tempC = #Empty arrayhumidity =

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

plt.ion () # modo interativo para plotar a conta de dados ao vivo = 0

def makeFig (): #Crie uma função que faça nosso gráfico desejado

plt.ylim (20, 30) #Defina os valores mínimo e máximo

plt.title ('Dados DHT11 em tempo real') # Coloque o título

plt.grid (True) #Ligue a grade

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

plt.plot (tempC, 'b ^ -', label = 'Grau C') #plot a temperatura

plt.legend (loc = 'superior direito') #plot the legend

plt2 = plt.twinx () #Crie um segundo eixo y

plt.ylim (50, 70) # Definir limites do segundo eixo y

plt2.plot (umidade, 'g * -', rótulo = 'Umidade') #plot dados de pressão

plt2.set_ylabel ('Umidade') #label segundo eixo y

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = 'superior esquerdo')

while True: # loop while que faz um loop para sempre

while (arduino.inWaiting () == 0): #Aguarde aqui até que haja dados

passe # não faça nada

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #Dividi-lo em um array

temp = float (dataArray [0])

hum = float (dataArray [1])

tempC.append (temp)

umidade.append (hum)

drawnow (makeFig)

plt.pause (.000001)

count = count + 1 if (count> 20): #apenas pegue os últimos 20 dados, se os dados forem maiores, ele aparecerá primeiro

tempC.pop (0)

umidade.pop (0)

2. Para representar graficamente a umidade e a temperatura separadamente

import serial # import Biblioteca serial

import numpy # Import numpy

import matplotlib.pyplot as plt #import matplotlib library

de importação drawnow *

tempC = #Array vazio

umidade =

arduino = serial. Serial ("/ dev / ttyACM0", 115200) # Porta serial à qual o arduino está conectado e Baudrate

plt.ion () #Diga ao matplotlib que você deseja o modo interativo para traçar os dados ao vivo

def CreatePlot (): #Create uma função que torna nosso gráfico desejado

plt.subplot (2, 1, 1) #Height, Width, First plot

plt.ylim (22, 34) #Defina os valores mínimo e máximo

plt.title ('Dados DHT11 em tempo real') # Coloque o título

plt.grid (True) #Ligue a grade

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

plt.plot (tempC, 'b ^ -', label = 'Grau C') #plote a temperatura

plt.legend (loc = 'upper center') #plot the legend

plt.subplot (2, 1, 2) # Altura, Largura, Segundo gráfico

plt.grid (verdadeiro)

plt.ylim (45, 70) # Definir limites do segundo eixo y

plt.plot (umidade, 'g * -', rótulo = 'Umidade (g / m ^ 3)') #plot dados de umidade

plt.ylabel ('Umidade (g / m ^ 3)') #label segundo eixo y

plt.ticklabel_format (useOffset = False) #para parar o autoescala eixo y

plt.legend (loc = 'centro superior')

while True: # loop while que faz um loop para sempre

while (arduino.inWaiting () == 0): #Aguarde aqui até que haja passagem de dados # não faça nada

arduinoString = arduino.readline () #ler os dados da porta serial

dataArray = arduinoString.split (',') #Dividi-lo em um array

temp = float (dataArray [0]) #Convert primeiro elemento em número flutuante e coloque em temp

hum = float (dataArray [1]) #Converte o segundo elemento em um número flutuante e coloque em hum

tempC.append (temp) #Crie nossa matriz tempC anexando leitura temporária

umidade.append (hum) #Construindo nossa matriz de umidade anexando leitura de zumbido

drawnow (CreatePlot)

plt.pause (.000001)

contagem = contagem + 1

if (contagem> 20): #somente pegue os últimos 20 dados; se os dados forem maiores, eles aparecerão primeiro

tempC.pop (0) # destaque o primeiro elemento

umidade.pop (0)

Etapa 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 ==> OUT

Recomendado: