INHOUDSOPGAWE:

Temperatuur- en humiditeitsweergawe en data -insameling met Arduino en verwerking: 13 stappe (met foto's)
Temperatuur- en humiditeitsweergawe en data -insameling met Arduino en verwerking: 13 stappe (met foto's)

Video: Temperatuur- en humiditeitsweergawe en data -insameling met Arduino en verwerking: 13 stappe (met foto's)

Video: Temperatuur- en humiditeitsweergawe en data -insameling met Arduino en verwerking: 13 stappe (met foto's)
Video: Deel 4 - Data dashboard Arduino voor de schooltuin via ESP8266 en WiFi. 2024, Julie
Anonim
Temperatuur- en humiditeitsweergawe en data -insameling met Arduino en verwerking
Temperatuur- en humiditeitsweergawe en data -insameling met Arduino en verwerking

Inleiding: Dit is 'n projek wat 'n Arduino -bord, 'n sensor (DHT11), 'n Windows -rekenaar en 'n verwerkingsprogram ('n gratis aflaaibare) program gebruik om temperatuur-, humiditeitsdata in digitale en staafgrafiekvorm te vertoon, tyd en datum te vertoon en 'n telling uit te voer up timer tydens die program en teken alle data op in 'n.csv -formaat wanneer die program gesluit is.

Inspirasie:

Eerstens MOET ek sê dat ek 'n totale beginner is en ek het baie geleer uit hierdie projek. Dus probeer ek hierdie instruksies skryf om deur 'n totale beginner gelees en verstaan te word.

Ek het verskillende Arduino -projekte gesien om temperatuur en humiditeit te meet, maar ek wou 'n program hê wat:

1) Gemete temperatuur en humiditeit

2) Gegee die data in 'n grafiek (ek het 'n staafgrafiek gekies) en in 'n digitale vorm

3) Het 'n klokfunksie

4) Het 'n tydsberekening van die “tydtyd”

5) Stoor hierdie data in 'n.csv (Excel) lêerformaat.

Ek het inspirasie gekry uit programme wat deur Sowmith Mandadi, R-B en aaakash3 geskep is, maar nie een hiervan was presies wat ek wou hê nie. Dus het ek geleer om 'n basiese kode te skryf en gemaak wat ek wou hê.

Stap 1: Wat u benodig:

Wat u benodig
Wat u benodig
Wat u benodig
Wat u benodig

Onderdele en materiaal:*Rekenaar - ek het 'n Windows -rekenaar Windows 10 -bedryfstelsel gebruik

(Ek is seker Linux of Mac kan gebruik word, ek het dit ook nie, so ek sal nie bespreek hoe ek hierdie bedryfstelsels moet gebruik nie)

*Arduino Board - ek het 'n Arduino Uno Board gebruik, maar enige Arduino board met USB sal dit doen

*USB -kabel -USB A/B -kabel -dieselfde as ou "drukkabel" (kom gewoonlik met Arduino -bord)

*DHT 11 Temperatuur- /humiditeitsensor- goedkoop $ 4 tot 8

(Let wel: daar is 2 weergawes wat ek met die 3 -pen weergawe gebruik het; die 4 -pen weergawe benodig 'n broodbord en 'n 10K -weerstand; die 3 -pen het 'n printplaat met die 10K -weerstand) sien Fritz -diagramme in die volgende stappe

*Aansluitdrade

Dupont -drade (dubbele eindpunte) as dit met 'n 3 -pins DHT11 sonder broodbord verbind word

Standaard jumper M/F drade (one end male one end female) en M/M jumper wire (beide eindes male) om 4 pins DHT11 aan te sluit - sien stap 2 vir meer inligting

*Arduino IDE - 'n program vir die skryf van Arduino -programme (genoem sketse) gratis @

www.arduino.cc/en/Main/Software

*Verwerking - 'n program om verwerkingssketse gratis @ te skryf

processing.org/download/

* "DHTLib" -lêer -'n biblioteeklêer (dit is 'n lêer wat in die Arduino IDE -program ingaan onder die gids "Biblioteek", dit moet by die Arduino -skets gevoeg word voordat die Arduino die data van die DHT11 kan sien -sien stap 5 vir die aflaai van lêer en instruksies

Stap 2: Koppel Arduino aan DHT11

Koppel Arduino aan DHT11
Koppel Arduino aan DHT11
Koppel Arduino aan DHT11
Koppel Arduino aan DHT11
Koppel Arduino aan DHT11
Koppel Arduino aan DHT11
Koppel Arduino aan DHT11
Koppel Arduino aan DHT11

Bepaal eers watter DHT11 u het

Ek het die 3 -pen gebruik, aangesien dit reeds die benodigde 10K -weerstand het.

As u die 4 -pen het, benodig u 'n 10K -weerstand en 'n broodbord

Koppel DHT11 aan op Arduino Board. Hierdie program vereis dat die DHT 11 seinpen gekoppel word aan Arduino pen #7, Pos (+) pen gekoppel aan 5V op Arduino en Neg (-) aan GND op Arduino.

Verwys na Diagramme en Fritzing Diagramme

Stap 3: Laai Arduino IDE af

Laai Arduino IDE af
Laai Arduino IDE af

Laai Arduino IDE af en installeer dit op u rekenaar

www.arduino.cc/en/Main/Software

Stap 4: Koppel Arduino aan op 'n rekenaar

Koppel Arduino aan op die rekenaar
Koppel Arduino aan op die rekenaar

Installeer eers die Arduino IDE, met bestuurders vir die Arduino USB -verbinding.

Koppel Arduino via 'n rekenaar aan die rekenaar.

Wag totdat die rekenaar die Arduino -bord herken en bestuurders installeer.

Maak die IDE -program oop en kyk of daar 'n seriële verbinding is.

As die Arduino -bord nie in die gereedskap> -poort (rooi sirkel) verskyn nie, sluit die IDE en heropen.

* Belangrik* sodra die IDE oop is en die Arduino -bord via USB gekoppel is. Die Arduino -bord moet gekoppel wees aan die korrekte seriële poort. Op Windows -rekenaars word dit COM -poort genoem. Om dit in die IDE te doen, gaan na Tools> Port:> Serial ports. Soos gesien in diagram, moet die seriële poort (rooi sirkel) ooreenstem met die poort wat in die regter onderste hoek van die IDE -program (geel sirkel) verskyn.

Stap 5: Laai die biblioteek

Laai die biblioteek
Laai die biblioteek
Laai die biblioteek
Laai die biblioteek
Laai die biblioteek
Laai die biblioteek
Laai die biblioteek
Laai die biblioteek

Laai die biblioteek vir die DHT11. Dit was vir my aanvanklik verwarrend, maar dit is regtig eenvoudig.

Laai die lêer met die naam “DHTLib” af en pak dit uit. Kopieer die losgemaakte "DHTLib" -lêer.

Verwysing na hierdie biblioteek kan gevind word by:

playground.arduino.cc/Main/DHTLib

(Dit is deur Rob Tillaart geskryf op grond van werk van ander)

Soek die gids Arduino op u rekenaar en maak dit oop. (Dit is oral waar u die IDE afgelaai en op die rekenaar geïnstalleer het)

Sien diagram

Soek die lêer met die naam "biblioteke" en maak dit oop en plak die "DHTLib" -map in die "biblioteke" -lêer. Sluit dit en herbegin die IDE.

Sien diagram

Nadat die IDE weer oopgemaak is, kan u kyk of die DHT -biblioteek geïnstalleer is. Skets> Sluit biblioteek in.

Sien diagram

Opmerking As u op DHTLib klik op die oortjie "biblioteek insluit", plaas die biblioteek in die Arduino -kode as "#include dht.h".

U hoef dit nie te doen nie, want dit is reeds in die kode wat u in die volgende stap sal aflaai.

Stap 6: Kry die Arduino -kode

Kry die Arduino -kode
Kry die Arduino -kode

Laai die Temp_Hum_Instructable.zip -lêer af en pak dit uit. Maak die Temp_Hum_Instructable.ino oop met die Arduino IDE.

Alternatiewelik, kyk na die volgende kode en kopieer en plak of tik presies in die Arduino IDE:

#insluit

dht DHT; #define DHT11PIN 7 // stel pen 7 vir DHT11 seinverbinding leemte opstel () {Serial.begin (9600); // maak reeks} leemte lus () {int chk = DHT.read11 (DHT11PIN) oop; // lees DHT11 Serial.print (DHT.temperatuur, 0); // druk temp in seriële Serial.print (","); // druk komma in seriële Serial.print (DHT.humidity, 0); // druk humiditeit af in seriële Serial.println (); // vertraging vir terugkeer van koets (2000); // wag 2 sekondes}

As u klaar is, moet dit soos die diagram hierbo lyk

Stap 7: Laai kode op Arduino

Laai kode op Arduino
Laai kode op Arduino
Laai kode op Arduino
Laai kode op Arduino
Laai kode op Arduino
Laai kode op Arduino
Laai kode op Arduino
Laai kode op Arduino

Stoor eers die skets op die plek en met 'n naam wat u sal onthou, byvoorbeeld: Temp_Hum.

Vervolgens moet u die skets op die Arduino -bord laai deur op die pylknoppie regs te druk (oplaai).

Sien diagram

Dit sal 'n paar sekondes neem; u sal 'n vorderingsbalk regs onder sien.

Dan sal u sien: Klaar met die oplaai van boodskap links onder en wit teks onderaan die IDE wat u vertel van geheue

Sien diagram

As u 'n foutkode kry (oranje teks onderaan die IDE), behoort dit een van die volgende te wees

  1. Die "DHTlib" -biblioteek is nie korrek gekopieer nie
  2. Die COM -poort is nie korrek ingestel nie
  3. Die sensor is nie korrek gekoppel nie
  4. Die kode is nie korrek in die IDE gelaai nie. Die oranje teks kan deurblaai, en dit sal 'n idee gee van wat fout is. Gaan terug en kyk of dit waarskynlik 'n eenvoudige fout is.

Sodra dit klaar is, kyk u na u Arduino -bord. Elke paar sekondes sal die klein LED langs die letters "TX" flikker. Dit is die Arduino wat inligting terugstuur na die rekenaar. Klik hierop op die klein vergrootglas -simbool in die regter boonste hoek van die IDE.

Sien diagram

Dit sal die seriële monitor oopmaak en data oor temperatuur en humiditeit vertoon, geskei deur 'n komma. U sal opmerk dat die temperatuurdata in Celsius gelys word. Dit is goed, ons sal later na Fahrenheit omskakel (of nie as u dit gekies het).

Sien diagram

Sluit vervolgens die seriële monitor en sluit dan die IDE. (U het wel onthou om dit te stoor, nie waar nie?). Kyk nou weer na die Arduino -bord (moenie dit ontkoppel van die USB waar dit krag kry nie, en stuur data na die seriële poort van die rekenaar). Knip dit nog steeds? Ja, wonderlik. Sodra die program op die Arduino gelaai is, sal dit werk solank dit krag het.

Opmerking oor kode: as u kyk na die Arduino -kode wat begin met 'void lus ();'. Die volgende 5 reëls kode vertel die Arduino om data van die DHT te lees en dit af te druk na die seriële bus geskei deur 'n komma. Die volgende reël "vertraging (2000);" vertel die Arduino om 2 sekondes (2000 millisekondes) te wag, sodat die data elke 2 sekondes ontvang word. Dan gaan dit terug na "void lus ();" - 'n opdrag wat die Arduino sê om dit weer te doen. As u die waarde in die vertragingslyn verander, verander die frekwensie van die ontvangs van die data. Voorbeeld: verander na (600000) sal verander dit tot 10 minute (600000 millisekondes = 10 minute). As u elke 2 sekondes data ontvang, word dit baie data, dus weet u nou hoe u die data moet lees. Onthou net as u later die waarde verander moet die nuwe program oplaai.

OK, sit terug en haal asem; jy is meer as halfpad daar. Ja !!

Stap 8: Laai verwerking af en installeer dit

Laai verwerking af en installeer dit
Laai verwerking af en installeer dit
Laai verwerking af en installeer dit
Laai verwerking af en installeer dit

processing.org/download/

Kies eenvoudig die program wat ooreenstem met u rekenaar vir Windows 64bit vs 32 bit. As u dit nie weet nie, maak die bedieningspaneel op u rekenaar oop (ikoonaansig nie kategorie -aansig nie) en gaan na stelsel, dit sal daar verskyn.

Sien diagram

Laai die program af en installeer dit.

Die eerste keer dat u die verwerking oopmaak en uitvoer, kry u waarskynlik 'n Java -sekuriteitsboodskap. Klik op "toelaat" vir privaat netwerke. Java is die rekenaartaal wat Processing (en Arduino IDE) gebruik. Interessant genoeg het ek nog nooit die veiligheidsboodskap met Arduino IDE gehad nie, net verwerking.

Stap 9: Verwerkingskode

Verwerkingskode
Verwerkingskode

OK nou vir die verwerkingskode.

Dit was vir my die mees uitdagende deel, maar ook die meeste geleentheid om te leer. Terwyl die Arduino-kode ongeveer 20 reëls was, bevat hierdie kode +/- 270 reëls in die hoofkode en nog 70 + in die klasse.

Die eerste ding wat u moet vra, is "Wat is klasse?". Goeie vraag. Dit verwys na objekgeoriënteerde programmering. Kortom, daar is 'n klomp dinge wat in die hoofkode gebeur: die grootte en kleur van die skerm, 'n klok, 'n timer, 'n kode om die wyser se ligging te wys, 'n kode om data in 'n CSV -lêer te stoor en 'n paar reëls wat handel oor kode wat die staafgrafieke vertoon. Terwyl die Arduino IDE al die kode op een bladsy gehad het, het hierdie verwerkingskode drie oortjies. Die eerste is die hoofkode en die volgende twee is die kode wat die staafgrafieke vertoon. (Hierdie kode word eintlik in drie afsonderlike lêers in die verwerkingskode-lêergids gestoor.) Die afsonderlike oortjies word "klasse" genoem en word gedefinieer in reëls 48 en 56 en dan vertoon deur reëls 179-182 van die hoofkode. Die mense wat Verwerkingsprogram geskryf het, noem dit objekgeoriënteerde programmering. (sien: https://processing.org/tutorials/objects/ vir 'n kort beskrywing).

Wat die klasse (Recta1, Recta2) in hierdie kode eintlik doen, is om reghoeke te maak wat op en af beweeg op grond van die data wat van die DHT11 via reeks ontvang is. Dink outydse termometer hoe hoër die kwik hoe warmer dit is, maar dit word gedoen met data, nie kwik nie. In werklikheid skep die klasse vier reghoeke, twee statiese reghoeke wat die agtergrond van die termometer voorstel en twee dinamiese reghoeke wat op data reageer en op en af beweeg. Benewens die verskuiwing van die reghoeke, verander die kode die kleur van die dinamiese reghoek en die kleur van die digitale vertoning van temperatuur en humiditeit, gebaseer op die data wat deur die reeks ontvang word.

Stap 10: Verwerking van kode lêers

Net 'n paar basiese beginsels oor die verwerkingskode:

Ek beveel sterk aan om Make: Getting Started withProcessing te lees deur Casey Reas en Ben Fry, die stigters van Processing.

processing.org/books/#reasfry2

Ek sal nie probeer om al die aspekte van die verwerking of die skryf van kode vir die verwerking te verduidelik nie. Soos ek vroeër gesê het, ek is 'n beginner en ek dink daar is baie beter mense om van te leer. Ek verstaan egter die kode wat ek geskryf het (probeer en fout is goeie onderwysers).

1. Eerstens moet u biblioteke insluit (net soos in Arduino) en veranderlikes verklaar (reëls 1-25)

2. Stel dan die skerm op (reëls 27-63)

3. Begin 'n herhaalde deel van die kode- wat ek bedoel, is dat hierdie deel van die kode sal herhaal solank die program loop. U sal In Arduino 'void loop ();' onthou (Stap 6). By die verwerking is dit nou 'void draw ();' (Reëls 65-184)

4. Volgende is om data van die seriële poort af te kry en dit aan veranderlikes toe te ken (int, float, String)

int-

dryf-

Snaar-

(Lyne 185-245)

4. Uiteindelik 'n manier om die program te sluit en die data te stoor (reëls 246-271)

Ok: Laai die lêer Temp_Hum_F_3_2 af (vir Fahrenheit)

Of Temp_Hum_C_3_1 (vir Celsius)

en pak die lêer uit. Maak oop met verwerking.

Stap 11: Lettertipe in verwerking

Lettertipe in verwerking
Lettertipe in verwerking

Belangrik: ek vestig u aandag op reëls 36-37

36 font = loadFont ("SourceCodePro-Bold-48.vlw"); // laai lettertipe wat in data gestoor is

vouer 37 textFont (font);

Hierdie lettertipe-biblioteek "SourceCodePro-Bold-48.vlw" is ingesluit in die aflaai van die verwerking van lêers en hoef nie verander te word om te funksioneer nie.

Om die lettertipe na iets anders te verander, moet u die nuwe lettertipe in die verwerkingskets laai EN 'SourceCodePro-Bold-48.vlw' vervang met die nuwe lettertipe.

. Gelukkig het verwerking die eerste deel baie maklik gemaak.

Maak eers die a -skets oop en klik dan op:

Gereedskap> Skep lettertipe

dit bring 'n venster na vore

Sien diagram

Blaai af na die nuwe lettertipe wat u wil hê, klik daarop en klik dan op OK. Die lettertipe is nou in die sketsmap gelaai.

Vervang vervolgens die teks "SourceCodePro-Bold-48.vlw" met die presiese naam van die nuwe lettertipe (insluitend die.vlw-lêerformaat)

As dit nie gedoen word nie, word die nuwe lettertipe nie in die kode gelaai nie, en die kode gee foute (net soos foute in Arduino- in die swart boks onderaan die program).

Stap 12: Voltooi

Voltooi
Voltooi
Voltooi
Voltooi
Voltooi
Voltooi
Voltooi
Voltooi

Om die verwerkingsprogram te begin, klik op die pyltjie, u kry moontlik 'n Java -waarskuwing: Klik: Toegang toelaat.

Sien diagram

OK, het die program gewerk? As dit die geval is, kry u 'n skerm soos in die diagram.

(Nee? Sien probleemoplossing in die volgende stap)

Ja? Probeer nou om die DHT11 in u geslote handpalm te hou of plaas onder die warm lugstroom van 'n haardroër. Die getalle moet verander. Ja? Groot. dit beteken dat alles goed werk.

Om die program te sluit en data te stoor, klik op die kassie wat sê "Klik hier om data te sluit en op te slaan".

Gaan na die gids Temp_Hum_F_3_1 of Temp_Hum_C_3_1 Processing om die gestoorde data te vind (u moet dit nou self kan vind) en vind die Data -lêergids. As u dit oopmaak, moet u 'n.csv-lêer sien wat vernoem is na die datum en tyd waarop u die program gesluit het (Voorbeeld 1-10-18--22-30-16.csv beteken 10 Januarie 2018 22:30:16). Maak dit oop met Excel (of die ekwivalent van die oop kantoorbladsy). U behoort iets soos die diagram te sien. Kolomme vir datum, tyd, werktyd, temp en humiditeit met data. U kan nou die gegewens met Excel grafiseer of wat u daarmee wil doen. (Let wel: as u na die eerste data -invoer kyk, is die data oor temperatuur en humiditeit nie korrek nie, dit is normaal en is dit slegs 'n fout wanneer die program eers begin)

OK ja !!!!!

Jy het dit gedoen

As u enige vrae het, plaas dit, en ek sal my bes doen om te reageer en te help.

Dankie dat u hiermee gebly het en sterkte. Ek hoop dit is net 'n begin ….

Volgende vir my Bluetooth en moontlik Android …

Stap 13: Probleemoplossing

Probleemoplossing
Probleemoplossing
Probleemoplossing
Probleemoplossing

Arduino probleme

As u 'n foutkode kry (oranje teks onderaan die IDE), moet dit een van die volgende wees: Die "DHTlib" -biblioteek is nie korrek gekopieer nie

Die COM -poort is nie korrek ingestel nie

Die sensor is nie korrek gekoppel nie

Die kode is nie korrek in die IDE gelaai nie

As dit lyk asof dit goed gaan met Arduino, moet u die Serial Monitor oopmaak en kyk of data vertoon word

As u die korrekte data sien, beteken dit dat die kant van die Arduino werk.

Verwerkingsprobleme:

Dit word in die onderste deel van die verwerkingsprogram vertoon.

As u 'n fout kry met die beskrywing van 'lettertipe', gaan terug na stap 11 en laai die lettertipe soos beskryf.

As u 'n fout kry wat lyk soos: Fout, deaktivering van serialEvent () vir COM4 null- herlaai die verwerkingskets weer deur op die pyltjie te klik soos in stap 12

As u 'n fout kry wat sê: Fout tydens die opening van die seriële poort- probeer om reëls 32-34 te verander na iets soos waar "COM4" ooreenstem met die COM-poort in u Arduino-skets

myPort = newSerial (hierdie, "COM4", 9600); // Poort myPort.bufferUntil ('\ n') // wag totdat die reeks data bevat

Aanbeveel: