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

Tragbare IoT-Wetterstation mit Arduino Nano 33 IoT

Komponenten und Zubehör

Arduino Nano 33 IoT×1
BME280 Wettersensor (Temp, Feuchte, Druck)×1
0,96″ OLED Display 128×64×1
Kunststoffgehäuse 3,9″ × 2,7″×1
Micro-USB-Kabel×1
Männlich-Weiblich-Breadboard-Jumperkabel×1
USB-Netzteil×1

Benötigte Werkzeuge

Apps & Online-Dienste

Über dieses Projekt

Viele Apps verbinden Smartphone mit IoT – die meisten enttäuschten. Blynk ist anders: flexibel, schöne UI, unterstützt viele IoT-Plattformen, läuft auf Android & iOS, für Hobbyisten kostenlos. Dieses Projekt nutzt Blynk zur Anzeige der Wetterdaten auf dem Smartphone.

Hardware

Einfach: Arduino Nano 33 IoT (WLAN onboard), BME280-Sensorplatine (Temperatur, Luftfeuchte, Luftdruck), 1″ OLED-Display. Alle bei 3,3 V. Display optional – Ziel ist Smartphone-Anzeige. Aber: Erst auf OLED zum Laufen bringen, dann Blynk/Smartphone.

Schaltbild: Sensor & Display per I²C. Theoretisch ein I²C-Bus für beide, aber Library-Konflikte → zwei getrennte I²C-Ports:

Tragbare IoT-Wetterstation mit Arduino Nano 33 IoT

Gehäuse: Kleines Kunststoffgehäuse mit klarer Front (Display sichtbar). Kunststoff = RF-durchlässig für WLAN. Wetterfest, aber Sensor durch 12 mm Loch im Boden nach außen geführt (Sensor sitzt direkt dahinter). Alles mit Heißkleber fixiert (Epoxid besser für Sommerhitze).

Stromversorgung per USB-Kabel (Programmieren am PC, Betrieb am USB-Netzteil).

Software

Arduino-Sketch = Kombination der Library-Beispiele für Sensor, Display, Blynk. Libraries:

Alle über Arduino Library Manager installierbar. Jeweils einzeln testen empfohlen.

Blynk-Beispiele: examples.blynk.cc. Nano 33 IoT nicht direkt gelistet, aber Blynk unterstützt WiFiNINA (genutzt vom Nano 33 IoT). Zwei Includes lösen das:

#include <WiFiNINA.h>
#include <BlynkSimpleWiFiNINA.h>

Zusätzlich: #include <avr/dtostrf.h> für Float→String-Konvertierung (OLED-Darstellung). Blynk nimmt Strings & Zahlen, aber Graphen brauchen echte Zahlen – daher getrennte Variablen.

Luftdruck-Korrektur: Normalerweise auf Meereshöhe reduziert. Pro 1000 ft (≈305 m) Höhe ~1 inHg (≈33,9 hPa) abziehen. Im Code: +1.3 für meine 1300 ft (≈396 m). Anpassen an eigenen Standort! Genauere Korrektur via Online-Tabellen.

Wetterstation ohne Blynk

Hardware aufbauen, angehängte Software nutzen, Blynk.begin() in setup() auskommentieren → Station läuft standalone auf OLED. (Ohne Auskommentieren hängt Sketch bei fehlender Blynk-Verbindung.)

Blynk einrichten

Blynk-App installieren (iOS/Android), Doku: docs.blynk.cc. Hier Kurzanleitung (iPhone, Android ähnlich).

  1. Account erstellen
  2. Neues Projekt anlegen → Auth-Code erhalten (Hardware↔Projekt verknüpfen)
  3. Hardware per WLAN mit Blynk verbinden: Test mit Blynk Blink (examples.blynk.cc) – onboard LED (Pin 13) schalten. In Sketch: ESP8266WiFi.h/BlynkSimpleEsp8266.h durch WiFiNINA.h/BlynkSimpleWiFiNINA.h ersetzen. WLAN-Daten & Auth-Token eintragen. Serial Monitor: Verbindung zum Blynk-Cloud-Server beobachten.

App-Bedienung: Links oben = Projekte/Ausloggen, Rechts oben = Edit-Modus, Mitte = kontextabhängig.

Tragbare IoT-Wetterstation mit Arduino Nano 33 IoT

Edit-Modus → Widgets (links per Wisch). Button wählen → auf Hauptbildschirm → konfigurieren: Push→Switch, Pin: Digital 13 (Onboard-LED). OK, Edit-Modus verlassen → Button steuert LED.

Wetterstation mit Blynk

Angehängten Sketch öffnen, Blynk.begin() einkommentieren, Auth-Code & WLAN-Daten eintragen, hochladen.

Tragbare IoT-Wetterstation mit Arduino Nano 33 IoT

App: Edit-Modus, alten Button löschen. Toolbox: Labeled Value (unter Displays). Konfigurieren: Pin → Virtual V3. Label: Temp /pin.#/ deg.F (.# = 1 Nachkommastelle). Große Schrift, Refresh: Push, Farbe: Grün. OK. Widget ziehen (langsam anklicken, nicht Config öffnen) → Breite ~¾ Bildschirm. Edit verlassen → Temperatur sichtbar.

Virtual Pins: Blynk nutzt virtuelle Pins für Variablen (nicht direkt Hardware-Pins). Im Sketch: Temperatur °F → Virtual Pin V3 zuweisen. App liest V3.

Refresh Interval – Push: Arduino pusht Daten (hier 1×/Min). Pull-Modus auch möglich (App fragt zyklisch).

Zwei weitere Labeled Value: Luftfeuchte % (Virtual V4, Gold, 1 Nachkomma), Luftdruck inHg (Virtual V5, Rot, 2 Nachkommastellen).

SuperChart für Verlauf: Widget hinzufügen, nach unten ziehen. Konfigurieren: X-Achse an, Auflösungen: live, 1h, 6h, 1d, 1w, 1mo, 3mo. 3 Datenströme (V3, V4, V5). Y-Skalierung: Height. Temp: 67–100, Feuchte: 34–66, Druck: 0–33. Farben passend. Y-Achse an. Edit verlassen → Dashboard wie im Bild. Graphen brauchen etwas Zeit (Live/1h für schnellen Start).

Teilen: Edit-Modus → Projekteinstellungen (Mitte oben) → Sharing an → Link/QR-Code generieren. Empfänger braucht Blynk-App, aber keinen Account. App hat „Load QR Code“ für fremde Projekte.

Blynk ist „fast“ kostenlos: 2500 Energy-Punkte gratis (reicht für dieses Projekt). Widgets/Teilen verbrauchen Punkte. Ich zahlte $6 für 5000 Extra-Punkte. Für weitere Projekte evtl. nachkaufen.

Code

Tiny Internet Weather Station
/* Arduino Nano 33 IoT + BME280 + 0.96" 128x64 OLED + WiFi → Blynk Cloud → Smartphone */
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BME280.h>
#include <avr/dtostrf.h>
#include <ss_oled.h>
#include <WiFiNINA.h>
#include <BlynkSimpleWiFiNINA.h>

char auth[] = "YourBlynkProjectCode";
char ssid[] = "YourWifiID";
char pass[] = "YourWiFiPassword";

Adafruit_BME280 bme;
Adafruit_Sensor *bme_temp = bme.getTemperatureSensor();
Adafruit_Sensor *bme_pressure = bme.getPressureSensor();
Adafruit_Sensor *bme_humidity = bme.getHumiditySensor();

#define SDA_PIN 5
#define SCL_PIN 4
#define RESET_PIN -1
#define OLED_ADDR -1
#define FLIP180 0
#define INVERT 0
#define USE_HW_I2C 0
#define MY_OLED OLED_128x64
#define OLED_WIDTH 128
#define OLED_HEIGHT 64

SSOLED ssoled;
BlynkTimer timer;

void setup() {
  if (!bme.begin(0x76)) { while (1) delay(10); }
  bme_temp->printSensorDetails();
  bme_pressure->printSensorDetails();
  bme_humidity->printSensorDetails();
  oledInit(&ssoled, MY_OLED, OLED_ADDR, FLIP180, INVERT, USE_HW_I2C, SDA_PIN, SCL_PIN, RESET_PIN, 400000L);
  oledFill(&ssoled, 0x0, 1);
  Blynk.begin(auth, ssid, pass); // auskommentieren für Standalone-Betrieb
  timer.setInterval(60000L, myupdate);
  myupdate();
}

void loop() {
  Blynk.run();
  timer.run();
}

void myupdate() {
  sensors_event_t temp_event, pressure_event, humidity_event;
  bme_temp->getEvent(&temp_event);
  bme_pressure->getEvent(&pressure_event);
  bme_humidity->getEvent(&humidity_event);
  
  float ctemp = temp_event.temperature;
  float ftemp = 32 + (9*ctemp)/5;
  float hum = humidity_event.relative_humidity;
  float ppress = pressure_event.pressure;
  float mpress = 1.3 + ppress/33.8939; // inHg + Höhenkorrektur (hier 1.3 für 1300 ft)
  
  char mytemp[8], myhum[8], mypress[8];
  dtostrf(ftemp, 6, 2, mytemp);
  dtostrf(hum, 6, 2, myhum);
  dtostrf(mpress, 6, 2, mypress);
  
  // OLED aktualisieren
  oledWriteString(&ssoled, 0,2,1,(char*)"Weather Station", FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,2,3,(char*)"Temp = ", FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,50,3,(char*)mytemp, FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,105,3,(char*)"F", FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,2,5,(char*)"Humid=", FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,50,5,(char*)myhum, FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,105,5,(char*)"%", FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,2,7,(char*)"Press=", FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,50,7,(char*)mypress, FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,105,7,(char*)"in", FONT_NORMAL, 0, 1);
  
  // An Blynk senden
  Blynk.virtualWrite(V3, ftemp);
  Blynk.virtualWrite(V4, hum);
  Blynk.virtualWrite(V5, mpress);
}

Schaltplan

Tragbare IoT-Wetterstation mit Arduino Nano 33 IoT

Herstellungsprozess

  1. Integrierte Schaltkreise (ICs): Kompakte, leistungsstarke Chips, die moderne Elektronik antreiben
  2. DIY Solar-betriebene Wetterstation mit Raspberry Pi
  3. Outdoor-Wetterstation mit Raspberry Pi 2 & ADS-WS1 bauen
  4. Raspberry Pi Wetterstation bauen, die tägliche Wetterdaten per E-Mail sendet
  5. Wetterstation mit CWOP integrieren: Praktischer Leitfaden
  6. Fortgeschrittene Wetterstation v2.0: Echtzeit Temperatur, Druck, Feuchte & Höhe Monitoring
  7. Modellbahn DCC-Zentrale selbst bauen mit Arduino – Kostenlose App inklusive
  8. Arduino-gesteuerte 6-Shot-Getränkemischstation – Bauen Sie Ihren eigenen Cocktail-Automaten
  9. MotionSense: Smarte Einbruchserkennung mit Arduino & ESP8266
  10. Hochleistungs-Datenlogger für Arduino-Wetterballons