Joonistage DHT11 andmed Raspberry Pi ja Arduino UNO abil: 7 sammu
Joonistage DHT11 andmed Raspberry Pi ja Arduino UNO abil: 7 sammu
Anonim
Joonistage DHT11 andmed Raspberry Pi ja Arduino UNO abil
Joonistage DHT11 andmed Raspberry Pi ja Arduino UNO abil

Selles juhendis selgitatakse, kuidas joonistada temperatuurianduri DHT11 andmed Arduino Uno ja Raspberry Pi abil. Selles temperatuuriandur on ühendatud Arduino Unoga ja Arduino Uno on järjestikku ühendatud Raspberry Pi -ga. Raspberry Pi Side'is kasutatakse graafikute joonistamiseks matplotlib, numpy ja drawow raamatukogusid.

Samm: projekti jaoks vajalikud asjad

Projekti jaoks vajalikud asjad
Projekti jaoks vajalikud asjad
Projekti jaoks vajalikud asjad
Projekti jaoks vajalikud asjad
Projekti jaoks vajalikud asjad
Projekti jaoks vajalikud asjad

1. Vaarika Pi

2. Arduino Uno

3. DHT11 temperatuuriandur

4. Jumper Traadid

5. Leivalaud

Samm: laadige alla ja installige Arduino IDE rakendusse Raspberry Pi

Laadige alla ja installige Arduino IDE Raspberry Pi -sse
Laadige alla ja installige Arduino IDE Raspberry Pi -sse
Laadige alla ja installige Arduino IDE Raspberry Pi -sse
Laadige alla ja installige Arduino IDE Raspberry Pi -sse
Laadige alla ja installige Arduino IDE Raspberry Pi -sse
Laadige alla ja installige Arduino IDE Raspberry Pi -sse

Märkus:- Arduino UNO-s eskiisi üleslaadimiseks saate kasutada Windowsi, Linuxi või Maci Arduino IDE-d.

Esimene samm on installida Arduino IDE selle avatud brauseri jaoks Raspberry Pi -s ja avada allolev link

Arduino Eelmine IDE

Seejärel laadige alla Linuxi ARM -i versioon ja ekstraktige see käsuga

tar -xf faili nimi

Pärast kaevandamist näete uut kataloogi. Siin kasutan arduino-1.8.2 IDE. Seejärel minge käsu abil kataloogi.

cd arduino-1.8.1

Arduino IDE käivitamiseks kasutage seda käsku kataloogis arduino-1.8.2

./arduino

Kuidas kasutada raamatukogusid

Arduino teekide installimiseks laadige lihtsalt raamatukogu alla ja kleepige arduino 1.8.2 ==> teegid kausta.

MÄRKUS.-Veenduge, et endise (DHT-anduri) raamatukogu kaustas pole (-). Kui on (-), nimetage see ümber.

selles juhendis kasutame kahte raamatukogu, DHT_Sensor ja Adafruit_Sensor

Samm: Arduino kood

Arduino kood
Arduino kood

Nüüd laseme pythonil ja Arduinoil rääkida. Esiteks vajame lihtsat programmi, et saada Arduino andmeid jadaporti saatma. Järgmine programm on lihtne programm, mis loeb Arduino ja saadab andmed jadaporti.

Arduino kood

#segu "DHT.h" float tempC; // Muutuv või hoidev temperatuur C float tempF; // Muutuja temperatuuri hoidmiseks F -ujuki niiskuses; // Muutuja rõhunäidu hoidmiseks

#define DHTPIN 7 // millise digitaalse tihvtiga oleme ühendatud

#defineeri DHTTYPE DHT11 // DHT 11

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

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

// DHT -anduri lähtestamine.

DHT dht (DHTPIN, DHTTYPE);

void setup () {Serial.begin (115200); // jadamonitori sisselülitamine

dht.begin (); // initsialiseeri dht}

void loop () {tempC = dht.readTemperature (); // Kindlasti deklareerige oma muutujad

niiskus = dht.readHumidity (); // Lugege niiskust

Serial.print (tempC);

Serial.print (",");

Serial.print (niiskus);

Serial.print ("\ n"); // uue linedelay jaoks (2000); // Lugemiste vahel paus. }

Kui visand on koostatud, valige tahvel ja port ning laadige see üles.

Samm: seadistage Raspberry Pi

Seadistage Raspberry Pi
Seadistage Raspberry Pi

Kui kood on üles laaditud, installige mõned teegid, et saaksime joonistada Arduino Unost järjestikku saabuvate andmete graafiku.

1. PySerial on raamatukogu, mis toetab jadaühendusi erinevates seadmetes. Selle installimiseks kasutage käsku.

Sudo apt-get install python-serial

2. Numpy on pakett, mis määratleb mitmemõõtmelise massiiviobjekti ja sellega seotud kiired matemaatikafunktsioonid. Samuti pakub see lihtsaid rida lineaarse algebra ja FFT (Fast Fourier Transform) ning keeruka juhuslike numbrite genereerimise jaoks. Saate selle installida mitmel viisil, kasutades apt paketti või pip. Siin ma installin pip abil, et kõigepealt peame pip installima

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

sudo pip install numpy

või kui soovite kasutada apt paketti

sudo apt install python-numpy

3. Matplotlib on 2D joonestusteek, mis pakub objektile orienteeritud API-d graafikute manustamiseks rakendustesse, kasutades üldotstarbelisi GUI tööriistakomplekte, nagu Tkinter, wxPython, Qt või GTK+. Selle installimiseks kasutage käsku

sudo pip install matplotlib

või

sudo apt install python-matplotlib

4. Tavaliselt kasutatakse tulemuste nägemiseks pärast iga iteratsiooni drawnow, kuna kasutame MATLAB -is "imshow". Selle installimiseks kasutage käsku

sudo pip install installitud

Samm: Python Scipt

Python Scipt
Python Scipt
Python Scipt
Python Scipt

Järgmine samm on kirjutada pythoni skript, mille kirjutamiseks saate kasutada mis tahes redaktorit.

1. Joonistage andmed ühes graafikus

import serial # impordi jadateek

import numpy # Import numpy

impordi matplotlib.pyplot plt #import matplotlib raamatukoguna

tõmmatud impordist *

tempC = #Tühi massiivniiskus =

arduino = jada. Seriaalne ("/dev/ttyACM0", 115200)

plt.ion () # interaktiivne režiim reaalajas andmete loendamiseks = 0

def makeFig (): #Loo funktsioon, mis teeb meie soovitud graafiku

plt.ylim (20, 30) #Määra y min ja max väärtused

plt.title ('Reaalajas DHT11 andmed') #Plot the title

plt.grid (True) #Lülitage võrk sisse

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

plt.plot (tempC, 'b^-', label = 'C-kraad') #plot temperatuuri

plt.legend (loc = 'ülemine parem') #plot legend

plt2 = plt.twinx () #Loo teine y telg

plt.ylim (50, 70) #Määrake teise y telje piirid

plt2.plot (niiskus, 'g*-', silt = 'niiskus') #plot rõhu andmed

plt2.set_ylabel ('Niiskus') #silt teine y telg

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = 'ülemine vasak')

samas tõsi: # Kuigi silmus, mis kordub igavesti

while (arduino.inWaiting () == 0): #Oota siin, kuni on andmeid

pass #ära tee midagi

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #Jagage see massiiviks

temp = float (dataArray [0])

hum = ujuk (dataArray [1])

tempC.append (temp)

niiskus. lisa (hum)

tõmmatud (makeFig)

plt. paus (.000001)

count = loendama+1, kui (loend> 20): #võtke ainult viimased 20 andmeid, kui andmeid on rohkem, siis need hüppavad esimesena

tempC.pop (0)

niiskus. pop (0)

2. Eraldi joonistada niiskus ja temperatuur

import serial # impordi jadateek

import numpy # Import numpy

impordi matplotlib.pyplot plt #import matplotlib raamatukoguna

tõmmatud impordist *

tempC = #Tühi massiiv

niiskus =

arduino = jada. Serial ("/dev/ttyACM0", 115200) #Seriaalne port, millega arduino on ühendatud ja Baudrate

plt.ion () #Rääkige matplotlib, et soovite interaktiivset režiimi reaalajas andmete joonistamiseks

def CreatePlot (): #Loo funktsioon, mis teeb meie soovitud graafiku

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

plt.ylim (22, 34) #Määra y min ja max väärtused

plt.title ('Reaalajas DHT11 andmed') #Plot the title

plt.grid (True) #Lülitage võrk sisse

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

plt.plot (tempC, 'b^-', label = 'C-kraad') #plot temperatuuri

plt.legend (loc = 'ülemine kese') #plot legend

plt.plokk (2, 1, 2) # Kõrgus, laius, teine graafik

plt.grid (tõsi)

plt.ylim (45, 70) #Määrake teise y telje piirid

plt.plot (niiskus, 'g*-', silt = 'niiskus (g/m^3)') #plot niiskuse andmed

plt.ylabel ('Niiskus (g/m^3)') #sildi teine y telg

plt.ticklabel_format (useOffset = False) #automaatse skaala y telje peatamiseks

plt.legend (loc = 'ülemine keskus')

samas tõsi: # Kuigi silmus, mis kordub igavesti

while (arduino.inWaiting () == 0): #Oota siin, kuni andmed edastatakse #ära tee midagi

arduinoString = arduino.readline () #loe andmeid jadapordist

dataArray = arduinoString.split (',') #Jagage see massiiviks

temp = float (dataArray [0]) #Teisenda esimene element ujuvaks numbriks ja pane temp

hum = ujuk (dataArray [1]) #Teisenda teine element ujuvaks numbriks ja pane hum

tempC.append (temp) #Ehitage meie tempC massiiv, lisades temp lugemise

niiskust. lisage (hum) #Ehitage meie niiskusmassiiv, lisades üminäitu

drawow (CreatePlot)

plt. paus (.000001)

loendama = loendama+1

kui (arv> 20): #võtke ainult viimased 20 andmeid, kui andmeid on rohkem, siis need hüppavad esimesena

tempC.pop (0) # avaneb esimene element

niiskus. pop (0)

6. samm: vooluahela skeem

Lülitusskeem
Lülitusskeem
Lülitusskeem
Lülitusskeem
Lülitusskeem
Lülitusskeem

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> VÄLJA