Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Horloge Météo Arduino Temps Réel : Affichage OLED pour Heure, Date et Température

Composants et fournitures

Arduino UNO × 1
Module RTC DS3231 (Adafruit) × 1
Écran OLED Pmod (Digilent) × 1
Capteur de Température LM35 (Texas Instruments) × 1
Fils de connexion (générique) × 1
Plaque d'essai (générique) × 1

À propos de ce projet

Nous allons réaliser une horloge météo Arduino qui nous donnera l'heure, la date et la température. Le capteur LM35 nous donnera la température, le DS3231 nous donnera la date et l'heure, et nous utiliserons l'OLED pour afficher la température, la date et l'heure.

Composants requis

Les composants requis pour ce projet sont les suivants :

lm35.pdf

Schéma de câblage

Tout d'abord, connectez l'OLED à l'Arduino. L'OLED fonctionne avec l'Arduino via la communication SPI ainsi que I2C, mais nous l'avons connecté en utilisant la communication SPI. Les broches SPI sur l'Arduino sont les broches 8, 9, 10, 11 et 13. Les connexions de l'OLED avec l'Arduino sont les suivantes :

Ensuite, connectez le module DS3231 à l'Arduino. Le module DS3231 fonctionne avec l'Arduino via la communication I2C. Les broches pour la communication I2C sur l'Arduino sont SDA et SCL. Connectez le module DS3231 à l'Arduino comme suit :

Enfin, connectez le capteur LM35 à l'Arduino. Connectez la broche gauche du LM35 au 5V sur l'Arduino, la broche du milieu à A0 sur l'Arduino et la broche gauche à la masse sur l'Arduino.

Horloge Météo Arduino Temps Réel : Affichage OLED pour Heure, Date et Température

Vous pouvez trouver un schéma complet ici

Explication du code

Tout d'abord, nous avons ajouté les bibliothèques pour le module DS3231 et l'OLED. La bibliothèque Adafruit pour l'OLED a plus de fonctions comparée aux autres bibliothèques utilisées pour les OLEDs.

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

Ensuite, nous avons défini les broches où nous avons connecté le module DS3231 et l'OLED. Le module DS3231 fonctionne avec l'Arduino via la communication I2C donc nous avons utilisé les broches SDA et SCL de l'Arduino. L'OLED fonctionne avec l'Arduino via la communication SPI. Par conséquent, nous avons initialisé les broches 8, 9, 10, 11, 13 qui sont pour les communications SPI. Après cela, nous avons initialisé la broche du capteur LM35 et d'autres variables.

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;

Dans la fonction setup, nous avons déclaré la broche du capteur LM35 comme entrée car l'Arduino prendra l'entrée du capteur. Puis nous avons donné la commande au DS3231 et à l'OLED pour commencer à communiquer avec l'Arduino.

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

Les lignes ci-dessous sont commentées dans le code mais si vous utilisez le module DS3231 pour la première fois et que vous voulez régler le jour, la date et l'heure, décommentez ces lignes et réglez-les.

// rtc.setDOW(WEDNESDAY); // Régler jour de semaine à DIMANCHE
// rtc.setTime(19, 02, 0); // Régler l'heure à 12:00:00 (format 24h)
// rtc.setDate(7, 12, 2017); // Régler la date au 6 juin 2017

Puis nous avons affiché « Weather Clock » sur l'OLED pendant 5 secondes.

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);

Dans la fonction loop, nous lisons depuis le LM35 et calculons la température. Puis nous obtenons l'heure et la date et l'affichons sur l'OLED.

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());

Code Arduino Complet

#include <Wire.h>
#include <Adafruit_GFX.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); // Régler jour de semaine à DIMANCHE
  // rtc.setTime(19, 02, 0); // Régler l'heure à 12:00:00 (format 24h)
  // rtc.setDate(7, 12, 2017); // Régler la date au 6 juin 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

Extrait de code #4

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);

Extrait de code #5

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());

Extrait de code #6 (Code complet)

#include <Wire.h>
#include <Adafruit_GFX.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); // Régler jour de semaine à DIMANCHE
  // rtc.setTime(19, 02, 0); // Régler l'heure à 12:00:00 (format 24h)
  // rtc.setDate(7, 12, 2017); // Régler la date au 6 juin 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);
}

Schémas

Horloge Météo Arduino Temps Réel : Affichage OLED pour Heure, Date et Température

Processus de fabrication

  1. Créer des effets audio pilotés par capteurs avec le kit Satellite CCRMA
  2. Construire une horloge Numitron rétro avec Arduino : simple, fiable et économe en énergie
  3. Horloge Arduino temps réel pour les heures de prière islamiques
  4. Créer un jeu Pong classique sur Arduino UNO avec écran OLED – Tutoriel étape par étape
  5. Horloge à mots précise : affichage de l'heure en mots à la minute près
  6. Construire une horloge maître LED personnalisée avec alarme – Visible à 12 mètres
  7. Moniteur de Température et Horloge Temps Réel Arduino avec Écran TFT 3.2"
  8. Construire une Horloge de Berlin avec Arduino UNO – Horloge à Matrice LED DIY
  9. Construire un Réveil Fiable avec RTC DS1302 et Arduino UNO