Inhoudsopgave:

Temperatuur- en vochtigheidsweergave en gegevensverzameling met Arduino en verwerking - Ajarnpa
Temperatuur- en vochtigheidsweergave en gegevensverzameling met Arduino en verwerking - Ajarnpa

Video: Temperatuur- en vochtigheidsweergave en gegevensverzameling met Arduino en verwerking - Ajarnpa

Video: Temperatuur- en vochtigheidsweergave en gegevensverzameling met Arduino en verwerking - Ajarnpa
Video: Thermostaat temperatuur weergave aanpassen | Honeywell Home 2024, November
Anonim
Temperatuur- en vochtigheidsweergave en gegevensverzameling met Arduino en verwerking
Temperatuur- en vochtigheidsweergave en gegevensverzameling met Arduino en verwerking

Intro: dit is een project dat gebruikmaakt van een Arduino-bord, een sensor (DHT11), een Windows-computer en Processing (een gratis downloadbaar) programma om temperatuur-, vochtigheidsgegevens in digitale en staafdiagramvorm weer te geven, tijd en datum weer te geven en een telling uit te voeren up timer tijdens het programma en het opnemen van alle gegevens in een.csv-formaat wanneer het programma wordt afgesloten.

Inspiratie:

Ten eerste MOET ik zeggen dat ik een totale beginner ben en veel heb geleerd van dit project. Dus ik probeer dit Instructable te schrijven om gelezen en begrepen te worden door een totale beginner.

Ik had verschillende Arduino-projecten gezien om temperatuur en vochtigheid te meten, maar ik wilde een programma dat:

1) Gemeten temperatuur en vochtigheid

2) Weergegeven de gegevens in zowel een grafiek (ik koos staafdiagram) als digitale vorm

3) Heeft een klokfunctie

4) Heeft een oplopende "Run Time" timer

5) Slaat deze gegevens op in een.csv (excel) bestandsformaat.

Ik had inspiratie van programma's gemaakt door Sowmith Mandadi, R-B en aaakash3, maar geen van deze was precies wat ik wilde. Dus ik leerde wat basiscode schrijven en maakte wat ik wilde.

Stap 1: Wat heb je nodig:

Wat je nodig zult hebben
Wat je nodig zult hebben
Wat je nodig zult hebben
Wat je nodig zult hebben

Onderdelen en materialen:*Computer – ik gebruikte een Windows-computer Windows 10-besturingssysteem

(Ik weet zeker dat Linux of Mac kan worden gebruikt, ik heb geen van beide, dus ik zal niet bespreken hoe deze besturingssystemen moeten worden gebruikt)

*Arduino-bord - ik heb een Arduino Uno-bord gebruikt, maar elk Arduino-bord met USB is voldoende

*USB-kabel -USB A/B-kabel -zelfde als "printerkabel" van het oude type (wordt meestal geleverd met Arduino-bord)

*DHT 11 temperatuur-/vochtigheidssensor - goedkoop $ 4 tot 8

(Opmerking: er zijn 2 versies. Ik heb de 3-pins versie gebruikt, de 4-pins versie vereist het gebruik van een breadboard en een 10K-weerstand, de 3-pins heeft een printplaat met de 10K-weerstand) zie Fritzing-diagrammen in de volgende stappen

*Aansluitdraden

Dupont-draden (dubbele vrouwelijke uiteinden) bij aansluiting op 3-pins DHT11 zonder breadboard

Standaard jumper M/F draden (een uiteinde mannelijk en een vrouwelijk uiteinde) en M/M jumperdraden (beide uiteinden mannelijk) om 4-pins DHT11 aan te sluiten - zie stap 2 voor meer informatie

*Arduino IDE – een programma voor het schrijven van Arduino-programma's (schetsen genoemd) gratis @

www.arduino.cc/en/Main/Software

*Processing – een programma om gratis verwerkingsschetsen te schrijven @

processing.org/download/

* "DHTLib"-bestand - een bibliotheekbestand (dit is een bestand dat in het Arduino IDE-programma gaat onder de map met de naam "Bibliotheek" dit moet worden toegevoegd aan de Arduino-schets voordat de Arduino de gegevens van de DHT11 kan lezen -zie stap 5 voor downloadbestand en instructies

Stap 2: Sluit Arduino aan op DHT11

Sluit Arduino aan op DHT11
Sluit Arduino aan op DHT11
Sluit Arduino aan op DHT11
Sluit Arduino aan op DHT11
Sluit Arduino aan op DHT11
Sluit Arduino aan op DHT11
Sluit Arduino aan op DHT11
Sluit Arduino aan op DHT11

Bepaal eerst welke DHT11 je hebt

Ik heb de 3-pins gebruikt omdat deze al de benodigde 10K-weerstand heeft.

Als je de 4-pins hebt, heb je een weerstand van 10K en een breadboard nodig

Sluit de DHT11 aan op het Arduino-bord. Dit programma roept op om de DHT 11-signaalpin te verbinden met Arduino pin #7, Pos (+) pin verbonden met 5V op Arduino en Neg (-) met GND op Arduino.

Raadpleeg Diagrammen en Fritzing-diagrammen

Stap 3: Download Arduino IDE

Arduino IDE downloaden
Arduino IDE downloaden

Download Arduino IDE en installeer op de computer

www.arduino.cc/en/Main/Software

Stap 4: sluit Arduino aan op computer

Arduino verbinden met computer
Arduino verbinden met computer

Installeer eerst de Arduino IDE, deze heeft stuurprogramma's voor de Arduino USB-verbinding.

Verbind Arduino via USB met de computer.

Wacht tot de computer het Arduino-bord herkent en installeer eventuele stuurprogramma's.

Open het IDE-programma en controleer op seriële verbinding.

Als het Arduino-bord niet verschijnt in de Tools>poort (rode cirkel), sluit dan de IDE en open het opnieuw.

*Belangrijk* zodra de IDE is geopend en het Arduino-bord via USB is aangesloten. Het Arduino-bord moet worden aangesloten op de juiste seriële poort. Op Windows-computers wordt dit COM-poort genoemd. Ga hiervoor in de IDE naar Tools>Poort:>Seriële poorten. Zoals te zien is in het diagram, moet de seriële poort (rode cirkel) overeenkomen met de poort die wordt vermeld in de rechterbenedenhoek van het IDE-programma (gele cirkel).

Stap 5: Laad de bibliotheek

Laad de bibliotheek
Laad de bibliotheek
Laad de bibliotheek
Laad de bibliotheek
Laad de bibliotheek
Laad de bibliotheek
Laad de bibliotheek
Laad de bibliotheek

Laad de bibliotheek voor de DHT11. Dit was in het begin verwarrend voor mij, maar het is echt heel eenvoudig.

Download het bestand met de naam "DHTLib" en pak het uit. Kopieer het uitgepakte "DHTLib"-bestand.

Referentie over deze bibliotheek is te vinden op:

playground.arduino.cc/Main/DHTLib

(Het is geschreven door Rob Tillaart op basis van werk van anderen)

Zoek de Arduino-map op uw computer en open deze. (Het zal zijn waar u de IDE hebt gedownload en op de computer hebt geïnstalleerd)

Zie diagram

Zoek het bestand met de naam "bibliotheken" en open het en plak vervolgens de map "DHTLib" in het bestand "bibliotheken". Sluit het en start de IDE opnieuw.

Zie diagram

Zodra de IDE opnieuw is geopend, kunt u controleren of de DHT-bibliotheek is geïnstalleerd. Schets> Bibliotheek opnemen.

Zie diagram

Opmerking Als u op DHTLib op het tabblad "Include library" klikt, wordt de bibliotheek in de Arduino-code geplaatst als "#include dht.h".

U hoeft dit niet te doen omdat het al in de code staat die u in de volgende stap gaat downloaden.

Stap 6: Verkrijg de Arduino-code

Verkrijg de Arduino-code
Verkrijg de Arduino-code

Download het bestand Temp_Hum_Instructable.zip en pak het uit. Open de Temp_Hum_Instructable.ino met de Arduino IDE.

Bekijk ook de volgende code en kopieer en plak of typ precies in de Arduino IDE:

#erbij betrekken

dht-DHT; #define DHT11PIN 7// stelt pin 7 in voor DHT11-signaalverbinding void setup(){Serial.begin(9600); //opent serial} void loop() {int chk =DHT.read11(DHT11PIN);//lees DHT11 Serial.print(DHT.temperature, 0);//print temp in serieel Serial.print(", "); // drukt een komma af in seriële Serial.print (DHT.humidity, 0);// drukt vochtigheid af in seriële Serial.println ();//carriage return delay (2000);//wacht 2 seconden}

Als je klaar bent, zou het eruit moeten zien als het bovenstaande diagram

Stap 7: Code laden op Arduino

Code laden op Arduino
Code laden op Arduino
Code laden op Arduino
Code laden op Arduino
Code laden op Arduino
Code laden op Arduino
Code laden op Arduino
Code laden op Arduino

Sla eerst de schets op in locatie en met een naam die u zult onthouden, Voorbeeld: Temp_Hum.

Vervolgens moet je de schets op het Arduino-bord laden door op de naar rechts wijzende pijlknop te drukken (uploaden).

Zie diagram

Dit duurt enkele seconden; rechtsonder ziet u een voortgangsbalk.

Dan zie je: Klaar met uploaden bericht linksonder en witte tekst onderaan de IDE met informatie over geheugen

Zie diagram

Als u een foutcode krijgt (oranje tekst onderaan de IDE), moet dit een van de volgende zijn:

  1. De "DHTlib"-bibliotheek is niet correct gekopieerd
  2. De COM-poort is niet correct ingesteld
  3. De sensor is niet correct aangesloten
  4. De code is niet correct in de IDE geladen. De oranje tekst kan worden doorgebladerd en geeft een idee van wat er mis is. Ga terug en controleer of het waarschijnlijk een simpele fout is.

Zodra dit is gebeurd, kijkt u goed naar uw Arduino-bord. Om de paar seconden knippert de kleine LED naast de letters "TX". Dit is de Arduino die informatie terugstuurt naar de computer. Om dit te controleren, klikt u op het kleine vergrootglassymbool in de rechterbovenhoek van de IDE.

Zie diagram

Hierdoor wordt de seriële monitor geopend en worden temperatuur- en vochtigheidsgegevens weergegeven, gescheiden door een komma. U zult merken dat de temperatuurgegevens in Celsius worden weergegeven. Dat is OK, we zullen later naar Fahrenheit converteren (of niet als je ervoor kiest).

Zie diagram

Sluit vervolgens de seriële monitor en sluit vervolgens de IDE. (Je hebt er toch aan gedacht om het op te slaan, nietwaar?). Kijk nu opnieuw naar het Arduino-bord (koppel het niet los van de USB waar het stroom krijgt en verzend geen gegevens naar de seriële poort op de computer). Knippert het nog? Ja geweldig. Zodra het programma op de Arduino is geladen, werkt het zolang het stroom heeft.

Opmerking over code: als je kijkt naar de Arduino-code die begint met "void loop ();". De volgende 5 regels code vertellen de Arduino om gegevens van de DHT te lezen en deze af te drukken naar de seriële bus, gescheiden door een komma. De volgende regel "vertraging (2000);" vertelt de Arduino om 2 seconden (2000 milliseconden) te wachten, zodat de gegevens elke 2 seconden worden ontvangen. Dan gaat het terug naar "void loop ();" - een commando dat de Arduino vertelt om het opnieuw te doen. Het veranderen van de waarde in de vertragingslijn zal veranderen hoe vaak de gegevens worden ontvangen. Voorbeeld: veranderen naar (600000) zal veranderen het tot 10 minuten (600000 milliseconden = 10 minuten). Het ontvangen van gegevens om de 2 seconden wordt uiteindelijk veel gegevens, dus nu weet u hoe u kunt wijzigen hoe vaak de gegevens worden gelezen. Onthoud wel dat als u de waarde later wijzigt, u moet het nieuwe programma uploaden.

Oké, leun achterover en haal diep adem, je bent al meer dan halverwege. NS!!

Stap 8: Verwerking downloaden en installeren

Verwerking downloaden en installeren
Verwerking downloaden en installeren
Verwerking downloaden en installeren
Verwerking downloaden en installeren

processing.org/download/

Vrij eenvoudig om het programma te selecteren dat overeenkomt met uw computer voor Windows 64-bits versus 32-bits. Als je het niet weet, open dan het Configuratiescherm op je computer (pictogramweergave niet categorieweergave) en ga naar systeem, het zal daar worden vermeld.

Zie diagram

Download en installeer het programma.

De eerste keer dat u de verwerking opent en uitvoert, krijgt u waarschijnlijk een Java-beveiligingsbericht. Klik op "toestaan" voor privénetwerken. Java is de computertaal die wordt gebruikt door Processing (en Arduino IDE). Interessant genoeg heb ik nooit het beveiligingsbericht gehad met Arduino IDE, alleen verwerking.

Stap 9: Code verwerken

Verwerkingscode
Verwerkingscode

OK nu voor de verwerkingscode.

Dit was het meest uitdagende deel voor mij, maar ook de meeste kans om te leren. Terwijl de Arduino-code ongeveer 20 regels was, heeft deze code +/- 270 regels in de hoofdcode en nog eens 70 + in de klassen.

Het eerste dat u moet vragen, is "Wat zijn klassen?". Goede vraag. Dit verwijst naar objectgeoriënteerd programmeren. Kortom, er zijn een heleboel dingen aan de hand in de hoofdcode: het definiëren van de grootte en kleur van het scherm, een klok, een timer, code om de cursorlocatie weer te geven, code om gegevens op te slaan in een.csv-bestand en een paar regels die te maken hebben met code die de staafdiagrammen weergeeft. Terwijl de Arduino IDE alle code op één pagina had, heeft deze verwerkingscode drie tabbladen. De eerste is de hoofdcode en de volgende twee zijn de code die de staafdiagrammen weergeeft. (Deze code wordt feitelijk opgeslagen in drie afzonderlijke bestanden in de map Verwerkingscode.) De afzonderlijke tabbladen worden "klassen" genoemd en worden gedefinieerd in regel 48 en 56 en vervolgens weergegeven door regel 179-182 van de hoofdcode. De mensen die het Processing-programma hebben geschreven, noemen dit objectgeoriënteerd programmeren. (zie:https://processing.org/tutorials/objects/ voor een korte beschrijving).

Wat de klassen (Recta1, Recta2) in deze code eigenlijk doen, is rechthoeken maken die op en neer bewegen op basis van de gegevens die via serieel van de DHT11 zijn ontvangen. Denk aan een ouderwetse thermometer, hoe hoger het kwik, hoe heter het is, maar dit wordt gedaan met gegevens en niet met kwik. In werkelijkheid creëren de klassen vier rechthoeken, twee statische rechthoeken die de achtergrond van de thermometer vertegenwoordigen en twee dynamische rechthoeken die reageren op gegevens en op en neer bewegen. Naast het verplaatsen van de rechthoeken, verandert de code de kleur van de dynamische rechthoek en de kleur van de digitale weergave van Temp en Humidity op basis van de gegevens die serieel worden ontvangen.

Stap 10: Codebestanden verwerken

Slechts een paar basisprincipes over het verwerken van code:

Ik raad ten zeerste aan om Make: Aan de slag met Processing te lezen van Casey Reas en Ben Fry, de oprichters van Processing.

processing.org/books/#reasfry2

Ik zal niet proberen alle aspecten van Verwerking uit te leggen of code te schrijven voor verwerking. Zoals ik al eerder zei, ik ben een beginner en ik denk dat er veel betere mensen zijn om van te leren. Ik begrijp echter de code die ik heb geschreven (trial and error zijn goede leraren).

1. Eerst moet men bibliotheken opnemen (net als in Arduino) en variabelen declareren (regels 1-25)

2. Stel vervolgens het weergavebord in (regels 27-63)

3. Voer een herhaald deel van de code uit - wat ik bedoel is dat dit deel van de code wordt herhaald zolang het programma loopt. U herinnert zich In Arduino "void loop ();" (Stap 6). In Processing is dit nu "void draw();" (Lijnen 65-184)

4. Het volgende is het ophalen van gegevens van de seriële poort en het toewijzen ervan aan variabelen (int, float, String)

int-

vlot-

Snaar-

(Lijnen 185-245)

4. Ten slotte een manier om het programma te sluiten en de gegevens op te slaan (regels 246-271)

Ok: download het bestand Temp_Hum_F_3_2 (voor Fahrenheit)

Of Temp_Hum_C_3_1 (voor Celsius)

en pak het bestand uit. Openen met Verwerken.

Stap 11: Lettertype in verwerking

Lettertype in verwerking
Lettertype in verwerking

Belangrijk: ik vestig uw aandacht op regels 36-37

36 font =loadFont("SourceCodePro-Bold-48.vlw");//laadt lettertype opgeslagen in gegevens

map 37 textFont(lettertype);

Deze lettertypebibliotheek "SourceCodePro-Bold-48.vlw" is opgenomen in de downloads van Processing-bestanden en hoeft niet te worden gewijzigd om te functioneren.

Om het lettertype echter in iets anders te veranderen, moet u het nieuwe lettertype in de Processing-schets laden EN "SourceCodePro-Bold-48.vlw" vervangen door het nieuwe lettertype.

. Gelukkig heeft Processing het eerste deel heel gemakkelijk gemaakt.

Open eerst de schets en klik vervolgens op:

Extra>Lettertype maken

dit brengt een venster naar voren

Zie diagram

Scroll naar beneden naar het nieuwe lettertype dat u wilt, klik erop en klik vervolgens op OK. Het lettertype is nu in de schetsmap geladen.

Vervang vervolgens de tekst "SourceCodePro-Bold-48.vlw" door de exacte naam van het nieuwe lettertype (inclusief het.vlw-bestandsformaat)

Als dit niet wordt gedaan, wordt het nieuwe lettertype niet in de code geladen en geeft de code fouten (net als fouten in Arduino - in de zwarte doos onderaan het programma).

Stap 12: Afwerking

Afronden
Afronden
Afronden
Afronden
Afronden
Afronden
Afronden
Afronden

Om het Processing-programma te starten, klikt u op de pijl, u krijgt mogelijk een Java-waarschuwing. Klik op: Toegang toestaan.

Zie diagram

Oké, werkte het programma? Als dit het geval is, krijgt u een weergave zoals in het diagram.

(Nee? Zie probleemoplossing in de volgende stap)

Ja? Probeer nu de DHT11 in je gesloten handpalm te houden of onder de warme luchtstroom van een föhn te plaatsen. De cijfers moeten veranderen. Ja? Super goed. dat betekent dat alles goed werkt.

Om het programma te sluiten en gegevens op te slaan, klikt u op het vakje met de tekst "Klik hier om gegevens te sluiten en op te slaan".

Om de opgeslagen gegevens te vinden, gaat u naar de map Temp_Hum_F_3_1 of Temp_Hum_C_3_1 Processing (u zou dit nu zelf moeten kunnen vinden), open deze en zoek de map Data. Open dit en je zou een.csv-bestand moeten zien dat vernoemd is naar de datum en tijd waarop je het programma hebt afgesloten (voorbeeld 1-10-18--22-30-16.csv betekent 10 januari 2018 10:30:16 PM). Open deze met Excel (of het equivalent van Open office-spreadsheet). Je zou zoiets als het diagram moeten zien. Kolommen voor datum, tijd, looptijd, temperatuur en vochtigheid met gegevens. U kunt nu de gegevens in een grafiek weergeven met Excel of wat u er ook mee wilt doen. (Opmerking: als u naar de eerste gegevensinvoer kijkt, zijn de temperatuur- en vochtigheidsgegevens niet correct, dit is normaal en is slechts een fout wanneer het programma voor het eerst start)

oke ja!!!!!

Je hebt het gedaan

Als je vragen hebt, stel ze dan en ik zal mijn best doen om te reageren en te helpen.

Bedankt voor het volhouden en veel succes. Ik hoop dat dit nog maar een begin is…..

Volgende voor mij Bluetooth en mogelijk Android….

Stap 13: Problemen oplossen

Probleemoplossen
Probleemoplossen
Probleemoplossen
Probleemoplossen

Arduino problemen

Als u een foutcode krijgt (oranje tekst onderaan de IDE), moet dit een van de volgende zijn De "DHTlib"-bibliotheek is niet correct gekopieerd

De COM-poort is niet correct ingesteld

De sensor is niet correct aangesloten

De code is niet correct in de IDE geladen

Als alle Arduino goed lijkt te werken, vergeet dan niet om de seriële monitor te openen en te kijken of er gegevens worden weergegeven

Als u de juiste gegevens ziet, betekent dit dat de Arduino-kant allemaal werkt. Denk eraan Sluit de seriële monitor voordat u de verwerking start, als de seriële monitor open is, kan de verwerking de gegevens niet lezen.

Verwerkingsproblemen:

Deze worden weergegeven in het onderste deel van het Processing-programma.

Als u een foutmelding krijgt die "lettertype" beschrijft, gaat u terug naar stap 11 en laadt u het lettertype zoals beschreven.

Als u een foutmelding krijgt die lijkt op:Fout, uitschakelen serialEvent() voor COM4 null- start de Processing-schets opnieuw door op de pijl te klikken zoals in stap 12

Als je een foutmelding krijgt die zegt: Fout bij het openen van de seriële poort - probeer de regels 32-34 te veranderen in iets als waar "COM4" overeenkomt met de COM-poort in je Arduino-schets

myPort = newSerial(this, "COM4", 9600);//Port myPort.bufferUntil('\n')//wacht tot de serieel gegevens heeft

Aanbevolen: