Pular para o conteúdo principal

FVM Árvore de Natal com Arduino!

 

Chegou a hora de fazer algo além de um simples LED piscando com Arduino! Uma árvore de Natal que toca músicas de Natal! Ou seja, vários LEDs piscando com um buzzer! Infelizmente andei ocupado e não consegui postar esse tutorial mais cedo. Então, se você começar agora pode acabar terminando a árvore depois do Natal, pois a montagem é um pouco trabalhosa.

Materiais

Segue a lista de materiais. Componentes eletrônicos queimam fácil. Então, se possível, compre tudo em dobro! É importante que o buzzer seja passivo (não ativo) para que possa tocar notas musicais diferentes.

Materiais

  • 8 LEDs fosco 5 mm azul
  • 8 LEDs fosco 5 mm verde
  • 8 LEDs fosco 5 mm vermelho
  • 5 LEDs fosco 5 mm branco
  • 21 resistores 470 Ω
  • 8 resistores 330 Ω
  • 1 resistor de 1 kΩ
  • 1 botão táctil
  • 1 buzzer passivo 5 V
  • Fio de solda
  • Fita adesiva
  • Caixa de papelão
  • Tinta PVA ou guache
  • Arduino Uno ou compatível
  • Cabos de internet velhos (uns 5 m)
  • Fio de cobre rígido (10 cm)

Equipamento

  • Cabinhos jumper Dupont
  • Cabo velho de internet
  • Ferro de solda
  • Alicates de corte, de bicos redondo e chato
  • Pistola de cola quente
  • Estilete
  • Pincel

Molde da árvore

Eu fiz um desenho qualquer de árvore de natal num pedaço de papelão, cortei e usei como molde para fazer a outra parte. Se quiser fazer igual, você pode imprimir o gabarito disponível aqui.


Eu cortei cuidadosamente com o estilete e pintei com tinta PVA verde, exceto o tronco. Depois de seco, eu dividi uma das partes ao meio.

Colocando os LEDs

São 6 LEDs em cada lado da árvore, totalizando 24. Coloquei a perninha maior do LED (lado positivo) sempre do lado direito, e a perninha menor sempre do lado esquerdo. (Na verdade, quando testei depois, vi que tinha virado alguns LEDs e tive que consertar 😅). A figura abaixo mostra a posição sugerida para os LEDs.

Cada cabo de internet possui 4 pares de fios mais uma cordinha branca. Você pode cortar um pedacinho da capa para encontrar a cordinha, depois puxá-la para descascar aproximadamente 30 cm de cabo. Você vai precisar de uns 50 cm de cabo para cada parte da árvore e também para a estrela.

Se o cabo de rede for velho, você consegue descascá-los pinçando com as unhas. Caso contrário, é preciso puxar delicadamente com o alicate de corte. Sugiro utilizar os fios vermelho, verde e azul para os 3 LEDs de baixo, e as mesmas cores com branco nos LEDs superiores. As cores marrom e marrom com branco serão usadas para conectar as perninhas negativas, como mostrado no esquemático. O esquemático em PDF está disponível no github.

Se você reparou que meus LEDs não estão como no esquemático, é porque eu não tinha feito um planejamento ainda. Inclusive, troquei alguns LEDs verdes por amarelos e conectei alguns em série, mas achei que não valeu tanto a pena. Você pode soldar os cabinhos direto na árvore. Não pega fogo pois a tinta usada é a base de água. Antes de soldar, os fios podem ser presos embaixo das perninhas dos LEDs, ou a perninha pode ser dobrada.

Depois de soldar todos os LEDs, fixe-os com fita adesiva. Se possível, teste cada LED em série com um resistor de 1 kΩ e uma bateria de 5 V (ou 5 V do Arduino).

Montagem da árvore

Agora, com cola quente, cole os lados separados na parte inteira. Depois cole o tronco da árvore num pedaço de papelão grande o suficiente para conter o breadboard e o Arduino. Como a árvore vai ficar montada por algum tempo, eu usei o adesivo do breadboard para fixá-lo nesta base. O Arduino pode ficar preso com uma corda ou elástico.

Preparando a estrela

Para soldar os LEDs da estrela, é preciso desenhar um círculo numa folha de papel, com raio menor que a perninha negativa. Fixe os LEDs na folha com fita adesiva. Fixe também o fio de cobre e solde com ele todas as pernas no centro. Para soldar as pernas positivas, é interessante dobrar os fios de cobre com um alicate de bico redondo. Verifique se as soldas estão boas, depois de descolar os LEDs, é virtualmente impossível aplicar mais solda!

Montagem do circuito

Para limitar a corrente que passa pelos LEDs, precisamos colocar um resistor em série, com o valor calculado de acordo com a equação $$ R = \frac{ 5 - V_f }{ i } $$

Onde

  • $i$ é corrente que passa pelo LED. Normalmente esse valor é de 10 mA, mas para os LEDs mais brilhantes, eu costumo deixar 5 mA para não destoar do conjunto.
  • $V_f$ é a tensão a partir da qual o LED passa a conduzir (f é de forward). Abaixo deste valor, o LED praticamente não conduz corrente (e não acende). Esse valor pode ser medido com um multímetro ou testador de componentes. Eu testei alguns LEDs que eu tinha aqui em casa. Coloquei o valor médio é na tabela abaixo.
LED Vf i R R próxima
Vermelho 1,9 V 10 mA 310 Ω 330 Ω
Amarelo 2,0 V 10 mA 300 Ω 330 Ω
Verde 2,6 V 5 mA 480 Ω 470 Ω
Azul 2,7 V 5 mA 460 Ω 470 Ω
Branco 2,8 V 5 mA 440 Ω 470 Ω

Nem sempre o valor da resistência calculado pode ser comprado nas lojas. Então, você deve escolher um valor mais próximo acima (a corrente será um pouquinho menor). No caso da árvore de Natal, cada pino do Arduino fica responsável por dois conjuntos de resistor + LED. Os pinos fornecerão o dobro da corrente requerida para um LED. Veja o exemplo para o azul:


Não esqueça de olhar o esquemático para saber onde conectar cada fiozinho.

Gravação do firmware

O código fonte está disponível no arquivo main.cpp no github. Se você estiver utilizando a Arduino IDE, basta criar um novo Sketch e colar o código deste arquivo. Este código é basicamente dividido em duas partes,

  • A parte que interpreta músicas e reproduz no buzzer, com ponto de entrada na função playSong. Tem umas quatro músicas de Natal gravadas. Quando o Arduino é ligado, uma música é tocada a cada 15 minutos durante 2 horas. Também dá pra tocar uma música pressionando o botão.
  • A parte que pisca os LEDs e muda os efeitos de luz, cada vez que a função ledEffect é chamada. Os efeitos são codificados nas funções risingLeds, fallingLeds, colorLeds e blinkLeds.

Finalmente

Acho que vou pensar numa montagem mais simples pro ano que vem. Qualquer dúvida é só perguntar aqui no Blog. Por enquanto, Feliz Natal!

Comentários

Postagens mais visitadas deste blog

Coding Challenge - Rubik's Cube

Eu gosto muito dos desafios de programação do Daniel Shiffman, do canal The Coding Train, porque me obriga a desenvolver algoritmos para resolver certos problemas. Mas às vezes é roubada! Porque ele deixa o programa todo basicão e eu quero chegar num produto mais finalizado. O desafio que estou falando é o #142 - programar um Cubo de Rubik . Eu achei interessante porque um dos meus objetivos de vida é resolver esse cubo, sem olhar tutorias na internet! Eu sempre tive cubos chineses que travavam na hora de girar e as peças acabavam pulando. Mas, imaginem, o Daniel precisou postar 3 vídeos apenas pra chegar num cubo que faz um certo número de movimentos e depois desfaz! Mas eu queria que o jogo tivesse: Diferentes tamanhos (de 2 a 7); Um sistema para selecionar o cubinho com o mouse; Um sistema para movimentar com as teclas WASD; Um menu para embaralhar e reiniciar. Ou seja, levei o quádruplo do tempo. Como diria Pedro, é cilada Bino! Meu jogo ...

Aprendendo a Programar com Python #01

# Números e Matemática Básica Se você chegou neste tutorial, é porque ficou sabendo do Python, uma linguagem de programação bem interessante pra quem deseja aprender a programar. Mas que tipo de programas podemos criar com Python? A lista é grande mas vou citar alguns exemplos: gerenciadores de arquivos, editores de texto, jogos, programas para controlar robôs, programas para fazer buscas em bancos de dados, sites de comércio eletrônico e programas que usam aprendizado de máquina e inteligência artificial. E o mais interessante: o Python está disponível em vários sistemas e é de uso livre e gratuito! ## Primeiros passos Antes de mais nada, você precisa baixa e instalar o Python. ### Instalação do Python 1. Vá no endereço https://www.python.org/downloads/. Logo em cima da página aparece "Download the latest version for Windows" e um botão abaixo. Clique no botão "Download Python" para baixar a última versão estável para o seu sistema operacional (enquanto escr...