Inhaltsverzeichnis:

Temperatur- und Feuchtigkeitsanzeige und Datenerfassung mit Arduino und Verarbeitung - Gunook
Temperatur- und Feuchtigkeitsanzeige und Datenerfassung mit Arduino und Verarbeitung - Gunook

Video: Temperatur- und Feuchtigkeitsanzeige und Datenerfassung mit Arduino und Verarbeitung - Gunook

Video: Temperatur- und Feuchtigkeitsanzeige und Datenerfassung mit Arduino und Verarbeitung - Gunook
Video: Temperatur und Luftfeuchtigkeit mit dem DHT11 messen 2024, Juli
Anonim
Temperatur- und Feuchtigkeitsanzeige und Datenerfassung mit Arduino und Verarbeitung
Temperatur- und Feuchtigkeitsanzeige und Datenerfassung mit Arduino und Verarbeitung

Intro: Dies ist ein Projekt, das ein Arduino-Board, einen Sensor (DHT11), einen Windows-Computer und ein Verarbeitungsprogramm (ein kostenlos herunterladbares) verwendet, um Temperatur- und Feuchtigkeitsdaten in digitaler Form und als Balkendiagramm anzuzeigen, Zeit und Datum anzuzeigen und eine Zählung durchzuführen den Timer während des Programms hochfahren und alle Daten in ein.csv-Format aufzeichnen, wenn das Programm geschlossen wird.

Inspiration:

Zuerst muss ich sagen, dass ich ein absoluter Anfänger bin und viel aus diesem Projekt gelernt habe. Daher versuche ich, dieses Instructable zu schreiben, um von einem totalen Anfänger gelesen und verstanden zu werden.

Ich hatte verschiedene Arduino-Projekte gesehen, um Temperatur und Luftfeuchtigkeit zu messen, aber ich wollte ein Programm, das:

1) Gemessene Temperatur und Luftfeuchtigkeit

2) Zeigte die Daten sowohl in einem Diagramm (ich wählte ein Balkendiagramm) als auch in digitaler Form an

3) Hat eine Uhrfunktion

4) Hat einen hochzählenden "Run Time"-Timer

5) Speichert diese Daten in einem.csv (Excel)-Dateiformat.

Ich habe mich von Programmen inspirieren lassen, die von Sowmith Mandadi, R-B und aaakash3 erstellt wurden, aber keines davon war genau das, was ich wollte. Also habe ich gelernt, einen grundlegenden Code zu schreiben und habe das gemacht, was ich wollte.

Schritt 1: Was Sie brauchen:

Was wirst du brauchen
Was wirst du brauchen
Was wirst du brauchen
Was wirst du brauchen

Teile und Materialien: * Computer – Ich habe einen Windows-Computer mit dem Betriebssystem Windows 10 verwendet

(Ich bin mir sicher, dass Linux oder Mac verwendet werden könnten, ich habe nur beides nicht, daher werde ich nicht auf die Verwendung dieser Betriebssysteme eingehen.)

* Arduino-Board – Ich habe ein Arduino Uno-Board verwendet, aber jedes Arduino-Board mit USB reicht aus

* USB-Kabel -USB A / B-Kabel -wie altes "Druckerkabel" (wird normalerweise mit Arduino Board geliefert)

*DHT 11 Temperatur- / Feuchtigkeitssensor - preiswert 4 bis 8

(Hinweis: Es gibt 2 Versionen, bei denen ich die 3-Pin-Version verwendet habe, die 4-Pin-Version erfordert die Verwendung eines Steckbretts und eines 10K-Widerstands, der 3-Pin hat eine Leiterplatte, die den 10K-Widerstand enthält) siehe Fritzing-Diagramme in den nächsten Schritten

*Verbindungsdrähte

Dupont-Drähte (doppelte weibliche Enden) bei Anschluss an 3 Pin DHT11 ohne Steckbrett

Standard-Jumper M/F-Drähte (ein Ende männlich, ein Ende weiblich) und M/M-Jumper-Drähte (beide Enden männlich) zum Anschließen des 4-poligen DHT11 - siehe Schritt 2 für weitere Informationen

* Arduino IDE – ein Programm zum Schreiben von Arduino-Programmen (so genannte Sketches) kostenlos @

www.arduino.cc/en/Main/Software

*Processing – ein Programm zum Schreiben von Verarbeitungsskizzen kostenlos @

processing.org/download/

* "DHTLib"-Datei - eine Bibliotheksdatei (dies ist eine Datei, die in das Arduino IDE-Programm unter dem Ordner "Library" eingeht. Diese muss der Arduino-Skizze hinzugefügt werden, bevor der Arduino die Daten vom DHT11 lesen kann -siehe Schritt 5 für Download-Datei und Anweisungen

Schritt 2: Verbinden Sie Arduino mit DHT11

Verbinden Sie Arduino mit DHT11
Verbinden Sie Arduino mit DHT11
Verbinden Sie Arduino mit DHT11
Verbinden Sie Arduino mit DHT11
Verbinden Sie Arduino mit DHT11
Verbinden Sie Arduino mit DHT11
Verbinden Sie Arduino mit DHT11
Verbinden Sie Arduino mit DHT11

Bestimmen Sie zuerst, welches DHT11 Sie haben

Ich habe den 3-Pin verwendet, da er bereits den erforderlichen 10K-Widerstand hat.

Wenn Sie den 4-Pin haben, benötigen Sie einen 10K-Widerstand und ein Steckbrett

Verbinden Sie DHT11 mit dem Arduino-Board. Dieses Programm fordert, dass der DHT 11-Signalstift mit Arduino-Pin #7, Pos (+)-Pin mit 5V auf Arduino und Neg (-) mit GND auf Arduino verbunden wird.

Siehe Diagramme und Fritzing-Diagramme

Schritt 3: Arduino-IDE herunterladen

Arduino-IDE herunterladen
Arduino-IDE herunterladen

Laden Sie die Arduino IDE herunter und installieren Sie sie auf dem Computer

www.arduino.cc/en/Main/Software

Schritt 4: Arduino an Computer anschließen

Arduino mit Computer verbinden
Arduino mit Computer verbinden

Installieren Sie zuerst die Arduino-IDE, die Treiber für die Arduino-USB-Verbindung enthält.

Verbinden Sie Arduino über USB mit dem Computer.

Warten Sie, bis der Computer das Arduino-Board erkennt und alle Treiber installiert.

Öffnen Sie das IDE-Programm und überprüfen Sie die serielle Verbindung.

Wenn das Arduino-Board nicht im Tools>Port (roter Kreis) angezeigt wird, schließen Sie die IDE und öffnen Sie sie erneut.

*Wichtig* sobald die IDE geöffnet ist und das Arduino-Board über USB angeschlossen ist. Das Arduino-Board muss an den richtigen seriellen Port angeschlossen werden. Auf Windows-Computern wird dies als COM-Port bezeichnet. Gehen Sie dazu in der IDE zu Tools>Port:>Serial ports. Wie im Diagramm zu sehen ist, muss der serielle Port (roter Kreis) mit dem Port übereinstimmen, der in der unteren rechten Ecke des IDE-Programms aufgeführt ist (gelber Kreis).

Schritt 5: Laden Sie die Bibliothek

Laden Sie die Bibliothek
Laden Sie die Bibliothek
Laden Sie die Bibliothek
Laden Sie die Bibliothek
Laden Sie die Bibliothek
Laden Sie die Bibliothek
Laden Sie die Bibliothek
Laden Sie die Bibliothek

Laden Sie die Bibliothek für das DHT11. Das war zunächst verwirrend für mich, ist aber eigentlich ganz einfach.

Laden Sie die Datei „DHTLib“herunter und entpacken Sie sie. Kopieren Sie die entpackte „DHTLib“-Datei.

Referenzen zu dieser Bibliothek finden Sie unter:

playground.arduino.cc/Main/DHTLib

(Es wurde von Rob Tillaart basierend auf der Arbeit anderer geschrieben)

Suchen Sie den Arduino-Ordner auf Ihrem Computer und öffnen Sie ihn. (Es befindet sich dort, wo Sie die IDE heruntergeladen und auf dem Computer installiert haben)

Siehe Zeichnung

Suchen Sie die Datei „Bibliotheken“und öffnen Sie sie. Fügen Sie dann den Ordner „DHTLib“in die Datei „Bibliotheken“ein. Schließen Sie es und starten Sie die IDE neu.

Siehe Zeichnung

Sobald die IDE wieder geöffnet wurde, können Sie überprüfen, ob die DHT-Bibliothek installiert wurde. Skizze> Bibliothek einschließen.

Siehe Zeichnung

Hinweis Durch Klicken auf DHTLib in der Registerkarte "Bibliothek einschließen" wird die Bibliothek als "#include dht.h" in den Arduino-Code eingefügt.

Sie müssen dies nicht tun, da es bereits im Code enthalten ist, den Sie im nächsten Schritt herunterladen werden.

Schritt 6: Holen Sie sich den Arduino-Code

Holen Sie sich den Arduino-Code
Holen Sie sich den Arduino-Code

Laden Sie die Datei Temp_Hum_Instructable.zip herunter und entpacken Sie sie. Öffnen Sie die Temp_Hum_Instructable.ino mit der Arduino IDE.

Schauen Sie sich alternativ den folgenden Code an und kopieren Sie ihn und fügen Sie ihn ein oder geben Sie ihn genau in die Arduino-IDE ein:

#enthalten

dht-DHT; #define DHT11PIN 7 // setzt Pin 7 für die DHT11-Signalverbindung void setup () { Serial.begin (9600); // öffnet seriell} Void loop () {int chk = DHT.read11 (DHT11PIN); // liest DHT11 Serial.print (DHT.temperature, 0); // druckt die Temperatur in Serial.print (", "); // druckt Komma in serieller Serial.print (DHT.humidity, 0); // druckt Feuchtigkeit in serieller Serial.println (); // Wagenrücklaufverzögerung (2000); // 2 Sekunden warten}

Wenn Sie fertig sind, sollte es wie im Diagramm oben aussehen

Schritt 7: Code auf Arduino laden

Code auf Arduino laden
Code auf Arduino laden
Code auf Arduino laden
Code auf Arduino laden
Code auf Arduino laden
Code auf Arduino laden
Code auf Arduino laden
Code auf Arduino laden

Speichern Sie zuerst die Skizze an einem Ort und mit einem Namen, den Sie sich merken können, Beispiel: Temp_Hum.

Als nächstes müssen Sie die Skizze auf das Arduino-Board laden, indem Sie die nach rechts zeigende Pfeiltaste (Hochladen) drücken.

Siehe Zeichnung

Dies dauert einige Sekunden; Unten rechts sehen Sie einen Fortschrittsbalken.

Dann sehen Sie: Fertig hochgeladene Nachricht unten links und weißer Text unten in der IDE, der Sie über den Speicher informiert

Siehe Zeichnung

Wenn Sie einen Fehlercode (orangefarbener Text unten in der IDE) erhalten, sollte dieser einer der folgenden sein

  1. Die Bibliothek "DHTlib" wurde nicht korrekt kopiert
  2. Der COM-Port ist nicht richtig eingestellt
  3. Der Sensor wurde nicht richtig angeschlossen
  4. Der Code wurde nicht richtig in die IDE geladen. Der orange Text kann durchgeblättert werden und gibt einen Hinweis auf den Fehler. Gehen Sie zurück und überprüfen Sie, ob es sich wahrscheinlich um einen einfachen Fehler handelt.

Sobald dies erledigt ist, schauen Sie sich Ihr Arduino-Board genau an. Alle paar Sekunden blinkt die kleine LED neben den Buchstaben „TX“. Dies ist der Arduino, der Informationen an den Computer zurücksendet. Um dies zu überprüfen, klicken Sie auf das kleine Lupensymbol in der rechten oberen Ecke der IDE.

Siehe Zeichnung

Dadurch wird der serielle Monitor geöffnet und die Temperatur- und Feuchtigkeitsdaten werden durch ein Komma getrennt angezeigt. Sie werden feststellen, dass die Temperaturdaten in Celsius angegeben sind. Das ist OK, wir werden später in Fahrenheit umwandeln (oder nicht, wenn Sie es gewählt haben).

Siehe Zeichnung

Schließen Sie als nächstes den seriellen Monitor und schließen Sie dann die IDE. (Du hast daran gedacht, es zu speichern, nicht wahr?). Schauen Sie sich nun das Arduino-Board erneut an (trennen Sie es nicht vom USB, von dem es mit Strom versorgt wird, und senden Sie Daten an den seriellen Port des Computers). Blinkt es noch? Ja, großartig. Sobald das Programm auf den Arduino geladen ist, läuft es so lange, wie es Strom hat.

Hinweis zum Code: Wenn Sie sich den Arduino-Code ansehen, der mit "void loop ();" beginnt. Die nächsten 5 Codezeilen weisen den Arduino an, Daten aus dem DHT zu lesen und sie durch ein Komma getrennt auf den seriellen Bus zu drucken. Die nächste Zeile „Verzögerung (2000);“weist den Arduino an, 2 Sekunden (2000 Millisekunden) zu warten, damit die Daten alle 2 Sekunden empfangen werden. Dann geht es zurück zu "void loop ();" - ein Befehl, der dem Arduino sagt, dass er es noch einmal tun soll. Wenn Sie den Wert in der Verzögerungsleitung ändern, ändert sich, wie oft die Daten empfangen werden. Beispiel: Änderung auf (600000) ändert sich auf 10 Minuten (600000 Millisekunden = 10 Minuten) muss das neue Programm hochladen.

OK, lehnen Sie sich zurück und atmen Sie durch, Sie haben mehr als die Hälfte geschafft. Ja!!

Schritt 8: Verarbeitung herunterladen und installieren

Verarbeitung herunterladen und installieren
Verarbeitung herunterladen und installieren
Verarbeitung herunterladen und installieren
Verarbeitung herunterladen und installieren

processing.org/download/

Wählen Sie ganz einfach das Programm aus, das Ihrem Computer für Windows 64-Bit vs. 32-Bit entspricht. Wenn Sie es nicht wissen, öffnen Sie die Systemsteuerung auf Ihrem Computer (Symbolansicht, nicht Kategorieansicht) und gehen Sie zu System, es wird dort aufgelistet.

Siehe Zeichnung

Laden Sie das Programm herunter und installieren Sie es.

Wenn Sie die Verarbeitung zum ersten Mal öffnen und ausführen, erhalten Sie wahrscheinlich eine Java-Sicherheitsmeldung. Klicken Sie auf "Zulassen" für private Netzwerke. Java ist die von Processing (und Arduino IDE) verwendete Computersprache. Interessanterweise hatte ich noch nie die Sicherheitsmeldung mit Arduino IDE, nur Processing.

Schritt 9: Verarbeitungscode

Verarbeitungscode
Verarbeitungscode

OK jetzt für den Verarbeitungscode.

Dies war für mich der schwierigste Teil, aber auch die größte Gelegenheit zum Lernen. Während der Arduino-Code 20 oder so Zeilen umfasste, hat dieser Code +/- 270 Zeilen im Hauptcode und weitere 70 + in den Klassen.

Die erste Frage, die Sie jetzt stellen sollten, ist „Was sind Klassen?“. Gute Frage. Dies bezieht sich auf objektorientierte Programmierung. Kurz gesagt, es gibt eine Menge Dinge im Hauptcode: Definieren der Größe und Farbe des Displays, eine Uhr, ein Timer, Code zum Anzeigen der Cursorposition, Code zum Speichern von Daten in einer.csv-Datei und ein paar Zeilen die sich mit Code befassen, der die Balkendiagramme anzeigt. Während die Arduino-IDE den gesamten Code auf einer Seite hatte, hat dieser Verarbeitungscode drei Registerkarten. Der erste ist der Hauptcode und die nächsten beiden sind der Code, der die Balkendiagramme anzeigt. (Dieser Code wird tatsächlich in drei separaten Dateien im Ordner Processing code gespeichert.) Die separaten Registerkarten werden „Klassen“genannt und in den Zeilen 48 und 56 definiert und dann in den Zeilen 179-182 des Hauptcodes angezeigt. Die Leute, die das Processing-Programm geschrieben haben, nennen dies objektorientierte Programmierung. (Siehe: https://processing.org/tutorials/objects/ für eine kurze Beschreibung).

Im Wesentlichen erzeugen die Klassen (Recta1, Recta2) in diesem Code Rechtecke, die sich basierend auf den seriell vom DHT11 empfangenen Daten nach oben und unten bewegen. Denken Sie an ein altmodisches Thermometer, je höher das Quecksilber ist, desto heißer ist es, aber dies geschieht mit Daten, nicht mit Quecksilber. Tatsächlich erzeugen die Klassen vier Rechtecke, zwei statische Rechtecke, die den Hintergrund des Thermometers darstellen, und zwei dynamische Rechtecke, die auf Daten reagieren und sich nach oben und unten bewegen. Zusätzlich zum Verschieben der Rechtecke ändert der Code die Farbe des dynamischen Rechtecks und die Farbe der digitalen Anzeige von Temperatur und Feuchtigkeit basierend auf den seriell empfangenen Daten.

Schritt 10: Codedateien verarbeiten

Nur ein paar Grundlagen zum Verarbeiten von Code:

Ich empfehle dringend, Make: Getting Started withProcessing von Casey Reas und Ben Fry, den Gründern von Processing, zu lesen.

processing.org/books/#reasfry2

Ich werde nicht versuchen, alle Aspekte der Verarbeitung oder des Schreibens von Code für die Verarbeitung zu erklären. Wie ich bereits sagte, bin ich ein Anfänger und ich denke, es gibt viel bessere Leute, von denen man lernen kann. Ich verstehe jedoch den Code, den ich geschrieben habe (Versuch und Irrtum sind gute Lehrer).

1. Zuerst muss man Bibliotheken einbinden (genau wie in Arduino) und Variablen deklarieren (Zeilen 1-25)

2. Als nächstes die Anzeigetafel aufbauen (Zeilen 27-63)

3. Führen Sie einen wiederholten Teil des Codes aus - was ich meine ist, dass dieser Teil des Codes wiederholt wird, solange das Programm läuft. Sie werden sich erinnern In Arduino "void loop ();" (Schritt 6). In Processing ist dies jetzt „void draw();“(Linien 65-184)

4. Als nächstes erhalten Sie Daten vom seriellen Port und weisen sie Variablen zu (int, float, String)

int-

schweben-

Saiten-

(Linien 185-245)

4. Zuletzt eine Möglichkeit, das Programm zu schließen und die Daten zu speichern (Zeilen 246-271)

Ok: Laden Sie die Datei Temp_Hum_F_3_2 (für Fahrenheit) herunter

Oder Temp_Hum_C_3_1 (für Celsius)

und entpacken Sie die Datei. Öffnen Sie mit Verarbeitung.

Schritt 11: Schriftart in Verarbeitung

Schriftart in Verarbeitung
Schriftart in Verarbeitung

Wichtig: Ich mache Sie auf die Zeilen 36-37. aufmerksam

36 font =loadFont("SourceCodePro-Bold-48.vlw"); // lädt die in den Daten gespeicherte Schriftart

Ordner 37 textFont(Schriftart);

Diese Schriftbibliothek "SourceCodePro-Bold-48.vlw" ist in den Verarbeitungsdateien-Downloads enthalten und muss nicht geändert werden, um zu funktionieren.

Um die Schriftart jedoch in eine andere zu ändern, müssen Sie die neue Schriftart in die Verarbeitungsskizze laden UND "SourceCodePro-Bold-48.vlw" durch die neue Schriftart ersetzen.

. Glücklicherweise hat Processing den ersten Teil sehr einfach gemacht.

Öffnen Sie zuerst die Skizze und klicken Sie dann auf:

Extras>Schriftart erstellen

das öffnet ein fenster

Siehe Zeichnung

Scrollen Sie nach unten zu der gewünschten neuen Schriftart, klicken Sie darauf und dann auf OK. Die Schriftart wurde nun in den Skizzenordner geladen.

Als nächstes ersetzen Sie den Text "SourceCodePro-Bold-48.vlw" durch den genauen Namen der neuen Schriftart (einschließlich des.vlw-Dateiformats).

Wenn dies nicht getan wird, wird die neue Schriftart nicht in den Code geladen und der Code gibt Fehler aus (genau wie Fehler in Arduino- in der schwarzen Box am unteren Rand des Programms).

Schritt 12: Fertigstellen

Beenden
Beenden
Beenden
Beenden
Beenden
Beenden
Beenden
Beenden

Um das Verarbeitungsprogramm zu starten, klicken Sie auf den Pfeil. Möglicherweise erhalten Sie eine Java-Warnung: Klicken Sie auf: Zugriff zulassen.

Siehe Zeichnung

Okay, hat das Programm funktioniert? In diesem Fall erhalten Sie eine Anzeige wie im Diagramm zu sehen.

(Nein? Siehe Fehlerbehebung im nächsten Schritt)

Jawohl? Versuchen Sie nun, das DHT11 in Ihrer geschlossenen Handfläche zu halten oder unter den warmen Luftstrom eines Haartrockners zu legen. Die Zahlen sollten sich ändern. Jawohl? Groß. das bedeutet, dass alles gut funktioniert.

Um das Programm zu schließen und Daten zu speichern, klicken Sie auf das Kästchen mit der Aufschrift „Klicken Sie hier, um die Daten zu schließen und zu speichern“.

Um nun die gespeicherten Daten zu finden, gehen Sie in den Ordner Temp_Hum_F_3_1 oder Temp_Hum_C_3_1 Processing (diesen sollten Sie jetzt selbst finden), öffnen Sie ihn und suchen Sie den Ordner Data. Öffnen Sie diese und Sie sollten eine.csv-Datei sehen, die nach dem Datum und der Uhrzeit benannt ist, zu der Sie das Programm geschlossen haben (Beispiel 1-10-18--22-30-16.csv bedeutet 10. Januar 2018 22:30:16). Öffnen Sie diese mit Excel (oder dem Open Office-Tabellenblatt-Äquivalent). Sie sollten so etwas wie das Diagramm sehen. Spalten für Datum, Uhrzeit, Laufzeit, Temperatur und Luftfeuchtigkeit mit Daten. Sie können jetzt die Daten mit Excel oder was auch immer Sie damit machen möchten, grafisch darstellen. (Hinweis: Wenn Sie sich die erste Dateneingabe ansehen, sind die Temperatur- und Feuchtigkeitsdaten nicht korrekt, dies ist normal und nur ein Fehler beim ersten Start des Programms)

Okay ja!!!!!

Du hast es geschafft

Wenn Sie Fragen haben, posten Sie bitte und ich werde mein Bestes tun, um zu antworten und zu helfen.

Danke, dass du dabei bleibst und viel Glück. Ich hoffe das ist nur ein Anfang…..

Als nächstes für mich Bluetooth und möglicherweise Android….

Schritt 13: Fehlerbehebung

Fehlerbehebung
Fehlerbehebung
Fehlerbehebung
Fehlerbehebung

Arduino-Probleme

Wenn Sie einen Fehlercode (orangefarbener Text unten in der IDE) erhalten, sollte dieser einer der folgenden seinDie Bibliothek "DHTlib" wurde nicht korrekt kopiert

Der COM-Port ist nicht richtig eingestellt

Der Sensor wurde nicht richtig angeschlossen

Der Code wurde nicht richtig in die IDE geladen

Wenn alles Arduino in Ordnung zu sein scheint, denken Sie daran, den Serial Monitor zu öffnen und zu sehen, ob Daten angezeigt werden

Wenn Sie die richtigen Daten sehen, bedeutet dies, dass die Arduino-Seite funktioniert. Denken Sie daran, den seriellen Monitor zu schließen, bevor Sie mit der Verarbeitung beginnen. Wenn der serielle Monitor geöffnet ist, kann die Verarbeitung die Daten nicht lesen.

Verarbeitungsprobleme:

Diese werden im unteren Teil des Verarbeitungsprogramms angezeigt.

Wenn Sie einen Fehler bei der Beschreibung von "font" erhalten, gehen Sie zurück zu Schritt 11 und laden Sie die Schriftart wie beschrieben.

Wenn Sie einen Fehler erhalten, der wie folgt aussieht: Fehler, deaktivieren serialEvent () für COM4 null - starten Sie einfach die Verarbeitungsskizze neu, indem Sie wie in Schritt 12 auf den Pfeil klicken

Wenn Sie eine Fehlermeldung erhalten, die besagt: Fehler beim Öffnen des seriellen Ports - versuchen Sie, die Zeilen 32-34 so zu ändern, dass "COM4" dem COM-Port in Ihrer Arduino-Skizze entspricht

myPort = newSerial(this, "COM4", 9600); // Port myPort.bufferUntil('\n') // warten bis die Serie Daten enthält

Empfohlen: