Tartalomjegyzék:

A DHT11 adatok ábrázolása a Raspberry Pi és az Arduino UNO használatával: 7 lépés
A DHT11 adatok ábrázolása a Raspberry Pi és az Arduino UNO használatával: 7 lépés

Videó: A DHT11 adatok ábrázolása a Raspberry Pi és az Arduino UNO használatával: 7 lépés

Videó: A DHT11 adatok ábrázolása a Raspberry Pi és az Arduino UNO használatával: 7 lépés
Videó: Arduino Tutorial 28 - DHT11 Temperature Sensor with LCD | SunFounder's ESP32 IoT Learnig kit 2024, December
Anonim
A DHT11 adatok ábrázolása a Raspberry Pi és az Arduino UNO használatával
A DHT11 adatok ábrázolása a Raspberry Pi és az Arduino UNO használatával

Ez az utasítás elmagyarázza, hogyan ábrázolom a hőmérséklet -érzékelő DHT11 adatait az Arduino Uno és a Raspberry Pi segítségével. Ebben a hőmérséklet -érzékelő az Arduino Uno -hoz, az Arduino Uno pedig a Raspberry Pi -hez van csatlakoztatva. A Raspberry Pi Side matplotlib, numpy és drawow könyvtárakat használ a grafikonok ábrázolásához.

1. lépés: A projekthez szükséges dolgok

A projekthez szükséges dolgok
A projekthez szükséges dolgok
A projekthez szükséges dolgok
A projekthez szükséges dolgok
A projekthez szükséges dolgok
A projekthez szükséges dolgok

1. Málna Pi

2. Arduino Uno

3. DHT11 hőmérséklet érzékelő

4. Jumper vezetékek

5. Kenyeretábla

Lépés: Töltse le és telepítse az Arduino IDE -t a Raspberry Pi -be

Töltse le és telepítse az Arduino IDE -t a Raspberry Pi -be
Töltse le és telepítse az Arduino IDE -t a Raspberry Pi -be
Töltse le és telepítse az Arduino IDE -t a Raspberry Pi -be
Töltse le és telepítse az Arduino IDE -t a Raspberry Pi -be
Töltse le és telepítse az Arduino IDE -t a Raspberry Pi -be
Töltse le és telepítse az Arduino IDE -t a Raspberry Pi -be

Megjegyzés:- A Windows, Linux vagy Mac Arduino IDE használatával vázlatot tölthet fel az Arduino UNO-ban.

Első lépésként telepítse az Arduino IDE -t a megnyitott böngészőhöz a Raspberry Pi -ben, és nyissa meg az alábbi linket

Arduino Előző IDE

Ezután töltse le a Linux ARM verziót, és bontsa ki a paranccsal

tar -xf fájlnév

A kibontás után megjelenik egy új könyvtár. Itt az arduino-1.8.2 IDE-t használom. Ezután a paranccsal lépjen a könyvtárba.

cd arduino-1.8.1

Az Arduino IDE futtatásához használja ezt a parancsot az arduino-1.8.2 könyvtárban

./arduino

A könyvtárak használata

Az Arduino könyvtárainak telepítéséhez egyszerűen töltse le a könyvtárat, és illessze be az arduino 1.8.2 ==> libraries mappába.

MEGJEGYZÉS:-Győződjön meg arról, hogy az ex (DHT-érzékelő) könyvtármappájában nincs (-). Ha van (-), nevezze át.

ebben az utasításban két könyvtárat fogunk használni, a DHT_Sensor és az Adafruit_Sensor

3. lépés: Az Arduino kódja

Az Arduino kódja
Az Arduino kódja

Most beszéljünk együtt Python és Arduino. Először is szükségünk van egy egyszerű programra, hogy az Arduino adatokat küldjön a soros porton keresztül. A következő program egy egyszerű program, amely rendelkezik az Arduino számlálóval, és elküldi az adatokat a soros portra.

Arduino kód

#clude "DHT.h" float tempC; // Változó vagy tartási hőmérséklet C float tempF; // Változó a hőmérséklet tartásához F úszó páratartalomban; // Változó a nyomás leolvasásához

#define DHTPIN 7 // milyen digitális tűhöz vagyunk csatlakoztatva

#define DHTTYPE DHT11 // DHT 11

//#DHTTYPE DHT22 meghatározása // DHT 22 (AM2302), AM2321

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

// Inicializálja a DHT érzékelőt.

DHT dht (DHTPIN, DHTTYPE);

void setup () {Serial.begin (115200); // kapcsolja be a soros monitort

dht.begin (); // inicializálás dht}

void loop () {tempC = dht.readTemperature (); // Feltétlenül deklarálja a változókat

páratartalom = dht.readHumidity (); // Olvassa el a páratartalmat

Serial.print (tempC);

Serial.print (",");

Soros.nyomtatás (páratartalom);

Serial.print ("\ n"); // új linedelay (2000); // Szünet az olvasások között. }

A vázlat összeállítása után válassza ki a táblát és a portot, majd töltse fel.

4. lépés: A Raspberry Pi beállítása

A Raspberry Pi beállítása
A Raspberry Pi beállítása

A kód feltöltése után telepítsen néhány könyvtárat, hogy le tudjuk rajzolni az Arduino Uno sorozatosan érkező adatainak grafikonját.

1. A PySerial egy könyvtár, amely támogatja a soros kapcsolatokat különféle eszközökön. Telepítéséhez használja a parancsot.

Sudo apt-get install python-serial

2. A Numpy egy olyan csomag, amely többdimenziós tömbobjektumot és a hozzá tartozó gyors matematikai függvényeket határoz meg. Ezenkívül egyszerű rutinokat biztosít a lineáris algebrához és az FFT-hez (Fast Fourier Transform), valamint a kifinomult véletlenszám-generáláshoz. Sokféleképpen telepítheti az apt csomag vagy a pip használatával. Itt a pip használatával telepítem, ezért először telepítenünk kell a pip -et

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

sudo pip install numpy

vagy ha apt csomagot szeretne használni

sudo apt install python-numpy

3. A Matplotlib egy 2D-s ábrázolási könyvtár, amely objektum-orientált API-t biztosít a parcellák alkalmazásba való beágyazásához olyan általános célú GUI-eszközkészletek használatával, mint a Tkinter, wxPython, Qt vagy GTK+. Telepítéséhez használja a parancsot

sudo pip install matplotlib

vagy

sudo apt install python-matplotlib

4. A Drawnow -t általában az iteráció utáni eredmények megtekintésére használják, mivel az "imshow" -t használjuk a MATLAB -ban. Telepítéséhez használja a parancsot

sudo pip install drawow

5. lépés: Python Scipt

Python Scipt
Python Scipt
Python Scipt
Python Scipt

A következő lépés egy python szkript írása, amelyhez bármely szerkesztőt használhat.

1. Ábrázolja az adatokat egy grafikonon

import serial # import Serial Library

import numpy # számjegy importálása

importálja a matplotlib.pyplot -t plt #import matplotlib könyvtárként

húzott importból *

tempC = #Empty arrayhumidity =

arduino = soros. Soros ("/dev/ttyACM0", 115200)

plt.ion () # interaktív mód az élő adatszámláláshoz = 0

def makeFig (): #Hozzon létre egy függvényt, amely a kívánt ábrát hozza létre

plt.ylim (20, 30) #Állítsa be a min és max értékeket

plt.title ('Valós idejű DHT11 adatok') #Plot a cím

plt.grid (True) #Kapcsolja be a rácsot

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

plt.plot (tempC, 'b^-', label = 'C fok') #plot a hőmérséklet

plt.legend (loc = 'jobb felső') #plot a legenda

plt2 = plt.twinx () #Hozzon létre egy második y tengelyt

plt.ylim (50, 70) #A második y tengely határainak beállítása

plt2.plot (páratartalom, 'g*-', label = 'Nedvesség') #plot nyomásadatok

plt2.set_ylabel ('Nedvesség') #label második y tengely

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = 'bal felső')

míg igaz: # Míg a hurok, amely örökké hurok

while (arduino.inWaiting () == 0): #Várjon itt, amíg nincs adat

passzol #ne csinálj semmit

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #Ossza tömbbe

temp = lebegés (dataArray [0])

hum = lebegés (dataArray [1])

tempC.append (temp)

nedvesség. hozzá (hum)

rajzolt (makeFig)

plt.pause (.000001)

count = count+1 if (count> 20): #csak az utolsó 20 adatot vegye fel, ha több az adat, először megjelenik

tempC.pop (0)

páratartalom. pop (0)

2. Külön ábrázolja a páratartalmat és a hőmérsékletet

import serial # import Serial Library

import numpy # Import numpy

importálja a matplotlib.pyplot -t plt #import matplotlib könyvtárként

húzott importból *

tempC = #Üres tömb

páratartalom =

arduino = serial. Serial ("/dev/ttyACM0", 115200) #Soros port, amelyhez az arduino csatlakozik, és a Baudrate

plt.ion () #Tell matplotlib azt szeretné, ha interaktív módban szeretne élő adatokat ábrázolni

def CreatePlot (): #Hozzon létre egy függvényt, amely a kívánt ábrát hozza létre

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

plt.ylim (22, 34) #Állítsa be a min és max értékeket

plt.title ('Valós idejű DHT11 adatok') #Plot a cím

plt.grid (True) #Kapcsolja be a rácsot

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

plt.plot (tempC, 'b^-', label = 'C fok') #plot a hőmérséklet

plt.legend (loc = 'felső középső') #plot a legenda

plt.subplot (2, 1, 2) # Magasság, szélesség, második diagram

plt.grid (igaz)

plt.ylim (45, 70) #A második y tengely határainak beállítása

plt.plot (páratartalom, 'g*-', címke = 'Páratartalom (g/m^3)') #plot nedvesség adatok

plt.ylabel ('Páratartalom (g/m^3)') #címke második y tengely

plt.ticklabel_format (useOffset = False) #az automatikus skála y tengelyének leállításához

plt.legend (loc = 'felső közép')

míg igaz: # Míg a hurok, amely örökké hurok

while (arduino.inWaiting () == 0): #Várjon itt, amíg nincs adatátvitel #ne csináljon semmit

arduinoString = arduino.readline () #olvassa el az adatokat a soros portról

dataArray = arduinoString.split (',') #Ossza tömbbe

temp = lebegés (dataArray [0]) #Konvertálja az első elemet lebegő számmá és tegye be a temp

hum = lebegés (dataArray [1]) #Konvertálja a második elemet lebegő számmá és tegye be a hum

tempC.append (temp) #Építse fel tempC tömbünket a temp olvasás hozzáfűzésével

páratartalom.append (zümmögés) #Nedvességtömbünk felépítése a zümmögés leolvasásával

drawow (CreatePlot)

plt.pause (.000001)

szám = szám+1

if (szám> 20): #csak az utolsó 20 adatot vegye fel, ha több az adat, akkor először megjelenik

A tempC.pop (0) # kiugrik az első elemből

páratartalom. pop (0)

6. lépés: Áramköri diagram

Kördiagramm
Kördiagramm
Kördiagramm
Kördiagramm
Kördiagramm
Kördiagramm

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> KI

Ajánlott: