Plott DHT11 -data ved hjelp av Raspberry Pi og Arduino UNO: 7 trinn
Plott DHT11 -data ved hjelp av Raspberry Pi og Arduino UNO: 7 trinn

Video: Plott DHT11 -data ved hjelp av Raspberry Pi og Arduino UNO: 7 trinn

Video: Plott DHT11 -data ved hjelp av Raspberry Pi og Arduino UNO: 7 trinn
Video: DHT22 (DHT11) и Ардуино 2025, Januar
Anonim
Plott DHT11 -data ved hjelp av Raspberry Pi og Arduino UNO
Plott DHT11 -data ved hjelp av Raspberry Pi og Arduino UNO

Denne instruksen forklarer hvordan jeg plotter temperatursensor DHT11 -data ved hjelp av Arduino Uno og Raspberry Pi. I denne temperatursensoren er koblet til Arduino Uno og Arduino Uno er serielt forbundet med Raspberry Pi. På Raspberry Pi Side brukes matplotlib, numpy og drawow biblioteker for å plotte grafer.

Trinn 1: Ting som trengs for prosjektet

Ting som trengs for prosjektet
Ting som trengs for prosjektet
Ting som trengs for prosjektet
Ting som trengs for prosjektet
Ting som trengs for prosjektet
Ting som trengs for prosjektet

1. Bringebær Pi

2. Arduino Uno

3. DHT11 temperatursensor

4. Jumper Wires

5. Brødbrett

Trinn 2: Last ned og installer Arduino IDE i Raspberry Pi

Last ned og installer Arduino IDE i Raspberry Pi
Last ned og installer Arduino IDE i Raspberry Pi
Last ned og installer Arduino IDE i Raspberry Pi
Last ned og installer Arduino IDE i Raspberry Pi
Last ned og installer Arduino IDE i Raspberry Pi
Last ned og installer Arduino IDE i Raspberry Pi

Merk:- Du kan bruke Arduino IDE for Windows, Linux eller Mac til å laste opp skisse i Arduino UNO.

Første trinn er å installere Arduino IDE for den åpne nettleseren i Raspberry Pi og åpne lenken nedenfor

Arduino Forrige IDE

Last deretter ned Linux ARM -versjonen og trekk den ut med kommando

tar -xf filnavn

Etter utpakking vil du se en ny katalog. Her bruker jeg arduino-1.8.2 IDE. Gå deretter til katalogen ved å bruke kommandoen.

cd arduino-1.8.1

For å kjøre Arduino IDE, bruk denne kommandoen i arduino-1.8.2-katalogen

./arduino

Slik bruker du biblioteker

For å installere eventuelle biblioteker i Arduino, bare last ned biblioteket og lim det inn i arduino 1.8.2 ==> biblioteker -mappen.

MERK:-Kontroller at det ikke er (-) i bibliotekmappen for eks (DHT-sensor). Hvis det er noen (-), gi det nytt navn.

vi vil bruke to biblioteker i denne instruerbare, DHT_Sensor og Adafruit_Sensor

Trinn 3: Kode for Arduino

Kode for Arduino
Kode for Arduino

La oss få python og Arduino til å snakke sammen. For det første trenger vi et enkelt program for å få Arduino som sender data over den serielle porten. Følgende program er et enkelt program som vil ha Arduino -tellingen og sende dataene til serieporten.

Arduino -koden

#inkludere "DHT.h" flyte tempC; // Variabel eller holdbar temp i C flytetid temFF; // Variabel for å holde temp i F flytefuktighet; // Variabel for å holde trykkavlesning

#define DHTPIN 7 // hvilken digital pin vi er koblet til

#define DHTTYPE DHT11 // DHT 11

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

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

// Initialiser DHT -sensor.

DHT dht (DHTPIN, DHTTYPE);

ugyldig oppsett () {Serial.begin (115200); // slå på seriell skjerm

dht.begin (); // initialiser dht}

void loop () {tempC = dht.readTemperature (); // Sørg for å deklarere variablene dine

fuktighet = dht.readHumidity (); // Les Fuktighet

Serial.print (tempC);

Serial.print (",");

Serial.print (fuktighet);

Serial.print ("\ n"); // for nytt linedelay (2000); // Pause mellom lesningene. }

Når skissen er samlet, velger du brett og port og laster den opp.

Trinn 4: Sett opp Raspberry Pi

Sett opp Raspberry Pi
Sett opp Raspberry Pi

Når koden er lastet opp, installerer du noen biblioteker slik at vi kan plotte grafen over data som kommer serielt fra Arduino Uno.

1. PySerial er et bibliotek som gir støtte for serielle tilkoblinger over en rekke forskjellige enheter. For å installere det, bruk kommando.

Sudo apt-get install python-serial

2. Numpy er en pakke som definerer et flerdimensjonalt arrayobjekt og tilhørende hurtige matematiske funksjoner som opererer på det. Det gir også enkle rutiner for lineær algebra og FFT (Fast Fourier Transform) og sofistikert generering av tilfeldige tall. Du kan installere den på mange måter enten ved hjelp av en passende pakke eller pip. Her installerer jeg ved hjelp av pip for at først må vi installere pip

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

sudo pip installer numpy

eller hvis du vil bruke en passende pakke

sudo apt installer python-numpy

3. Matplotlib er et 2D-plottingsbibliotek som gir et objektorientert API for å legge inn tomter i applikasjoner ved hjelp av GUI-verktøysett som Tkinter, wxPython, Qt eller GTK+. For å installere det, bruk kommando

sudo pip installer matplotlib

eller

sudo apt installer python-matplotlib

4. Drawnow brukes vanligvis for å se resultatene etter hver iterasjon ettersom vi bruker "imshow" i MATLAB. For å installere det, bruk kommando

sudo pip installer drawow

Trinn 5: Python Scipt

Python Scipt
Python Scipt
Python Scipt
Python Scipt

Neste trinn er å skrive et python -skript for at du kan bruke hvilken som helst editor for å skrive det.

1. Plott data i en graf

import serial # import Serial Library

import numpy # Import numpy

importer matplotlib.pyplot som plt #import matplotlib bibliotek

fra drawow import *

tempC = #Tom matrisfuktighet =

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

plt.ion () # interaktiv modus for å plotte levende datatall = 0

def makeFig (): #Lag en funksjon som lager ønsket plot

plt.ylim (20, 30) #Sett y min og maks verdier

plt.title ('Real Time DHT11 Data') #Plott tittelen

plt.grid (True) #Slå på rutenettet

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

plt.plot (tempC, 'b^-', label = 'Grad C') #plott temperaturen

plt.legend (loc = 'øvre høyre') #tegn legenden

plt2 = plt.twinx () #Lag en andre y -akse

plt.ylim (50, 70) #Angi grenser for andre y -akse

plt2.plot (fuktighet, 'g*-', label = 'Fuktighet') #tomtetrykkdata

plt2.set_ylabel ('Fuktighet') #etikett andre y -akse

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = 'øvre venstre')

while True: # Mens loop som sløyfer for alltid

while (arduino.inWaiting () == 0): #Vent her til det er data

bestå #ikke gjøre noe

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #Del den inn i en matrise

temp = float (dataArray [0])

hum = float (dataArray [1])

tempC.append (temp)

fuktighet. legg til (nynn)

drawow (makeFig)

plt.pause (.000001)

count = count+1 if (count> 20): #bare ta de siste 20 dataene hvis dataene er mer, vil de poppe først

tempC.pop (0)

fuktighet.pop (0)

2. Å plotte fuktighet og temperatur separat

import serial # import Serial Library

import numpy # Import numpy

importer matplotlib.pyplot som plt #import matplotlib bibliotek

fra drawow import *

tempC = #Tom matrise

fuktighet =

arduino = serial. Serial ("/dev/ttyACM0", 115200) #Seriell port som arduino er koblet til og Baudrate

plt.ion () #Fortell matplotlib at du vil at interaktiv modus skal plotte levende data

def CreatePlot (): #Lag en funksjon som lager ønsket plot

tomt. tomt (2, 1, 1) #Høyde, bredde, første tomt

plt.ylim (22, 34) #Sett y min og maks verdier

plt.title ('Real Time DHT11 Data') #Plott tittelen

plt.grid (True) #Slå på rutenettet

plt.ylabel ('Temp C') #Sett etiketter

plt.plot (tempC, 'b^-', label = 'Grad C') #plott temperaturen

plt.legend (loc = 'øvre senter') #tegn legenden

tomt. tomt (2, 1, 2) # Høyde, bredde, andre tomt

plt.grid (sant)

plt.ylim (45, 70) #Angi grenser for andre y -akse

plt.plot (fuktighet, 'g*-', label = 'Fuktighet (g/m^3)') #tomt fuktighetsdata

plt.ylabel ('Fuktighet (g/m^3)') #etikett andre y -akse

plt.ticklabel_format (useOffset = False) #to stoppe autoskala y -aksen

plt.legend (loc = 'øvre senter')

while True: # While loop som sløyfer for alltid

while (arduino.inWaiting () == 0): #Vent her til det er dataoverføring #gjør ingenting

arduinoString = arduino.readline () #les dataene fra seriell port

dataArray = arduinoString.split (',') #Del den inn i en matrise

temp = float (dataArray [0]) #Konverter første element til flytende tall og sett inn temp

hum = float (dataArray [1]) #Konverter andre element til flytende tall og sett inn hum

tempC.append (temp) #Bygg vår tempC -matrise ved å legge til temp -lesing

fuktighet. tilføy (nynn) #Bygge fuktighetsoppsettet vårt ved å legge til nynnlesing

drawow (CreatePlot)

plt.pause (.000001)

telle = telle+1

if (count> 20): #bare ta de siste 20 dataene hvis dataene er flere, vil de dukke opp først

tempC.pop (0) # pop out første element

fuktighet.pop (0)

Trinn 6: Kretsdiagram

Kretsdiagram
Kretsdiagram
Kretsdiagram
Kretsdiagram
Kretsdiagram
Kretsdiagram

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> UT