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

Arduino Echtzeit-Wetteruhr: OLED-Display für Zeit, Datum & Temperatur

Komponenten und Materialien

Arduino UNO × 1
Adafruit DS3231 RTC (Echtzeituhr) × 1
Digilent Pmod OLED (SSD1306) × 1
Texas Instruments LM35 Temperatursensor × 1
Jumper-Kabel (generisch) × 1
Breadboard (generisch) × 1

Über dieses Projekt

Wir bauen eine Arduino-Wetteruhr, die uns Zeit, Datum und Temperatur anzeigt. Der LM35-Sensor liefert die Temperatur, das DS3231-Modul Datum und Uhrzeit, und das OLED-Display zeigt alle drei Werte an.

Benötigte Komponenten

lm35.pdf (Datenblatt)

Schaltplan

Zuerst das OLED mit dem Arduino verbinden. Das OLED funktioniert über SPI sowie I2C, hier verwenden wir SPI. Die SPI-Pins am Arduino sind 8, 9, 10, 11 und 13. Die Verbindungen:

Dann das DS3231-Modul mit dem Arduino verbinden. Es arbeitet über I2C. Die I2C-Pins am Arduino sind SDA (A4) und SCL (A5):

Zum Schluss den LM35-Sensor anschließen: linker Pin → 5V, mittlerer Pin → A0, rechter Pin → GND.

Arduino Echtzeit-Wetteruhr: OLED-Display für Zeit, Datum & Temperatur

Einen vollständigen Schaltplan finden Sie hier.

Code-Erklärung

Zuerst werden die Bibliotheken für DS3231 und OLED eingebunden. Die Adafruit-Bibliothek für das OLED bietet mehr Funktionen als andere OLED-Bibliotheken.

#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <DS3231.h>

Dann die Pins definieren, an denen DS3231 und OLED angeschlossen sind. DS3231 nutzt I2C (SDA, SCL). Das OLED nutzt SPI, daher Initialisierung der Pins 8, 9, 10, 11, 13. Danach LM35-Sensor-Pin und weitere Variablen initialisieren.

DS3231 rtc(SDA, SCL);
#define OLED_MOSI 11
#define OLED_CLK 13
#define OLED_DC 9
#define OLED_CS 10
#define OLED_RESET 8
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

const int sensor_pin = A0;
float temp;
float output;

In setup() wird der LM35-Pin als Eingang deklariert (Arduino liest vom Sensor). Dann DS3231 und OLED initialisieren.

pinMode(sensor_pin, INPUT);
rtc.begin();
display.begin(SSD1306_SWITCHCAPVCC);

Die folgenden Zeilen sind im Code auskommentiert. Wenn Sie das DS3231-Modul zum ersten Mal nutzen und Tag, Datum und Uhrzeit einstellen möchten, diese Zeilen einkommentieren und Werte setzen:


// rtc.setDOW(WEDNESDAY);     // Wochentag setzen
// rtc.setTime(19, 02, 0);    // Zeit setzen: 19:02:00 (24h-Format)
// rtc.setDate(7, 12, 2017);  // Datum setzen: 7.12.2017

Dann „Weather Clock“ für 5 Sekunden auf dem OLED anzeigen:

display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,0);
display.print(" Weather ");
display.setCursor(0,17);
display.print(" Clock ");
display.display();
delay(5000);

In loop() den LM35 auslesen, Temperatur berechnen, Zeit und Datum holen und auf dem OLED ausgeben:

output = analogRead(sensor_pin);
temp = (output * 500) / 1023;

display.clearDisplay();
display.setTextSize(2);
display.setCursor(20,0);
display.print(rtc.getTimeStr());
display.setTextSize(1);
display.setCursor(0,15);
display.print(rtc.getDateStr());
display.setTextSize(1);
display.setCursor(70,15);
display.print(rtc.getDOWStr());
display.setTextSize(1);
display.setCursor(20,25);
display.print("Temp: ");
display.print(temp);
display.print("C");
display.display();
delay(1000);

Vollständiger Arduino-Code

#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <DS3231.h>

DS3231 rtc(SDA, SCL);
#define OLED_MOSI 11
#define OLED_CLK 13
#define OLED_DC 9
#define OLED_CS 10
#define OLED_RESET 8
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

const int sensor_pin = A0;
float temp;
float output;

void setup() {
  pinMode(sensor_pin, INPUT);
  rtc.begin();
  display.begin(SSD1306_SWITCHCAPVCC);

  // rtc.setDOW(WEDNESDAY);
  // rtc.setTime(19, 02, 0);
  // rtc.setDate(7, 12, 2017);

  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(2);
  display.setCursor(0,0);
  display.print(" Weather ");
  display.setCursor(0,17);
  display.print(" Clock ");
  display.display();
  delay(5000);
}

void loop() {
  output = analogRead(sensor_pin);
  temp = (output * 500) / 1023;

  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(20,0);
  display.print(rtc.getTimeStr());
  display.setTextSize(1);
  display.setCursor(0,15);
  display.print(rtc.getDateStr());
  display.setTextSize(1);
  display.setCursor(70,15);
  display.print(rtc.getDOWStr());
  display.setTextSize(1);
  display.setCursor(20,25);
  display.print("Temp: ");
  display.print(temp);
  display.print("C");
  display.display();
  delay(1000);
}

Code-Snippets

Startbildschirm

display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,0);
display.print(" Weather ");
display.setCursor(0,17);
display.print(" Clock ");
display.display();
delay(5000);

Hauptloop-Auslesen und Anzeigen

output = analogRead(sensor_pin);
temp = (output * 500) / 1023;
display.clearDisplay();
display.setTextSize(2);
display.setCursor(20,0);
display.print(rtc.getTimeStr());
display.setTextSize(1);
display.setCursor(0,15);
display.print(rtc.getDateStr());
display.setTextSize(1);
display.setCursor(70,15);
display.print(rtc.getDOWStr());

Schaltplan

Arduino Echtzeit-Wetteruhr: OLED-Display für Zeit, Datum & Temperatur

Herstellungsprozess

  1. Sensor-gesteuerte Audio-Effekte mit dem Satellite CCRMA Kit bauen
  2. Retro-Numitron-Uhr mit Arduino bauen: Einfach, zuverlässig & energieeffizient
  3. Arduino Echtzeituhr für islamische Gebetszeiten bauen
  4. Klassisches Pong-Spiel auf Arduino UNO mit OLED-Display bauen – Schritt-für-Schritt-Tutorial
  5. Präzisions-Wortuhr: Minuten-genaue Zeitanzeige in Worten
  6. Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
  7. Arduino Temperaturoverwachung & Echtzeituhr mit 3,2″ TFT-Display
  8. Berlin-Uhr mit Arduino UNO bauen – DIY LED-Matrix-Uhr
  9. Interaktives Nextion HMI Projekt mit Arduino Mega und Sensoren
  10. Zuverlässigen Wecker mit DS1302 RTC und Arduino UNO bauen