Talaan ng mga Nilalaman:

Pagpapakita ng Temperatura at Humidity at Koleksyon ng Data Sa Arduino at Pagproseso: 13 Mga Hakbang (na may Mga Larawan)
Pagpapakita ng Temperatura at Humidity at Koleksyon ng Data Sa Arduino at Pagproseso: 13 Mga Hakbang (na may Mga Larawan)

Video: Pagpapakita ng Temperatura at Humidity at Koleksyon ng Data Sa Arduino at Pagproseso: 13 Mga Hakbang (na may Mga Larawan)

Video: Pagpapakita ng Temperatura at Humidity at Koleksyon ng Data Sa Arduino at Pagproseso: 13 Mga Hakbang (na may Mga Larawan)
Video: Non-Contact Long Range MLX90614-DCI Temperature Sensor with Arduino 2024, Hulyo
Anonim
Pagpapakita ng Temperatura at Humidity at Koleksyon ng Data Sa Arduino at Pagproseso
Pagpapakita ng Temperatura at Humidity at Koleksyon ng Data Sa Arduino at Pagproseso

Intro: Ito ay isang Proyekto na gumagamit ng isang Arduino board, isang Sensor (DHT11), isang Windows computer at Pagproseso (isang libreng maida-download) na programa upang ipakita ang Temperatura, data ng Humidity sa digital at form ng grapong bar, ipakita ang oras at petsa at magpatakbo ng isang bilang up timer sa panahon ng programa at itala ang lahat ng data sa isang format na.csv kapag ang programa ay sarado.

Inspirasyon:

Una DAPAT kong sabihin na ako ay isang kabuuang nagsisimula at marami akong natutunan mula sa proyektong ito. Sa gayon ay sinusubukan kong isulat ang Ituturo na mababasa at maunawaan ng isang kabuuang nagsisimula.

Nakita ko ang iba't ibang mga proyekto ng Arduino upang masukat ang temperatura at halumigmig ngunit nais ko ang isang programa na:

1) Sinukat na temperatura at halumigmig

2) Ipinakita ang data sa parehong isang grap (pinili ko ang bar graph) at digital form

3) May pag-andar ng orasan

4) May count up na timer na "Run Time"

5) Sine-save ang data na ito sa isang format na.csv (excel) na file.

Mayroon akong inspirasyon mula sa mga programang nilikha ni Sowmith Mandadi, R-B at aaakash3, ngunit wala sa mga ito ang eksaktong nais ko. Kaya natutunan kong magsulat ng ilang pangunahing code at ginawa ang nais ko.

Hakbang 1: Ano ang Kakailanganin Mo:

Ano ang Kakailanganin mo
Ano ang Kakailanganin mo
Ano ang Kakailanganin mo
Ano ang Kakailanganin mo

Mga Bahagi at Materyales: * Computer - Gumamit ako ng Windows computer Windows 10 operating system

(Sigurado akong magagamit ang Linux o Mac, wala lang din ako kaya hindi ko sasakupin kung paano gamitin ang mga operating system na ito)

* Arduino Board - Gumamit ako ng isang Arduino Uno Board, ngunit ang anumang Arduino board na may USB ay gagawin

* USB Cable -USB A / B cable -same as old type "printer cable" (karaniwang kasama ng Arduino Board)

* DHT 11 Temperatura / Humidity sensor- murang $ 4 hanggang 8

(Tandaan: mayroong 2 bersyon na ginamit ko ang bersyon ng 3 pin, ang bersyon ng 4 na pin ay mangangailangan ng paggamit ng isang breadboard at isang resistensya ng 10K, ang 3 pin ay may isang naka-print na circuit board na may kasamang 10K risistor) tingnan ang Fritzing diagram sa mga susunod na hakbang

* Mga wire ng koneksyon

Mga wire sa Dupont (dobleng mga dulo ng babae) kung kumokonekta sa 3 pin DHT11 nang walang breadboard

Karaniwang mga jumper M / F wires (isang dulo lalaki isang dulo babae) at M / M jumper wires (parehong nagtatapos lalaki) upang ikonekta ang 4 pin DHT11 - tingnan ang hakbang 2 para sa karagdagang impormasyon

* Arduino IDE - isang programa para sa pagsusulat ng mga programa ng Arduino (tinatawag na mga sketch) na libre @

www.arduino.cc/en/Main/Software

* Pagproseso - isang programa upang sumulat ng mga sketch ng pagproseso nang libre @

processing.org/download/

* "DHTLib" file-isang file ng library (ito ay isang file na pumapasok sa programa ng Arduino IDE sa ilalim ng folder na tinatawag na "Library" kakailanganin itong idagdag sa Arduino sketch bago mabasa ng Arduino ang data mula sa DHT11 -tignan hakbang 5 para sa pag-download ng file at mga tagubilin

Hakbang 2: Ikonekta ang Arduino sa DHT11

Ikonekta ang Arduino sa DHT11
Ikonekta ang Arduino sa DHT11
Ikonekta ang Arduino sa DHT11
Ikonekta ang Arduino sa DHT11
Ikonekta ang Arduino sa DHT11
Ikonekta ang Arduino sa DHT11
Ikonekta ang Arduino sa DHT11
Ikonekta ang Arduino sa DHT11

Alamin muna kung aling DHT11 ang mayroon ka

Ginamit ko ang 3 pin dahil mayroon na itong kinakailangang 10K risistor.

Kung mayroon kang 4 pin kakailanganin mo ng isang 10K risistor at isang breadboard

Ikonekta ang DHT11 sa Arduino Board. Ang program na ito ay tumatawag para sa DHT 11 signal pin upang maiugnay sa Arduino pin # 7, ang Pos (+) pin na konektado sa 5V sa Arduino at Neg (-) sa GND sa Arduino.

Sumangguni sa Mga Diagram at Fritzing Diagram

Hakbang 3: I-download ang Arduino IDE

I-download ang Arduino IDE
I-download ang Arduino IDE

I-download ang Arduino IDE at i-install sa computer

www.arduino.cc/en/Main/Software

Hakbang 4: Ikonekta ang Arduino sa Computer

Ikonekta ang Arduino sa Computer
Ikonekta ang Arduino sa Computer

I-install muna ang Arduino IDE mayroon itong mga driver para sa koneksyon ng Arduino USB.

Ikonekta ang Arduino sa computer sa pamamagitan ng USB.

Maghintay para makilala ng computer ang Arduino board at mai-install ang anumang mga driver.

Buksan ang programa ng IDE at suriin para sa serial na koneksyon.

Kung ang board ng Arduino ay hindi magpapakita sa Tools> port (pulang bilog), isara ang IDE at muling buksan.

* Mahalaga * kapag ang IDE ay bukas at ang Arduino board ay konektado sa pamamagitan ng USB. Ang board ng Arduino ay dapat na konektado sa tamang serial port. Sa mga computer sa Windows ito ay tinukoy bilang COM Port. Upang gawin ito sa IDE pumunta sa Tools> Port:> Mga serial port. Tulad ng nakikita sa Diagram ang serial port (pulang bilog) ay dapat na tumutugma sa port na nakalista sa kanang sulok sa ibaba ng programa ng IDE (dilaw na bilog).

Hakbang 5: I-load ang Library

I-load ang Library
I-load ang Library
I-load ang Library
I-load ang Library
I-load ang Library
I-load ang Library
I-load ang Library
I-load ang Library

I-load ang silid-aklatan para sa DHT11. Ito ay nakalilito sa akin noong una ngunit talagang simple.

I-download ang file na tinatawag na "DHTLib" at i-unzip. Kopyahin ang naka-unzip na "DHTLib" na file.

Ang sanggunian sa silid-aklatan na ito ay matatagpuan sa:

playground.arduino.cc/Main/DHTLib

(Sinulat ito ni Rob Tillaart batay sa trabaho mula sa iba)

Hanapin ang Arduino folder sa iyong computer at buksan ito. (Ito ay magiging nasaan ka man mag-download ng IDE at mai-install ito sa computer)

Tingnan ang Diagram

Hanapin ang file na tinawag na "mga aklatan" at buksan ito pagkatapos i-paste ang folder na "DHTLib" sa file na "mga aklatan". Isara ito at pagkatapos ay i-restart ang IDE.

Tingnan ang Diagram

Kapag nabuksan muli ang IDE maaari mong suriin upang makita na naka-install ang library ng DHT. Sketch> Isama ang Library.

Tingnan ang Diagram

Tandaan Ang pag-click sa DHTLib sa tab na "isama ang library" ay ilalagay ang library sa Arduino code bilang "#include dht.h".

Hindi mo kailangang gawin ito dahil nasa code na ito na mai-download mo sa susunod na hakbang.

Hakbang 6: Kunin ang Arduino Code

Kunin ang Arduino Code
Kunin ang Arduino Code

I-download ang Temp_Hum_Instructable.zip file at i-unzip. Buksan ang Temp_Hum_Instructable.ino gamit ang Arduino IDE.

Halili na tingnan ang sumusunod na code at kopyahin at i-paste o i-type nang eksakto sa Arduino IDE:

# isama

dht DHT; #define DHT11PIN 7 // nagtatakda ng pin 7 para sa koneksyon ng signal ng DHT11 na walang bisa ang pag-setup () {Serial.begin (9600); // bubukas ang serial} void loop () {int chk = DHT.read11 (DHT11PIN); // binabasa ang DHT11 Serial.print (DHT.temperature, 0); // prints temp sa serial Serial.print (","); // prints comma in serial Serial.print (DHT.humidity, 0); // prints halumigmig sa serial Serial.println (); // pagkaantala ng pagbalik sa karwahe (2000); // maghintay ng 2 segundo}

Kapag tapos ka na dapat magmukhang ang Diagram sa itaas

Hakbang 7: I-load ang Code sa Arduino

I-load ang Code sa Arduino
I-load ang Code sa Arduino
I-load ang Code sa Arduino
I-load ang Code sa Arduino
I-load ang Code sa Arduino
I-load ang Code sa Arduino
I-load ang Code sa Arduino
I-load ang Code sa Arduino

Una I-save ang sketch sa lokasyon at may isang pangalan na maaalala mo, Halimbawa: Temp_Hum.

Susunod na kailangan mong i-load ang sketch sa board ng Arduino sa pamamagitan ng pagpindot sa kanang pindutan ng arrow na itinuturo (upload).

Tingnan ang Diagram

Aabutin ito ng ilang segundo; makakakita ka ng isang progress bar sa kanang ibabang bahagi.

Pagkatapos ay makikita mo: Tapos na sa pag-upload ng mensahe sa ibabang kaliwa at puting teksto sa ilalim ng IDE na nagsasabi sa iyo tungkol sa memorya

Tingnan ang Diagram

Kung nakakuha ka ng isang error code (orange na teksto sa ilalim ng IDE) dapat ito ay isa sa mga sumusunod

  1. Ang librong "DHTlib" ay hindi nakopya nang tama
  2. Ang COM port ay hindi naitakda nang tama
  3. Ang sensor ay hindi konektado nang tama
  4. Ang code ay hindi na-load sa IDE nang tama Ang kulay kahel na teksto ay maaaring mai-scroll at magbibigay ito ng isang palatandaan kung ano ang mali. Bumalik at suriin ito ay marahil isang simpleng pagkakamali.

Kapag tapos na ito tingnan ang mabuti sa iyong Arduino board. Ang bawat pares ng segundo ang maliit na LED sa tabi ng mga titik na "TX" ay kumurap. Ito ang Arduino na nagpapadala ng impormasyon pabalik sa computer. Upang suriin ang pag-click na ito sa maliit na simbolo ng magnifying glass sa kanang sulok sa itaas ng IDE.

Tingnan ang Diagram

Bubuksan nito ang serial monitor at ipakita ang data ng temperatura at halumigmig na pinaghihiwalay ng isang kuwit. Mapapansin mo na ang data ng temperatura ay nakalista sa Celsius. OK lang i-convert namin sa Fahrenheit mamaya (o hindi kung pinili mo).

Tingnan ang Diagram

Susunod na isara ang serial monitor at pagkatapos isara ang IDE. (Naalala mong i-save ito, hindi ba?). Ngayon tingnan muli ang board ng Arduino (huwag idiskonekta ito mula sa USB na kung saan nakakakuha ito ng kuryente, at nagpapadala ng data sa serial port sa computer). Kumukurap pa ba? Oo, mahusay. Kapag na-load ang programa sa Arduino tatakbo ito hangga't mayroon itong lakas.

Tandaan tungkol sa code: kung titingnan mo ang Arduino code na nagsisimula sa "void loop ();". Ang susunod na 5 linya ng code ay sabihin sa Arduino na basahin ang data mula sa DHT at i-print ito sa serial bus na pinaghiwalay ng isang kuwit. Ang susunod na linya na "pagkaantala (2000);" Sinasabi sa Arduino na maghintay ng 2 segundo (2000 milliseconds) kaya ang data ay natatanggap bawat 2 segundo. Pagkatapos ay babalik ito sa "void loop ();" - isang utos na nagsasabi sa Arduino na gawin itong muli. Ang pagpapalit ng halaga sa linya ng pagkaantala ay magbabago kung gaano kadalas natanggap ang data. Halimbawa: ang pagbabago sa (600000) ay magbabago ito sa 10 minuto (600000 milliseconds = 10 minuto). Ang pagtanggap ng data bawat 2 segundo ay nagtatapos sa pagiging maraming data, kaya't alam mo ngayon kung paano baguhin kung gaano kadalas binabasa ang data. Tandaan lamang kung binago mo ang halaga sa paglaon ay gagawin mo kailangang i-upload ang bagong programa.

OK umupo at huminga ka ay higit sa kalahating paraan doon. Oo !!

Hakbang 8: I-download at I-install ang Pagproseso

Pag-download at Pag-install ng Pagproseso
Pag-download at Pag-install ng Pagproseso
Pag-download at Pag-install ng Pagproseso
Pag-download at Pag-install ng Pagproseso

processing.org/download/

Medyo diretso pasulong piliin ang program na tumutugma sa iyong computer para sa windows 64bit vs. 32 bit. Kung hindi mo alam, buksan ang Control panel sa iyong computer (view ng icon hindi view ng kategorya) at pumunta sa system ay nakalista ito roon.

Tingnan ang Diagram

Mag-download at pagkatapos ay mai-install ang programa.

Sa unang pagkakataon na buksan mo at patakbuhin ang pagproseso marahil ay makakakuha ka ng isang mensahe sa seguridad ng Java. I-click ang "payagan" para sa mga pribadong network. Ang Java ay ang wikang computer na ginagamit ng Processing (at Arduino IDE). Kagiliw-giliw na hindi pa ako nakakaranas ng mensahe ng seguridad sa Arduino IDE, nagpoproseso lamang.

Hakbang 9: Code ng Pagproseso

Code ng Pagproseso
Code ng Pagproseso

OK ngayon para sa Processing code.

Ito ang pinaka-mapaghamong bahagi para sa akin, ngunit din ang pinaka-pagkakataon para sa pag-aaral. Habang ang Arduino code ay 20 o higit pang mga linya ang code na ito ay mayroong +/- 270 mga linya sa pangunahing code at isa pang 70 + sa mga klase.

Ngayon ang unang bagay na dapat mong itanong ay "Ano ang mga klase?". Magandang tanong. Ito ay tumutukoy sa object oriented na programa. Sa madaling salita, maraming mga bagay na nangyayari sa pangunahing code: pagtukoy sa laki at kulay ng display, isang orasan, isang timer, code upang ipakita ang lokasyon ng cursor, code upang mai-save ang data sa isang.csv file at ilang mga linya na pakikitungo sa code na nagpapakita ng mga graph ng bar. Habang ang Arduino IDE ay mayroong lahat ng code sa isang pahina, ang processing code na ito ay mayroong tatlong mga tab. Ang una ay ang pangunahing code at ang susunod na dalawa ay ang code na nagpapakita ng mga graph ng bar. (Ang code na ito ay talagang nakaimbak sa tatlong magkakahiwalay na mga file sa loob ng folder ng code ng Pagproseso.) Ang magkakahiwalay na mga tab ay tinatawag na "mga klase" at tinukoy sa mga linya na 48 at 56 at pagkatapos ay ipinakita ng mga linya na 179-182 ng pangunahing code. Ang mga taong nagsulat ng programa sa Pagproseso ay tumatawag sa object oriented na programa na ito. (tingnan ang: https://processing.org/tutorials/objects/ para sa isang maikling paglalarawan).

Talaga kung ano ang ginagawa ng mga klase (Recta1, Recta2) sa code na ito ay lumikha ng mga parihaba na pataas at pababa batay sa data na natanggap mula sa DHT11 sa pamamagitan ng serial. Mag-isip ng makalumang thermometer mas mataas ang mercury ay nagiging mas mainit ito, ngunit ginagawa ito sa data na hindi mercury. Sa katotohanan ang mga klase ay lumilikha ng apat na mga parihaba, dalawang mga static na parihaba na kumakatawan sa background ng termometro at dalawang mga dinamikong parihaba na tumutugon sa data at umakyat pataas. Bilang karagdagan sa paglipat ng mga parihaba, binabago ng code ang kulay ng pabagu-bago na rektanggulo at ang kulay ng digital na pagpapakita ng Temp at Humidity batay sa data na natanggap ng serial.

Hakbang 10: Pagproseso ng Mga File ng Code

Ilang mga pangunahing kaalaman lamang sa Processing code:

Masidhing inirerekumenda kong basahin ang Gumawa: Magsisimula sa Pagproseso ni Casey Reas at Ben Fry ang mga nagtatag ng Pagproseso.

processing.org/books/#reasfry2

Hindi ko susubukan na ipaliwanag ang lahat ng mga aspeto ng Pagproseso o pagsulat ng code para sa pagproseso. Tulad ng sinabi ko nang mas maaga ako ay isang nagsisimula at sa palagay ko mayroong maraming mas mahusay na mga tao upang matuto mula sa. Gayunpaman naiintindihan ko ang code na aking isinulat (ang pagsubok at error ay mabuting guro).

1. Una dapat dapat isama ang mga aklatan (tulad ng sa Arduino) at ideklara ang mga variable (Mga Linya 1-25)

2. Susunod na i-set up ang display board (Mga linya 27-63)

3. Patakbuhin ang isang paulit-ulit na bahagi ng code- kung ano ang ibig kong sabihin ay ang bahaging ito ng code ay uulit hangga't tumatakbo ang programa. Matatandaan mo Sa Arduino "void loop ();" (Hakbang 6). Sa Pagproseso ngayon ay "void draw ();" (Mga Linya 65-184)

4. Susunod ay ang pagkuha ng data mula sa serial port at italaga ito sa mga variable (int, float, String)

int-

lumutang-

String-

(Mga linya 185-245)

4. Panghuli isang paraan upang isara ang programa at i-save ang data (Mga linya 246-271)

Ok: I-download ang file na Temp_Hum_F_3_2 (para sa Fahrenheit)

O Temp_Hum_C_3_1 (para sa Centigrade)

at i-unzip ang file. Buksan gamit ang Pagproseso.

Hakbang 11: Font sa Pagproseso

Font sa Pagproseso
Font sa Pagproseso

Mahalaga: Tinatawag ko ang iyong pansin sa mga linya 36-37

36 font = loadFont ("SourceCodePro-Bold-48.vlw"); // naglo-load na font na nakaimbak sa data

folder 37 textFont (font);

Ang font library na "SourceCodePro-Bold-48.vlw" ay kasama sa pag-proseso ng mga pag-download ng mga file at hindi kailangang mabago upang gumana.

Gayunpaman upang baguhin ang font sa ibang bagay kakailanganin mong i-load ang bagong font sa Pagproseso ng sketch AT palitan ang "SourceCodePro-Bold-48.vlw" ng bagong font.

. Sa kabutihang-palad Ginawang madali ng Pagproseso ang unang bahagi.

Buksan muna ang isang sketch pagkatapos ay i-click ang:

Mga tool> Lumikha ng font

nagdadala ito ng isang window

Tingnan ang diagram

Mag-scroll pababa sa bagong font na gusto mo, Mag-click dito at pagkatapos ay mag-click OK. Ang font ay na-load na sa sketch folder.

Susunod na palitan ang teksto ng "SourceCodePro-Bold-48.vlw" na may eksaktong pangalan ng bagong font (kasama ang format na.vlw file)

Kung hindi ito tapos na ang bagong font ay hindi mai-load sa code at ang code ay magbibigay ng mga error (Tulad ng mga error sa Arduino- sa itim na kahon sa ilalim ng programa).

Hakbang 12: Pagtatapos

Tinatapos ko na
Tinatapos ko na
Tinatapos ko na
Tinatapos ko na
Tinatapos ko na
Tinatapos ko na
Tinatapos ko na
Tinatapos ko na

Upang simulan ang pagproseso ng programa ng pag-click sa arrow, maaari kang makakuha ng isang babala sa Java, Mag-click sa: Payagan ang pag-access.

Tingnan ang Diagram

OK, gumagana ba ang programa? Kung gayon, makakakuha ka ng isang display tulad ng nakikita sa diagram.

(Hindi? Tingnan ang pag-troubleshoot sa susunod na hakbang)

Oo Ngayon subukang hawakan ang DHT11 sa iyong saradong palad o ilagay sa ilalim ng mainit na air stream ng isang hair dryer. Dapat magbago ang mga numero. Oo Malaki. nangangahulugan iyon na lahat ay gumagana nang maayos.

Upang isara ang programa at makatipid ng data mag-click sa kahon na nagsasabing "Mag-click Dito upang Isara at I-save ang Data".

Ngayon upang hanapin ang nai-save na data, pumunta sa Temp_Hum_F_3_1 o Temp_Hum_C_3_1 Pagproseso ng folder (dapat mong makita ito sa iyong sarili sa ngayon) buksan ito at hanapin ang folder ng Data. Buksan ito at dapat mong makita ang isang.csv file na pinangalanan pagkatapos ng petsa at oras na isinara mo ang programa (Halimbawa 1-10-18--22-30-16.csv nangangahulugang Enero 10 2018 10:30:16 PM). Buksan ito gamit ang Excel (o katumbas na sheet ng pagkalat ng sheet ng opisina). Dapat mong makita ang isang bagay tulad ng diagram. Mga haligi para sa Petsa, Oras, oras ng pagpapatakbo, temp at halumigmig na may data. Maaari mo na ngayong i-grap ang data sa excel o anumang nais mong gawin dito. (Tandaan: kung titingnan mo ang unang data entry ang data ng Temp at Humidity ay hindi tama, normal ito at isang error lamang kapag unang nagsimula ang programa)

OK oo !!!!!!

Nagawa mo

Kung mayroon kang anumang mga katanungan mangyaring mag-post at gagawin ko ang aking makakaya upang tumugon at tumulong.

Salamat sa pananatili nito at good luck. Inaasahan ko na ito ay isang simula lamang….

Susunod para sa akin Bluetooth at posibleng Android ….

Hakbang 13: Pag-troubleshoot

Pag-troubleshoot
Pag-troubleshoot
Pag-troubleshoot
Pag-troubleshoot

Mga problema sa Arduino

Kung nakakuha ka ng isang error code (orange na teksto sa ilalim ng IDE) dapat ito ay isa sa mga sumusunodAng librong "DHTlib" ay hindi nakopya nang tama

Ang COM port ay hindi naitakda nang tama

Ang sensor ay hindi konektado nang tama

Ang code ay hindi na-load nang tama sa IDE

Kung ang lahat ng Arduino ay tila OK na tandaan upang buksan ang Serial Monitor at tingnan kung ipinapakita ang data

Kung nakikita mo ang wastong data nangangahulugan ito na ang panig ng Arduino ay gumagana ang lahat- Tandaan Tandaan ang Serial Monitor bago simulan ang Pagproseso, kung bukas ang Serial Monitor Pagproseso cant basahin ang data.

Mga problema sa pagpoproseso:

Ipapakita ang mga ito sa ibabang bahagi ng programang Pagproseso.

Kung nakakuha ka ng isang error sa paglalarawan ng "font" bumalik sa hakbang 11 at i-load ang font tulad ng inilarawan.

Kung nakakuha ka ng isang error na mukhang: Error, hindi pagpapagana ng serialEvent () para sa COM4 null- i-restart lamang ang Pagproseso ng sketch sa pamamagitan ng pag-click sa arrow tulad ng hakbang 12

Kung nakakuha ka ng isang error na nagsasaad: Error sa pagbubukas ng serial port- subukang baguhin ang mga linya 32-34 sa isang bagay tulad ng kung saan tumutugma ang "COM4" sa COM port sa iyong Arduino sketch

myPort = newSerial (ito, "COM4", 9600); // Port myPort.bufferUntil ('\ n') // maghintay hanggang ang data ng serial ay

Inirerekumendang: