Aprenda a montar um Tetris com ESP32-C3 Super Mini

Neste projeto, vamos desenvolver um jogo de Tetris com ESP32-C3 Super Mini, um sensor MPU6050, dois botões, um display TFT e um buzzer.

A ideia é criar uma versão simples e interativa do jogo, utilizando a inclinação do conjunto para controlar o movimento das peças.

Você poderá movimentar as peças para os lados inclinando o projeto e utilizar os botões para realizar a rotação. Além disso, o projeto conta com menu, sistema de pontuação, efeitos sonoros, animações e tela de Game Over.

Componentes utilizados

Para desenvolver o projeto, serão utilizados:

Função de cada componente

ESP32-C3 Super Mini

O ESP32-C3 Super Mini é a “cabeça” de todo o sistema. É nele que será realizado todo o processamento do jogo, além do controle dos demais componentes.

Neste projeto, o ESP32-C3 será responsável por interpretar os comandos do MPU6050 e dos botões, executar a lógica do Tetris e controlar as informações exibidas no display TFT.

MPU6050

O MPU6050 possui acelerômetro e giroscópio, permitindo detectar a inclinação e os movimentos do conjunto.

Neste projeto, utilizaremos essas características para controlar as peças do Tetris. Ao inclinar o conjunto para os lados, podemos movimentar a peça horizontalmente.

Também utilizaremos a inclinação para cima e para baixo na navegação do menu.

Botões

Os dois botões estarão posicionados nas laterais do projeto.

Eles terão diferentes funções dependendo da situação:

  • Selecionar opções no menu;
  • Voltar ao menu principal;
  • Girar as peças durante o jogo no sentido horário e anti-horário.

Buzzer

O buzzer será utilizado para gerar o retorno sonoro das ações realizadas pelo jogador, proporcionando uma maior interação durante a utilização do jogo.

Ele também será utilizado para reproduzir efeitos sonoros em diferentes momentos, como movimentação, rotação, remoção de linhas e Game Over.

Funcionamento do projeto


Menu principal

Ao ligar o sistema, será apresentado o menu principal do Tetris.

Nele, o usuário poderá selecionar entre:

  • Novo Jogo
  • Créditos

A navegação pelo menu é realizada inclinando o conjunto para cima ou para baixo utilizando o MPU6050.


Ao selecionar Novo Jogo, o sistema inicia a partida e apresenta a tela padrão do Tetris.

Funcionamento do jogo

Após iniciar uma partida, as peças começam a descer, seguindo um funcionamento semelhante ao Tetris original.

O jogador pode movimentar as peças lateralmente inclinando o conjunto para a esquerda ou para a direita. Os botões são utilizados para girar as peças.

Quando os blocos são empilhados e completam uma linha horizontal, essa linha é eliminada e o jogador recebe 100 pontos.

Caso os blocos sejam empilhados até atingir o limite superior da área de jogo, a partida é encerrada.

Nesse momento, é apresentada a tela de Game Over, acompanhada de um efeito sonoro. Depois, o sistema retorna ao menu principal.

Desenvolvimento do projeto

Para facilitar o desenvolvimento do Tetris com ESP32-C3 Super Mini, o projeto foi dividido em etapas.

Dessa forma, cada função pôde ser testada individualmente antes de ser incorporada ao restante do código.

1. Calibração do MPU6050

O primeiro passo foi realizar a calibração do MPU6050.

Como precisamos estabelecer um ponto de referência para os movimentos, definimos como “0” a posição em que o display apresenta melhor visibilidade.

A partir desse referencial, foram identificadas as variações de inclinação necessárias para reconhecer os movimentos para cima, para baixo, para a esquerda e para a direita.

2. Desenvolvimento do display e menu

Em seguida, foi desenvolvida a interface no display, começando pela criação do menu principal.

Depois, foi implementada a interação com o MPU6050 para permitir a navegação pelo menu utilizando a inclinação do conjunto.

3. Adição dos botões

Após o funcionamento básico do menu, foram adicionados os botões.

Eles passaram a ser utilizados para:

  • Selecionar uma opção;
  • Retornar ao menu principal;
  • Girar as peças durante o jogo.

4. Adição do buzzer

O buzzer foi incorporado ao projeto para gerar sons durante as interações, como movimentos e acionamento do botão Select.

5. Desenvolvimento da área de jogo

Com os controles básicos funcionando, foi criado o molde da área de jogo.

Em seguida, foram adicionados os primeiros blocos e implementado o deslocamento das peças.

6. Colisão com a parte inferior

Depois, foi desenvolvido o sistema de detecção de colisão, fazendo com que as peças parassem ao atingir a parte inferior da área de jogo ou outros blocos já posicionados.

7. Movimento lateral e rotação

Com a colisão funcionando, foram adicionados:

  • Movimento lateral das peças;
  • Rotação das peças;
  • Controle desses movimentos pelo MPU6050 e pelos botões.

8. Empilhamento dos blocos

Em seguida, foi realizada a calibração e implementação do sistema de empilhamento dos blocos, permitindo que as peças permanecessem na posição em que foram colocadas após a colisão.

9. Detecção e remoção de linhas

Foi adicionada a detecção de linhas completas.

Quando uma linha horizontal é preenchida, o sistema identifica a linha, realiza sua remoção e reorganiza os blocos restantes.

Também foi adicionada uma animação durante a remoção da linha.

10. Sistema de pontuação

Após a implementação das linhas, foi adicionado o contador de pontos, permitindo contabilizar a pontuação do jogador conforme as linhas são eliminadas.

Cada linha completa e removida adiciona 100 pontos à pontuação.

11. Limite superior e Game Over

Foi adicionada uma borda superior para determinar o limite máximo da área de jogo.

Quando os blocos ultrapassam esse limite, o sistema encerra a partida e apresenta a tela de Game Over.


Também foram adicionados sons para indicar o encerramento da partida.

12. Efeitos sonoros e animações

Com o funcionamento principal concluído, foram adicionados efeitos sonoros para diferentes ações:

  • Movimento das peças;
  • Rotação;
  • Colocação dos blocos;
  • Completar uma linha;
  • Remoção de uma linha;
  • Game Over.

Também foram adicionadas animações para tornar a experiência mais agradável.

13. Tela de créditos

Por último, foram adicionados os créditos ao menu principal, juntamente com uma animação geral da página e efeitos sonoros.

Também foi implementada a opção de retornar à tela principal.

14. Código do projeto

Depois de desenvolver e testar cada etapa do projeto, podemos reunir todas as funções no código final do Tetris com ESP32-C3 Super Mini.

Confira o código completo

Desenvolvimento por etapas

Seguir essa linha de pensamento, desenvolvendo o projeto por partes, tornou o código final menos confuso e facilitou a identificação de possíveis erros.

Ao invés de tentar desenvolver todas as funções de uma única vez, cada parte foi criada, testada e, posteriormente, integrada ao restante do projeto.

Dessa forma, foi possível evoluir gradualmente desde a calibração do MPU6050 e a criação do menu até chegar ao jogo de Tetris completo, com movimentação, rotação, colisão, pontuação, remoção de linhas, efeitos sonoros, animações e tela de Game Over.

Resultado final

E, com isso, temos um jogo de Tetris com ESP32-C3 Super Mini, controlado principalmente pela inclinação do conjunto e pelos botões.


O projeto reúne programação, sensores, display, interação física e efeitos sonoros em uma única aplicação, mostrando como o ESP32-C3 pode ser utilizado para desenvolver projetos interativos e jogos eletrônicos.

Utilizando os componentes e as técnicas apresentadas neste projeto, você também pode adaptar a estrutura para criar seus próprios jogos e aplicações com ESP32-C3 Super Mini.

Projeto realizado por Emanuel Sousa – Graduando em Engenharia Mecatrônica

Post navigation

Deixe um comentário

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Smart Kits participa da Feira do Conhecimento 2025 com destaque em inovação e robótica

Descubra os materiais essenciais para iniciantes em tecnologia, engenharia e robótica

Conheça os principais tipos de diodos e suas aplicações

Controle de Motores NEMA com ESP32 e DRV8825: Tutorial Completo