Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Exibição de temperatura OLED do Arduino com relógio em tempo real

Componentes e suprimentos

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

Sobre este projeto


Vamos fazer um relógio meteorológico Arduino que nos dirá a hora, a data e a temperatura. O sensor LM35 nos dará a temperatura, o DS3231 nos dirá a data e a hora, e usaremos o OLED para exibir a temperatura, data e hora.





Componentes necessários


Os componentes necessários para este projeto são os seguintes
  • Arduino
  • DS3231 (módulo de relógio em tempo real)
  • Tela OLED (um SSD1306 foi usado aqui)
  • SSD1306.pdf
  • Lm35
  • Fios de conexão
  • Placa de ensaio
lm35.pdf





Diagrama de circuito


Em primeiro lugar, conecte o OLED ao Arduino. O OLED funciona com o Arduino por meio da comunicação SPI e também da comunicação I2C, mas nós o conectamos usando a comunicação SPI. Os pinos SPI no Arduino são os pinos 8, 9, 10, 11 e 13. As conexões do OLED com o Arduino são as seguintes:
  • Conecte o CS do OLED ao pino 10 do Arduino.
  • Conecte o DC do OLED ao pino 9 do Arduino.
  • Conecte o RES do OLED ao pino 8 do Arduino.
  • Conecte D1 do OLED ao pino 11 do Arduino.
  • Conecte D0 do OLED ao pino 13 do Arduino.
  • Conecte o VCC do OLED ao pino 5V do Arduino.
  • Conecte o GND do OLED ao pino GND do Arduino.

Depois disso, conecte o módulo DS3231 ao Arduino. O módulo DS3231 funciona com o Arduino por meio de comunicação I2C. Os pinos para comunicação I2C no Arduino são SDA e SCL. Conecte o módulo DS3231 ao Arduino da seguinte maneira:
  • Conecte o GND do DS3231 ao pino GND do Arduino.
  • Conecte o VCC do DS3231 ao pino 5V do Arduino.
  • Conecte o SDA do OLED ao A4 no Arduino.
  • Conecte o SCL no OLED ao pino A5 no Arduino.

No final, conecte o sensor LM35 ao Arduino. Conecte o pino esquerdo do LM35 a 5 V no Arduino, o pino do meio no A0 no Arduino e o pino esquerdo no aterramento no Arduino.

Você pode encontrar um esquema em tamanho real aqui





Explicação do código


Em primeiro lugar, adicionamos as bibliotecas do módulo DS3231 e do OLED. A biblioteca Adafruit para OLED tem mais funções em comparação com outras bibliotecas usadas para OLEDs.
  #include #include  

A seguir, definimos os pinos onde conectamos o módulo DS3231 e o OLED. O módulo DS3231 funciona com o Arduino por meio da comunicação I2C, portanto, usamos os pinos SDA e SCL do Arduino. O OLED funciona com o Arduino por meio de comunicação SPI. Portanto, inicializamos os pinos 8, 9, 10, 11, 13 que são para as comunicações SPI. Depois disso, inicializamos o pino do sensor LM35 e outras variáveis.
  DS3231 rtc (SDA, SCL); #define OLED_MOSI 11 #define OLED_CLK 13 #define OLED_DC 9 #define OLED_CS 10 #define OLED_RESET 8 Visor Adafruit_SSD1306 (OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); const int sensor_pin =A0; float temp; saída flutuante;  

Na função de configuração, declaramos o pino do sensor LM35 como entrada porque o Arduino pegará a entrada do sensor. Em seguida, demos o comando ao DS3231 e ao OLED para iniciar a comunicação com o Arduino.
  pinMode (sensor_pin, INPUT); rtc.begin (); display.begin (SSD1306_SWITCHCAPVCC);  

As linhas abaixo são comentadas no código, mas se você estiver usando o módulo DS3231 pela primeira vez e quiser definir o dia, a data e a hora, descomente essas linhas e defina-as.
  //rtc.setDOW(WEDNESDAY); // Defina o dia da semana como DOMINGO //rtc.setTime(19, 02, 0); // Defina a hora para 12:00:00 (formato de 24 horas) //rtc.setDate(7, 12, 2017); // Defina a data para 6 de junho de 2017  

Em seguida, imprimimos o “relógio do tempo” no OLED por 5 segundos.
  display.clearDisplay (); display.setTextColor (WHITE); display.setTextSize (2); display.setCursor (0,0); display.print ("Tempo"); display.setCursor (0,17); display.print ("Relógio"); display.display (); atraso (5000);  

Na função de loop, lemos no LM35 e calculamos a temperatura. Em seguida, obtemos a hora e a data e imprimimos no OLED.
  output =analogRead (sensor_pin); temp =(saída * 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_CLK, OLED_DC, OLED_RESET),; const int sensor_pin =A0; temperatura flutuante; saída flutuante; configuração void () {pinMode (sensor_pin, INPUT); rtc.begin (); display.begin (SSD1306_SWITCHCAPVCC); //rtc.setDOW(WEDNESDAY); // Defina o dia da semana como DOMINGO //rtc.setTime(19, 02, 0); // Defina a hora para 12:00:00 (formato de 24 horas) //rtc.setDate(7, 12, 2017); // Defina a data para 6 de junho de 2017 display.clearDisplay (); display.setTextColor (WHITE); display.setTextSize (2); display.setCursor (0,0); display.print ("Tempo"); display.setCursor (0,17); display.print ("Relógio"); display.display (); atraso (5000);} void loop () {output =analogRead (sensor_pin); temp =(saída * 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 (); atraso (1000);}  

Código

  • Snippet de código 4
  • Snippet de código # 5
  • Snippet de código # 6
Snippet de código # 4 Texto simples
 display.clearDisplay (); display.setTextColor (WHITE); display.setTextSize (2); display.setCursor (0,0); display.print ("Tempo"); display.setCursor (0,17); display.print ("Relógio"); display.display (); atraso (5000); 
Snippet de código # 5 Texto simples
saída
 =analogRead (sensor_pin); temp =(saída * 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 ()); 
Snippet de código # 6 Texto simples
 #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_RESET, constD_C sensor_pin =A0; temperatura flutuante; saída flutuante; configuração void () {pinMode (sensor_pin, INPUT); rtc.begin (); display.begin (SSD1306_SWITCHCAPVCC); //rtc.setDOW(WEDNESDAY); // Defina o dia da semana como DOMINGO //rtc.setTime(19, 02, 0); // Defina a hora para 12:00:00 (formato de 24 horas) //rtc.setDate(7, 12, 2017); // Defina a data para 6 de junho de 2017 display.clearDisplay (); display.setTextColor (WHITE); display.setTextSize (2); display.setCursor (0,0); display.print ("Tempo"); display.setCursor (0,17); display.print ("Relógio"); display.display (); atraso (5000);} void loop () {output =analogRead (sensor_pin); temp =(saída * 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 (); atraso (1000);} 

Esquemas


Processo de manufatura

  1. Controle de um efeito com sensores reais
  2. DIY mais simples relógio IV9 Numitron com Arduino
  3. Relógio Arduino com horas de oração islâmica
  4. Jogo Arduino Pong - Tela OLED
  5. Word Clock com resolução de minutos em palavras
  6. Relógio mestre
  7. Arduino Temp. Monitor e relógio em tempo real com tela 3.2
  8. Relógio de Berlim
  9. Brincando com Nextion Display
  10. Despertador simples com DS1302 RTC