Índice:
- Etapa 1: Equipamento
- Etapa 2: Configurando o Raspberry Pi
- Etapa 3: Configurando o Código de Exemplo
- Etapa 4: Criar um certificado SSL autoassinado
- Etapa 5: Conectando o Hardware
- Etapa 6: Código do lado do servidor
- Etapa 7: Código do site
- Etapa 8: finalmente
Vídeo: Disco-pi: 8 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
Este instrutível mostra como usar um Raspberry Pi para controlar uma faixa de LED colorida, com base na música tocada em um navegador da web.
Ele mostra como criar um site básico usando Node.js sobre HTTPS e usar socket.io sobre WSS (Secure Websocket).
O site possui uma página única com um layout bastante básico. A página da web preenche uma lista suspensa com arquivos de música, que estão localizados na pasta pública / áudio no servidor. Selecionar uma opção na lista reproduz o arquivo de música na página da web usando o elemento de áudio HTML 5. Enquanto reproduz o arquivo de música, a página da web usa a interface AudioContext para analisar a música, que é enviada ao servidor por meio de uma conexão segura de websocket.
O servidor em execução em um Raspberry Pi usa a biblioteca Node RPI WS281x Native (envolvendo a biblioteca WS281X de Jeremy Garff) para alterar as cores dos LEDs em uma faixa de LED WS2811, com base nos dados enviados pelo websocket.
O código de exemplo pode ser encontrado aqui: disco-pi
Etapa 1: Equipamento
- Raspberry Pi - usei um Raspberry Pi 2B que tinha por perto, mas você pode comprar um Raspberry Pi 3 Starter Kit por cerca de CAD 100
- WS2811 LED Strip - Eu estava jogando com ALITOVE 16.4ft 150 Pixels WS2811. Isso vem com um controlador e uma fonte de alimentação para cerca de CAD 45-50
- Barrel Jack Connector - comprei um na minha loja de eletrônicos local, algo assim. Apenas certifique-se de que se encaixa na sua fonte de alimentação
- Conectores Jumper / Fio - Eu tinha alguns cabos conectores fêmea para macho e alguns fios de ligação sólida de calibre 22 espalhados por aí
Etapa 2: Configurando o Raspberry Pi
Sistema operacional
Eu normalmente uso a versão mais recente do Raspbian. Baixe a imagem e grave-a no cartão SD. Se estiver usando um computador Windows, você pode usar o Win32 Disk Imager para gravar a imagem no cartão SD.
Node.js
Instale a versão mais recente do Node.js. No momento em que estou escrevendo, estou usando 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Instale o git
sudo apt-get install git
Etapa 3: Configurando o Código de Exemplo
Clone o código de exemplo
1. Configure uma pasta base para instalar em
cd / opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Clone o repositório git de exemplo
git clone https://github.com/haydockjp/disco-pi.git"
ou
git clone [email protected]: haydockjp / disco-pi.git
3. Instale as dependências
cd disco-pi
npm install
Isso pode levar de 2 a 3 minutos
Etapa 4: Criar um certificado SSL autoassinado
1. Crie um arquivo de chave privada
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Crie um CSR (Solicitação de Assinatura de Certificado)
openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem
Neste ponto, você será solicitado a fornecer algumas informações para a solicitação do certificado. Como este é um certificado autoassinado, depende de você a precisão do preenchimento dos detalhes. Aqui está um exemplo
Nome do país (código de 2 letras) [AU]: CA
Nome do estado ou província (nome completo) [algum estado]: Nome da localidade de British Columbia (por exemplo, cidade) : Nome da organização de Vancouver (por exemplo, empresa) [Internet Widgits Pty Ltd]: Nome da unidade organizacional Disco Pi (por exemplo, seção) : Nome comum (por exemplo, FQDN do servidor ou SEU nome) : disco-pi Endereço de e-mail : [email protected] Uma senha de desafio : Um nome de empresa opcional :
Neste exemplo, basta pressionar voltar para deixar a senha de desafio em branco
3. Gere o certificado
openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Para segurança extra, também criaremos um arquivo de parâmetros Diffie Hellman
openssl dhparam -out dh_2048.pem 2048
Isso pode levar de 15 a 20 minutos
Etapa 5: Conectando o Hardware
Alimentação da faixa de LED
A faixa de LED é alimentada por 12 volts. O Raspberry Pi é capaz de produzir apenas 3,3 V ou 5 V e não é capaz de produzir nada perto dos amperes necessários para acionar tantos LEDs.
É importante não conectar a fonte de alimentação de 12 volts ao Raspberry Pi.
Minha tira também tinha fios de alimentação adicionais conectados à tira em cada extremidade. Sugiro que você prenda com fita adesiva para que não entrem em contato com nenhum de seus outros equipamentos.
Execute as próximas etapas por sua própria conta e risco. Não me responsabilizo por nada que possa dar errado.
Tira LED
Minha faixa de LED tem três fios:
VERMELHO - +12 Volts
PRETO - Terreno
VERDE - Dados
NOTA: há um Din e um Dout - Data In e Data Out. Verifique se você está trabalhando com a extremidade da faixa de LED que diz Din.
Garantir que o Barrel Jack não esteja conectado à fonte de alimentação
1. Conecte o fio vermelho da faixa de LED ao lado + do conector do cilindro.
Eu usei um fio branco de calibre 22.
Coloque o fio na ranhura + no conector cilíndrico e aparafuse-o no lugar.
Empurre a outra extremidade do fio no soquete do LED. Certifique-se de que está conectando com o fio vermelho.
2. Conecte o fio preto da faixa de LED ao lado - do conector do cilindro.
Eu usei um cabo preto de calibre 22.
Coloque o fio na ranhura - do conector cilíndrico. Neste ponto, coloque também a extremidade macho de um dos cabos de conexão (fio marrom na foto) no mesmo orifício e aparafuse os dois no lugar.
Empurre a outra extremidade do fio preto no soquete do LED.
Certifique-se de estar conectando com o fio preto.
3. Conecte o fio verde da faixa de LED
Pegue um dos cabos de conexão feminino para macho. Nas minhas fotos esse é o fio verde.
Coloque a extremidade macho no soquete de LED com o fio verde.
Este é o cabo de dados.
Raspberry Pi
1. Pegue o cabo do conector verde e conecte-o ao Raspberry Pi GPIO.
Você precisa conectá-lo ao PCM_CLK (pino 12 / GPIO 18)
2. Pegue o cabo conector preto e conecte-o ao Raspberry Pi GPIO.
Você precisa conectá-lo a um dos fundamentos. Eu sugiro que você use o pino 14, mas você também pode usar o pino 6, 9, 20, 25, 30, 34 ou 39.
NOTA: para que isso funcione, a fonte de alimentação do LED e o Raspberry Pi devem ter um aterramento comum. Observe também que você não deve conectar o 12 Volt + (fio vermelho) ao Raspberry Pi.
LED Power
Você não deve ser capaz de conectar sua fonte de alimentação de 12 volts ao conector cilíndrico
Todos os LEDs em sua faixa de LED devem agora acender em BRANCO
Etapa 6: Código do lado do servidor
Executando o código do lado do servidor
cd /opt/com.jonhaydock/disco-pi
sudo npm start
Isso iniciará o servidor da web e ouvirá as solicitações HTTPS e WSS.
A porta padrão é 443, mas você pode substituí-la definindo uma variável de ambiente antes de iniciar o código. Por exemplo
export DISCO_PI_PORT = 1443
Minha faixa de LED tem 150 LEDs. Eles são controlados em grupos de três. Isso significa que não posso controlar cada LED individualmente e preciso enviar informações suficientes para controlar 50.
Se o seu LED tiver mais ou menos, você pode substituir o número de LEDs que está controlando, passando um parâmetro para a inicialização. Por exemplo, se você só pode controlar 10 LEDs
sudo npm start 10
O código do servidor principal pode ser encontrado no arquivo app.js. Este arquivo inicia o servidor da web HTTPS e também adiciona o socket.io para escutar as solicitações do websocket na mesma porta.
Para acessar o site, você deve abrir um navegador da web em seu computador principal (eu só testei isso no Chrome) e usar o endereço IP do Raspberry Pi, por exemplo, 10.0.1.2/
Você pode descobrir seu endereço IP na linha de comando do Raspberry Pi.
ifconfig
O servidor web servirá qualquer conteúdo na pasta pública. O padrão é exibir a página index.html.
Ele tem um ponto final de API - / api / audio. Este ponto final procura todos os arquivos na pasta pública / áudio e retorna a lista. Por exemplo
["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "Foi isso que você buscou (feat. Rihanna).mp3"]
Para adicionar música como uma opção, copie os arquivos para esta pasta. Eu pessoalmente uso o Filezilla em vez do ssh. A pasta à qual você deseja adicionar arquivos é /opt/com.jonhaydock/disco-pi/public/audio
Etapa 7: Código do site
Quando você acessar o site, deverá ver algo assim.
Se você vir um aviso de segurança, é porque estamos usando um certificado SSL autoassinado. Você pode ignorá-lo ou adicioná-lo como uma exceção.
Ao selecionar um nome de arquivo, a fonte do elemento de áudio HTML 5. será definido para esse arquivo. Quando estiver pronto, a música começará a tocar. Assim que a música terminar, ela irá parar.
Se você selecionar a opção Nenhum, a música irá parar de tocar.
Enquanto reproduz o arquivo de música, a página da web usa a interface AudioContext para analisar a música, que é enviada ao servidor por meio de uma conexão segura de websocket.
A mensagem é do tipo que o socket.io no servidor foi configurado para escutar "ws2811". Ele contém uma matriz de 50 elementos, que estão entre 0 e 255.
"ws2811", {"0": 251, "1": 252, "2": 241, "3": 217, "4": 193, "5": 164, "6": 148, "7": 139, "8": 110, "9": 96, "10": 81, "11": 67, "12": 72, "13": 66, "14": 60, "15": 60, "16": 63, "17": 54, "18": 37, "19": 30, "20": 31, "21": 26, "22": 13, "23": 3, " 24 ": 10," 25 ": 7," 26 ": 6," 27 ": 0," 28 ": 0," 29 ": 0," 30 ": 1," 31 ": 8," 32 ": 12, "33": 3, "34": 2, "35": 2, "36": 0, "37": 0, "38": 0, "39": 0, "40": 0, "41": 0, "42": 0, "43": 0, "44": 0, "45": 0, "46": 0, "47": 0, "48": 0, " 49 ": 0}
O servidor usa a biblioteca Node RPI WS281x Native (envolvendo a biblioteca WS281X de Jeremy Garff) para alterar as cores dos LEDs em uma faixa de LED WS2811, com base nos dados enviados pelo websocket.
Etapa 8: finalmente
Você deve ver os LEDs na tira mudando de cor com a música, com base na análise da Transformada Rápida de Fourier feita na página da web.
Eu espero que você goste disso. Deixe-me saber o que você faz com isso!
NOTA: Se você tiver algum problema
Uma vez que esta biblioteca e o áudio interno do Raspberry Pi usam o PWM, eles não podem ser usados juntos.
Você pode precisar colocar o módulo do kernel de áudio Broadcom na lista negra criando um arquivo /etc/modprobe.d/snd-blacklist.conf com
lista negra snd_bcm2835
Se o dispositivo de áudio ainda estiver carregando após a lista negra, você também pode precisar comentá-lo no arquivo / etc / modules. Em sistemas sem periféricos, você também pode precisar forçar o áudio através de HDMI
Edite config.txt e adicione:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
É necessário reiniciar para que esta mudança tenha efeito
Recomendado:
Disco portátil V2 - LEDs controlados por som: 11 etapas (com imagens)
Disco portátil V2 - LEDs controlados por som: Percorri um longo caminho em minha jornada pela eletrônica desde que fiz meu primeiro disco portátil. Na construção original, cortei um circuito na placa de protótipo e consegui construir uma pequena discoteca de bolso. Desta vez, projetei meu próprio PCB e
Leitor de disco de madeira: 20 etapas (com imagens)
Reprodutor de discos de madeira: eu queria demonstrar como os dispositivos de armazenamento de informações funcionam construindo uma máquina de reprodução de discos em grande escala. Em vez de ser baseado em interferência de luz, como leitores de CD, o dispositivo que construí reproduz discos de madeira com orifícios e " sem orifícios " (Como
Relógio de disco rígido simples: 7 etapas (com imagens)
Relógio de disco rígido simples: faça um ciclo de um disco rígido giratório antigo em um relógio analógico. Essas coisas são realmente legais olhando por dentro
Libere espaço em disco no Windows 10 usando a limpeza de disco: 7 etapas
Libere espaço na unidade no Windows 10 usando a Limpeza de disco: A limpeza do disco rígido não requer o uso de ferramentas de terceiros. Isso pode ser feito rapidamente usando o aplicativo integrado do Windows 10 chamado “ Limpeza de disco ” e é gratuito. Você precisará dos seguintes itens antes de começar: 1) Deskop ou Laptop2) Windows 10 i
Disco rígido Xbox 360 antigo + Kit de transferência de disco rígido = Disco rígido USB portátil !: 4 etapas
Disco rígido Xbox 360 antigo + Kit de transferência de disco rígido = Disco rígido USB portátil !: Então … Você decidiu comprar o HDD de 120 GB para seu Xbox 360. Agora você tem um disco rígido antigo que provavelmente não vai comprar usar mais, bem como um cabo inútil. Você poderia vendê-lo ou doá-lo … ou fazer um bom uso