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

Affichage de la température Arduino OLED avec horloge en temps réel

Composants et fournitures

Arduino UNO
× 1
Adafruit DS3231 RTC
× 1
Digilent Pmod OLED
× 1
Capteur de température Texas Instruments LM35
× 1
Câbles de raccordement (générique)
× 1
Planche à pain (générique)
× 1

À propos de ce projet

Nous allons fabriquer une horloge météo Arduino qui nous indiquera l'heure, la date et la température. Le capteur LM35 nous donnera la température, le DS3231 nous indiquera 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

  • Arduino
  • DS3231 (Module d'horloge temps réel)
  • Écran OLED (un SSD1306 a été utilisé ici)
  • SSD1306.pdf
  • Lm35
  • Câbles de connexion
  • Planche à pain
lm35.pdf

Schéma de circuit

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

  • Connectez CS de l'OLED à la broche 10 de l'Arduino.
  • Connectez le courant continu de l'OLED à la broche 9 de l'Arduino.
  • Connectez RES de l'OLED à la broche 8 de l'Arduino.
  • Connectez D1 de l'OLED à la broche 11 de l'Arduino.
  • Connectez D0 de l'OLED à la broche 13 de l'Arduino.
  • Connectez le VCC de l'OLED à la broche 5 V de l'Arduino.
  • Connectez GND de l'OLED à la broche GND de l'Arduino.

Après cela, 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 :

  • Connectez GND du DS3231 à la broche GND de l'Arduino.
  • Connectez le VCC du DS3231 à la broche 5V de l'Arduino.
  • Connectez le SDA de l'OLED à l'A4 sur l'Arduino.
  • Connectez SCL sur l'OLED à la broche A5 sur l'Arduino.

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

Vous pouvez trouver un schéma grandeur nature 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 que les autres bibliothèques utilisées pour les OLED.

#include #include  

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, nous avons donc utilisé les broches SDA et SCL de l'Arduino. L'OLED fonctionne avec l'Arduino via la communication SPI. Nous avons donc initialisé les broches 8, 9, 10, 11, 13 qui sont destinées aux 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; température flottante ; sortie flottante ;

Dans la fonction de configuration, nous avons déclaré la broche du capteur LM35 comme entrée car l'Arduino prendra l'entrée du capteur. Ensuite, nous avons donné la commande à DS3231 et 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 souhaitez régler le jour, la date et l'heure, décommentez ces lignes et réglez-les.

 //rtc.setDOW(MERCREDI); // Définir le jour de la semaine sur DIMANCHE //rtc.setTime(19, 02, 0); // Réglez l'heure sur 12:00:00 (format 24h) //rtc.setDate (7, 12, 2017); // Fixe la date au 6 juin 2017 

Ensuite, nous avons imprimé l'« horloge météo » sur l'OLED pendant 5 secondes.

 display.clearDisplay(); display.setTextColor(BLANC); display.setTextSize(2); display.setCursor(0,0); display.print(" Météo "); display.setCursor(0,17); display.print(" Horloge "); display.display(); retard (5000); 

Dans la fonction de boucle, nous lisons à partir du LM35 et calculons la température. Ensuite, nous obtenons l'heure et la date et l'imprimons sur l'OLED.

 output =analogRead(sensor_pin); temp =(sortie*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 #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_CS, OLED_DC, 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(MERCREDI); // Définir le jour de la semaine sur DIMANCHE //rtc.setTime(19, 02, 0); // Réglez l'heure sur 12:00:00 (format 24h) //rtc.setDate (7, 12, 2017); // Fixe la date au 6 juin 2017 display.clearDisplay(); display.setTextColor(BLANC); display.setTextSize(2); display.setCursor(0,0); display.print(" Météo "); display.setCursor(0,17); display.print(" Horloge "); display.display(); delay(5000);}boucle vide(){ output =analogRead(sensor_pin); temp =(sortie*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(); retard(1000);} 

Code

  • Extrait de code n° 4
  • Extrait de code n°5
  • Extrait de code n° 6
Extrait de code n°4Texte brut
 display.clearDisplay(); display.setTextColor(BLANC); display.setTextSize(2); display.setCursor(0,0); display.print(" Météo "); display.setCursor(0,17); display.print(" Horloge "); display.display(); retard (5000);
Extrait de code n°5Texte brut
 sortie =analogRead(sensor_pin); temp =(sortie*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 n°6Texte brut
#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_CSET); sensor_pin =A0;température flottante; float output;void setup() { pinMode(sensor_pin,INPUT); rtc.begin(); display.begin(SSD1306_SWITCHCAPVCC); //rtc.setDOW(MERCREDI); // Définir le jour de la semaine sur DIMANCHE //rtc.setTime(19, 02, 0); // Réglez l'heure sur 12:00:00 (format 24h) //rtc.setDate (7, 12, 2017); // Fixe la date au 6 juin 2017 display.clearDisplay(); display.setTextColor(BLANC); display.setTextSize(2); display.setCursor(0,0); display.print(" Météo "); display.setCursor(0,17); display.print(" Horloge "); display.display(); delay(5000);}boucle vide(){ output =analogRead(sensor_pin); temp =(sortie*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(); retard(1000);}

Schémas


Processus de fabrication

  1. Contrôler un effet avec de vrais capteurs
  2. horloge IV9 Numitron DIY la plus simple avec Arduino
  3. Horloge Arduino avec heures de prière islamique
  4. Jeu Arduino Pong - Écran OLED
  5. Word Clock avec résolution en minutes du temps en mots
  6. horloge maîtresse
  7. Arduino Temp. Moniteur et horloge en temps réel avec affichage 3.2
  8. Horloge de Berlin
  9. Réveil simple avec DS1302 RTC