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

Mini-Wetterstation mit Arduino Nano

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
DHT 11-Modul
× 1
BMP-280 DRUCKSENSOR
× 1
1,44 Zoll ST7735 LCD-Display
× 1
3D-GEDRUCKTES GEHÄUSE
× 1
USB-A-auf-Mini-USB-B-Kabel
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
3D-Drucker (generisch)
Lötdraht
Doppelseitiges Klebeband

Apps und Onlinedienste

Arduino-IDE
Autodesk Fusion 360

Über dieses Projekt

Einführung

Physikalische Daten in Echtzeit zu erfassen ist immer faszinierend. In diesem Projekt werden Sie nicht nur in der Lage sein, drei grundlegende physikalische Parameter für die Wettervorhersage zu erfassen, nämlich. Temperatur, Luftfeuchtigkeit und Luftdruck, sondern kann auch Echtzeitdaten auf einem LCD-Bildschirm anzeigen.

Beschreibung und Funktionsprinzip

Die beiden in diesem Projekt verwendeten Sensoren sind BMP-280 und DHT-11. Ersteres misst die Temperatur und den atmosphärischen Druck, während letzteres die relative Luftfeuchtigkeit erfasst. Der DHT-11 hätte mit BME-280 (es kann auch die Luftfeuchtigkeit messen) anstelle des BMP-280 verwendet werden, aber wenn man die Kosten berücksichtigt, ist die Verwendung der hier verwendeten Sensorkombination für Heimwerker viel wirtschaftlicher Projekte. Es sollte auch beachtet werden, dass DHT-11, obwohl es sowohl Temperatur als auch Feuchtigkeit erfassen kann, nur für die Feuchtigkeitserfassung verwendet wird, da seine Temperaturerfassungsauflösung +/-2 ° im Vergleich zu +/-.5 ° für BMP-280 beträgt. Das Herzstück dieses Projekts ist das Arduino NANO-Entwicklungsboard. Auch hier wurde das NANO-Board wegen seines günstigen Preises dem massenbevorzugten UNO vorgezogen. Als Display wird für unser Projekt ein 1,44“ TFT-LCD-Bildschirm der Serie ST7735 verwendet. Auf einen größeren Bildschirm wurde hier verzichtet, damit der Arduino NANO nicht überlastet wird.

Schaltung und Programmierung

Eine Kombination aus Schaltplan und Blockschaltbild wurde so bequem wie möglich bereitgestellt, um den Herstellern zu helfen, die physikalische Konfiguration und den Anschluss der Komponenten zu verstehen. Zur Vereinfachung werden auch Tabellen zur Belegung der Komponenten bereitgestellt. Wenn Sie das Diagramm und die Tabellen durchgehen, werden Sie feststellen, dass die 5V- und GND-Pins des ICSP-Headers auf Arduino NANO zusammen mit den On-Board-Strom- und Massepins zur Stromversorgung der Komponenten verwendet wurden. Dies wurde getan, um jede zusätzliche Stromquelle zu vermeiden, die das System sperrig macht.

Was die Programmierung angeht, wurden im ersten Teil eine Reihe von Bibliotheken aufgenommen, um die Programmierung kurz und einfach zu halten. Neben den offensichtlichen sind die Wire.h- und SPI.h-Bibliotheken erwähnenswert, da Wire.h diejenige ist, die es dem Arduino ermöglicht, mit den I2C/TWI-Geräten wie dem BMP-280 und dem ST7735 LCD und SPI.h zu kommunizieren stellt die serielle Peripherieschnittstelle mit dem ST7735 LCD zur Verfügung. Im zweiten Teil werden die Sensoren initialisiert und das Layout, die Schriftfarbe etc. des LCD zur Darstellung der Daten nach unseren Wünschen eingerichtet. Im letzten Teil unserer Programmierung wird die Ausgabe der Sensoren mit einer geeigneten Verzögerung zwischen den einzelnen Messungen abgerufen und angezeigt, um die Stabilität zu gewährleisten.

Konstruktion und Prüfung

Im Prototyp wurden die Komponenten modular gehalten und über Steckbrücken statt durch Löten verbunden. Dies ermöglicht nicht nur eine einfache Fehlersuche und Reparatur, sondern macht auch den Montageprozess problemlos. Das Gerätegehäuse wurde speziell 3D-gedruckt, um eine perfekte Passform für die Komponenten zu gewährleisten. Das Gehäuse ist mit einer geeigneten Belüftung versehen, um die Sensoren den Messgrößen auszusetzen und die vom System erzeugte Wärme abzuführen, die ansonsten die Sensorelemente stören würde. Das Gerät wird über den gleichen Typ AUSB zum Typ B Mini-USB mit Strom versorgt, der zum Programmieren des Arduino verwendet wird. Der Prototyp wurde in Innenräumen einige Stunden lang auf Dehnung getestet, wobei sowohl der PC-USB-Anschluss als auch das 5-V-Smartphone-Ladegerät als Stromversorgung verwendet wurden. Die Ergebnisse sind im Vergleich zu Online-Meteorologischen Daten unter Berücksichtigung der Produktionskosten und der Entwicklungszeit recht genau.

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass dieses Projekt recht wirtschaftlich ist, gelinde gesagt nützlich und vor allem macht es Spaß, eine kleine und handliche Wetterstation zu haben, die direkt in die Hosentasche passt.

Um elektronische Teile zu kaufen, bestellen Sie diese bei UTSOURCE

Bibliographie

· Google.com

· Arduino.cc

· Mytecttutor.com


Code

  • DER CODE
DER CODEC/C++
DIES IST DIE RELEVANTE SKIZZE FÜR DAS PROJEKT, DIE KOMMENTARSTELLUNGEN ERKLÄREN DIE FUNKTION
#include  //include Serial Peripheral Interface library#include  //include Two Wire Interface library#include  // Adafruit-Grafikbibliothek einbinden#include  // Adafruit ST7735 TFT-Bibliothek einbinden#include  // Adafruit BMP280-Sensorbibliothek einbinden#include "DHT.h" //DHTXX-Sensor einschließen Bibliothek #define DHTPIN 2 // DHT11-Datenpin mit Arduino-Pin D2 verbunden #define DHTTYPE DHT11 // Angabe des Typs des verwendeten DHT-Sensors #define TFT_RST 8 // TFT RST-Pin ist mit Arduino-Pin D8 verbunden #define TFT_CS 10 // TFT CS-Pin ist mit Arduino-Pin D9 verbunden #define TFT_DC 9 // TFT-DC-Pin ist mit Arduino-Pin D10 verbunden // ST7735 SERIES initialisieren TFT-BibliothekAdafruit_ST7735 tft =Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST); // Geräte-I2C-Adresse definieren:0x76 oder 0x77 (0x77 ist die Standardadresse der Bibliothek)#define BMP280_I2C_ADDRESS 0x76 Adafruit_BMP280 bmp280; // Adafruit BMP280 Bibliothek initialisierenDHT dht(DHTPIN, DHTTYPE); // DHT-Sensor initialisieren Void setup (void) {dht.begin (); // DHT-Sensor synchronisieren tft.initR (INITR_144GREENTAB); // einen ST7735S-Chip initialisieren, schwarze Registerkarte tft.fillScreen (ST77XX_BLACK); // schwarzen Hintergrund setzen tft.drawFastHLine(0, 15, tft.width(), ST77XX_CYAN); // horizontale Trennlinie an Position (0, 15) zeichnen tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK); // Textfarbe auf weißen und schwarzen Hintergrund setzen tft.setTextSize(1); // Textgröße auf 1 setzen //tft.setCursor(4, 0); // Cursor an Position (4, 0) Pixel bewegen //tft.print("ARDUINO + ST7735 TFT"); tft.setCursor(25, 5); // Cursor an Position (25, 5) bewegen Pixel tft.print("WEATHER BUDDY"); // BMP280-Sensor initialisieren if( bmp280.begin(BMP280_I2C_ADDRESS) ==0 ) { // Verbindungsfehler oder Geräteadresse falsch! tft.setTextColor(ST77XX_RED, ST77XX_CYAN); // Textfarbe auf roten und schwarzen Hintergrund setzen tft.setTextSize(2); // Textgröße auf 2 setzen tft.setCursor (5, 76); // Cursor an Position (5, 76) bewegen Pixel tft.print("Connection"); tft.setCursor(35, 100); // Cursor an Position (35, 100) bewegen Pixel tft.print("Error"); während(1); // hier bleiben } tft.drawFastHLine(0, 55, tft.width(), ST77XX_CYAN); // horizontale Trennlinie an Position (0, 55)pixel zeichnen tft.drawFastHLine(0, 95, tft.width(), ST77XX_CYAN); // horizontale Trennlinie an Position (0, 195) zeichnen Pixel tft.setTextColor(ST77XX_RED, ST77XX_BLACK); // Textfarbe auf roten und schwarzen Hintergrund setzen tft.setCursor (30, 20); // Cursor an Position (30, 20) bewegen Pixel tft.print("TEMPERATURE"); // Überschrift für den ersten Abschnitt setzen tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK); // Textfarbe auf Cyan und schwarzen Hintergrund setzen tft.setCursor (40, 60); // Cursor an Position (40, 60) bewegen Pixel tft.print("HUMIDITY"); // Überschrift für zweiten Abschnitt setzen tft.setTextColor(ST77XX_GREEN, ST7735_BLACK); // Textfarbe auf grünen und schwarzen Hintergrund setzen tft.setCursor (40, 100); // Cursor an Position (40, 100) bewegen Pixel tft.print("DRUCK"); // Überschrift für den dritten Abschnitt setzen tft.setTextSize(2); // Textgröße auf 2 setzen} // main loopvoid loop() { char _buffer[8]; // Temperatur, Luftfeuchtigkeit und Druck vom BMP280-Sensor ablesen float temp =bmp280.readTemperature (); // Temperatur in °C abrufen float hum =dht.readHumidity(); // Feuchtigkeit in rH% abrufen float pres =bmp280.readPressure (); // Druck in hPa abrufen // Temperatur drucken (in °C) if(temp <0) // wenn Temperatur <0 sprintf( _buffer, "-%02u.%02u", (int)abs(temp), (int )(abs(temp) * 100) % 100 ); else // if temperature>=0 sprintf( _buffer, " %02u.%02u", (int)temp, (int)(temp * 100) % 100 ); // Einstellung der Wertnäherung tft.setTextColor(ST77XX_YELLOW, ST77XX_BLACK ); // Textfarbe auf gelben und schwarzen Hintergrund setzen tft.setCursor (11, 34); // Cursor an Position (11,34) bewegen Pixel tft.print(_buffer); // Drucktemperatur vom BMP-280-Sensor tft.drawCircle (89, 34, 2, ST77XX_YELLOW); // drucke das Gradsymbol ( ° ) (kann weggelassen werden, wenn stattdessen * verwendet wird) tft.setCursor(95, 34); // Cursor an Position (95,34) bewegen Pixel tft.print("C"); // drucke das Celcius-Symbol // 2:drucke Luftfeuchtigkeit (in %) sprintf( _buffer, "%02u ", (int)(hum)); // Einstellung der Wertannäherung tft.setTextColor(ST77XX_MAGENTA, ST77XX_BLACK); // Textfarbe auf Magenta und schwarzen Hintergrund setzen tft.setCursor(45, 74); // Cursor an Position (45,74) Pixel bewegen tft.print(_buffer); // Luftfeuchtigkeit vom DHT-11-Sensor drucken tft.setCursor (75, 74); // Cursor an Position bewegen (75,74) Pixel tft.print("%"); // Prozentzeichen drucken // 3:Druck drucken (in hPa) sprintf( _buffer, "%04u.%02u", (int)(pres/100), (int)((uint32_t)pres % 100) ); // Einstellung der Wertannäherung tft.setTextColor(ST77XX_ORANGE, ST77XX_BLACK); // Textfarbe auf orange und schwarzen Hintergrund setzen tft.setCursor (3, 112); // Cursor an Position (3.112) bewegen Pixel tft.print(_buffer); // Drucken Sie den atmosphärischen Druck von BMP-280 tft.setCursor (91, 112); // Cursor an Position (91,112) bewegen Pixel tft.print("hPa"); // Druckeinheit des Atmosphärendrucks als Hekto-Pascal-Verzögerung (1000); // 1 Sekunde warten, bevor der nächste Sensormesswert gemessen wird}

Kundenspezifische Teile und Gehäuse

DIES IST DIE STL-DATEI FÜR DIE 3D-DRUCKTEILE, DIE ICH VERWENDET habe

Schaltpläne

SIE MÜSSEN NUR DIE GEZEIGTE VERKABELUNG BEFOLGEN.

Herstellungsprozess

  1. Raspberry Pi 2 Wetterstation
  2. Raspberry Pi Wetterstation
  3. Wetterfernüberwachung mit Raspberry Pi
  4. Wetterstation V 2.0
  5. DIY Photoshop-Bearbeitungskonsole mit Arduino Nano RP 2040
  6. 7-Segment-Array-Uhr
  7. $10 Portable Arduino Wetterstation (AWS)
  8. eDOT - Arduino-basierte Präzisionsuhr und Wetterstation
  9. FM-Radio mit Arduino und RDA8057M
  10. ThingSpeak Arduino Wetterstation