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

Kleine Internet-Wetterstation

Komponenten und Verbrauchsmaterialien

Arduino Nano 33 IoT
× 1
BME-Wettersensor
× 1
0,96 im OLED-Display - 128 x 64
× 1
Kunststoffkoffer 3,9" x 2,7"
× 1
Micro-USB-Kabel
× 1
Steckbrett-Überbrückungsdrähte von Stecker auf Buchse
× 1
USB-Ladegerät
× 1

Notwendige Werkzeuge und Maschinen

Heißklebepistole (generisch)

Apps und Onlinedienste

Arduino-IDE
Blynk

Über dieses Projekt

Es gibt viele Apps, mit denen Sie Ihr Smartphone mit dem Internet der Dinge verbinden können. Ich habe einige davon ausprobiert und bin meistens enttäuscht worden. Nicht so bei Blynk! Es ist wirklich flexibel, hat eine schöne Benutzeroberfläche, funktioniert mit allen Arten von IoT-Plattformen und läuft sowohl auf Android als auch auf dem iPhone. Es ist auch für Bastler kostenlos! Dies ist also ein relativ einfaches IoT-Projekt, das es mir ermöglichte, Blynk zu verwenden.

Hardware

Die Hardware für dieses Projekt ist ziemlich einfach. Wir verwenden den Arduino Nano 33 IoT, der WLAN verarbeitet, eine BME280-Sensorplatine mit Temperatur, Luftfeuchtigkeit und Luftdruck in einem Gerät und ein 1-Zoll-OLED-Display. Alle drei laufen mit 3,3 Volt einwandfrei. Die Anzeige ist natürlich optional - das Ziel ist es, die Wetterstation auf Ihrem Telefon anzuzeigen. Aber es macht es viel einfacher, zuerst alles auf dem OLED-Display zum Laufen zu bringen, bevor Sie sich mit Blynk und Ihrem Smartphone beschäftigen.

Das folgende Schema zeigt, wie die Hardware verschaltet ist. Sowohl der Sensor als auch das Display sind mit I2C verbunden. Theoretisch kann ein I2C mehrere Geräte unterstützen, aber die Bibliotheken des Sensors und des Displays hatten einige Konflikte, sodass ich am Ende zwei verschiedene I2C-Ports hatte. Der Sensor verwendet den normalen Standard-I2C-Port bei analog Pins 4 und 5. Das Display verwendet einen sekundären I2C-Port, der auf digital eingerichtet ist Pins 4 und 5. (Und ja, sie sind vertauscht - SDA ist digital Pin 5))

Die Hardware ist in einem kleinen Kunststoffgehäuse mit klarer Front untergebracht, damit das Display eingesehen werden kann. Es ist aus Kunststoff, da es für WLAN für HF transparent sein muss. Es muss relativ wetterfest sein, aber der Sensor ist durch ein 1/2"-Loch an der Unterseite der Witterung ausgesetzt. Der Sensor wird so befestigt, dass er genau in diesem Loch sitzt. Ich habe alles im Inneren des Gehäuses mit heißem . befestigt Kleber, aber du solltest stattdessen vielleicht Epoxid verwenden, wenn du es in der Sommerhitze draußen aufstellen möchtest.

Die Stromversorgung erfolgt über das USB-Kabel. Auf diese Weise kann es über ein einziges Kabel, das aus der Box kommt, programmiert oder mit Strom versorgt werden. Dieses Kabel kann beim Programmieren zu Ihrem Computer oder bei der Verwendung als Wetterstation zu einem steckbaren USB-Netzteil geführt werden.

Software

Die auf dem Arduino laufende Software ist nur wenig mehr als ein Mash-Up der Bibliotheksbeispiele für den Sensor, das Display und Blynk. Die beteiligten Bibliotheken sind die Adafruit_BME280_Library für den Sensor, die ss_oled-Bibliothek für das Display und die Blynk-Bibliothek für Blynk. Alle drei können direkt vom Bibliotheksmanager von Arduino heruntergeladen werden. Sie können mit jeder dieser Bibliotheken separat experimentieren, um sie besser zu verstehen.

Blynk hat eine Reihe von Beispielen für die Konfiguration von Hardware für die Schnittstelle:https://examples.blynk.cc/ Leider wird das Nano 33 IoT nicht als eines der unterstützten Arduinos aufgeführt. Blynk unterstützt jedoch WiFiNINA, das vom Nano 33 IoT und mehreren anderen Arduino-Prozessoren verwendet wird. Das Hinzufügen dieser beiden beinhaltet das Problem gelöst:#include und #include

Eine weitere Ergänzung, die Sie in meinem Code sehen werden, ist:#include Dies war notwendig, um die aus dem Sensor kommenden Zahlen in Zeichenfolgen umzuwandeln, die für die Anzeige auf dem OLED-Display geeignet sind. Eine kleine Wendung, die mich etwas traurig gemacht hat, war, dass Blynk die Daten gerne anzeigt, ob sie als String oder als Zahl gesendet werden. Zuerst schickte ich Blynk den gleichen String, den ich an das OLED schickte. Das hat gut funktioniert, um die Zahlen anzuzeigen, aber es ist völlig fehlgeschlagen, wenn ich Grafiken hinzugefügt habe. Um die Grafiken zum Laufen zu bringen, benötigte Blynk offensichtlich tatsächliche Zahlen.

Hinweis - Der Luftdruck wird normalerweise auf Meereshöhe korrigiert angegeben. In höheren Lagen fällt der Luftdruck offensichtlich ab. Um die Werte des Sensors auf den entsprechenden Wert auf Meereshöhe zu korrigieren, müssen Sie dem gemessenen Wert pro 1000 Fuß Höhe einen Wert von ungefähr 1 Zoll Hg hinzufügen. In meinem eigenen beigefügten Code sehen Sie, dass ich 1,3 hinzugefügt habe, um meine eigene Höhe von 1300 Fuß über dem Meeresspiegel auszugleichen. Sie sollten diesen Wert ändern, damit er Ihrer eigenen Höhe entspricht. Die 1" Hg pro 1000 Fuß ist nur eine grobe Schätzung. Wenn Sie eine genaue Korrektur wünschen, gibt es online Tabellen, die Ihnen die genaue Korrektur für Ihre Höhe geben.

Wetterstation ohne Blynk

An dieser Stelle können Sie die Hardware einrichten und meine angehängte Software verwenden, um Wetterdaten auf dem OLED-Display anzuzeigen. Kommentieren Sie einfach die Zeile Blynk.begin() im Setup aus, damit die Wetterstation von selbst läuft. (Wenn Sie Blink.begin() nicht auskommentieren, ohne eine gültige Verbindung zu Blynk, wird der Sketch an diesem Punkt anhalten oder hängen.) Im nächsten Abschnitt werden wir über Blynk sprechen, wie man beides einrichtet auf der Arduino-Skizze und auf dem Smartphone, um die Wetterstation auf dem Telefon anzuzeigen.

Blynk

Blynk ist einfach auf Ihrem iPhone oder Android zu installieren und wird mit einer ausführlichen Dokumentation geliefert:http://docs.blynk.cc/ Aber es gibt dort so viele Informationen und so viele Optionen, dass ich die Dinge zunächst etwas verwirrend fand, also werde ich es tun Biete hier meine eigene Version der ersten Schritte mit Blynk an.

Ich habe Blynk mit einem iPhone verwendet, aber ich denke, die Erfahrung ist mit Android ähnlich genug, dass Sie meinen Anweisungen mit beiden folgen können. Sobald Sie die App haben, müssen Sie ein Konto erstellen. Von dort aus erstellen Sie innerhalb der App ein neues Projekt. Ihr Projekt wird mit einem Authentifizierungscode versehen, der verwendet wird, um Ihre Hardware mit Ihrem Projekt zu verknüpfen. Ihre erste Aufgabe besteht darin, Ihre Hardware über WLAN mit Ihrem Blynk-Projekt zu verbinden. Sie können dies erreichen und mit Blynks Standard-Skizze / -Programm namens Blynk Blink unter example.blynk.cc testen, mit dem Sie die Onboard-LED Ihres Nano 33 IoT ein- und ausschalten können. Mein Vorschlag ist, dass Sie dies versuchen und es zum Laufen bringen, bevor Sie versuchen, die Wetterstation mit Blynk zum Laufen zu bringen.

Wir haben bereits ein wenig über die Konfiguration unserer Software gesprochen, damit unser Nano 33 IoT mit Blynk funktioniert. Wenn Sie example.blynk.cc öffnen, wird standardmäßig ein ESP8266-Board verwendet. Suchen Sie #include und #include und ersetzen Sie sie durch #include und #include

Zusätzlich zum Hinzufügen von WiFiNINA-Unterstützung für das Nano 33 IoT, wie bereits erwähnt, müssen Sie Ihre WLAN-Anmeldeinformationen und den Authentifizierungscode Ihres Blynk-Projekts hinzufügen. Wir werden das Ein- und Ausschalten der LED in einer Minute erklären, aber zuerst überprüfen wir einfach die Verbindung. Wenn die Blynk Blink-Skizze richtig konfiguriert ist und ausgeführt wird, öffnen Sie Arduinos Serial Monitor, und Sie sollten in der Lage sein, die Verbindung zum Blynk-Cloud-Server zu beobachten. An dieser Stelle können wir unsere Hardware beiseite legen und mit der Blynk-App auf dem Telefon arbeiten.

Ich gebe zu, dass ich die Blynk-App etwas verwirrend fand. Über das Symbol oben links können Sie zwischen Projekten auswählen und sich auch von Ihrem Konto abmelden. Der Modus oben rechts ermöglicht es Ihnen, den Modus "Projekt bearbeiten" aufzurufen und zu verlassen. Was der in der Mitte macht, hängt davon ab, wo Sie sich befinden.

Um die Kontrolle über unsere Onboard-LED zu erhalten, müssen wir in der App in den Bearbeitungsmodus wechseln. Sie sehen dann einen leeren Bildschirm. Wenn Sie nach links wischen, wird es zur Seite verschoben, um eine Toolbox mit Widgets anzuzeigen. Wählen Sie eine Schaltfläche aus, indem Sie darauf klicken, und sie wird nun auf dem Hauptbildschirm angezeigt. Klicken Sie dort darauf und es öffnet sich zur Konfiguration. Verschieben Sie es vom Push-Modus in den Switch-Modus. Verwenden Sie Pin Select, um die Onboard-LED auszuwählen - den digitalen Pin 13 auf unserem Nano 33 IoT. Klicken Sie nun auf OK und klicken Sie auf das Symbol oben rechts, um den Bearbeitungsmodus zu verlassen. Ihre Taste sollte jetzt die LED steuern.

Wetterstation mit Blynk

Wir sind nun bereit, unsere Wetterstation mit unserem Blynk-Projekt zu verknüpfen. Öffnen Sie meine angehängte Software, entkommentieren Sie die Zeile Blynk.begin() im Setup, fügen Sie Ihren Projektauthentifizierungscode und die WLAN-Anmeldeinformationen hinzu und laden Sie sie auf Arduino hoch.

Öffnen Sie Blynk auf Ihrem Telefon. Wenn Sie dieses Tutorial befolgt haben, ist Ihre Taste immer noch vorhanden und sollte immer noch in der Lage sein, die Onboard-LED ein- und auszuschalten. Gehen Sie in den Bearbeitungsmodus, klicken Sie zum Konfigurieren auf die Schaltfläche und löschen Sie sie ganz unten mit Löschen. Gehen Sie nun zur Toolbox und wählen Sie einen beschrifteten Wert aus. Es befindet sich weiter unten in der Liste unter Anzeigen. Zurück auf der Anzeigeseite klicken Sie auf die Anzeige mit beschrifteten Werten, um sie zu konfigurieren. Klicken Sie auf Pin und wählen Sie dann Virtueller Pin V3. Wir werden virtuelle Pins im nächsten Absatz erklären. Jetzt für das Etikett, auf dem "z. B. Temp" steht, geben Sie "Temp /pin.#/deg.F" ein. The.# weist die App an, eine Stelle nach dem Komma anzuzeigen. Wählen Sie die große Textgröße und lassen Sie das Aktualisierungsintervall auf Push und die Textfarbe auf Grün. Klicken Sie nun auf OK. Ihr beschrifteter Wert ist jetzt fast bereit, die Temperatur anzuzeigen, aber er ist zu eng. Wählen Sie es langsam aus – langsam genug, damit es nicht wieder in den Konfigurationsmodus wechselt. Der Umriss des Etiketts leuchtet auf. Es kann nun gestreckt werden, um die gesamte Linie anzuzeigen. Es kann auch verschoben werden, aber das werden wir hier nicht tun. Strecken Sie es etwa zu 3/4 über den Bildschirm. Beenden Sie dann den Bearbeitungsmodus und Sie sollten die Temperatur auf Ihrem Telefon sehen.

Bevor wir die Konfiguration von Blynk abschließen, lohnt es sich, einige Dinge zu erklären, die wir gerade beim Einrichten der Temperaturanzeige gesehen haben. Blynk verwendet eine etwas einzigartige Idee namens virtuelle Pins. Das Anzeigewert-Widget könnte so eingestellt werden, dass es einen analogen Pin auf unserem Prozessor liest oder so eingestellt ist, dass es liest, ob ein digitaler Pin hoch oder niedrig ist. Aber meistens möchten wir den Inhalt einer Variablen anzeigen. Wir tun dies, indem wir dieser Variablen eine virtuelle PIN-Nummer zuweisen, und von da an referenziert die Blynk-App diese Variable anhand ihrer virtuellen PIN-Nummer. In meiner Software sehen Sie also eine Stelle, an der ich dem virtuellen Pin V3 die Temperatur in Fahrenheit zugewiesen habe.

Eine andere Blynk-Idee, die schnell erwähnt werden sollte, ist das Refresh-Intervall, das wir im Push-Modus belassen haben. Das bedeutet, dass die Arduino-Skizze die Daten herausdrückt und in unserem Fall Temperatur, Luftfeuchtigkeit und Luftdruck einmal pro Minute aktualisiert. Blynk unterstützt aber auch eine Pull-Methode, bei der die Blynk-App das Intervall festlegt und die Hardware nach neuen Daten abfragt.

Lassen Sie uns nun die Anzeige unserer Wetterstation auf Blynk beenden. Sie benötigen zwei weitere Labeled-Value-Anzeigen, eine für Luftfeuchtigkeit in % (virtueller Pin V4) und eine für Druck in "in. HG" oder Zoll Quecksilber (Virtual Pin V5). Damit es wie meins aussieht, benötigen Sie Feuchtigkeit in Gold und Druck in Rot. Bei der Luftfeuchtigkeit habe ich eine Stelle nach dem Komma angezeigt; für Druck habe ich zwei Stellen nach dem Komma angezeigt.

Wenn Sie nun die drei Labeled Value-Anzeigen haben, die Temperatur, Luftfeuchtigkeit und Luftdruck anzeigen, können Sie die Grafik aller drei hinzufügen. Dies wird durch das Hinzufügen eines SuperChart-Widgets erreicht. Strecken Sie es zuerst nach unten, sodass es den Rest des Bildschirms ausfüllt. Klicken Sie dann zum Konfigurieren darauf. Ich habe X-Achsen-Werte anzeigen aktiviert und Auflösungen von Live, 1 Stunde, 6 Stunden, 1 Tag, 1 Woche, 1 Monat ausgewählt. und 3 Mo. Wir brauchen drei Datenströme – einen für jede unserer 3 Variablen. Um jeden Datenstrom zu konfigurieren, klicken Sie auf das Symbol rechts davon. Wir müssen erneut den virtuellen Pin für jeden auswählen. Wählen Sie für die Skalierung der y-Achse die Höhe aus. Stellen Sie dann für die Temperatur die Höhe auf 67 - 100 ein. Für die Luftfeuchtigkeit stellen Sie die Höhe auf 34 - 66 ein. Für den Druck stellen Sie die Höhe auf 0 - 33 ein. Stellen Sie die Farben so ein, dass sie den beschrifteten Werten entsprechen. Aktivieren Sie Y-Achse anzeigen. Das ist alles. Verlassen Sie den Bearbeitungsmodus und Ihr Telefondisplay sollte wie meines aussehen. Es dauert eine Weile, bis die Grafik gestartet wird. Für schnelle Ergebnisse sehen Sie sich live oder in einer Auflösung von 1 Stunde an.

Eine weitere Funktion von Blynk, über die Sie vielleicht Bescheid wissen möchten, ist das Teilen Ihres fertigen Blynk-Projekts mit anderen Smartphones, sodass mehr als ein Telefon die Wetterstation anzeigen kann. Um die Freigabe zu initiieren, versetzen Sie Ihr Projekt in den Bearbeitungsmodus und klicken Sie auf das obere mittlere Symbol für Projekteinstellungen. Aktivieren Sie die Freigabe, und generieren Sie dann einen Link. Sie erhalten einen QR-Code, den Sie per E-Mail oder anderweitig teilen können. Der neue Benutzer benötigt die Blynk-App, aber kein Konto bei Blynk. Die App eines nicht registrierten Benutzers verfügt über einen Link zum Laden des QR-Codes des Blynk-Projekts einer anderen Person. Das ist es.

Dies war eine ziemlich begrenzte Einführung in Blynk, sollte Ihnen jedoch einen guten Ausgangspunkt geben. Ich habe bereits erwähnt, dass Blynk kostenlos ist - nun, fast ist es das. Sowohl Widgets als auch das Teilen verbrauchen Punkte, die Blynk als Energie bezeichnet. Ich glaube, du bekommst für den Anfang 2500 Punkte gratis dazu. Das ist mehr als genug, um dieses Projekt kostenlos durchzuführen. Aber das Teilen oder Hinzufügen von Daten kann dazu führen, dass Ihnen die Blynk-Energie ausgeht. Ich habe $6 ausgegeben, um zusätzliche 5000 Punkte zu bekommen. Möglicherweise müssen Sie ein paar Dollar für Blynk-Treibstoff ausgeben, wenn Sie andere Projekte mit Blynk durchführen.

Code

  • Kleine Internet-Wetterstation
Kleine Internet-WetterstationArduino
Mit WiFi und Blynk zu Smartphone
/*Diese Skizze ist für den Arduino Nano 33 IoTI verwendet eine BME280-SensorplatineEs verwendet ein 0,96 Zoll 128 x 64 OLED-DisplayEs verbindet sich über WiFi mit dem Blynk Cloud-Server zur Anzeige von Wetterdaten auf einem Smartphone */#include #include #include  // BME280-Bibliothek#include  // wird verwendet, um Wetterzahlen in Zeichenfolgen für die Anzeige auf OLED zu konvertieren# include  // OLED-Bibliothek// Die nächsten zwei Includes sind erforderlich, damit Nano 33 IoT mit Blynk funktioniert#include #include char auth[] ="YourBlynkProjectCode";char ssid[ ] ="IhreWifiID";char pass[] ="IhrWiFiPasswort";Adafruit_BME280 bme; // I2C-Schnittstelle verwendenAdafruit_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#defineADDR# .def_ODE_LED -1 -1#define FLIP180 0#define INVERT 0#define USE_HW_I2C 0#define MY_OLED OLED_128x64#define OLED_WIDTH 128#define OLED_HEIGHT 64SSOLED ssoled; // Instanz des OLEDBlynkTimer-Timers; // Instanz von Blynk Timervoid setup () { if (!bme.begin (0x76)) { // warten, bis der Sensor erkannt wird, während (1) Verzögerung (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); // diese Zeile auskommentieren, um die Wetterstation ohne Blynk Timer.setInterval(60000L, myupdate) zu betreiben; // führt myupdate einmal pro Minute aus myupdate(); // Führen Sie eine erste Aktualisierung der Anzeige und der Daten für Blynk aus, da die Hauptschleife eine Minute wartet}void loop () { Blynk.run (); // Blynk läuft lieber allein in der Hauptschleife. Timer.run(); // Alles andere wird über den Blynk-Timer gehandhabt} // diese Routine wird vom Blynk-Timer aufgerufen, um sowohl das OLED-Display zu aktualisieren als auch Daten an Blynkvoid myupdate() zu übertragen {sensoren_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; // Temperatur in Grad Celsius abrufen ftemp =32 + (9 * ctemp) / 5; // Temperatur in Fahrenheit umwandeln float hum =Humidity_event.relative_humidity; // relative Luftfeuchtigkeit abrufen float ppress =pressure_event.pressure; // Druck in mm erhalten float mpress =1.3 + ppress/33.8939; // in Zoll Hg umrechnen und 1,3 hinzufügen, um dem tatsächlichen lokal gemeldeten Luftdruck // zu entsprechen. Möglicherweise möchten Sie 1.3 entfernen und/oder Ihre eigene Anpassung hinzufügen. char mytemp[8]; dtostrf(ftemp, 6, 2, mytemp); // temp in einen String umwandeln char myhum[8]; dtostrf(hum, 6, 2, myhum); // Feuchtigkeit in einen String umwandeln char mypress[8]; dtostrf(mpress, 6, 2, mypress); // Druck in einen String umwandeln // OLED-Display 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); // neue Wetterdaten an Blynk senden Blynk.virtualWrite (V3, ftemp); Blynk.virtualWrite(V4, summen); Blynk.virtualWrite(V5, mpress); } 

Schaltpläne


Herstellungsprozess

  1. Integrierter Schaltkreis
  2. Wetterstation basierend auf Raspberry Pi
  3. Raspberry Pi 2 Wetterstation
  4. Raspberry Pi Wetterstation
  5. Beteiligen Sie sich mit Ihrer Wetterstation am IOT – CWOP
  6. Wetterstation V 2.0
  7. Model Rail Digital DCC Command Station Arduino und kostenlose App
  8. 6-Shooter:Arduino-Getränkemischstation
  9. MotionSense
  10. Arduino-betriebener Wetterballon-Datenlogger