Índice:

Mood Speaker - um poderoso alto-falante para música ambiente a ser tocada com base na temperatura ambiente: 9 etapas
Mood Speaker - um poderoso alto-falante para música ambiente a ser tocada com base na temperatura ambiente: 9 etapas
Anonim
Mood Speaker - um poderoso alto-falante para música ambiente a ser tocada com base na temperatura ambiente
Mood Speaker - um poderoso alto-falante para música ambiente a ser tocada com base na temperatura ambiente

Ei!

Para o meu projeto escolar no MCT Howest Kortrijk, eu fiz um Mood Speaker, este é um dispositivo de alto-falante Bluetooth inteligente com diferentes sensores, um LCD e WS2812b ledstrip incluído. O alto-falante toca música de fundo com base na temperatura, mas também pode ser usado como um bluetooth normal alto falante. Tudo é executado no Raspberry Pi (banco de dados, servidor da Web, backend).

Portanto, este instrutível é um processo passo a passo de como realizei este projeto em 3 semanas. Então, se vocês querem recriar meu projeto, podem seguir o guia

Este instrutível é o meu primeiro que escrevi, então se houver alguma pergunta, tentarei respondê-la o mais rápido possível!

Meu GitHub:

Etapa 1: suprimentos

Raspberry Pi 3B e cartão SD de 16GB

Todo o meu projeto é executado no meu Raspberry Pi 3B com uma imagem configurada, que explicarei em uma etapa posterior (Etapa 4: Configuração do Raspberry Pi)

Display LCD 16x2

Usei um display LCD básico para imprimir minha temperatura, brilho e endereço IP.

Folha de dados:

Sensor de Temperatura DS18B20

O DS18B20 é um sensor monofilar que mede a temperatura, fabricado pela Maxim Integrated. Existem 2 tipos de sensores DS18B20, o componente apenas (que usei) e a versão à prova d'água, que é muito maior, mas não era o que eu precisava para o meu projeto, então usei apenas o componente. O sensor pode medir a temperatura em uma faixa de -55 ° C a + 125 ° C (-67 ° F a + 257 ° F) e tem uma precisão de 0,5 ° C de -10 ° C a + 85 ° C. Ele também tem uma resolução programável de 9 bits a 12 bits.

Folha de dados:

MCP3008

Para ler os dados do meu LDR e sensor PIR, usei um MCP3008, que é um conversor analógico-digital de 8 canais e 10 bits com interface SPI e é muito fácil de programar.

Folha de dados:

Sensor de movimento PIR

Para detectar quando há alguém entrando e saindo do meu quarto, usei um sensor infravermelho passivo, pois eles são fáceis de usar e são pequenos.

Folha de dados:

LDR

Eu usei um fotorresistor ou LDR (Light Decreasing Resistance, ou resistor dependente de luz) para detectar o nível de brilho da sala em que está. E também para ligar meu Ledstrip quando estiver escuro.

Alto-falante - 3”de diâmetro - 4 Ohm 3 Watt

Este é o cone do alto-falante que escolhi depois de calcular a Voltagem e Amperes de que precisaria e foi um ajuste perfeito para o meu projeto Raspberry Pi, fabricado pela Adafruit.

Visão geral:

MAX98357 I2S Class-D Mono Amplifier

Este é o amplificador que vem com o alto-falante, não é apenas um amplificador, é também um conversor digital para analógico I2S, então também é perfeito para meu alto-falante e sistema de áudio.

Visão geral:

Folha de dados:

Arduino Uno

O Arduino Uno é uma placa de microcontrolador de código aberto baseada no microcontrolador Microchip ATmega328P, fabricado pela Arduino.cc. A placa Uno possui 14 pinos digitais, 6 pinos analógicos e é totalmente programável com o software Arduino IDE

Visão geral:

Levelshifter

Esta é uma pequena placa que cuida da comunicação entre o Arduino Uno e o Raspberry Pi e as diferentes tensões, Arduino: 5V e Raspberry Pi: 3,3V. Isso é necessário porque o ledstrip está conectado ao Arduino e é executado nele, enquanto todas as outras coisas são executadas no Raspberry Pi.

WS2812B - Ledstrip

Este é um ledstrip com 60 leds RGB (você pode comprar tiras mais longas com mais leds RGB, se quiser). Que no meu caso está conectado ao Arduino Uno, mas também pode ser conectado a vários outros dispositivos e é muito simples de usar.

Folha de dados:

GPIO T-Part, 1 breadboard e muitos jumperwires

Para conectar tudo que eu precisava de breadboards e jumperwires, eu não usei a parte GPIO T, mas você pode usá-la para saber claramente qual compartimento vai para onde.

Etapa 2: esquema e fiação

Esquemático e fiação
Esquemático e fiação
Esquemático e fiação
Esquemático e fiação

Para fazer meu esquema, usei o Fritzing, é um programa que você pode instalar e que permite criar um esquema realmente fácil em diferentes tipos de visualizações. Usei a breadboard e a visualização esquemática.

Baixe o Fritzing:

Certifique-se de que tudo está conectado corretamente. Usei cores para tornar um pouco mais claro saber onde conectar os fios. No meu caso usei cores diferentes para os fios

Etapa 3: Design de banco de dados

Design de banco de dados
Design de banco de dados

Estamos coletando muitos dados dos 3 sensores (Temperatura do DS18B20, Brilho do LDR e Status do sensor PIR). Portanto, é melhor manter todos esses dados em um banco de dados. Explicarei em uma etapa posterior como configurar o banco de dados (Etapa 5: Encaminhar Nosso Banco de Dados para o RPi!) Mas primeiro o projeto ou ERD (Diagrama de Relacionamento de Entidade) deve ser feito. O meu foi normalizado com 3NF, por isso dividimos os componentes e o histórico dos componentes em outra tabela. Usamos o banco de dados de músicas para rastrear as músicas que foram ouvidas.

No geral, este é um projeto de banco de dados realmente básico e fácil de trabalhar.

Etapa 4: configuração do Raspberry Pi

Então, agora que terminamos algumas noções básicas do projeto. Vamos começar a configurar o Raspberry Pi!

Parte 1: Configurando o Cartão SD

1) Baixe o software e os arquivos necessários

Você precisa baixar 2 softwares e 1 sistema operacional, ou seja, Raspbian para este processo completo. 1º software: O primeiro software é Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

2º software: o segundo software é o formatador de cartão SD.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Este é o sistema operacional principal do Pi.

www.raspberrypi.org/downloads/raspberry-pi-os/

Extraia todos os arquivos para a área de trabalho.

2) Obtenha o cartão SD e o leitor de cartão

Obtenha um cartão SD de classe 10 de, no mínimo, 8 GB com um leitor de cartão. Insira o cartão no leitor de cartão e conecte-o à porta USB.

3) Formate o cartão SD

Abra o SD Card Formatter e selecione a unidade.

Clique no formato e não altere nenhuma outra opção.

Quando a formatação estiver concluída, clique em OK.

4) Escreva o sistema operacional no cartão SD

Abra win32diskimager.

Procure o arquivo.img do Raspbian OS que foi extraído do arquivo baixado.

Clique em abrir e depois em Escrever.

Se algum aviso aparecer, ignore-o clicando em OK. Aguarde a conclusão da gravação, que pode demorar alguns minutos. Então seja paciente.

n

5) Feito isso, estamos prontos para fazer alguns ajustes finais antes de colocar a imagem em nosso RPi.

Vá para o diretório do cartão SD, procure o arquivo chamado 'cmdline.txt' e abra-o.

Agora adicione 'ip = 169.254.10.1' na mesma linha.

Salve o arquivo.

Crie um arquivo chamado 'ssh' sem extensão ou conteúdo. (A maneira mais fácil é criar um arquivo txt e remover o.txt depois)

Agora que tudo está instalado no cartão SD, você pode ejetá-lo com SEGURANÇA do seu computador e colocá-lo no Raspberry Pi SEM conectar a energia. Uma vez que o cartão SD esteja no RPI, conecte um cabo LAN do seu computador à porta RPi LAN, uma vez conectado você pode conectar a alimentação ao RPi.

Parte 2: Configurando o RPi

Massa

Agora queremos configurar nosso Raspberry Pi, isso é feito através do Putty.

Software Putty:

Depois de fazer o download, abra o Putty e insira o IP '169.254.10.1' e a porta '22' e o tipo de conexão: SSH.

Agora podemos finalmente abrir nossa interface de linha de comando e fazer o login com as informações de login inicial -> Usuário: pi e Senha: raspberry. (É recomendável alterá-lo o mais rápido possível. Aqui está um guia de como:

Raspi-config

Teremos que habilitar interfaces diferentes e, para isso, primeiro temos que digitar o seguinte código:

sudo raspi-config

As coisas que precisamos habilitar estão na seção de interface. Precisamos habilitar as seguintes interfaces:

  • One-wire
  • Serial
  • I2C
  • SPI

Isso era tudo o que precisávamos fazer com o raspi-config

Adicionando seu WIFI

Primeiro, você precisa ser root para que o seguinte comando se torne root

sudo -i

Depois de fazer o root, use o seguinte comando: (Substitua o SSID pelo nome da rede e a senha pela senha da rede)

wpa_passphrase "ssid" "senha" >> /etc/wpa_supplicant/wpa_supplicant.conf

Caso você tenha feito algo errado, você pode verificar, atualizar ou excluir esta rede apenas digitando o seguinte comando:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Então, depois de entrarmos em nossa rede, vamos entrar na interface do cliente WPA

wpa_cli

Selecione sua interface

interface wlan0

Recarregue o arquivo

reconfigurar

E, finalmente, você pode ver se está bem conectado:

ip a

Parte 3: Atualizando o software de instalação RPi +

Agora que estamos conectados à internet, atualizar os pacotes já instalados seria uma jogada inteligente, então vamos fazer isso antes de instalar outros pacotes.

sudo apt-get update

sudo apt-get upgrade

Após atualizar o RPi, teremos que instalar o seguinte software:

Banco de dados MariaDB

sudo apt-get install servidor mariadb

Servidor da Web Apache2

sudo apt install apache2

Pitão

atualização-alternativas --install / usr / bin / python python /usr/bin/python3.7 1 atualização-alternativas --install / usr / bin / python python / usr / bin / python3 2

Pacote Python

Você terá que instalar todos esses pacotes para que o back-end funcione perfeitamente:

  • Frasco
  • Flask-Cors
  • Flask-MySql
  • Flask-SocketIO
  • Solicitações PyMySQL
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Biblioteca de palestrantes

Para usar o alto-falante com o amplificador, teremos que instalar uma biblioteca para ele

curl -sS > | bash

Step 4: Reboot

After everything has been installed we will have to reboot the pi to make sure everything works correctly

sudo reboot

Step 5: Setting Up the Database to the RPi

Configurando o Banco de Dados para o RPi!
Configurando o Banco de Dados para o RPi!

Agora que instalamos tudo o que precisávamos, vamos colocar nosso banco de dados que projetamos em nosso Raspberry Pi!

Para configurar o banco de dados, teremos que conectar MySql e RPi. Para isso, abriremos o MySQLWorkbench e faremos uma nova conexão. Ao olhar para a imagem, você terá que mudar para alterar as informações para as suas.

Se você não mudou nada ainda, você pode usar para SSH pi e raspberry, para MySQL mysql e mysql.

Quando algo não estiver claro, você também pode seguir este tutorial:

Para exportar seu banco de dados deve ser mais fácil usar PHPmyAdmin porque você pode obter muitos erros fazendo isso com MySql

Etapa 6: Configurando Bluetooth em Nosso RPi

Estamos criando um alto-falante Mood, que também podemos usar com nossa própria música, então é mais fácil quando o RPi está

conectado ao bluetooth segui um tutorial para ele que você encontra aqui:

scribles.net/streaming-bluetooth-audio-fr…

Eu escrevi tudo aqui também para todos que desejam recriá-lo

Removendo o bluealsa já em execução

sudo rm / var / run / bluealsa / *

Adicionar função de coletor de perfil A2DP

sudo bluealsa -p a2dp-sink &

Abra a interface bluetooth e ligue o bluetooth

bluetoothctl ligado

Configure um agente de emparelhamento

agente no agente padrão

Torne seu RPi detectável

detectável em

  • Agora, em seu dispositivo bluetooth, procure o RPi e conecte-se a ele.
  • Confirme o emparelhamento em ambos os dispositivos, digite 'sim' em sua massa.
  • Autorize o serviço A2DP, digite 'sim' novamente.
  • Uma vez feito isso, podemos confiar em nosso dispositivo, então não temos que passar por tudo isso toda vez que quisermos nos conectar

trust XX: XX: XX: XX: XX: XX (seu endereço bluetooth mac de nosso dispositivo de origem)

Se você deseja que seu RPi continue sendo detectável, você escolhe, mas prefiro desligá-lo novamente, para que as pessoas não possam tentar se conectar com sua caixa

fora de descoberta

Então podemos sair da nossa interface bluetooth

saída

E, finalmente, nosso roteamento de áudio: nosso dispositivo de origem encaminhando para nosso RPi

bluealsa-aplay 00: 00: 00: 00: 00: 00

Agora nosso dispositivo está conectado ao nosso Raspberry com bluetooth e você deve ser capaz de testá-lo reproduzindo qualquer mídia, por exemplo, Spotify, etc.

Etapa 7: Escrevendo o back-end completo

Agora que a configuração está concluída, podemos finalmente começar a escrever nosso programa de back-end!

Usei o código do Visual Studio para todo o meu back-end, você só precisa ter certeza de que o seu projeto do Visual Studio está conectado ao seu Raspberry Pi, isso significa que o seu cabo LAN deve estar conectado ao seu RPi e fazer uma conexão SSH. (informações sobre como criar uma conexão remota podem ser encontradas aqui:

Usei minhas próprias classes e elas também estão incluídas no meu GitHub.

No meu arquivo de back-end usei classes diferentes, para que tudo possa ser usado separadamente e para que meu código principal não seja uma bagunça com todos os threads diferentes. Usei threading para executar todas as classes diferentes de uma vez. E na parte inferior você tem todas as rotas para que possamos facilmente obter dados em nosso front-end.

Etapa 8: Escrevendo o front-end (HTML, CSS e JavaScript)

Agora que o back-end está pronto, podemos começar a escrever o front-end completo.

HTML e CSS foram muito difíceis para mim. Eu fiz o meu melhor para torná-lo móvel primeiro, porque posso conectá-lo com bluetooth para alterar as músicas com o Spotify. Portanto, seria mais fácil controlar a partir de um painel móvel

Você pode projetar seu painel da maneira que quiser, vou apenas deixar meu código e design aqui, você pode fazer o que quiser!

E o Javascript não foi mais fácil para mim, trabalhei com alguns GETs das minhas rotas de backend, toneladas de ouvintes de eventos e algumas estruturas socketio para obter os dados dos meus sensores.

Etapa 9: Construindo meu caso e juntando tudo

Construindo meu caso e juntando tudo
Construindo meu caso e juntando tudo
Construindo meu caso e juntando tudo
Construindo meu caso e juntando tudo
Construindo meu caso e juntando tudo
Construindo meu caso e juntando tudo
Construindo meu caso e juntando tudo
Construindo meu caso e juntando tudo

Comecei a esboçar como queria que a caixa fosse, algo importante era que tinha que ser grande o suficiente para que tudo se encaixasse, já que tínhamos um grande circuito para colocar na caixa, mas tínhamos que ficar compacto para que não não ocupa muito espaço

Eu fiz a caixa de madeira, acho que é mais fácil de trabalhar quando você não tem muita experiência com a construção de caixas e também tem muitas coisas que pode fazer com ela.

Comecei a partir de uma velha prancha que estava ao redor e comecei a serrar a madeira. Assim que tive meu gabinete básico, só tive que fazer furos (muito na frente do case, como vocês podem ver nas fotos e colocar alguns pregos nele, é um case bem básico, mas parece bem legal e se encaixa perfeitamente. Também decidi pintar de branco para ficar bem.

E uma vez feito o case, era hora de colocar tudo junto, como vocês podem ver na última foto! É uma bagunça dentro da caixa, mas tudo funciona e eu não tinha muito mais espaço, então aconselho você a talvez criar um case maior se estiver recriando meu projeto.

Recomendado: