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

$10 Portable Arduino Wetterstation (AWS)

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
DHT22-Temperatursensor
× 1
bmp180
× 1
Adafruit Standard LCD - 16x2 Weiß auf Blau
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Kürzlich hatte mein College eine kleine Wissenschaftsausstellung. Also wurde ich von meinem Lehrer gebeten, ein Projekt im College vorzustellen, um jungen Studenten etwas über Elektronik beizubringen, also hatte ich im Grunde zwei Tage Zeit, um etwas zu machen.

Da die klimatischen Bedingungen hier sehr unterschiedlich sind und die Temperatur in letzter Zeit zwischen 34 und 40 Grad Celsius liegt. Also habe ich beschlossen, eine Wetterstation zu bauen.

Was macht eine Wetterstation?

Eine Wetterstation ist ein Gerät, das mit vielen verschiedenen Sensoren wetter- und umgebungsbezogene Daten sammelt

Sensoren wie

  • Wind
  • Luftfeuchtigkeit
  • Regen
  • Temperatur
  • Druck
  • Höhe

Ziel ist es, eine tragbare Wetterstation zu bauen

Funktionen, die es haben sollte

  • Temperatur
  • Luftfeuchtigkeit
  • Druck
  • Höhe

Schritt 1:Zutaten:Zeit, Dinge zu kaufen

Hier ist also das, was wir für das Projekt brauchen

Ich habe das Projekt eigentlich auf My UNO begonnen, aber dann entscheide ich mich, auf eine kompakte Lösung umzusteigen.

Ich hatte den Nano in diesem Moment bei mir, musste also mit, würde gerne Mikro verwenden, weil es der kleinste ist.

Wie auch immer, lassen Sie diese Dinge, wenn Sie über Budget und Teile sprechen, hier ist die Liste.

  • DHT22 Temperatur- und Feuchtigkeitssensor -> 3,00 $
  • BMP180 Drucksensor (BMP280 ist billiger, aber in meiner Nähe teurer)> 2,00 $
  • Arduino Nano> 1,89 $
  • Löten
  • LCD-Display mit I2C-Treiber> 3,0 $
  • Veroboard
  • Female Kopfzeile

Für das Werkzeugende benötigen Sie

  • Lötkolben
  • Nasenzange
  • Drähte

Und auch einige Zeit

Schritt 2:Temperatur und Luftfeuchtigkeit - DHT22

Die Messung der Temperatur kann mit verschiedenen Sensoren erfolgen.

Die beliebtesten sind DHT22,DHT11,SHT1x

Lassen Sie uns also im Grunde verstehen, wie sich diese Sensoren voneinander unterscheiden und warum ich überhaupt DHT22 verwendet habe.

AM2302 kalibriertes Digitalsignal ausgeben. Es wendet eine exklusive Digitalsignal-Sammeltechnik und Feuchtigkeitssensortechnologie an, um seine Zuverlässigkeit und Stabilität zu gewährleisten. Seine Sensorelemente sind mit einem 8-Bit-Single-Chip-Computer verbunden.

Jeder Sensor dieses Modells ist temperaturkompensiert und in einer genauen Kalibrierkammer kalibriert und der Kalibrierkoeffizient wird als Programmtyp im OTP-Speicher gespeichert. Wenn der Sensor erkennt, wird er den Koeffizienten aus dem Speicher zitieren. Dank der geringen Größe und des geringen Verbrauchs sowie der langen Übertragungsdistanz (100 m) eignet sich der AM2302 für alle Arten von rauen Anwendungen

Sehen wir uns einige Vor- und Nachteile der drei an.

DHT11

Vorteile:Kein Löten erforderlich. Günstigstes unter drei. Erhalten Sie schnell eine stabile Ausgabe. Übertragung über 20m. Starke Störungen.

Nachteile:Bibliothek! Keine Auflösungsoption. Fehler:Temp+/-2°C; Luftfeuchtigkeit +/-5%RH. Unzureichender Messbereich (0-50°C). Anwendungen:Gartenarbeit, Landwirtschaft.

DHT22

Vorteile:Kein Löten erforderlich. Fügen Sie DHT11 ein paar Dollar hinzu und erhalten Sie ein Upgrade. Glatte Kurve. Kleinster Fehler. Große Auswahl. Übertragung über 20m. Starke Störungen.

Nachteile:Kann empfindlicher sein. Langsame Temperaturverfolgung. Bibliothek benötigt. Anwendungen:Umweltüberwachung. SHT1x

Vorteile:Kein Löten. Glatte Kurve. Kleiner Fehler. Schnelle Antwort. Energieeffizient. Automatischer Schlaf. Außerordentliche Langzeitstabilität und Konsistenz.

Nachteile:Zwei digitale Schnittstellen. Feuchtigkeitsfehler. Gleicher Messbereich mit DHT11. Bibliothek benötigt. Anwendungen:Schwere Aufgaben und Langzeitinstallationen. Im Folgenden sind drei relativ günstige Optionen aufgeführt.

Verbindung

Vcc bis 5V oder 3,3V

Masse zu Masse

Daten an Pin 2 von Arduino

Schritt 3:Barometer und Drucksensor - BMP180

Der bmp180 ist ein barometrischer Drucksensor mit einer I2C („Wire“) Schnittstelle.

Luftdrucksensoren messen den absoluten Druck der sie umgebenden Luft. Dieser Druck variiert sowohl mit dem Wetter als auch mit der Höhe.

Dieses bmp180-Modul wurde mit einem 3,3-V-Regler 662k geliefert, den ich zu einer gewissen Dummheit in die Luft gejagt habe, also habe ich einen Draht angeschlossen, um den gesamten vcc direkt an den Chip zu übergeben.

Hinweis:Wenn ich dies tue, beschränke ich mich darauf, nur 3,3 V zu verwenden, die Verwendung von Spannungen darüber würde das Gerät ruinieren.

Andere Modelle verfügen möglicherweise nicht über den 662k-Spannungsregler. also gründlich prüfen .

Ok, wenn Sie zurückkommen, können Sie den Sensor mit dem Arduino verbinden.

Der Sensor verbindet sich mit dem i2c-Bus des Arduino, der von Nano und Uno ist

SDA==>A4

SCL==>A5

VCC==>3.3V

GND ==> GND

Lassen Sie uns ein wenig über den Druck sprechen und wie misst der Druck Höhe und Temperatur.

Der atmosphärische Druck ist an keiner Stelle konstant. Die komplexe Wechselwirkung zwischen Erddrehung, Achsenneigung und vielen anderen Faktoren führt zu sich bewegenden Bereichen mit höherem und niedrigerem Druck, die wiederum die Wetterschwankungen verursachen, die wir täglich sehen. Indem Sie auf Druckänderungen achten, können Sie kurzfristige Wetteränderungen vorhersagen.

Ein sinkender Druck bedeutet beispielsweise normalerweise nasses Wetter oder ein herannahendes Gewitter (ein Tiefdrucksystem zieht ein). Steigender Druck bedeutet normalerweise, dass sich klares Wetter nähert (ein Hochdrucksystem bewegt sich).

Der Luftdruck variiert auch mit der Höhe. Der absolute Druck im Basislager Mt. Everest (5.400 ) ist niedriger als in Delhi (216)

Da es schwierig ist, Druckmessungen von einem Ort zum anderen direkt zu vergleichen, verwenden wir den relativen Druck, d. h. den Druck auf Meereshöhe.

Höhenmessung

Der durchschnittliche Druck der Atmosphäre auf Meereshöhe beträgt 1013,25 hPa (oder mbar). Dieser fällt auf Null ab, wenn Sie in Richtung des Vakuums des Weltraums aufsteigen. Da die Kurve dieses Abfalls gut verstanden ist, können Sie die Höhendifferenz zwischen zwei Druckmessungen (p und p0) mit dieser Gleichung berechnen:

alti=44330*[1-(p/p0)^(1/5.255)]

Wenn Sie den Druck auf Meereshöhe (1013,25 hPa) als Basisdruck (p0) verwenden, ist die Ausgabe der Gleichung Ihre aktuelle Höhe über dem Meeresspiegel.

Vorsichtsmaßnahmen

Geben Sie Luft: Denken Sie daran, dass der BMP180 Zugang zu Umgebungsluft benötigt, um seinen Druck zu messen, also legen Sie ihn nicht in ein verschlossenes Gehäuse. Ein kleines Belüftungsloch sollte ausreichend sein.Aber nicht zu viel Luft :Andererseits kann die Einwirkung von sich schnell bewegender Luft oder Wind zu kurzzeitigen Druckschwankungen führen, die sich auf Ihre Messwerte auswirken. Schützen Sie das Gerät vor starken Luftströmen.

Bleib cool: Da zum Messen des Drucks eine genaue Temperaturmessung erforderlich ist, versuchen Sie, das Gerät keinen schnellen Temperaturänderungen auszusetzen, und halten Sie es von nahegelegenen heißen Teilen und anderen Wärmequellen fern.

Halt es trocken :Der BMP180 ist feuchtigkeitsempfindlich. Tauchen Sie es nicht ein und lassen Sie es nicht mit flüssigem Wasser in Kontakt kommen.

Nicht blind machen: Überraschenderweise ist das Silizium im BMP180 lichtempfindlich, das durch das Loch auf der Oberseite des Chips in das Gerät eindringen kann. Schützen Sie den Chip für maximale Genauigkeit vor Umgebungslicht.

Schritt 4:Schaltung herstellen

Also beginnen wir damit, den Header für den Nano zu erstellen. Wir schneiden die Buchsenleisten tatsächlich ab und legen sie dann ab, damit sie so aussehen, als ob sie ursprünglich diese Größe hätten. Wir löten sie dann. dann haben wir die Header für den DHT22-Sensor gemacht

. es brauchte einen 10k-Widerstand, um von den Daten mit Masse verbunden zu werden. Wir haben dann alles gelötet. Dann war es Zeit für den bmp180. Wir fügten den Header auf ähnliche Weise hinzu. Wir verwendeten 3,3 V als Strom. Wir schlossen den gesamten i2c-Bus an.

Als letztes haben wir das Display hinzugefügt, das wir verwenden i2c lcd, also haben wir den gleichen Bus verwendet, den wir für das bmp180-Modul verwendet haben.

(Es gibt einen vierten Steckplatz, in dem ich später ein RTC-Modul hinzufügen wollte, um auch die Uhr in der Maschine zu integrieren)

Schritt 5:Zeit für Code

Warten Sie ....................

Laden Sie die Bibliotheken herunter

bmp180

https://github.com/sparkfun/BMP180_Breakout_Arduin...

BMP180_Breakout_Arduino_Library-master.zip

Dht22-Bibliothek

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

Um eine Bibliothek in Arduino zu installieren, überprüfen Sie diesen Link

https://www.arduino.cc/en/Guide/Libraries

Ich habe arduino 1.6.5 verwendet, damit der Code für diese Version mit Sicherheit funktioniert, kann auch für höher sein, wenn es auf jeden Fall nicht funktioniert, verwenden Sie 1.6.5 als Basisversion.

#include #include #include #include "DHT.h"#include

SFE_BMP180 Druck;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 // <<- Fügen Sie Ihre . hinzu Adresse hier.#define Rs_pin 0#define Rw_pin 1#define En_pin 2#define BACKLIGHT_PIN 3#define D4_pin 4#define D5_pin 5#define D6_pin 6#define D7_pin 7

#define DHTPIN 2 // was digital Pin, mit dem wir verbunden sind

// Entkommentieren Sie den verwendeten Typ!//#define DHTTYPE DHT11 // DHT 11#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321DHT dht(DHTPIN, DHTTYPE);LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);float t1,t2;

Void setup () { Serial.begin (9600); lcd.begin (16,2); // <<-- unser LCD ist ein 20x4, ändern Sie es bei Bedarf für Ihr LCD // LCD-Hintergrundbeleuchtung ONlcd.setBacklightPin (BACKLIGHT_PIN, POSITIVE); lcd.setBacklight (HIGH); lcd.home(); // nach Hause gehen auf LCDlcd.print ("Wetterstation"); Verzögerung (5000); dht.begin (); Druck.Begin(); aufrechtzuerhalten. Void Schleife () { Zeichenstatus; doppeltes T,P,p0,a; status =pressure.startTemperature(); if (status !=0) { delay(status);

status =pressure.getTemperature(T); Wenn (Status! =0) {Serial.print ("1"); lcd.clear(); lcd.setCursor(0,0); lcd.print("Baro-Temperatur:"); lcd.setCursor(0,1); lcd.print (T, 2); lcd.print(" Grad C "); t1=T; delay(3000);

status =pressure.startPressure(3); if (status !=0) { // Warten bis die Messung abgeschlossen ist:delay(status);

status =pressure.getPressure(P,T); if (status !=0) {lcd.clear(); lcd.setCursor(0,0); lcd.print("abslter Druck:"); lcd.setCursor(0,1); lcd.print(P,2); lcd.print("mb"); Verzögerung(3000);

p0 =Druck.Sealevel(P,HÖHE); // wir sind auf 1655 Metern (Boulder, CO)

a =pressure.altitude(P,p0); lcd.clear(); lcd.setCursor(0,0); lcd.print("Höhe:"); lcd.setCursor(0,1); lcd.print(a,0); lcd.print("Meter"); Verzögerung (3000); } } } } float h =dht.readHumidity(); // Temperatur als Celsius lesen (Standard) float t =dht.readTemperature (); t2=t; lcd.clear(); lcd.setCursor (0,0); // gehe zum Anfang der 2. Zeile lcd.print("Feuchtigkeit:"); lcd.setCursor(0,1);lcd.print(h); lcd.print(" %"); Verzögerung (3000); lcd.clear(); lcd.setCursor (0,0); // gehe zum Anfang der 2. Zeile lcd.print("DHT Tempurature:"); lcd.setCursor(0,1); lcd.print (t); lcd.print(" Grad C "); Verzögerung (3000); lcd.clear(); lcd.setCursor (0,0); // gehe zum Anfang der 2. Zeile lcd.print("Mean Tempurature:"); lcd.setCursor(0,1); lcd.print ((t1+t2)/2); lcd.print(" Grad C "); Verzögerung(3000);}

FSIULGKING9D7SD.ino


Code

  • Code-Snippet Nr. 1
Code-Snippet Nr. 1Nur-Text

#include #include #include #include "DHT.h"#include

SFE_BMP180 Druck;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 // <<- Geben Sie hier Ihre Adresse ein. #define Rs_pin 0#define Rw_pin 1#define En_pin 2#define BACKLIGHT_PIN 3#define D4_pin 4#define D5_pin 5#define D6_pin 6#define D7_pin 7

#define DHTPIN 2 // Welcher digitale Pin wir' wieder verbunden mit

// Entkommentieren Sie den verwendeten Typ!//#define DHTTYPE DHT11 // DHT 11#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);float t1,t2;

Void setup () { Serial.begin (9600); lcd.begin (16,2); // <<-- unser LCD ist ein 20x4, ändern Sie es bei Bedarf für Ihr LCD // LCD-Hintergrundbeleuchtung ONlcd.setBacklightPin (BACKLIGHT_PIN, POSITIVE); lcd.setBacklight (HIGH); lcd.home(); // nach Hause gehen auf LCDlcd.print ("Wetterstation"); Verzögerung (5000); dht.begin (); Druck.Begin(); aufrechtzuerhalten. Void Schleife () { Zeichenstatus; doppeltes T,P,p0,a; status =pressure.startTemperature(); if (status !=0) { delay(status);

status =pressure.getTemperature(T); Wenn (Status! =0) {Serial.print ("1"); lcd.clear(); lcd.setCursor(0,0); lcd.print("Baro-Temperatur:"); lcd.setCursor(0,1); lcd.print (T, 2); lcd.print(" Grad C "); t1=T; delay(3000);

status =pressure.startPressure(3); if (status !=0) { // Warten bis die Messung abgeschlossen ist:delay(status);

status =pressure.getPressure(P,T); if (status !=0) {lcd.clear(); lcd.setCursor(0,0); lcd.print("abslter Druck:"); lcd.setCursor(0,1); lcd.print(P,2); lcd.print("mb"); Verzögerung(3000);

p0 =Druck.Sealevel(P,HÖHE); // wir sind auf 1655 Metern (Boulder, CO)

a =pressure.altitude(P,p0); lcd.clear(); lcd.setCursor(0,0); lcd.print("Höhe:"); lcd.setCursor(0,1); lcd.print(a,0); lcd.print("Meter"); Verzögerung (3000); } } } } float h =dht.readHumidity(); // Temperatur als Celsius lesen (Standard) float t =dht.readTemperature (); t2=t; lcd.clear(); lcd.setCursor (0,0); // gehe zum Anfang der 2. Zeile lcd.print("Feuchtigkeit:"); lcd.setCursor(0,1);lcd.print(h); lcd.print(" %"); Verzögerung (3000); lcd.clear(); lcd.setCursor (0,0); // gehe zum Anfang der 2. Zeile lcd.print("DHT Tempurature:"); lcd.setCursor(0,1); lcd.print (t); lcd.print(" Grad C "); Verzögerung (3000); lcd.clear(); lcd.setCursor (0,0); // gehe zum Anfang der 2. Zeile lcd.print("Mean Tempurature:"); lcd.setCursor(0,1); lcd.print ((t1+t2)/2); lcd.print(" Grad C "); Verzögerung(3000);}

Github
https://github.com/sparkfun/BMP180_Breakout_Arduino_Library/archive/master.ziphttps://github.com/sparkfun/BMP180_Breakout_Arduino_Library/archive/master.zip
Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library

Schaltpläne


Herstellungsprozess

  1. Raspberry Pi 2 Wetterstation
  2. Raspberry Pi Wetterstation
  3. Wetterstation V 2.0
  4. Model Rail Digital DCC Command Station Arduino und kostenlose App
  5. 6-Shooter:Arduino-Getränkemischstation
  6. Arduino Digital Dice
  7. Tragbares kapazitives Touch-Piano
  8. Arduino-Gamecontroller
  9. Tragbarer Reichweitendetektor
  10. Pixel-Chaser-Spiel