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

Arduino OLED-Temperaturanzeige mit Echtzeituhr

Komponenten und Verbrauchsmaterialien

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

Über dieses Projekt

Wir werden eine Arduino-Wetteruhr herstellen, die uns Uhrzeit, Datum und Temperatur mitteilt. Der LM35-Sensor gibt uns die Temperatur an, der DS3231 teilt uns Datum und Uhrzeit mit und wir verwenden das OLED, um Temperatur, Datum und Uhrzeit anzuzeigen.

Erforderliche Komponenten

Die für dieses Projekt erforderlichen Komponenten sind wie folgt

  • Arduino
  • DS3231 (Echtzeituhr-Modul)
  • OLED-Display (hier wurde eine SSD1306 verwendet)
  • SSD1306.pdf
  • Lm35
  • Drähte verbinden
  • Breadboard
lm35.pdf

Schaltplan

Verbinden Sie zunächst das OLED mit dem Arduino. Das OLED funktioniert mit dem Arduino sowohl über die SPI- als auch über die I2C-Kommunikation, aber wir haben es über die SPI-Kommunikation verbunden. Die SPI-Pins des Arduino sind Pin 8, 9, 10, 11 und 13. Die Verbindungen des OLED mit dem Arduino sind wie folgt:

  • Verbinde CS des OLED mit Pin 10 des Arduino.
  • Verbinden Sie DC des OLED mit Pin 9 des Arduino.
  • Verbinden Sie RES des OLED mit Pin 8 des Arduino.
  • Verbinde D1 des OLED mit Pin 11 des Arduino.
  • Verbinde D0 des OLED mit Pin 13 des Arduino.
  • VCC des OLED mit dem 5V-Pin des Arduino verbinden.
  • Verbinden Sie GND des OLED mit dem GND-Pin des Arduino.

Verbinden Sie danach das DS3231-Modul mit dem Arduino. Das DS3231-Modul arbeitet mit dem Arduino über die I2C-Kommunikation. Die Pins für die I2C-Kommunikation auf dem Arduino sind SDA und SCL. Verbinden Sie das DS3231-Modul wie folgt mit dem Arduino:

  • Verbinden Sie GND des DS3231 mit dem GND-Pin des Arduino.
  • VCC des DS3231 mit dem 5V-Pin des Arduino verbinden.
  • SDA des  OLED mit A4 auf dem Arduino verbinden.
  • Verbinden Sie SCL auf dem OLED mit dem A5-Pin des Arduino.

Verbinden Sie am Ende den LM35-Sensor mit dem Arduino. Verbinden Sie den linken Pin von LM35 mit 5V auf dem Arduino, den mittleren Pin mit A0 auf dem Arduino und den linken Pin mit Masse auf dem Arduino.

Sie finden eine Vollbild hier

Code-Erklärung

Zunächst haben wir die Bibliotheken für das DS3231-Modul und die OLED hinzugefügt. Die Adafruit-Bibliothek für die OLED hat mehr Funktionen als die anderen Bibliotheken, die für OLEDs verwendet werden.

#include #include  

Als nächstes haben wir die Pins definiert, an denen wir das DS3231-Modul und die OLED angeschlossen haben. Das DS3231-Modul arbeitet mit dem Arduino über die I2C-Kommunikation, daher haben wir die SDA- und SCL-Pins des Arduino verwendet. Das OLED arbeitet mit dem Arduino über SPI-Kommunikation. Daher haben wir die Pins 8, 9, 10, 11, 13 initialisiert, die für die SPI-Kommunikation bestimmt sind. Danach haben wir den LM35-Sensorstift und andere Variablen initialisiert.

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 Anzeige (OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); const int sensor_pin =A0; Schwimmertemperatur; Float-Ausgabe; 

In der Setup-Funktion haben wir den LM35-Sensor-Pin als Eingang deklariert, da das Arduino den Eingang vom Sensor übernimmt. Dann gaben wir DS3231 und OLED den Befehl, mit dem Arduino zu kommunizieren.

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

Die folgenden Zeilen sind im Code kommentiert, aber wenn Sie das DS3231-Modul zum ersten Mal verwenden und Tag, Datum und Uhrzeit einstellen möchten, entkommentieren Sie diese Zeilen und stellen Sie sie ein.

 //rtc.setDOW(WEDNESDAY); // Wochentag auf SONNTAG setzen //rtc.setTime(19, 02, 0); // Stellen Sie die Uhrzeit auf 12:00:00 (24-Stunden-Format) //rtc.setDate (7, 12, 2017); // Setze das Datum auf den 6. Juni 2017 

Dann haben wir die „Wetteruhr“ für 5 Sekunden auf das OLED gedruckt.

 display.clearDisplay(); display.setTextColor (WEISS); display.setTextSize(2); display.setCursor(0,0); display.print("Wetter"); display.setCursor(0,17); display.print("Uhr"); display.display(); Verzögerung(5000); 

In der Schleifenfunktion haben wir aus dem LM35 gelesen und die Temperatur berechnet. Dann bekommen wir die Uhrzeit und das Datum und drucken es auf das OLED.

 Ausgang =analogRead(sensor_pin); temp =(Ausgabe * 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()); 

Vollständiger Arduino-Code

#include #include DS3231 rtc(SDA, SCL);#define OLED_MOSI 11#define OLED_CLK 13#define OLED_DC 9#define OLED_CS 10#define OLED_RESET 8Adafruit_SSD1306 Anzeige(OLED_MOSI, OLED_CLK,CS OLED_DC, OLED);const int sensor_pin =A0;float temp; Float-Ausgang;void setup () { PinMode (sensor_pin, INPUT); rtc.begin(); display.begin(SSD1306_SWITCHCAPVCC); //rtc.setDOW (MITTWOCH); // Wochentag auf SONNTAG setzen //rtc.setTime(19, 02, 0); // Stellen Sie die Uhrzeit auf 12:00:00 (24-Stunden-Format) //rtc.setDate (7, 12, 2017); // Stellen Sie das Datum auf den 6. Juni 2017 ein display.clearDisplay(); display.setTextColor (WEISS); display.setTextSize(2); display.setCursor(0,0); display.print("Wetter"); display.setCursor(0,17); display.print("Uhr"); display.display(); Verzögerung (5000);} Schleife ungültig () { Ausgabe =analogRead (sensor_pin); temp =(Ausgabe * 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(); Verzögerung(1000);} 

Code

  • Code-Snippet Nr. 4
  • Code-Snippet Nr. 5
  • Code-Snippet #6
Code-Snippet #4Nur-Text
display.clearDisplay(); display.setTextColor (WEISS); display.setTextSize(2); display.setCursor(0,0); display.print("Wetter"); display.setCursor(0,17); display.print("Uhr"); display.display(); Verzögerung(5000);
Code-Snippet #5Klartext
 Ausgang =analogRead (sensor_pin); temp =(Ausgabe * 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());
Code-Snippet #6Kurztext
#include #include DS3231 rtc(SDA, SCL);#define OLED_MOSI 11#define OLED_CLK 13#define OLED_DC 9#define OLED_CS 10#define OLED_RESET 8Adafruit_SSD1306 Display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_CS_RESET); sensor_pin =A0;Schwimmertemp; Float-Ausgang;void setup () { PinMode (sensor_pin, INPUT); rtc.begin(); display.begin(SSD1306_SWITCHCAPVCC); //rtc.setDOW (MITTWOCH); // Wochentag auf SONNTAG setzen //rtc.setTime(19, 02, 0); // Stellen Sie die Uhrzeit auf 12:00:00 (24-Stunden-Format) //rtc.setDate (7, 12, 2017); // Stellen Sie das Datum auf den 6. Juni 2017 ein display.clearDisplay(); display.setTextColor (WEISS); display.setTextSize(2); display.setCursor(0,0); display.print("Wetter"); display.setCursor(0,17); display.print("Uhr"); display.display(); Verzögerung (5000);} Schleife ungültig () { Ausgabe =analogRead (sensor_pin); temp =(Ausgabe * 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(); Verzögerung(1000);}

Schaltpläne


Herstellungsprozess

  1. Kontrollieren eines Effekts mit echten Sensoren
  2. DIY einfachste IV9 Numitron-Uhr mit Arduino
  3. Arduino-Uhr mit islamischen Gebetszeiten
  4. Arduino Pong-Spiel - OLED-Display
  5. Wortuhr mit Minutenauflösung der Zeit in Worten
  6. Hauptuhr
  7. Arduino-Temp. Monitor und Echtzeituhr mit 3.2 Display
  8. Berliner Uhr
  9. Mit Nextion Display spielen
  10. Einfacher Wecker mit DS1302 RTC