Recriando o Pong Game em um Esp32 com Rust

Introdução

Bom, vim aqui compartilhar uma jornada em que eu me envolvi totalmente sem querer: Embarcados

Meu pai chego pra mim e falo "toma, um esp32, programa um sistema pra fazer X coisa pra mim, depois tu faz oq tu quiser". E eu como sou desempregado e tenho bastante tempo livre, fui descobrir como esse tal "Esp" funcionava.

O que é um Esp32?

Resumindo bem porcamente, Esp32 é um microcontrolador programável de baixo custo. Ele vem equipado com módulo Wifi e Bluetooth, então ele é basicamente um SoC (System-on-a-chip). Ele foi feito pra automação, robótica e vários outros fins. Microcontroladores são muito usados para controle de máquinas, basicamente qualquer máquina que você provavelmente tem na sua casa, usa algum tipo de microcontrolador. Teu microondas é um exemplo disso.

Caso você se pergunte (eu me perguntava isso também), as pessoas costumam chamar esses sistemas controlados por uma plaquinha e chatinho de programar pra quem é iniciante de Embarcados.

O início da jornada

Depois que meu pai tacou essa bomba na minha mão, eu fui atrás pra descobrir como programar isso. Pesquisando um pouco eu descobri que eu tinha algumas opções: C/C++, Python, Javascript, Go e Rust. Considerando que eu queria aprender coisas novas, eu exclui Python e javascript (também pelo fato de eu ter só 520KB de Ram). Tentei usar o Arduino IDE e programar usando C++ com as libs do Esp e foi horrível. Aquela IDE é horrivel, achei chato e feio.

Ai me veio um Insight de quando eu tava descobrindo o Rust e passei o olho na home deles, onde dizia que Rust era recomendado para microcontroladores. E agora começa o maior sofrimento de todos: Um completo amador em Rust tentando programar um microcontrolador.

Depois de alguns vídeos gringos do youtube e um pouco de documentação, consegui rodar meu primeiro Hello World, depois disso foi só alegria, muita mas MUITA documentação e horas e horas a fio quebrando cabeça.

Quando terminei o projeto do meu Pai, postei no twitter e algumas pessoas gostaram da ideia e me motivaram. Ai eu tava sem nada pra fazer e pensei "Bom, e se eu recriasse um dos primeiros jogos do mundo em um display de 128x64 na base da força de vontade?".

Pra quem não tem noção do quão pequeno é isso, olhe para o seu dedão da mão. A tela é menor que isso, ela tem 0.96 polegadas

Depois disso meus amigos, foi só ladeira a baixo. Nada funcionava, tava dando tudo errado, mas desistir não faz parte do meu ser, então eu fui e dei uma pausa de algumas horinhas e voltei depois com a cabeça mais fria. Nesse meio tempo fui pedir ajuda a uns magos do Rust no twitter que foram minha luz no fim de túnel.

Depois de 6 horas e muito código ruim, tava pronto minha maior obra de arte, o Pong game (quase) totalmente funcional em um Esp32 com Rust e um display minúsculo.

(Sim, tem como jogar com dois jogadores igual no Pong, mas no vídeo do meu twitter eu não consegui gravar e jogar com os dois jogadores ao mesmo tempo pois sou limitado)

Vou deixar uma fotinha aqui de como ficou o projeto final pq eu não sei colocar vídeo aqui.

foto

Encerramento

Bom, essa foi a minha jornada recriando o Pong game em um microcontrolador, foi muito divertido e com certeza essa jornada não para por aqui, só me falta ídeias do que fazer, mas vontade tem de sobra!

Meu maior objetivo escrevendo esse post e criando esses projetos é compartilhar conhecimento, aprender mais e inspirar as pessoas a tentarem criar coisas diferentes do padrão.

Todo mundo ta acostumado com front-end e back-end, mas vejo muito pouca gente olhando pra coisas igualmente legais, divertidas e que estão presente em basicamente tudo que a gente usa hoje em dia.

Se você é iniciante ou até mesmo já ta no mercado a um tempo, tenta dar uma chance pra projetinhos simples que por mais que sejam inuteis, são legais e agregam conhecimento pras pessoas e pra si mesmo. Nem tudo que é inútil pra vc, é inútil pra outras pessoas que estão começando em algo novo.

Por fim, vou deixar aqui o link do projeto e o link do meu twitter onde tem um video mostrando o projeto.

Obrigado pela atenção de todo mundo que leu até aqui!

Ótima postagem! É ótimo ver pessoas divulgando esse mundo não só de programação virtual, mas também mostrando a parte real. Quando as pessoas pensam nesses circuitos, elas logo pensam em um Arduino ou um Raspberry Pi, mas o ESP32 é deixado de lado, o que não deveria acontecer por ser mais potente que um Arduino e mais barato. Ótimo conteúdo!

E também uma dica: nunca mexi com isso fisicamente. Sim, enfim a hipocrisia, mas já tenho uma bela base teórica. Se você quiser fazer mais projetos com tela e ter melhor resolução e qualidade, você pode optar por pegar displays de smartwatch ou fitband. A maioria são compatíveis com ESP32, Raspberry Pi, Arduino, etc. No final, é um bando de circuitos, mas esses são até bem baratos e oferecem uma resolução bem melhor, caso você queira.

Muito obrigado pelo apoio! Eu estou vendo de comprar um display OLED colorido bem maior e um display estilo smartwatch mesmo. Eu queria um display touch para experimentar criar algum tipo de micro firmware de smartwatch ou algo do tipo, sua sugestão veio na hora certa!
Caraka, muito legal!

Esse projeto é digno do Hackday https://hackaday.com/

Cara, eu comecei na programação com C, depois com arduino, e ultimamente eu tava so focando em web, mas na ultima semana voltei olhar pra esse lado da automação e de embarcado, e agora, eu to olhando alguns itens pra comprar, não pra montar um projeto, e sim pra mim se divertir, testar e ver o quão legal pode ser programar, não so um trabalho, ou algo assim, mas invetar coisinhas, pra se divertir e apenas isso. Obrigado!

Eu que agradeço pelo seu comentário. Eu disse no meu twitter mas acho que esqueci de dizer aqui. Não importa se o projeto é inútil ou "simples", é divertido demais de fazer e por mais simples que seja, gera muito conhecimento e as vezes pode inspirar outras pessoas a criarem coisas novas também. Nem tudo que é inútil e bobo pra nós, é para os outros. As vezes um simples Pong game pode inspirar uma pessoa desanimada a tirar uma ideia GENIAL do papel e isso é incrível. Eu digo isso em todos meus repos recentes do github e no meu twitter: Meu maior objetivo na comunidade dev é inspirar as outras pessoas a criarem coisas novas, aprender mais e gerar conhecimento. Eu sou autodidata e aprender as coisas que hoje eu sei e são fáceis pra mim foi uma luta, então sempre que eu puder compartilhar com as pessoas algo legal e que pode ajudar elas no aprendizado, eu vou fazer.

Acho muito enteressante estes progetos que "não tem utlidade nenhuma" mas que nós ensinam tanta coisa no processo, parabéns achei realmente genial a ideia!

Caralho mano gostei muito , Voce tem quantos anos ?

Fico muito feliz que gostou da postagem. O próximo passo agora é recriar o Snake game do Nokia. E respondendo sua pergunta, eu tenho 19 anos