Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino Funk-Wetterstation

Komponenten und Verbrauchsmaterialien

Arduino Due
oder Arduino Mega.
× 1
3,2" TFT HX8357C
× 1
DS3231 Echtzeituhr-Modul
× 1
DHT22-Temperatursensor
× 1
SparkFun Transceiver Breakout - nRF24L01+
× 1
Breadboard (generisch)
× 1
Male-Header 36 Position 1 Row- Long (0,1")
7 Pins
× 1
Jumper (generisch)
mehrere
× 1
Arduino Nano R3
× 1
Xiaomi Powerbank
× 1

Über dieses Projekt

Der Bau einer drahtlosen Wetterstation ist eine großartige Lernerfahrung. Wenn Sie mit der Erstellung dieses Projekts fertig sind, werden Sie besser verstehen, wie drahtlose Kommunikation funktioniert, wie Sensoren funktionieren und wie leistungsstark die Arduino-Plattform sein kann. Mit diesem Projekt als Basis und den gesammelten Erfahrungen können Sie in Zukunft problemlos komplexere Projekte aufbauen.

Eine Wetterstation ist ein Gerät, das mit vielen verschiedenen Sensoren wetter- und umgebungsbezogene Daten sammelt. Wir können viele Dinge messen wie:

  • Temperatur
  • Luftfeuchtigkeit
  • Wind
  • Luftdruck
  • UV-Index
  • Regen

In der Wetterstation, die wir bauen werden, werden wir an zwei Orten Temperatur und Luftfeuchtigkeit messen und das aktuelle Datum und die aktuelle Uhrzeit anzeigen. Der Bau einer Wetterstation ist denkbar einfach. Aber kann ein Hersteller ein Gerät mit einem farbigen TFT-Display und Funktionen bauen, die denen eines kommerziellen Geräts entsprechen? Die Antwort ist ja! Mit der Leistung von Open-Source-Software und -Hardware kann man diese beeindruckende Wetterstation ganz einfach bauen!

Das Projekt besteht aus zwei Teilen:dem Sender und dem Empfänger.

Der Sender misst Temperatur und Luftfeuchtigkeit und sendet die Daten drahtlos an den Empfänger. Der Empfänger misst die Temperatur und die Luftfeuchtigkeit, empfängt die Daten vom Fernsensor und zeigt alles auf einem großen Farb-TFT-Display an.

Lasst uns dieses Projekt bauen!

Schritt 1:Holen Sie sich alle Teile

Die Teile, die für den Bau dieses Projekts benötigt werden, sind die folgenden:

  • Arduino Due ▶ http://educ8s.tv/part/ArduinoDue
  • Arduino Mega ▶ http://educ8s.tv/part/ArduinoMega
  • Arduino Nano ▶ http://educ8s.tv/part/ArduinoNano
  • 3,2" TFT-Display ▶ http://educ8s.tv/part/32TFT
  • DHT22 ▶ http://educ8s.tv/part/DHT22
  • NRF24L01 ▶ http://educ8s.tv/part/NRF24L01
  • DS3231 RTC ▶ http://educ8s.tv/part/DS3231
  • Breadboard ▶ http://educ8s.tv/part/SmallBreadboard
  • Wires ▶ http://educ8s.tv/part/Wires
  • Header-Pins ▶ http://educ8s.tv/part/HeaderPins
  • Xiaomi Powerbank ▶ http://educ8s.tv/part/Powerbank

Die Kosten des Projekts betragen etwa 40 $. Sie können die Projektkosten um 5 $ reduzieren, wenn Sie das Arduino Mega anstelle des Arduino Due verwenden. Ich habe mich für den Arduino Due für den Empfänger entschieden, weil er sehr schnell ist und viel Speicher hat. Dies wird in Zukunft sehr nützlich sein, da wir dem Projekt weitere Funktionen hinzufügen.

Schritt 2:Temperatur- und Feuchtigkeitssensor - DHT22

Der DHT22 ist ein sehr beliebter Temperatur- und Feuchtigkeitssensor. Es ist billig, einfach zu bedienen und die Spezifikation verspricht eine gute Präzision und Genauigkeit.

Die DHT-Sensoren bestehen aus zwei Teilen:einem kapazitiven Feuchtigkeitssensor und einem Thermistor. Im Inneren befindet sich auch ein Chip, der eine Analog-Digital-Wandlung durchführt und ein digitales Signal mit Temperatur und Luftfeuchtigkeit ausgibt. Das digitale Signal ist mit jedem Mikrocontroller ziemlich einfach zu lesen.

Eigenschaften des DHT22

  • Geringe Kosten
  • 3 bis 5 V Stromversorgung und E/A
  • Maximaler Stromverbrauch von 2,5 mA während der Umwandlung
  • 0-100 % Feuchtigkeitsmesswerte mit einer Genauigkeit von 2 – 5 %
  • -40 bis 125 °C Temperaturmesswerte ±0,5 °C Genauigkeit
  • Langsam

Die Verbindung mit Arduino ist denkbar einfach. Wir verbinden den Sensorpin mit dem + Zeichen mit dem 5V oder dem 3.3V Ausgang des Arduino. Wir verbinden den Sensorpin mit dem - Zeichen mit GROUND. Schließlich verbinden wir den OUT-Pin mit einem beliebigen digitalen Pin des Arduino.

Um den DHT22-Sensor mit Arduino zu verwenden, müssen wir die DHT-Bibliothek verwenden.

https://github.com/adafruit/DHT-sensor-library

Schritt 3:Das DS3231 Echtzeituhrmodul

Das DS3231 Real-Time Clock-Modul ist, wie der Name schon sagt, eine Echtzeituhr. Mit seiner Batterie kann es jahrelang halten, da es einen minimalen Stromverbrauch hat.

Die Kosten des Moduls sind äußerst gering; es kostet ca. 2$ inklusive Batterie! Wir werden es verwenden, um die Zeit in unserem Wetterstationsprojekt zu halten.

Schritt 4:NRF24L01+:Drahtlose Module

Das Modul NRF24L01 ist ein kostengünstiges bidirektionales Transceiver-Modul. Die Kosten dafür betragen weniger als 3 $! Es arbeitet im 2,4-GHz-Band und kann eine Datenrate von 2 Mbit erreichen! Beeindruckend nicht wahr? Es verwendet die SPI-Schnittstelle, um mit Arduino zu kommunizieren, so dass es sehr einfach zu verwenden ist. Wir müssen 7 der 8 Pins des Moduls verbinden, damit es mit Arduino funktioniert.

Leider können wir das Modul nicht in das Steckbrett einstecken, daher werden wir Stecker-zu-Buchse-Drähte verwenden, um das Modul mit Arduino zu verbinden. Pin Nummer 1 des Moduls ist GND. Sie müssen es mit Arduino Ground verbinden. Der nächste Pin ist Vcc. Sie müssen es an den 3,3-V-Ausgang des Arduino Uno anschließen. Vorsichtig sein! Schließen Sie es nicht an 5V an oder Sie zerstören Ihr Modul! Der dritte Pin heißt CE und Sie können ihn mit jedem beliebigen digitalen Pin verbinden. In diesem Beispiel werde ich es mit dem digitalen Pin 7 verbinden. Pin 4 ist CS und Sie können auch eine Verbindung zu jedem digitalen Pin herstellen. Ich werde eine Verbindung zum digitalen Pin 8 herstellen. Der nächste Pin ist SCK, der zum digitalen Pin 13 des Arduino Uno geht. Der nächste Pin ist MOSI, der zu Digital-Pin 11 geht, und der letzte Pin in MISO, der zu Digital-Pin 12 geht. Das war's!

Um das Modul mit Arduino einfach zu bedienen müssen wir die folgende Bibliothek verwenden:https://github.com/TMRh20/RF24

Wenn Sie die NRF24L01+-Module noch nicht verwendet haben, sehen Sie sich bitte das angehängte Video an, um zu sehen, wie Sie es verwenden, indem Sie ein einfaches Projekt erstellen. Es wird Ihnen helfen, die Funktionsweise zu verstehen.

Schritt 5:Aufbau des Senders

Lassen Sie uns zuerst den Sender bauen. Es ist sehr einfach.

Für den Sender verwenden wir:

  • Ein Arduino Nano
  • Ein DHT22-Sensor
  • Ein NRF24L01+ Funkmodul
  • Ein Steckbrett
  • Einige Drähte

Wir verbinden den Ausgangspin des Sensors mit dem digitalen Pin 4 des Arduino Nano. Wir verbinden die Masse und Vcc und wir sind bereit. Jetzt müssen wir nur noch das Funkmodul NRF24L01 anschließen.

Bitte befestigen Sie es mit den Pins, die im dritten Bild gezeigt werden. Für weitere Details sehen Sie sich bitte das detaillierte Video an, das ich im vorherigen Schritt angehängt habe.

Das war's, Ihr Sender ist bereit. Kommen wir nun zum Empfänger.

Schritt 6:Aufbau des Empfängers

Um den Empfänger zu bauen, benötigen wir folgende Teile:

  • Ein Arduino Due oder ein Mega
  • Ein DS3231-Echtzeituhrmodul
  • Ein DHT22 Temperatur- und Feuchtigkeitssensor
  • Ein NRF24L01+ Wireless-Modul
  • Ein 3,2"-Farb-TFT-Display
  • Ein Steckbrett
  • 7 Header-Pins
  • Einige Drähte

Zuerst biegen wir 7 Header-Pins und platzieren sie an einigen der Arduino Due-Pins. Wir brauchen einen an Masse und einen an 3.3V. Wir brauchen zwei an den I2C-Pins. Wir brauchen die restlichen 3 bis digitalen Pins von 6 bis 8. Wir müssen auch drei Drähte an die Hardware-SPI-Pins der Arduino Due-Pins löten. Wir brauchen MOSI, MISO und SCK. Überprüfen Sie das Diagramm sorgfältig. Wir verbinden die Drähte mit den Header-Pins und sind bereit, das Display anzubringen.

DS3231 anschließen

  • VCC-Pin am 3,3-V-Ausgang von Arduino
  • GND-Pin an Arduinos GND und
  • SDA (Serial Data Line)-Pin an Arduinos SDA-Pin und
  • SCL (Serial Clock Line)-Pin an Arduinos SCL-Pin

DHT22-Sensor anschließen

  • VCC-Pin am 3,3-V-Ausgang von Arduino
  • GND-Pin an Arduinos GND und
  • Ausgangspin zu Arduinos digitalem Pin 8

Anschließen des NRF24L01-Moduls

  • GND-Pin zu Arduinos GND
  • VCC-Pin an Arduino 3.3V
  • Dritter Pin zu Arduinos digitalem Pin 6
  • 4. Pin zu Arduinos digitalem Pin 7
  • 5. Pin auf SCK-Pin, den wir gelötet haben
  • 6. Pin auf MOSI-Pin, den wir gelötet haben
  • 7. Pin auf MISO-Pin, den wir gelötet haben

Schritt 7:Der Sendercode

Zunächst müssen wir die RF24-Bibliothek herunterladen, um uns das Arbeiten mit den Funkmodulen NRF24L01 zu erleichtern. Außerdem benötigen wir die DHT-Bibliothek für den DHT22-Sensor.

  • DHT22-Bibliothek:https://github.com/adafruit/DHT-sensor-Bibliothek

Sehen wir uns zuerst den Sendercode an. Es sendet eine einfache Datenstruktur aus, die zwei Floats enthält, die Temperatur und die Luftfeuchtigkeit.

Um eine Kommunikationsverbindung aufzubauen, müssen wir eine „Pipe“ zwischen den beiden Modulen erstellen. Diese Pipe muss eine Adresse haben. Beide Module müssen von derselben Pipe schreiben und lesen, um zu kommunizieren. Das ist das Erste, was wir in unserem Code definieren. Wir setzen die Pipe-Adresse auf „0“. Als nächstes definieren wir den Kanal, über den wir mit dem anderen Modul kommunizieren wollen. Der NRF24L01-Chip unterstützt 126 verschiedene Kanäle. Beide Module müssen denselben Kanal verwenden, um miteinander zu kommunizieren. In diesem Beispiel verwende ich Kanal 115. Als nächstes definiere ich, dass ich die maximale Sendeleistung nutzen möchte, die das Modul bietet. Es verbraucht mehr Strom, erweitert aber die Reichweite der Kommunikation. Als nächstes definieren wir die Datenrate der Übertragung. Ich habe es auf 250Kbs eingestellt, was die niedrigste mögliche Datenrate ist, um eine bessere Reichweite zu erzielen. Der nächste Schritt besteht darin, die Pipe zu öffnen, um später darauf zu schreiben.

In der Loop-Funktion lesen wir die Temperatur- und Feuchtigkeitswerte vom Sensor, speichern diese Daten in der Datenstruktur und senden dann die Datenstruktur, indem wir die Datenstruktur in das Rohr schreiben. Das ist es. Den angehängten Code finden Sie in diesem Tutorial.

FU361QHIQFCEYSE.ino

Schritt 8:Der Empfängercode

Sehen wir uns nun den Empfängercode an. Wir brauchen 4 Bibliotheken. Zuerst müssen wir die Bibliothek für die Anzeige von diesem Link herunterladen:

ANZEIGE-Bibliothek:https://github.com/Bodmer/TFT_HX8357_Due

Nach dem Download der Bibliothek müssen Sie die Datei User_Setup.h öffnen. Kommentieren Sie Zeile 13 und entkommentieren Sie Zeile 14, da unser Display den HX8357C-Treiber verwendet. Jetzt können wir mit den 3 anderen Bibliotheken fortfahren. Wir brauchen eine Bibliothek für die Echtzeituhr, eine für den DHT22-Sensor und zuletzt eine für das Funkmodul.

  • NRF24L01:https://github.com/TMRh20/RF24
  • DHT22:https://github.com/adafruit/DHT-sensor-library
  • DS3231:https://github.com/SodaqMoja/Sodaq_DS3231

Werfen wir einen Blick auf den Code. Als erstes müssen wir die Uhrzeit auf das Echtzeituhrmodul einstellen, falls es noch nicht eingestellt ist. Geben Sie dazu das aktuelle Datum und die aktuelle Uhrzeit in setRTCTime . ein entkommentieren Sie die setRTCTime Aufruf der Funktion in Zeile 54 und Upload des Programms auf Arduino. Jetzt ist die Zeit eingestellt. Aber dann müssen wir setRTCTime kommentieren Rufen Sie die Funktion erneut auf und laden Sie das Programm erneut auf Arduino hoch.

Der Code des Empfängers funktioniert wie folgt. In der Setup-Funktion initialisieren wir alle Sensoren und die Module und drucken die Benutzeroberfläche. Dann prüfen wir bei der Loop-Funktion kontinuierlich nach neuen Funkdaten. Wenn es neue Daten gibt, speichern wir diese Daten in Variablen und drucken sie auf dem Display aus. Wir lesen die Temperatur und die Luftfeuchtigkeit einmal pro Minute ab und aktualisieren die Anzeige nur, wenn sich die Werte ändern. Auf diese Weise reduzieren wir das Flackern des Displays noch mehr! Ich habe auch eine Version des Codes vorbereitet, bei der die Temperatur in Grad Fahrenheit angezeigt wird. Sie finden beide Versionen des Codes im Anhang dieses Tutorials.

F053BTXIQFCEZ09.ino FNV3X4LIQFCEZ0C.ino

Schritt 9:Testen des Projekts

Der letzte Schritt, um alles hochzufahren und zu sehen, ob alles wie erwartet funktioniert. Wenn ja, wird oben im Display das aktuelle Datum und die aktuelle Uhrzeit angezeigt. Unten im Display können Sie die Temperatur und die Luftfeuchtigkeit sowohl von der Fernbedienung als auch vom lokalen Sensor sehen.

Wenn keine Daten für den Fernbedienungssensor angezeigt werden , bringen Sie den Sender näher - er befindet sich möglicherweise außerhalb der Reichweite. Wenn das Problem weiterhin besteht, überprüfen Sie alle Verbindungen noch einmal - da muss etwas nicht stimmen.

Wie Sie sehen, ist dieses Projekt eine großartige Demonstration dessen, wozu Open-Source-Hardware und -Software fähig sind. Innerhalb weniger Stunden kann man so ein beeindruckendes Projekt aufbauen! Natürlich ist dies nur der Anfang. Wir können dem Projekt viele weitere Funktionen hinzufügen. Ich werde bald eine Schaltfläche hinzufügen, damit wir Grafiken anzeigen und verschiedene Modi haben können. Wir können auch weitere Sensoren, Datenprotokollierung, Internetverbindung usw. hinzufügen. Wir verwenden das Arduino Due, also haben wir viel Speicher, um viele weitere Dinge zu implementieren. Ich würde gerne Ihre Meinung zu diesem Projekt hören. Wie wollen Sie die Entwicklung sehen? Bitte posten Sie Ihre Kommentare oder Ideen im Kommentarbereich unten!

Wenn Sie mehr Details wünschen, sehen Sie sich das YouTube-Video in der Einführung an oder besuchen Sie meine Website. Danke fürs reinschauen!

Code

Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library
Github
https://github.com/TMRh20/RF24https://github.com/TMRh20/RF24
Github
http://DISPLAY:%20https://github.com/Bodmer/TFT_HX8357_Duehttp://DISPLAY:%20https://github.com/Bodmer/TFT_HX8357_Due
Github
https://github.com/SodaqMoja/Sodaq_DS3231https://github.com/SodaqMoja/Sodaq_DS3231

Herstellungsprozess

  1. Raspberry Pi 2 Wetterstation
  2. Raspberry Pi Wetterstation
  3. Wetterstation V 2.0
  4. Arduino Digital Dice
  5. Iron Man
  6. Finde mich
  7. Arduino 3D-gedruckter Roboterarm
  8. Arduino-Befeuchtersteuerung
  9. $10 Portable Arduino Wetterstation (AWS)
  10. eDOT - Arduino-basierte Präzisionsuhr und Wetterstation