Takwimu za DHT11 za kutumia Raspberry Pi na Arduino UNO: Hatua 7
Takwimu za DHT11 za kutumia Raspberry Pi na Arduino UNO: Hatua 7
Anonim
Takwimu za DHT11 za kutumia Raspberry Pi na Arduino UNO
Takwimu za DHT11 za kutumia Raspberry Pi na Arduino UNO

Hii inaelezea jinsi ninavyopanga data ya sensor ya joto ya DHT11 kwa kutumia Arduino Uno na Raspberry Pi. Katika sensor hii ya joto imeunganishwa na Arduino Uno na Arduino Uno imeunganishwa mfululizo na Raspberry Pi. Katika Raspberry Pi Side, maktaba ya matplotlib, numpy na drawnow hutumiwa kupanga grafu.

Hatua ya 1: Vitu vinahitajika kwa Mradi

Vitu vinahitajika kwa Mradi
Vitu vinahitajika kwa Mradi
Vitu vinahitajika kwa Mradi
Vitu vinahitajika kwa Mradi
Vitu vinahitajika kwa Mradi
Vitu vinahitajika kwa Mradi

1. Raspberry Pi

2. Arduino Uno

3. Sensorer ya Joto la DHT11

4. waya za jumper

5. Bodi ya mkate

Hatua ya 2: Pakua na usakinishe Arduino IDE katika Raspberry Pi

Pakua na usakinishe Arduino IDE katika Raspberry Pi
Pakua na usakinishe Arduino IDE katika Raspberry Pi
Pakua na usakinishe Arduino IDE katika Raspberry Pi
Pakua na usakinishe Arduino IDE katika Raspberry Pi
Pakua na usakinishe Arduino IDE katika Raspberry Pi
Pakua na usakinishe Arduino IDE katika Raspberry Pi

Kumbuka: - Unaweza kutumia Arduino IDE ya windows, Linux au Mac kupakia mchoro katika Arduino UNO.

Hatua ya kwanza ni kusanikisha Arduino IDE kwa kivinjari hicho wazi kwenye Raspberry Pi na ufungue kiunga kilichopewa hapa chini

Arduino Uliopita IDE

Kisha pakua toleo la Linux ARM na uiondoe kwa kutumia amri

jina la faili la tar -xf

Baada ya kuchimba utaona saraka mpya. Hapa ninatumia arduino-1.8.2 IDE. Kisha nenda kwenye saraka kwa kutumia amri.

cd arduino-1.8.1

Ili kuendesha Arduino IDE, tumia amri hii katika saraka ya arduino-1.8.2

./arduino

Jinsi ya kutumia maktaba

Ili kusanikisha maktaba zozote huko Arduino, pakua tu maktaba na ubandike katika arduino 1.8.2 ==> folda ya maktaba.

KUMBUKA: - Hakikisha hakuna (-) kwenye folda ya maktaba ya ex (sensor ya DHT). Ikiwa kuna yoyote (-), ibadilishe jina.

tutatumia maktaba mbili katika hii inayoweza kufundishwa, DHT_Sensor na Adafruit_Sensor

Hatua ya 3: Nambari ya Arduino

Nambari ya Arduino
Nambari ya Arduino

Sasa, wacha chatu na Arduino wazungumze pamoja. Kwanza tunahitaji programu rahisi kupata Arduino kutuma data juu ya bandari ya serial. Programu ifuatayo ni programu rahisi ambayo itakuwa na hesabu ya Arduino na kutuma data kwenye bandari ya serial.

Msimbo wa Arduino

# pamoja na "DHT.h" kuelea tempC; // Kubadilika au kushikilia temp katika C kuelea tempF; // Kubadilika kwa kushikilia muda katika unyevu wa kuelea F; // Kubadilika kwa kushikilia usomaji wa shinikizo

#fafanua DHTPIN 7 // ni pini gani ya dijiti ambayo tumeunganishwa nayo

