XPsys – Sistema para ESP32 com ST7920
Irei iniciar um projeto utilizando como base o ESP32 e também um display gráfico ST7920 de 128×64 pixels juntamente com a biblioteca u8g2, não testei outro modelo de display, caso você tenha testado e funcionou comente aqui. Anteriormente fiz uma pequena programação de menus com o ST7920, porém eu utilize o exemplo dado pela biblioteca para construir sua estrutura.
OBS: A versão 1.0.1 pode funcionar no Arduíno, basta prestar atenção nos pinos configurados.
Já este projeto se chama XPsys desenvolvido do zero, tentarei deixa a estética da interface mais bonita o possível, conforme irei lançando as versões irei adicionando mais recursos. Tambem futuramente irei tentar postar uma versão para o Arduíno. Abaixo está a galeria de imagens dos menus:
Você pode utilizar este meu projeto porém com a condição de manter os meus créditos na programação podendo adicionar o seu nome caso tenha incrementado algo, este é um projeto gratuito que demanda do meu tempo, eu ficaria muito decepcionado se eu encontrar ele em algum lugar sem ter meu nome e alterar a nome do sistema e manter a estrutura igual a minha. Este Software está sobre a licença GNU GENERAL PUBLIC LICENSE Versão 3.
Recursos implementados até o momento:
- Menu com ícones gráficos
- Teste de Botões.
- Debounce por Software
Recursos a serem implementados (se a memória permitir):
- Rede wi-fi
- Teclado
- Rede Bluetooth
- Relógio
- Servidor Web
- Acesso Remoto
- Gerador de Ondas
- PWM ajustável
- Programação ajustável de pinos
- Leitor Analógico
- Janelas Pop-Up
- Utilização do dual-core
- Gerador de logs
- Leitor de cartão SD
- Controle de RBG
- Multi telas
- Leitor para bateria
- Modo de economia de energia
- Modo de hibernar
- Desbloqueio do sistema por senha
- Temporizador de GPIO
- Analisador de frequência.
- Aplicativo para Android
- Sistema de som/bip
- Versão para Arduíno (Nano, UNO ou Mega)
Todos estes itens citados acima tentarei implementar no sistema, porém irá depende do quanto cada recurso irá consumir da memória RAM e da flash (programação). Caso não seja possível implementar irei riscar da lista e também caso encontre mais algum recurso irei adicionando.
Conforme irei lançando as versões em forma de artigos, irei listadas aqui abaixo:
Uma informação em vez de usar os próprios botões da biblioteca u8g2, utilizei uma porta analógica para os botões, economizando 5 pinos do ESP32, para dividir os botões utilizei resistores como configuração de divisor de tensão, sendo possível adicionar muitos resistores, o ruim desta técnica é que quanto mais botões a leitura fica mais sensível a variações de tensão, montei um tabela utilizando a tela de leitura de “Leitura de pino dos botões”, com a tensão máxima estável de 3,30 V:
Botão | Resistor (10k Vcc) | Leitura ADC (Max 4095) | Tensão |
Esquerdo | 1 kΩ | 160 | 0,13 V |
Acima | 4,7 kΩ | 1040 | 0,84 V |
Abaixo | 8,2 kΩ | 1598 | 1,29 V |
Direito | 15 kΩ | 2110 | 1,70 V |
Selecionar | 33 kΩ | 2743 | 2,21 V |
Voltar | 47 kΩ | 3011 | 2,43 V |
Todas para a compilação estou usando o Visual Studio Code v1.34 junto com o PlatformIO 3.6.7 para desenvolver o sistema, com a biblioteca u8g2 versão 2.26.11, baixado diretamente do próprio Visual Studio Code.
Irei utilizar vários tipos de fontes que estão disponíveis na biblioteca do u8g2, e que estão listadas abaixo:
Para os ícones do menu principal utilizei esta fonte:
Para desenvolver este projeto encomendei a fabricação de uma placa que eu mesmo projetei para utilizar com o Doit ESP32 DevKit v1.
XPboard placa para o XPsys
A XPboard é uma placa para o XPsys, utilizando a interface gráfica do ST7920.
Acima estou disponibilizando os arquivos Gerber do projeto para quem quiser encomendar no site da jlcpcb ou outro site qualquer. Lembrando que deve manter os créditos do projeto.
Código
O código estou disponibilizando tanto aqui no portal quanto no GitHub, basta acessar, os detalhes sobre cada versão está na página aqui no portal de cada uma vers]ao lançada, veja abaixo: