Índice:
- Etapa 1: suprimentos
- Etapa 2: esquema e fiação
- Etapa 3: Design de banco de dados
- Etapa 4: Preparando o Raspberry Pi
- Etapa 5: encaminhe nosso banco de dados de engenharia para o RPi
- Etapa 6: Configurando Bluetooth em Nosso RPi
- Etapa 7: Escrevendo o back-end completo
- Etapa 8: Escrevendo o front-end (HTML, CSS e JavaScript)
- Etapa 9: Construindo meu caso e juntando tudo
- Etapa 10: alguns problemas que tive na criação do palestrante Slimbox …
Vídeo: Slimbox - um alto-falante Bluetooth inteligente !: 10 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Ei!
Para o meu projeto escolar na MCT Howest Kortrijk, eu fiz um dispositivo de alto-falante Bluetooth inteligente com diferentes sensores, um LCD e anel RGB NeoPixel incluídos. Tudo é executado no Raspberry Pi (banco de dados, servidor da Web, backend).
Então neste instrutível vou mostrar como fiz esse projeto em 3 semanas, passo a passo, então se algum de vocês quiser recriar meu projeto, você pode fazer facilmente!
Este também é o meu primeiro instrutível, se você tiver alguma dúvida, tentarei respondê-la o mais rápido possível!
Meu GitHub:
Etapa 1: suprimentos
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:
Sensor de potenciômetro
Um potenciômetro é um resistor com três terminais que é manualmente ajustável apenas girando a parte superior do sensor. A posição da parte superior determina a tensão de saída do potenciômetro.
LSM303 Acelerômetro + Compasso Breakout
A placa breakout LSM303 é uma combinação de um acelerômetro de eixo triplo e um magnetômetro / bússola, fabricado pela Adafruit. É usado com a interface I2C do Raspberry Pi.
Visão geral:
Folha de dados:
MCP3008
Para ler os dados do meu potenciômetro, 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:
Alto-falante - 3”de diâmetro - 8 Ohm 1 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 anel NeoPixel está conectado ao Arduino e é executado nele, enquanto todas as outras coisas são executadas no Raspberry Pi.
Anel RGB NeoPixel
Este é um pequeno anel preenchido com 12 leds RGB (você pode comprar anéis maiores 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.
Visão geral:
Display LCD 16x2
Usei um display LCD básico para imprimir minha temperatura, volume e endereço IP.
Folha de dados:
Raspberry Pi 3B + e cartão SD de 16GB
Todo o meu projeto é executado no meu Raspberry Pi 3B + com uma imagem configurada, que irei ajudá-lo a configurar mais tarde no meu instrutível.
GPIO T-Part, 2 placas de ensaio e muitos jumperwires
Para conectar tudo que eu precisava de breadboards e jumperwires, usei a parte GPIO T para ter mais espaço e ficar claro qual pino é qual.
Etapa 2: esquema e fiação
Para o 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.
Baixe o Fritzing:
Portanto, certifique-se de conectar tudo da maneira certa! No meu caso as cores dos fios não são as mesmas do esquema.
Etapa 3: Design de banco de dados
Estamos coletando muitos dados dos 3 sensores conectados, então precisamos de um banco de dados para armazenar os dados e sensores. Mais tarde veremos como configurar o banco de dados no Raspberry Pi e como adicionar dados a ele. Mas primeiro o projeto do banco de dados ou ERD (Entity Relationship Diagram) deve ser feito e o meu também foi normalizado com 3NF. É por isso que dividimos os sensores em outra tabela e trabalhamos com IDs.
No geral, este é um projeto de banco de dados realmente básico e fácil de trabalhar.
Etapa 4: Preparando o Raspberry Pi
Então, agora que terminamos algumas noções básicas do projeto. Vamos começar com o Raspberry Pi!
Configuração do cartão SD
Primeiro, você precisa de um cartão SD de 16GB onde pode colocar sua imagem e um programa para carregar uma imagem inicial para o cartão SD.
Software:
Imagem inicial:
Assim que forem baixados:
- Coloque o seu cartão SD no seu computador.
- Abra o Win32 que você acabou de baixar.
- Selecione o arquivo de imagem Raspbian que você acabou de baixar.
- Clique em 'escrever' para a localização do seu cartão SD.
Isso pode levar algum tempo, dependendo do seu hardware. 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.
Agora você pode ejetar com SEGURANÇA o cartão SD do seu computador e colocá-lo no Raspberry Pi SEM 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.
Agora queremos controlar 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.
Raspi-config
sudo raspi-config
O que é realmente importante para este projeto é a seção de interface, temos que habilitar várias interfaces diferentes, habilitar todas as seguintes interfaces:
- One-wire
- SPI
- I2C
- Serial
Agora que terminamos o raspi-config, vamos tentar fazer uma conexão com a internet.
Conexão wifi
Primeiro, você precisa ser root para os seguintes comandos
sudo -i
Depois de fazer root, use o seguinte comando. SSID é o nome da sua rede e a senha é obviamente a senha.
wpa_passphrase "ssid" "senha" >> /etc/wpa_supplicant/wpa_supplicant.conf
Caso tenha cometido um erro, você pode verificar, atualizar ou excluir esta rede apenas inserindo o arquivo:
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
Atualizar e atualizar
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
Banco de dados MariaDB
Instale o servidor de banco de dados MariaDB:
sudo apt-get install servidor mariadb
Servidor da Web Apache2
Instale o servidor da web Apache2:
sudo apt install apache2
Pitão
Instale o Python:
atualizar-alternativas --install / usr / bin / python python /usr/bin/python2.7 1
atualizar-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
- PyMySQL
- solicitações de
- Python-socketio
- RPi. GPIO
- Gevent
- Gevent-websocket
- Ujson
- Wsaccel
Biblioteca de palestrantes
Instale a biblioteca de alto-falantes da Adafruit:
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash
É hora de reiniciar
sudo reboot
Etapa 5: encaminhe nosso banco de dados de engenharia para o RPi
Agora que instalamos tudo o que precisávamos, vamos colocar nosso banco de dados que projetamos em nosso Raspberry Pi!
Portanto, primeiro precisamos projetar nosso banco de dados no ambiente de trabalho MySql, enquanto fazemos isso, copie o código completo do banco de dados e exclua todas as palavras 'visíveis' nele. Então, uma vez copiado, vamos abrir o putty novamente, faça o login e digite:
sudo mysql
e agora você está na interface mysql, copie o código do banco de dados nele e pressione Enter.
Agora só precisamos criar um usuário
CRIAR USUÁRIO 'usuário' IDENTIFICADO PELO 'usuário';
GRANT ALL PRIVILEGES ON *. * TO 'user';
Agora reinicie.
Portanto, tudo deve ser configurado agora, você também pode fazer uma conexão com seu Pi e MySql Workbench, para que seja mais fácil verificar todos os dados em suas tabelas.
Etapa 6: Configurando Bluetooth em Nosso RPi
Estamos criando um alto-falante Bluetooth, então isso significa que a mídia está sendo enviada de nossa fonte para o Raspberry Pi e isso pode ser feito com bastante facilidade, vamos direto ao assunto!
Minha fonte para a conexão bluetooth:
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
ligar
Configure um agente de emparelhamento
agente em
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á totalmente conectado ao nosso Raspberry e você deve ser capaz de reproduzir mídia de seu dispositivo de origem no alto-falante Pi.
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 PyCharm para todo o meu backend, você só precisa ter certeza de que seu projeto PyCharm está conectado ao seu Raspberry Pi, isso significa que seu caminho de implantação está configurado em suas configurações e você instalou todos os pacotes de que precisamos, já deve ter sido feito na etapa 4
Usei minhas próprias classes e elas também estão incluídas no meu GitHub. O link está na introdução, caso você tenha perdido;)
No meu arquivo de back-end, usei classes de threading, para que tudo possa ser executado ao mesmo tempo e não interrompa um ao outro. 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 feitos de forma muito fácil, tentei trabalhar primeiro com dispositivos móveis tanto quanto possível, já que na maioria das vezes nos conectamos com Bluetooth a partir de um dispositivo móvel, 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 tão difícil, trabalhei com alguns GET's das minhas rotas de backend, toneladas de ouvintes de eventos e algumas estruturas socketio.
Etapa 9: Construindo meu caso e juntando tudo
Comecei com alguns esboços de como eu 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.
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 com uma caixa para garrafas de vinho e comecei a serrar a madeira. Depois de ter meu gabinete básico, só tive que fazer furos (muito na frente do case, como vocês podem ver nas fotos: P) e colocar alguns pregos nele, é um case básico mesmo, mas é parece muito legal e se encaixa perfeitamente.
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.
Etapa 10: alguns problemas que tive na criação do palestrante Slimbox …
Erros de Bluetooth e bluealsa
Sempre que eu queria tocar música ou me conectar com bluetooth, recebia erros do bluetooth e bluealsa. Pesquisei sobre isso e essa foi a solução para o meu problema. Então, por algum motivo, meu bluetooth foi bloqueado por software, não tenho certeza se isso é bloqueado por software padrão. Você pode ver se é digitando o seguinte comando em seu Putty.
lista de rfkill
Portanto, se for softblocked, basta usar isto:
rfkill desbloquear bluetooth
E você pode querer reiniciar depois disso, minha fonte:
Problemas de conexão serial
Então, outro grande problema que tive foi que não consegui fazer nenhuma conexão com meu Arduino através do shifter, depois de algumas pesquisas descobri que meu '/ dev / ttyS0' havia sumido e isso pode ser devido a uma atualização de seu RPi. Também encontrei uma solução para este
Você terá que reativar o console serial com raspi-config, reiniciar e, em seguida, remover manualmente o bit "console = serial0, 115200" de '/boot/cmdline.txt'. Confirme que "enable_uart = 1" está em' /boot/config.txt ', e reinicie novamente. Isso deve trazer sua porta ttyS0 de volta, bem como o soft link' / dev / serial0 'para ela.
Fonte:
Recomendado:
Despertador inteligente: um despertador inteligente feito com Raspberry Pi: 10 etapas (com imagens)
Despertador inteligente: um despertador inteligente feito com Raspberry Pi: Você sempre quis um relógio inteligente? Se sim, esta é a solução para você! Fiz o Smart Alarm Clock, é um relógio que você pode alterar a hora do alarme de acordo com o site. Quando o alarme disparar, haverá um som (campainha) e 2 luzes
Alto-falantes de prateleira com dock para ipod (Parte I - Caixas de alto-falantes): 7 etapas
Alto-falantes de prateleira com dock para ipod (Parte I - Caixas de alto-falantes): Comprei um ipod nano em novembro e, desde então, queria um sistema de alto-falantes atraente para ele. No trabalho, um dia, percebi que os alto-falantes do computador que uso funcionavam muito bem, então fui ao Goodwill mais tarde e encontrei um par de alto-falantes ok por $
Adicionar lâmpadas de batida a seus alto-falantes portáteis ou alto-falantes de PC : 5 etapas
Adicione lâmpadas de batida aos seus alto-falantes portáteis ou alto-falantes do pc …: você já quis que seus pequenos alto-falantes de áudio portáteis ou alto-falantes do pc tivessem a mesma aparência de se você estivesse no clube ?? Bem, neste instrutível, mostraremos como obter sua fala através do site e do som do clube
Alto-falantes portáteis / alto-falantes com bateria: 7 etapas
Alto-falantes portáteis / alto-falantes com bateria: Oi pessoal. Este é meu primeiro instrutível. Aproveite! Então, hoje vou mostrar a vocês como fazer de alto-falantes de pc antigos a alto-falantes com bateria. É bem básico e tenho muitas fotos .;)
Alto-falantes de teto montados em caixas de alto-falantes falsos: 6 etapas
Alto-falantes de teto montados em caixas de alto-falantes falsos: A ideia aqui é usar um alto-falante de teto de alto padrão, adquirido com desconto em um site de leilão, reempacotá-lo para o dever de som surround. Aqui eu usei um EV C8.2. Vão no varejo por cerca de 350 $ o par. Comprei-os no Ebay por tão pouco