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 .
Até.