Anzeige von Datum, Uhrzeit und Temperatur mit XinaBox - Gunook
Anzeige von Datum, Uhrzeit und Temperatur mit XinaBox - Gunook
Anonim
Datums-, Uhrzeit- und Temperaturanzeige mit XinaBox
Datums-, Uhrzeit- und Temperaturanzeige mit XinaBox

Cooles OLED-Display mit Datum, Uhrzeit und Temperatur in Celsius und Fahrenheit mit Xinabox xChips basierend auf ESP8266.

Schritt 1: Dinge, die in diesem Projekt verwendet werden

Hardware-Komponenten

  • XinaBox IP01 x 1 xChip USB Programmierer basierend auf FT232R von FTDI Limited
  • XinaBox CW01 x 1 xChip Wi-Fi Core basierend auf ESP8266 Wi-Fi Modul
  • XinaBox SW01 x 1 xChip Temperatur-, Feuchte- und Luftdrucksensor basierend auf dem BME280 von Bosch.
  • XinaBox OD01 x 1 xChip 128x64 Pixel OLED-Display
  • XinaBox PU01 x 1 xChip USB (Typ A) Netzteil
  • XinaBox XC10 x 1 xChip-Bus-Anschlüsse
  • 5V USB-Netzteil x 1

Software-Apps und Online-Dienste

Arduino-IDE

Schritt 2: Geschichte

Einführung

Ich habe dieses Projekt erstellt, um das Datum, die UCT-Zeit und die Temperatur mit XinaBox xChips anzuzeigen, die das I2C-Busprotokoll verwenden. Die Uhrzeit wurde von einem Google NTP-Server abgerufen. Die Umgebungstemperatur wurde mit dem SW01 xChip gemessen und auf dem OD01 xChip OLED Display in Celsius und Fahrenheit angezeigt. Das Bild unten zeigt das OLED-Display.

Bild
Bild

OLED-Anzeige von Datum, Uhrzeit und Temperatur

Schritt 3: Notwendige Dateien herunterladen

Für dieses Projekt benötigen Sie folgende Bibliotheken und Software.

  • Arduino IDE - Entwicklungssoftware, in der Sie programmieren
  • xSW01 - Temperatursensorbibliothek
  • xCore - Kernbibliothek für XinaBox xChips
  • xOD01 - OLED-Display-Bibliothek.
  • Zeitzone - Bibliothek zur Auswahl Ihrer Zeitzone
  • Zeit - Um Zeitfunktionen zu verwenden
  • NTPClient - Ermöglicht es Ihnen, Zeit von einem Server zu erhalten
  • Sie müssen auch die ESP8266-Karte herunterladen und die mitgelieferten Anweisungen befolgen, um die Karte installieren zu lassen

Nach dem Download installieren Sie die IDE und die Bibliotheken. Es ist ziemlich einfach, wenn Sie die Anweisungen befolgen.

Schritt 4: Zusammenbauen

Ihr Haupt-xChip, der das Programm ausführt und verarbeitet, ist der CW01. Es basiert auf dem ESP8266 WiFi-Modul und verwendet das I2C-Busprotokoll. Um auf den CW01 zu programmieren, benötigen Sie einen Programmier-xChip. Das IP01 ermöglicht es uns, den CW01 über den USB-Port an unserem Computer zu programmieren, indem wir einfach die beiden xChips mit XC10-Bussteckern zusammenklicken und in den USB-Port stecken. Keine Verkabelung und kein Löten erforderlich. Zu beachten ist die Ausrichtung der xChip-Identifikationsnamen. Sie sollten alle in die gleiche Richtung ausgerichtet sein. Sie sollten nun die folgende Einrichtung haben.

Bild
Bild

Klicken Sie CW01 und IP01 zusammen und stecken Sie es in den USB-Anschluss Ihres Computers

Wenn Sie mit xChips vertraut sind, können Sie jeden xChip mit XC10-Bussteckern, die Sie für Ihr Projekt verwenden möchten, miteinander verbinden und dann in den USB-Port stecken. Wir werden den Temperatursensor SW01 und das OLED-Display OD01 verwenden.

Bild
Bild

Sie können alle Ihre Chips miteinander verbinden und dann in Ihren USB-Port stecken

Schritt 5: Programm

Laden Sie den folgenden Code herunter oder kopieren Sie ihn und fügen Sie ihn in Ihre Arduino-IDE ein. Wenn Sie den Code nicht ändern, geben Sie einfach Ihre WLAN-Daten in die entsprechenden Felder ein, wie unten gezeigt. Geben Sie auch einen zuverlässigen NTP-Zeitserver ein. Ich habe für dieses Projekt einen Google-Zeitserver verwendet.

Bild
Bild

WLAN-Details und NTP-Zeitserver

Jetzt kompilieren und hochladen. Stellen Sie sicher, dass Sie den richtigen COM-Port und das richtige Board im Tools-Menü in der Arduino IDE ausgewählt haben. Nach dem Hochladen sollten Uhrzeit, Datum und Temperatur wie folgt angezeigt werden.

Bild
Bild

Nach dem Hochladen sollten Sie Folgendes sehen

Schritt 6: Machen Sie es tragbar

Sie können nun das Gerät von Ihrem USB-Port entfernen und jeden xChip durch einfaches Auseinanderziehen trennen. Da die Programmierung abgeschlossen ist, wird IP01 nicht mehr benötigt. Sie können Ihr Projekt nun beliebig verbinden, solange die Identifikationsnamen alle in die gleiche Richtung orientiert sind. Um unser Gerät mit Strom zu versorgen, verwenden wir den PU01. Dies ermöglicht es uns, es über eine normale Powerbank oder ein beliebiges 5V-USB-Netzteil mit Strom zu versorgen. Ich habe meine wie unten gezeigt angeschlossen.

Bild
Bild

Endmontage. xChips können beliebig verbunden werden.

Schritt 7: Fazit

Dieses Projekt dauert 20 Minuten. Wenn Sie die Uhrzeit an Ihrem Standort haben möchten, sollten Sie sich den Beispielcode in der Timezone-Bibliothek ansehen oder mit der UTC-Zeit rechnen. Es wurden keine Drähte verwendet und es war kein Löten erforderlich.

Schritt 8: Code

Date_Time_Temp.ino Arduino Geben Sie einfach Ihre WLAN-Daten in die entsprechenden Felder ein und laden Sie sie auf Ihr Board hoch.

#include // Kernbibliothek für XinaBox xCHIPS einschließen

#include // OLED-Display-Bibliothek einbinden #include // Temperatursensor-Bibliothek einbinden #include // ESP8266WiFi-Funktionalität einbinden #include // Zeitbibliotheken einschließen #include #include #include #include #include xSW01 SW01; // NTP-Eigenschaften definieren #define ntpOffset 60 * 60 // in Sekunden #define ntpInterval 60 * 1000 // in Millisekunden // füge einen zuverlässigen NTP-Zeitserver zwischen den doppelten Anführungszeichen ein // hier habe ich einen Google NTP-Zeitserver verwendet # ntpAddress "time1.google.com" definieren // NTP-UDP-Client einrichten WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, ntpAddress, ntpOffset, ntpInterval); // Temperaturvariable float tempC; // celsius float tempF; // fahrenheit // deine WLAN-Details const char* wifi_ssid = "XinaBox"; // Ihre WLAN-SSID const char* wifi_pass = "RapidIoT"; // Ihr WLAN-Passwort // Datums- und Zeitvariable String date; Zeichenfolge clktime; // Variablen mit Tagen und Monaten const char * days = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"}; const char * Monate = {"Jan", "Feb", "Mar", "Apr", "Mai", "June", "Juli", "Aug", "Sep", "Oct", "Nov ", "Dez."}; const char * ampm = {"AM", "PM"}; Void-Setup () {tempC = tempF = 0; // Temperatur auf Null initialisieren timeClient.begin(); // Starten Sie den NTP UDP-Client // Starten Sie die serielle Kommunikation Serial.begin(115200); // i2c-Kommunikation starten und Pins setzen Wire.begin (2, 14); // Temperatursensor starten SW01.begin (); // OLED-Anzeige starten OLED.begin (); // OLED-Anzeige löschen OD01.clear (); // WLAN-Verbindung herstellen wifi_connect(); Verzögerung (1000); aufrechtzuerhalten. Void loop () {// ausführen, wenn eine WLAN-Verbindung hergestellt ist if (WiFi.status () == WL_CONNECTED) { SW01.poll (); // Temperatur tempC lesen = SW01.getTempC (); // Temperatur in Celsius speichern tempF = SW01.getTempF (); // Speichertemperatur in Fahrenheit date = ""; // Datumsvariable löschen clktime = ""; // Zeitvariable löschen // den NTP-Client aktualisieren und den Unix-UTC-Zeitstempel abrufen timeClient.update(); unsigned long epochTime = timeClient.getEpochTime(); // empfangenen Zeitstempel in time_t umwandeln Objekt time_t utc; utc = Epochenzeit; // UTC-Zeit TimeChangeRule utcRule = {"UTC", Last, Sun, Mar, 1, 0}; Zeitzone UTC (utcRule, utcRule); // Zeitvariablen formatieren date += days[weekday(utc) - 1]; Datum += ", "; Datum += Monate[Monat(utc) - 1]; Datum += " "; Datum += Tag(utc); Datum += ", "; Datum += Jahr(utc); // formatiere die Uhrzeit in das 12-Stunden-Format mit AM/PM und ohne Sekunden clktime += hourFormat12(utc); clktime += ":"; wenn (Minute(utc)