Uzzīmējiet DHT11 datus, izmantojot Raspberry Pi un Arduino UNO: 7 soļi
Uzzīmējiet DHT11 datus, izmantojot Raspberry Pi un Arduino UNO: 7 soļi
Anonim
Uzzīmējiet DHT11 datus, izmantojot Raspberry Pi un Arduino UNO
Uzzīmējiet DHT11 datus, izmantojot Raspberry Pi un Arduino UNO

Šī pamācība izskaidro, kā es uzzīmēju temperatūras sensora DHT11 datus, izmantojot Arduino Uno un Raspberry Pi. Šajā temperatūras sensors ir savienots ar Arduino Uno, un Arduino Uno ir savienots sērijveidā ar Raspberry Pi. Vietnē Raspberry Pi Side diagrammu attēlošanai tiek izmantotas matplotlib, numpy un drawow bibliotēkas.

1. solis: Projektam nepieciešamās lietas

Projektam nepieciešamās lietas
Projektam nepieciešamās lietas
Projektam nepieciešamās lietas
Projektam nepieciešamās lietas
Projektam nepieciešamās lietas
Projektam nepieciešamās lietas

1. Aveņu Pi

2. Arduino Uno

3. DHT11 temperatūras sensors

4. Jumper vadi

5. Maizes dēlis

2. darbība: lejupielādējiet un instalējiet Arduino IDE Raspberry Pi

Lejupielādējiet un instalējiet Arduino IDE Raspberry Pi
Lejupielādējiet un instalējiet Arduino IDE Raspberry Pi
Lejupielādējiet un instalējiet Arduino IDE Raspberry Pi
Lejupielādējiet un instalējiet Arduino IDE Raspberry Pi
Lejupielādējiet un instalējiet Arduino IDE Raspberry Pi
Lejupielādējiet un instalējiet Arduino IDE Raspberry Pi

Piezīme:- Lai izmantotu skices augšupielādi Arduino UNO, varat izmantot Windows, Linux vai Mac Arduino IDE.

Pirmais solis ir instalēt Arduino IDE šai atvērtajai pārlūkprogrammai Raspberry Pi un atvērt tālāk norādīto saiti

Arduino Iepriekšējā IDE

Pēc tam lejupielādējiet Linux ARM versiju un izvelciet to, izmantojot komandu

tar -xf faila nosaukums

Pēc izvilkšanas jūs redzēsit jaunu direktoriju. Šeit es izmantoju arduino-1.8.2 IDE. Pēc tam dodieties uz direktoriju, izmantojot komandu.

cd arduino-1.8.1

Lai palaistu Arduino IDE, izmantojiet šo komandu direktorijā arduino-1.8.2

./arduino

Kā izmantot bibliotēkas

Lai instalētu Arduino bibliotēkas, vienkārši lejupielādējiet bibliotēku un ielīmējiet mapē arduino 1.8.2 ==> bibliotēkas.

PIEZĪME:-Pārliecinieties, vai bibliotēkas mapē ex (DHT sensors) nav (-). Ja ir kāds (-), pārdēvējiet to.

šajā pamācībā izmantosim divas bibliotēkas - DHT_Sensor un Adafruit_Sensor

3. darbība: kods Arduino

Arduino kods
Arduino kods

Tagad ļaujiet Python un Arduino sarunāties kopā. Pirmkārt, mums ir nepieciešama vienkārša programma, lai Arduino nosūtītu datus pa seriālo portu. Šī programma ir vienkārša programma, kurai būs Arduino skaits un dati tiks nosūtīti uz seriālo portu.

Arduino kods

#iekļaut "DHT.h" pludiņa tempC; // Mainīga vai turēšanas temperatūra C pludiņa tempF; // Mainīgs temperatūras turēšanai F pludiņa mitrumā; // Mainīgais spiediena rādījumu noturēšanai

#define DHTPIN 7 // ar kādu ciparu tapu esam savienoti

#define DHTTYPE DHT11 // DHT 11

//#definēt DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

//#definēt DHTTYPE DHT21 // DHT 21 (AM2301)

// Inicializēt DHT sensoru.

DHT dht (DHTPIN, DHTTYPE);

void setup () {Serial.begin (115200); // ieslēgt seriālo monitoru

dht.begin (); // inicializēt dht}

void loop () {tempC = dht.readTemperature (); // Noteikti deklarējiet savus mainīgos

mitrums = dht.readHumidity (); // Lasīt mitrumu

Sērijas nospiedums (tempC);

Serial.print (",");

Sērijas nospiedums (mitrums);

Serial.print ("\ n"); // jaunam linedelay (2000); // Pauze starp lasījumiem. }

Kad skice ir apkopota, atlasiet dēli un portu un augšupielādējiet to.

4. darbība: iestatiet Raspberry Pi

Iestatiet Raspberry Pi
Iestatiet Raspberry Pi

Kad kods ir augšupielādēts, instalējiet dažas bibliotēkas, lai mēs varētu uzzīmēt datu grafiku, kas sērijveidā nāk no Arduino Uno.

1. PySerial ir bibliotēka, kas nodrošina atbalstu sērijas savienojumiem dažādās ierīcēs. Lai to instalētu, izmantojiet komandu.

Sudo apt-get install python-serial

2. Numpy ir pakete, kas definē daudzdimensiju masīva objektu un ar to saistītās ātrās matemātikas funkcijas. Tas arī nodrošina vienkāršas procedūras lineārai algebrai un FFT (ātra Furjē transformācija) un sarežģītu nejaušu skaitļu ģenerēšanu. To var instalēt daudzos veidos, izmantojot apt paketi vai pip. Šeit es instalēju, izmantojot pip, vispirms mums ir jāinstalē pip

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

sudo pip instalēt numpy

vai ja vēlaties izmantot apt paketi

sudo apt instalēt python-numpy

3. Matplotlib ir 2D zīmēšanas bibliotēka, kas nodrošina objektorientētu API grafiku iegulšanai lietojumprogrammās, izmantojot vispārējas nozīmes GUI rīku komplektus, piemēram, Tkinter, wxPython, Qt vai GTK+. Lai to instalētu, izmantojiet komandu

sudo pip instalēt matplotlib

vai

sudo apt instalēt python-matplotlib

4. Drawnow parasti tiek izmantots, lai redzētu rezultātus pēc katras iterācijas, jo MATLAB lietojam "imshow". Lai to instalētu, izmantojiet komandu

sudo pip instalēšanas izvilkums

5. darbība: Python Scipt

Python Scipt
Python Scipt
Python Scipt
Python Scipt

Nākamais solis ir uzrakstīt python skriptu, kura rakstīšanai varat izmantot jebkuru redaktoru.

1. Zīmējiet datus vienā grafikā

importēt sēriju # importēt sērijas bibliotēku

import numpy # Importēt numpy

importēt matplotlib.pyplot kā plt #import matplotlib bibliotēku

no vilkšanas importa *

tempC = #Empty arrayhumidity =

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

plt.ion () # interaktīvs režīms tiešo datu skaitīšanai = 0

def makeFig (): #Izveidojiet funkciju, kas veido mūsu vēlamo grafiku

plt.ylim (20, 30) #Iestatiet y min un max vērtības

plt.title ('Reālā laika DHT11 dati') #Plot virsrakstu

plt.grid (True) #Ieslēdziet režģi

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

plt.plot (tempC, 'b^-', label = 'C grāds') #plotējiet temperatūru

plt.legend (loc = 'augšējais labais') #plot Leģenda

plt2 = plt.twinx () #Izveidojiet otro y asi

plt.ylim (50, 70) #Iestatiet otrās y ass robežas

plt2.plot (mitrums, 'g*-', etiķete = 'Mitrums') #plot spiediena dati

plt2.set_ylabel ('Mitrums') #iezīme otrā y ass

plt2.ticklabel_format (useOffset = False)

plt2.legend (loc = 'augšējais kreisais')

kamēr True: # Kamēr cilpa, kas cilpas uz visiem laikiem

while (arduino.inWaiting () == 0): #Pagaidiet šeit, līdz būs dati

iet #nedari neko

arduinoString = arduino.readline ()

dataArray = arduinoString.split (',') #Sadaliet to masīvā

temp = pludiņš (dataArray [0])

hum = pludiņš (dataArray [1])

tempC.append (temp)

mitrums. pievienot (hum)

izlozēts (makeFig)

plt. pauze (.000001)

skaits = skaits+1, ja (skaits> 20): #tikai ņemiet pēdējos 20 datus, ja datu ir vairāk, tie vispirms parādīsies

tempC.pop (0)

mitrums. pop (0)

2. Lai atsevišķi uzzīmētu mitrumu un temperatūru

importēt sēriju # importēt sērijas bibliotēku

import numpy # Importēt numpy

importēt matplotlib.pyplot kā plt #import matplotlib bibliotēku

no vilkšanas importa *

tempC = #Tukšs masīvs

mitrums =

arduino = serial. Serial ("/dev/ttyACM0", 115200) #Seriālais ports, kuram ir pievienots arduino, un Baudrate

plt.ion () #Pastāstiet matplotlib, ka vēlaties interaktīvo režīmu tiešo datu attēlošanai

def CreatePlot (): #Izveidojiet funkciju, kas veido mūsu vēlamo grafiku

plt.plāksne (2, 1, 1) #Augstums, Platums, Pirmais gabals

plt.ylim (22, 34) #Iestatiet y min un max vērtības

plt.title ('Reālā laika DHT11 dati') #Plot virsrakstu

plt.grid (True) #Ieslēdziet režģi

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

plt.plot (tempC, 'b^-', label = 'C grāds') #plotējiet temperatūru

plt.legend (loc = 'augšējais centrs') #plot Leģenda

plt.plāksne (2, 1, 2) # Augstums, platums, otrais gabals

plt.grid (True)

plt.ylim (45, 70) #Iestatiet otrās y ass robežas

plt.plot (mitrums, 'g*-', etiķete = 'Mitrums (g/m^3)') #plot mitruma dati

plt.ylabel ('Mitrums (g/m^3)') #iezīme otrā y ass

plt.ticklabel_format (useOffset = False) #, lai apturētu automātisko mērogu y asi

plt.legend (loc = 'augšējais centrs')

kamēr True: # Kamēr cilpa, kas cilpas uz visiem laikiem

Kamēr (arduino.inWaiting () == 0): #Pagaidiet šeit, līdz tiks nodota informācija #nedariet neko

arduinoString = arduino.readline () #lasiet datus no seriālā porta

dataArray = arduinoString.split (',') #Sadaliet to masīvā

temp = pludiņš (dataArray [0]) #Pārveidojiet pirmo elementu par peldošu skaitli un ievietojiet temp

hum = pludiņš (dataArray [1]) #Pārvērtiet otro elementu par peldošu skaitli un ievietojiet hum

tempC.append (temp) #Izveidojiet mūsu tempC masīvu, pievienojot temp lasījumu

mitrums. pievienot (hum) #Veidojot mūsu mitruma masīvu, pievienojot hum lasījumu

drawow (CreatePlot)

plt. pauze (.000001)

skaits = skaits+1

ja (skaits> 20): #tikai ņemiet pēdējos 20 datus, ja datu ir vairāk, tie vispirms parādīsies

tempC.pop (0) # izlec pirmais elements

mitrums. pop (0)

6. darbība: shēmas shēma

Ķēdes diagramma
Ķēdes diagramma
Ķēdes diagramma
Ķēdes diagramma
Ķēdes diagramma
Ķēdes diagramma

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> ĀRĀ

Ieteicams: