Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Pantalla de temperatura OLED de Arduino con reloj en tiempo real

Componentes y suministros

Arduino UNO
× 1
Adafruit DS3231 RTC
× 1
Digilent Pmod OLED
× 1
Sensor de temperatura Texas Instruments LM35
× 1
Cables de puente (genéricos)
× 1
Breadboard (genérico)
× 1

Acerca de este proyecto

Vamos a hacer un reloj meteorológico Arduino que nos dirá la hora, fecha y temperatura. El sensor LM35 nos dará la temperatura, el DS3231 nos dirá la fecha y la hora, y usaremos el OLED para mostrar la temperatura, la fecha y la hora.

Componentes necesarios

Los componentes necesarios para este proyecto son los siguientes

  • Arduino
  • DS3231 (módulo de reloj en tiempo real)
  • Pantalla OLED (aquí se utilizó un SSD1306)
  • SSD1306.pdf
  • Lm35
  • Conexión de cables
  • Protoboard
lm35.pdf

Diagrama de circuito

En primer lugar, conecte el OLED con el Arduino. El OLED funciona con Arduino a través de la comunicación SPI e I2C, pero lo hemos conectado mediante la comunicación SPI. Los pines SPI en el Arduino son los pines 8, 9, 10, 11 y 13. Las conexiones del OLED con el Arduino son las siguientes:

  • Conecte CS del OLED al pin 10 del Arduino.
  • Conecte DC del OLED al pin 9 del Arduino.
  • Conecte RES del OLED al pin 8 del Arduino.
  • Conecte D1 del OLED al pin 11 del Arduino.
  • Conecte D0 del OLED al pin 13 del Arduino.
  • Conecte VCC del OLED al pin 5V del Arduino.
  • Conecte GND del OLED al pin GND del Arduino.

Después de eso, conecte el módulo DS3231 con el Arduino. El módulo DS3231 funciona con Arduino a través de la comunicación I2C. Los pines para la comunicación I2C en el Arduino son SDA y SCL. Conecte el módulo DS3231 al Arduino de la siguiente manera:

  • Conecte GND del DS3231 al pin GND del Arduino.
  • Conecte VCC del DS3231 al pin 5V del Arduino.
  • Conecte SDA del OLED a A4 en el Arduino.
  • Conecte SCL en el OLED al pin A5 en el Arduino.

Al final, conecte el sensor LM35 con el Arduino. Conecte el pin izquierdo del LM35 a 5V en el Arduino, el pin del medio a A0 en el Arduino y el pin izquierdo a tierra en el Arduino.

Puede encontrar un esquema de tamaño completo aquí

Explicación del código

En primer lugar, agregamos las bibliotecas para el módulo DS3231 y OLED. La biblioteca Adafruit para OLED tiene más funciones en comparación con las otras bibliotecas utilizadas para OLED.

  #include #include  

A continuación, definimos los pines donde hemos conectado el módulo DS3231 y el OLED. El módulo DS3231 funciona con el Arduino a través de la comunicación I2C por lo que hemos utilizado los pines SDA y SCL del Arduino. El OLED funciona con Arduino a través de la comunicación SPI. Por lo tanto, inicializamos los pines 8, 9, 10, 11, 13 que son para las comunicaciones SPI. Después de eso, inicializamos el pin del sensor LM35 y otras 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; temperatura de flotación; salida flotante;  

En la función de configuración, declaramos el pin del sensor LM35 como entrada porque el Arduino tomará la entrada del sensor. Luego le dimos el comando a DS3231 y OLED para comenzar a comunicarse con Arduino.

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

Las siguientes líneas están comentadas en el código, pero si está utilizando el módulo DS3231 por primera vez y desea configurar el día, la fecha y la hora, descomente estas líneas y configúrelo.

  //rtc.setDOW(WEDNESDAY); // Establezca el día de la semana en DOMINGO //rtc.setTime(19, 02, 0); // Establezca la hora en 12:00:00 (formato de 24 horas) //rtc.setDate(7, 12, 2017); // Establecer la fecha al 6 de junio de 2017  

Luego imprimimos el "reloj meteorológico" en el OLED durante 5 segundos.

  display.clearDisplay (); display.setTextColor (BLANCO); display.setTextSize (2); display.setCursor (0,0); display.print ("Clima"); display.setCursor (0,17); display.print ("Reloj"); display.display (); retraso (5000);  

En la función de bucle, leemos del LM35 y calculamos la temperatura. Luego obtenemos la hora y la fecha y las imprimimos en el OLED.

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

Código Arduino completo

  #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_SCLK, OLED_CSCLK, OLED_CSCLK, OLED_CSDC); const int sensor_pin =A0; temperatura de flotación; salida flotante; configuración vacía () {pinMode (sensor_pin, INPUT); rtc.begin (); display.begin (SSD1306_SWITCHCAPVCC); //rtc.setDOW(WEDNESDAY); // Establezca el día de la semana en DOMINGO //rtc.setTime(19, 02, 0); // Establezca la hora en 12:00:00 (formato de 24 horas) //rtc.setDate(7, 12, 2017); // Establecer la fecha al 6 de junio de 2017 display.clearDisplay (); display.setTextColor (BLANCO); display.setTextSize (2); display.setCursor (0,0); display.print ("Clima"); display.setCursor (0,17); display.print ("Reloj"); display.display (); delay (5000);} bucle vacío () {salida =analogRead (sensor_pin); temp =(salida * 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 (); retraso (1000);}  

Código

  • Fragmento de código n. ° 4
  • Fragmento de código n. ° 5
  • Fragmento de código n. ° 6
Fragmento de código n.º 4 Texto sin formato
 display.clearDisplay (); display.setTextColor (BLANCO); display.setTextSize (2); display.setCursor (0,0); display.print ("Clima"); display.setCursor (0,17); display.print ("Reloj"); display.display (); retraso (5000); 
Fragmento de código n. ° 5 Texto sin formato
 salida =analogRead (sensor_pin); temp =(salida * 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 ()); 
Fragmento de código n. ° 6 Texto sin formato
 #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 pantalla (OLED_MOSI, OLED_CLK, OLED_CESDC, OLED_CSDC); sensor_pin =A0; temperatura de flotación; salida flotante; configuración vacía () {pinMode (sensor_pin, INPUT); rtc.begin (); display.begin (SSD1306_SWITCHCAPVCC); //rtc.setDOW(WEDNESDAY); // Establezca el día de la semana en DOMINGO //rtc.setTime(19, 02, 0); // Establezca la hora en 12:00:00 (formato de 24 horas) //rtc.setDate(7, 12, 2017); // Establecer la fecha al 6 de junio de 2017 display.clearDisplay (); display.setTextColor (BLANCO); display.setTextSize (2); display.setCursor (0,0); display.print ("Clima"); display.setCursor (0,17); display.print ("Reloj"); display.display (); delay (5000);} bucle vacío () {salida =analogRead (sensor_pin); temp =(salida * 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 (); retraso (1000);} 

Esquemas


Proceso de manufactura

  1. Control de un efecto con sensores reales
  2. El reloj IV9 Numitron más simple de bricolaje con Arduino
  3. Reloj Arduino con tiempos de oración islámicos
  4. Juego Arduino Pong - Pantalla OLED
  5. Word Clock con resolución de tiempo mínima en palabras
  6. Reloj maestro
  7. Arduino Temp. Monitor y reloj en tiempo real con pantalla 3.2
  8. Reloj de Berlín
  9. Jugando con Nextion Display
  10. TM1637 Reloj digital con configuración de hora y funcionalidad de alarma
  11. Reloj despertador simple con DS1302 RTC