Logo Hardware.com.br
elissonandrade
elissonandra... Tô em todas Registrado
1.3K Mensagens 166 Curtidas

Projeto pisca-pisca ritmico 2019

#1 Por elissonandra... 10/11/2019 - 13:12
Então, vamos movimentar essa sala?
Bem, com o natal chegando, faz tempo que queria fazer aquelas iluminações de natal que seguem uma música. Não, não to falando de usar como um simples medidor de volume de frequências como tem no carro, e no mini-system da vida, mas sim que alguém vá lá e programe acender algumas luzes conforme a música, sabe? Tipo nesse vídeo:

Claro que bem mais simplificado.

Dito isso, o projeto vai, ou deverá, ter as seguintes funcionalidades:
[LIST=1]
Acender e apagar luzes conforme uma ou algumas músicas, sincronizadamente
Tocará a música em algun canto, seja no formato midi em alguma caixa de som, seja no celular de quem tiver passando, ou no meu próprio computador
Ligará sozinho ao cair da noite, e desligará por volta das 22h
Funcionará independente de outros equipamentos, se possível energizado por pilhas
Se possível, utilizará a biblioteca de músicas do jogo osu! para automaticamente gerar o ritmo das músicas
[/LIST]
Obviamente, o 1 é o mais essencial, enquanto que os outros já são menos fundamentais.

Enfim, pra esse projeto, vou usar esse kit. É relativamente barato pro que oferece, se você comprar em um site que não aplique taxas, né?
Esse kit veio com um ESP8266 WIFI NodeMCU, que basicamente é uma plaquinha compatível com arduino voltada para aplicações IoT, mas que pode ser operada sozinha (standalone).

Beleza, fui tentar usar a plaquinha e ela já não funcionou com os tutoriais que encontrei por aí, então vou manda um passo a passo de como fiz pra ela funcionar.
[LIST=1]
Tive que compilar um firmware. Pra isso, fui nesse site. Coloquei meu e-mail(recomendo usar um e-mail pessoal). Em "Select Branch to build from", escolhi a master. Deixei o resto como estava e cliquei em "Start your build" no fim da página. Aí ele mandaram dois e-mails, levou cerca de 10 min. No e-mail mais recente, tinha o link pra dois binários(arquivos .bin), e dai eu fiz o download do binario que tinha "float" no nome. Esse é o firmware que decidi usar.

Com o firmware em mãos, tive que jogar o firmware na plaquinha. Pra isso, baixei o executável mais recente de 64 bits nessa página(faça o download do arquivo listado em "assets", não dos "Antivirus reports"). Antes de abrir o executavel, usei o cabo micro usb que veio no kit pra conectar o computador a plaquinha(na hora da conexão, o plaquinha pisca um led azul). Cliquei com botão direito no menu Iniciar-> Gerenciador de dispositivos e na arvore, abri o item "Portas(COM e LPT)". Lá tava listado o USB-SERIAL CH430 como porta COM3. Se não aparecer nada, você deve precisar instalar os drivers do adptador usb-serial manualmente. Enfim, feito isso, abri o executável, o tal do NodeMCU PyFlasher. Na tela que apareceu, selecionei a Serial Port "COM3", em "NodeMCU Firmware", eu coloquei o caminho pro arquivo que eu baixei que me enviaram por e-mail(o firmaware do passo 1), e em Baudrate, eu selecionei 115200. Isso é importante, porque alguns tutoriais dizem pra você usar a baudrate 9600, mas como o modelo da ESP8266 que eu to usando é uma das variações ESP-12, foi com a baudrate 115200 que funcionou. Outro valor sugerido foi de 921600, mas eu acho que esse daí só funciona se a sua variação da ESP-12 for V2 ou posterior. Sim, tem um bocado de variações dessa plaquinha, mas pelo menos o firmaware é o mesmo pra todas, nisso você pode ficar tranquilo. O modelo da plaquinha também influência o Flash mode (tem um simbolo de exclamação vermelho no programa esclarecendo), mas no nosso caso eu deixei Dual I/O mesmo. Deixei o resto como estava e cliquei em Flash NodeMCU. ficou um tempinho rodando lá e terminou com uma mensagem de sucesso, que nem a que tem no site.
Hora de programar. Aqui que tá o pulo do gato. Baixe o programa ESPlorer. Se você baixar o zip e descompactar, rode o arquivo ESPlorer.bat. Se não abrir é porque você não tem o java instalado, então instale-o. Se conseguiu abrir, olhe para o lado direito do programa, no topo, e caso a porta que aparece selecionada na lista(dropdown box) não é a que você viu quando abriu o Gerenciador de dispositivos(no meu caso, COM3), selecione a porta que você viu lá. Tem outra lista um pouco embaixo dessa, só de números, selecione o valor de 115200(usar o valor de 9600 não funcionou pra mim). Clique no botão "Open"(tem outro open do lado, mas não é um botão. Aperte o que tiver um ícone com uma setinha verde). Feito isso, vai aparecer uma mensagem embaixo dizendo que abriu a porta e que ele está tentando se comunicar... e daí vai dar um erro de timeout! Aqui é que é o esquema. Quando isso acontecer, vá na plaquinha e aperte um botão escrito RESET, que fica bem do lado da porta USB. Ele é pequeno e preto. Nessa hora, vai aparecer um bando de caracter maluco na tela, mas também vai aparecer uma mensagem assim:
NodeMCU 3.0.0.0 built on nodemcu-build.com provided by frightanic.com</li>
branch: master
commit: 310faf7fcc9130a296f7f17021d48c6d717f5fb6
release: 3.0-master_20190907
release DTS: 201909070945
SSL: false
build type: float
LFS: 0x0
modules: file,gpio,net,node,tmr,uart,wifi
build 2019-11-10 13:34 powered by Lua 5.1.4 on SDK 3.0.1-dev(fce080e)
lua: cannot open init.lua


Se você ver essa mensagem, quer dizer que funcionou. A mensagem pode estar diferente dependendo da data em que você está lendo isso, mas as duas últimas linhas deveriam ser praticamente a mesma coisa.
Feito isso, eu segui esse tutorial aqui, ignorando a parte do termite e da baudrate de 9600, obviamente.(também usei um led de 200ohm ao invés de 220 como indicado, porque foi o que tinha e deu bom)
[/LIST]
Enfim, com isso consegui fazer um led piscar conforme estava no tutorial. Agora vou dar uma olhada na referência da plaquinha(estou programando em lua, falando nisso) e pensar no circuito das luzes, considerando o número limitado de saída que tenho(GPIO básico).

Mandem sugestão de músicas falando nisso smile.png.
Até.
rmaiabh
rmaiabh Cyber Highlander Registrado
9K Mensagens 1.6K Curtidas
#2 Por rmaiabh
11/11/2019 - 10:05
Se consegue disparar um LED, significa que possivelmente consegue disparar um relé. E se isso é possível e verdadeiro, certamente conseguirá ligar a esse relé um conjunto de lâmpadas que acendem e apagam conforme o relé liga e desliga. Só uma curiosidade, o disparo é pelo ritmo da música ou é pré-programada?
Dúvidas? Somente no fórum! Não respondo dúvidas técnicas por MP.
Todos os cogumelos são comestíveis, alguns somente uma vez.
[post=2044263]APRENDA A COBRAR POR SERVIÇOS DE INFORMÁTICA[/post]
"Estamos condenados à civilização. Ou progredimos ou desaparecemos." (Euclides da Cunha)
elissonandrade
elissonandra... Tô em todas Registrado
1.3K Mensagens 166 Curtidas
#3 Por elissonandra...
12/11/2019 - 20:06
rmaiabh disse:

Por enquanto pré-programado.

De músicas to querendo usar hallelujah do coben, e black sheep , de scott pilgrim. Essas música tem um ritmo forte por trás, então acho que vai combinar legal.

Maior problema no momento é sincronizar a música com a iluminação. O processador dessa plaquinha não é multithread, então...
rmaiabh
rmaiabh Cyber Highlander Registrado
9K Mensagens 1.6K Curtidas
#4 Por rmaiabh
13/11/2019 - 15:02
elissonandrade disse:


Acho que vai ter bastante trabalho pela frente. Se usar um Arduino, poderá comandar alguns relés, o que te dará controle sobre ramos de lâmpadas. Mas programar isso na mão vai ser um desafio.
Dúvidas? Somente no fórum! Não respondo dúvidas técnicas por MP.
Todos os cogumelos são comestíveis, alguns somente uma vez.
[post=2044263]APRENDA A COBRAR POR SERVIÇOS DE INFORMÁTICA[/post]
"Estamos condenados à civilização. Ou progredimos ou desaparecemos." (Euclides da Cunha)
elissonandrade
elissonandra... Tô em todas Registrado
1.3K Mensagens 166 Curtidas
#5 Por elissonandra...
26/11/2019 - 01:17
Muito bem, deu trabalho, mas pelo menos uma musica já está em 85%. Fiz outras melhorias tambem.
  • Dividi o código em 4 arquivos: um arquivo de música, um arquivo que conecta ao wifi, um arquivo que cria uma página web pro usuário escolher a música, e um arquivo de configuraçao, com senha e ssid.
  • Então hoje o chip se conecta na minha rede wifi e funciona como servidor, provendo uma página de html pra qualquer um na minha rede que que digite o ip da chip. Nessa pagina tem uma lista de músicas(na verdade, só uma por agora stick_out_tongue.png ) e dali o usuário escolhe uma musica e manda tocar. Quando ele manda tocar, o chip começa a sequencia de luzes.
  • Como eu mal tenho espaço pro código no chip, as musicas mesmo que eu num vou ter como deixar lá. Entao, to tirando as musicas tudo do sound cloud, que tem um widget muito legal pra eu colocar qualquer música na minha página, ao mesmo tempo que me fornece uma api javascript quase perfeita pra sincronizar as músicas com os leds(não, eu juro que a soundcloud nao me patrocinou stick_out_tongue.png ). To usando esse cover pro hallelujah.
  • Como se conecta pelo wifi, agora eu já consigo alimentar com carregador de celular. Próximo passo é alimentar com pilhas. Alguém sabe como converter a voltagem de pilha pra usb?
  • Criei varias funções pra ajudar nas sequencias que to fazendo e economizar espaço, mas o problema é que hallelujah é 6/8, ou seja, nao vai se aplicar ao tempo de outras músicas, mas memso assim pelo menos uma do compasso da musica, entao vai dar pra reusar.
  • Outra limitação é que só consegui acesso a 9 saídas digitais, então estabeleci um padrão pra economizar: uma saida controla leds verdes, outra controla leds brancos, outra controla o led amarelo(estrela), e as outras controla leds vermelhos individuais, o que me permite fazer umas sequencias visuais mais legais.

É isso, tentar terminar essa semana essa musica e fazer pra black sheep também. Dependendo das contas de final de ano, posso até correr atrás de usar uma arvore com lampadas mesmo, mas o tempo de respota do relés, o trabalho com a fiaçao eletrica e todas essa coisa me desanimam um pouco, mas como eu moro em ap, fica meio complica expor isso que nem no vídeo lá em cima.

Quanto ao código, depois eu boto no git hub, mas tenho que editar algumas coisas, até porque essa música eu não pedi permissão pra usar ainda. To colocando em anexo também uns video e imagens relacionados ao projeto. Me digam o que acham.
Anexo do post Anexo do post

Anexos

elissonandrade
elissonandra... Tô em todas Registrado
1.3K Mensagens 166 Curtidas
#6 Por elissonandra...
17/12/2019 - 23:56
UPDATE:

Conforme prometido, o código está aqui: https://github.com/elissonandrade/MusicalChristmasLights
Acho que ja deu, ficou legalzinho e eu me diverti, bem a tempo do natal. Valeu galera.

Post Original
Então, taí.

Tive muitos problema no finalzinho por falta de memória, tive que redistribuir umas funções pra funcionar. Pro black sheep, vou ter que criar ainda mais funções, então tenho que escolhe bem que arquivos carregar.

Se der tempo, adiciono outra musica, quem sabe i walk alone do green day, mas acho meio triste pra natal.
rmaiabh
rmaiabh Cyber Highlander Registrado
9K Mensagens 1.6K Curtidas
#7 Por rmaiabh
06/01/2020 - 13:50
Excelente. Posta o projeto pra que outras pessoas possam reproduzir e contribuir para melhorar. ;-)
Dúvidas? Somente no fórum! Não respondo dúvidas técnicas por MP.
Todos os cogumelos são comestíveis, alguns somente uma vez.
[post=2044263]APRENDA A COBRAR POR SERVIÇOS DE INFORMÁTICA[/post]
"Estamos condenados à civilização. Ou progredimos ou desaparecemos." (Euclides da Cunha)
elissonandrade
elissonandra... Tô em todas Registrado
1.3K Mensagens 166 Curtidas
#8 Por elissonandra...
14/10/2020 - 11:57
Tava querendo expandir pra uma árvore mesmo esse ano. Alguma dica de dispositivo luminosos que podem ser controlados por sinais de leds pra eu usar?
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal