Um entusiasta desenvolveu um calendário de mesa com ESP32 e display LCD 16×2 para consultar automaticamente os próximos compromissos armazenados no Nextcloud. O dispositivo também reúne eventos de diferentes calendários em uma única tela, evitando a necessidade de abrir um celular ou computador para verificar a agenda.
Publicado no Reddit pelo usuário wemayln, o projeto usa um ESP32-WROOM/ESP32 DevKit conectado diretamente a um LCD 1602A compatível com o controlador HD44780. O conjunto foi instalado em uma pequena caixa preta inclinada, com aparência de relógio-calendário de mesa.
Consulta e atualização dos eventos
Após a conexão ao Wi-Fi, o microcontrolador acessa o servidor Nextcloud por CalDAV e HTTP(S). O firmware identifica os calendários disponíveis, baixa os eventos e os organiza em ordem cronológica. Também há suporte a calendários externos assinados pelo Nextcloud, o que permite exibir compromissos originalmente vindos do Google Calendar sem uma integração separada no ESP32.
Os dados chegam no formato iCalendar/ICS e são processados localmente. O software foi desenvolvido no ambiente Arduino para ESP32 e utiliza as bibliotecas WiFi, HTTPClient, WiFiClientSecure e LiquidCrystal.
A tela exibe eventos dos próximos sete dias e alterna entre eles a cada cinco segundos. A lista é atualizada a cada 30 minutos, enquanto o relógio interno é sincronizado pela internet por meio do NTP. Como o LCD tem apenas duas linhas com 16 caracteres cada, o firmware encurta e limpa os textos antes da exibição.
A escolha do display menor foi intencional. Ao responder a uma pergunta no Reddit sobre o uso de uma tela maior, o autor afirmou que pretendia manter o equipamento minimalista, econômico e com aparência retrô.
Testes e hardware
A primeira versão usou um ESP32-C3 Super Mini, mas apresentou falhas persistentes de autenticação no Wi-Fi da rede do criador, mesmo com sinal forte. O ESP32-WROOM tradicional foi escolhido para a versão final por ter se mostrado mais confiável.
O projeto também enfrentou um erro do tipo stack-canary. Uma implementação anterior armazenava muitas URLs de objetos DAV em variáveis locais; a falha foi resolvida com um processamento mais direto dos dados.
Além do microcontrolador e da tela, o circuito utiliza um potenciômetro de 10 kΩ para ajuste de contraste e alimentação de 5 V via USB. O LCD é controlado diretamente por seis GPIOs, sem adaptador I2C.







