ESP32

Tema de natal com ESP32, buzzer e OLED

Natal tá chegando, hora de brincar com nossos embarcados, hum? Não comemoro natal, mas vou deixar um projetinho pra quem quiser um enfeite diferente na árvore; um tema de natal com ESP32, para tocar o “jingle bell” periodicamente.

Material

Se for para colocar em uma árvore de natal, faça emendas dos fios que vão ao 3V3 e GND. Essa é minha recomendação para minimizar o tamanho. De resto, você vai precisar de:

Minha recomendação é que realmente você adquira esses materiais na CurtoCircuito.

Flocos de neve para o tema de natal com ESP32

Caro leitor, não precisa amar o floco de neve, mas espero que valorize, porque deu trabalho. A parte de fazê-lo cair foi simples, porque utilizei uma biblioteca da Adafruit que já continha a função para o feito, mas desenhar o floco de neve me obrigou a aprender algumas coisas de planilha de cálculo. Utilizei o Google spreadsheet, não sei dizer o quão bom é, mas atendeu muito bem ao propósito.

Tema de natal com ESP32 - planilha de desenho
Tema de natal com ESP32 – planilha de desenho

O array do desenho é composto por 2 Bytes (separei em verde e amarelo). Cada Byte é composto por 8 bits, cujo bit representa 1 pixel. Se você não conhece base binária, seria bom dar uma estudada, mas basicamente os bits são lidos da direita para a esquerda, cada um com o seguinte valor:

128 64 32 16 8 4 2 1

Então o que fiz foi copiar e colar cada um dos valores em sua respectiva coluna. Parece trabalhoso, mas foi rápido.

A segunda parte foi criar mais duas colunas, cada uma representando 1 Byte. Daí soma-se os bits em preto e têm-se o valor do respectivo Byte. Para ficar visualmente compreensível, coloquei uma coluna no meio, que a partir das colunas da direita, alimentam a célula com uma string representando os 8 bits, daí é só copiar e colar.

Tema de natal com ESP32 - planilha de desenho
Tema de natal com ESP32 – planilha de desenho

Desenhei livremente no quadrado da esquerda, pintando o fundo das células de preto. Depois para fazer a soma, cliquei em cada um dos bits em preto segurando a tecla Ctrl. Mas primeiramente escrevi na célula =sum(. Cliquei em Enter após concluir a soma. No exemplo da imagem acima eu somei os valores que estão com os números brancos sobre fundo preto.

Se você resolver fazer desenhos assimétricos, terá que mudar a metade de baixo das últimas duas colunas porque eu espelhei para economizar tempo.

Para converter para texto foi um pouco mais complicado, mas nem precisei procurar online, foi só caçar nas funções da planilha:

Tema de natal com ESP32 - planilha de desenho
Tema de natal com ESP32 – planilha de desenho

Quando terminei, selecionei e colei no código dentro do array vazio:

Resolvida a primeira etapa, comecei a escrever o código da música Jingle bell. Essa música é bastante simples de escrever porque o compasso é 4/4 e dá pra simplificar a divisão das notas, o que poupa tempo na hora de colocar no código. Se quiser aproveitar o piano online para criar outras músicas, eis o link.

Download da planilha do tema de natal com ESP32

Se quiser baixar a planilha para produzir seus desenhos, pegue-a no grupo Do bit Ao Byte no facebook. Não precisa ter Office instalado, ou qualquer outra suite, apenas envie para o Google Drive e então edite-a por lá mesmo.

Juntando música e animação

Bem, aqui eu fiz apenas um exemplo, executando 2 tasks no núcleo 0 do ESP32. Se não leu os artigos anteriores relacionados ao ESP32 e o FreeRTOS, sugiro que clique alí em cima no menu ESP32 e leia um pouco sobre os recursos que você não encontra no Arduino e que sem eles, não seria possível fazer esse projeto.

Como é exemplo, adicionei as tasks no setup, mas se você quiser enfeitar sua árvore de natal com o ESP32 + display OLED + buzzer, sugiro que coloque um relógio no display e execute as tarefas uma vez por hora, como se fosse um relógio cuco. Se optar por essa sugestão, lembre-se de mudar o loop da função snowFlake para executar tanto tempo quanto durar a música, ou um pouco mais. Além disso, quando sair do loop, não se esqueça de adicionar ao final da função o vTaskDelete(NULL) para que a tarefa seja excluida. Esses conceitos estão bem explicados nos artigos anteriores relacionados ao ESP32.

Código

O código ficou um pouco longo, mas é por causa dos define e das notas, que foram tocadas uma a uma dentro da task jingleBell. Experimente apagar os define e a música para ver, não tem nenhuma complexidade na implementação.

Do jeito que está disposto o código, logo que subí-lo pela IDE do Arduino, as duas tasks serão executadas e ao término da música, os flocos de neve continuarão a cair.

Wiring

Coloque o ESP32 com a USB para baixo. Do lado direito, no pino 4 de baixo para cima, coloque o GND do buzzer. A outra perna do buzzer, alimente no 3V3. O Display é I2C, também alimentado em 3V3. Além da alimentação e GND, você deve conectar os pinos SDA ao SDA e SCL ao SCL, mas nada. Eis o pinout do ESP32:

ESP32 pinout | Tema de natal com ESP32
ESP32 pinout

Video

Agora a demonstração do tema de natal com ESP32, espero que goste e compartilhe nas redes sociais!

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!