Projeto de relógio digital com display OLED 128x64, RTC DS3231 e sensor DHT22, desenvolvido para exibição de hora, data, temperatura e umidade, incluindo interface de configuração utilizando apenas dois botões.
Projeto em equipe realizado em 2026.1 para disciplina de Projetos de Hardware e Software - USF.
- Display OLED 128x64 monocromático
- Relógio em tempo real utilizando RTC DS3231
- Exibição de:
- Hora
- Data
- Dia da semana
- Temperatura
- Umidade
- Interface gráfica otimizada para OLED
- Sistema de estados (Normal / Configuração)
- Configuração de data e hora utilizando apenas dois botões
- Timeout automático no modo configuração
- Ícone bitmap customizado
O sistema foi dividido em dois estados principais:
-
NORMAL
- Responsável pela renderização da interface principal
- Atualização periódica do relógio e sensores
-
CONFIG
- Responsável pela configuração da data e hora
- Navegação por campos utilizando dois botões
| Função | Responsabilidade |
|---|---|
rotinaNormal() |
Interface principal |
rotinaConfig() |
Controle do modo configuração |
verificaEntradaConfig() |
Detecta entrada no modo config |
incrementarCampo() |
Atualiza o valor do campo atual |
proximoCampo() |
Navega entre campos |
salvarConfig() |
Atualiza o RTC |
desenharTelaConfig() |
Renderiza a tela de configuração |
| Componente | Função |
|---|---|
| Arduino Uno/Nano | Controle principal |
| OLED SSD1306 128x64 | Interface gráfica |
| RTC DS3231 | Relógio em tempo real |
| DHT22 | Sensor de temperatura e umidade |
| 2 Push Buttons | Interface de configuração |
- RTClib
- Adafruit_GFX
- Adafruit_SSD1306
- dht
- Wire
O sistema de configuração foi projetado para funcionar utilizando apenas dois botões, reduzindo a complexidade do hardware e mantendo acessibilidade.
Foi utilizado um modelo baseado em máquina de estados para simplificar a navegação entre os modos NORMAL e CONFIG.
- Ajuste individual de segundos
- Persistência adicional de configurações
- Alarmes
- Modo sleep para economia de energia
- Animações no display
- Indicador de tendência de temperatura/umidade
- Buzzer para feedback dos botões
O relógio terá dois estados:
-
Normal: onde mostra e atualiza a hora.
-
Configuracao: onde recebe inputs para configurar a hora.
Ele inicia no Normal e passa para o Configuracao se qualquer dos botões forem pressionados segurando por 2 segundos e retorna ao Normal quando não realiza uma ação por algum tempo (10 segundos).
Fica se comunicando com os componentes (RTC e DHT22) e atualizando a tela.
Passa para o estado Configuracao se qualquer dos botões forem pressionados segurando por 2 segundos.
Permite configurar o horário do RTC utilizando os botões.
Inicia uma variável que verifica o timeout do usuário (tempo sem input do usuário).
Se o timeout chega a 10 segundos, retorno o estado do relógio para Normal.
Campos configuráveis:
HORA -> MINUTO -> DIA -> MES -> ANO -> SALVAR
Circularidade dos campos configuráveis:
hora: 0..23
minuto: 0..59
dia: 1..31
mes: 1..12
ano: 2024..2035
diaSemana: 0..6