#fafanua DHTTYPE DHT11 // DHT 11

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

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

// Anzisha sensorer ya DHT.

DHT dht (DHTPIN, DHTTYPE);

kuanzisha batili () {Serial.begin (115200); // washa mfuatiliaji wa serial

kuanza (); // anzisha dht}

kitanzi batili () {tempC = dht.readTemperature (); // Hakikisha kutangaza anuwai zako

unyevu = dht. soma Unyenyekevu (); // Soma Unyevu

Serial.print (tempC);

Serial.print (",");

Printa ya serial (unyevu);

Serial.print ("\ n"); // kwa linedelay mpya (2000); // Pumzika kati ya usomaji. }

Mara baada ya kuchorwa, chagua bodi na bandari na uipakie.

Hatua ya 4: Sanidi Raspberry Pi

Sanidi Raspberry Pi
Sanidi Raspberry Pi

Mara tu nambari imepakiwa, Sakinisha maktaba kadhaa ili tuweze kupanga grafu ya data ambayo inakuja mfululizo kutoka Arduino Uno.

1. PySerial ni maktaba ambayo hutoa msaada kwa unganisho la serial juu ya vifaa anuwai tofauti. Ili kuisakinisha tumia amri.

Sudo apt-get kufunga python-serial

2. Numpy ni kifurushi kinachofafanua kitu cha safu-anuwai na kazi zinazohusiana za hesabu za haraka zinazofanya kazi juu yake. Pia hutoa utaratibu rahisi wa algebra ya mstari na FFT (Fast Fourier Transform) na kizazi cha kisasa cha nambari za nasibu. Unaweza kuiweka kwa njia nyingi ama tumia kifurushi cha apt au bomba. Hapa ninaweka kutumia bomba kwa hiyo kwanza lazima tuweke pip

Sudo apt-get install python-pip python-dev kujenga-muhimu

Sudo pip kufunga numpy

au ikiwa unataka kutumia kifurushi cha apt

Sudo apt kufunga python-numpy

3. Matplotlib ni maktaba ya kupanga 2D ambayo hutoa API inayolenga vitu kwa kupachika viwanja kwenye programu kutumia vifaa vya kusudi vya jumla vya GUI kama Tkinter, wxPython, Qt, au GTK +. Ili kuisakinisha tumia amri

Sudo pip kufunga matplotlib

au

Sudo apt kufunga python-matplotlib

4. Utaftaji kwa ujumla hutumiwa kuona matokeo baada ya kila kukokota tunapotumia "imshow" katika MATLAB. Ili kuisakinisha tumia amri

Sudo pip kufunga mchoro

Hatua ya 5: Python Scipt

Chunusi ya chatu
Chunusi ya chatu
Chunusi ya chatu
Chunusi ya chatu

Hatua inayofuata ni kuandika hati ya chatu kwa ambayo unaweza kutumia mhariri wowote kuiandika.

1. Panga data katika grafu moja

kuagiza serial # kuagiza Serial Library

kuagiza numpy # Ingiza numpy

kuagiza matplotlib.pyplot kama plt #import matplotlib maktaba

kutoka kuagiza sasa

tempC = #Dalili ya unyevu =

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

plt.ion () # mode ya maingiliano kupanga data ya moja kwa moja = 0

def makeFig (): #Unda kazi ambayo hufanya mpango wetu unaotaka

plt.ylim (20, 30) #Set y min na maadili ya juu

plt.title ('Real Time DHT11 Data') #Printa kichwa

grt (kweli) #Washa gridi

plt.label ('Temp C') #Weka orodha

plt.plot (tempC, 'b ^ -', label = 'Degree C') #panga joto

hadithi [loc = 'juu kulia') #panga hadithi

plt2 = plt.twinx () #Unda mhimili wa pili y

plt.ylim (50, 70) #Set mipaka ya mhimili wa pili y

plt2.plot (unyevu, 'g * -', label = 'Humidity') data ya shinikizo la #plot

plt2.set_ylabel ('Humidity') # lebo ya pili y mhimili

plt2.ticklabel_format (useOffset = Uongo)

plt2.legend (loc = 'juu kushoto')

wakati Kweli: # Wakati kitanzi ambacho kinatembea milele

wakati (arduino.inKungojea () == 0): # Subiri hapa mpaka kuwe na data

pasi #usifanye chochote

arduinoString = arduino.lineline ()

dataArray = arduinoString.split (',') #Ipange kwa safu

temp = kuelea (dataArray [0])

hum = kuelea (dataArray [1])

tempC. tumia (temp)

unyevu. tumia (hum)

tengeneza (makeFig)

kusitisha plt (.000001)

hesabu = hesabu + 1 ikiwa (hesabu> 20): #chukua tu data 20 za mwisho ikiwa data ni zaidi itatokea kwanza

tempC.pop (0)

unyevu.pop (0)

2. Kupanga unyevu na joto kando

kuagiza serial # kuagiza Serial Library

kuagiza numpy # Ingiza numpy

kuagiza matplotlib.pyplot kama plt #import matplotlib maktaba

kutoka kuagiza sasa

tempC = # safu isiyo na dalili

unyevu =

arduino = mfululizo. Serial ("/ dev / ttyACM0", 115200) # Bandari ya angani ambayo arduino imeunganishwa na Baudrate

plt.ion () #Sema matplotlib unataka hali ya maingiliano kupanga data ya moja kwa moja

def CreatePlot (): #Tengeneza kazi inayofanya mpango wetu unaotaka

plt.plplot (2, 1, 1) #Urefu, upana, njama ya kwanza

plt.ylim (22, 34) #Seti y min na maadili ya juu

plt.title ('Real Time DHT11 Data') #Printa kichwa

grt (kweli) #Washa gridi

plt.label ('Temp C') #Weka lebo

plt.plot (tempC, 'b ^ -', label = 'Degree C') #panga joto

hadithi. (loc = 'kituo cha juu') #panga hadithi

plt.plplot (2, 1, 2) # Urefu, upana, njama ya pili

grt (kweli)

plt.ylim (45, 70) #Set mipaka ya mhimili wa pili y

plt

plt.label ('Unyevu (g / m ^ 3)') # lebo ya pili y mhimili

plt.ticklabel_format (useOffset = Uongo) #kusimamisha mhimili wa autoscale y

hadithi. (loc = 'kituo cha juu')

wakati Kweli: # Wakati kitanzi ambacho kinatembea milele

wakati (arduino.inKungojea () == 0): # Subiri hapa mpaka data ipite # usifanye chochote

arduinoString = arduino.readline () #soma data kutoka bandari ya serial

dataArray = arduinoString.split (',') #Ipange kwa safu

temp = kuelea (dataArray [0]) #Badilisha kipengee cha kwanza kuwa nambari inayoelea na uweke temp

hum = kuelea (dataArray [1]) #Badilisha kipengee cha pili kuwa nambari inayoelea na uweke hum

tempC.append (temp) #Jenga safu yetu ya tempC kwa kuongezea kusoma kwa muda

unyevu.ongeza (hum) #Kuunda safu yetu ya unyevu kwa kuongeza usomaji wa hum

kuchora (CreatePlot)

kusitisha plt (.000001)

hesabu = hesabu + 1

ikiwa (hesabu> 20): #chukua tu data 20 za mwisho ikiwa data ni zaidi itatokea kwanza

tempC.pop (0) # pop kipengele cha kwanza

unyevu.pop (0)

Hatua ya 6: Mchoro wa Mzunguko

Mchoro wa Mzunguko
Mchoro wa Mzunguko
Mchoro wa Mzunguko
Mchoro wa Mzunguko
Mchoro wa Mzunguko
Mchoro wa Mzunguko

Arduino ==> DHT11

3.3V ==> VCC

GND ==> GND

D7 ==> NJE

Ilipendekeza: