Tabla de contenido:

Mood Speaker: un potente altavoz para reproducir música ambiental en función de la temperatura ambiente: 9 pasos
Mood Speaker: un potente altavoz para reproducir música ambiental en función de la temperatura ambiente: 9 pasos

Video: Mood Speaker: un potente altavoz para reproducir música ambiental en función de la temperatura ambiente: 9 pasos

Video: Mood Speaker: un potente altavoz para reproducir música ambiental en función de la temperatura ambiente: 9 pasos
Video: 🔝🎖️Top 10 Mejores ALTAVOCES AMPLIFICADOS de SONIDO PROFESIONAL parte 4 2023 2024, Mes de julio
Anonim
Mood Speaker: un potente altavoz para reproducir música ambiental en función de la temperatura ambiente
Mood Speaker: un potente altavoz para reproducir música ambiental en función de la temperatura ambiente

¡Hola!

Para mi proyecto escolar en MCT Howest Kortrijk, hice un Mood Speaker, este es un dispositivo de altavoz Bluetooth inteligente con diferentes sensores, una pantalla LCD y una tira de LED WS2812b incluida. El altavoz reproduce música de fondo en función de la temperatura, pero también se puede usar como un bluetooth normal vocero. Todo se ejecuta en Raspberry Pi (base de datos, servidor web, backend).

Así que este instructivo es un proceso paso a paso de cómo realicé este proyecto en 3 semanas. Entonces, si quieren recrear mi proyecto, pueden seguir la guía

Este instructivo es el primero que escribí, así que si hay alguna duda, ¡trataré de responderla lo más rápido posible!

Mi GitHub:

Paso 1: Suministros

Tarjeta SD Raspberry Pi 3B y 16GB

Todo mi proyecto se ejecuta en mi Raspberry Pi 3B con una imagen configurada, que explicaré en un paso posterior (Paso 4: Configurar Raspberry Pi)

Pantalla LCD 16x2

Usé una pantalla LCD básica para imprimir mi temperatura, brillo y dirección IP.

Hoja de datos:

Sensor de temperatura DS18B20

El DS18B20 es un sensor de un cable que mide la temperatura, fabricado por Maxim Integrated. Hay 2 tipos de sensores DS18B20, el componente solo (que usé) y la versión impermeable, que es mucho más grande, pero eso no es lo que necesitaba para mi proyecto, así que usé solo el componente. El sensor puede medir la temperatura en un rango de -55 ° C a + 125 ° C (-67 ° F a + 257 ° F) y tiene una precisión de 0.5 ° C desde -10 ° C a + 85 ° C. También tiene una resolución programable de 9 bits a 12 bits.

Hoja de datos:

MCP3008

Para leer los datos de mi sensor LDR y PIR utilicé un MCP3008, que es un convertidor de analógico a digital de 8 canales y 10 bits con la interfaz SPI y es bastante fácil de programar.

Hoja de datos:

Sensor de movimiento PIR

Para detectar cuando hay alguien entrando y saliendo de mi habitación, utilicé un sensor de infrarrojos pasivo porque son fáciles de usar y son pequeños.

Hoja de datos:

LDR

Usé un fotorresistor o LDR (resistencia de disminución de luz, o resistor dependiente de la luz) para detectar el nivel de brillo de la habitación. Y también para encender mi Ledstrip cuando está oscuro.

Altavoz - 3 "de diámetro - 4 ohmios 3 vatios

Este es el cono de altavoz que elegí después de calcular el voltaje y los amperios que necesitaría y fue un ajuste perfecto para mi proyecto Raspberry Pi, fabricado por Adafruit.

Resumen:

Amplificador mono clase D MAX98357 I2S

Este es el amplificador que viene con el altavoz, no solo es un amplificador, también es un convertidor I2S de digital a analógico, por lo que también se adapta perfectamente a mi altavoz y sistema de audio.

Descripción general:

Hoja de datos:

Arduino Uno

El Arduino Uno es una placa de microcontrolador de código abierto basada en el microcontrolador Microchip ATmega328P, fabricado por Arduino.cc. La placa Uno tiene 14 pines digitales, 6 pines analógicos y es totalmente programable con el software Arduino IDE

Descripción general:

Cambiador de nivel

Esta es una placa pequeña que se encarga de la comunicación entre Arduino Uno y Raspberry Pi y los diferentes voltajes, Arduino: 5V y Raspberry Pi: 3.3V. Esto es necesario porque el ledstrip está conectado al Arduino y se ejecuta allí, mientras que todas las demás cosas se ejecutan en la Raspberry Pi.

WS2812B - Ledstrip

Esta es una tira de leds con 60 leds RGB (puede comprar tiras más largas con más leds RGB, si lo desea). Que en mi caso está conectado al Arduino Uno, pero también se puede conectar a muchos otros dispositivos y es realmente sencillo de usar.

Hoja de datos:

GPIO T-Part, 1 protoboard y muchos cables de puente

Para conectar todo lo que necesitaba placas de prueba y cables de puente, no usé la parte GPIO T, pero puede usarla para saber claramente qué contenedor va a dónde.

Paso 2: Esquema y cableado

Esquema y cableado
Esquema y cableado
Esquema y cableado
Esquema y cableado

Para hacer mi esquema utilicé Fritzing, es un programa que puedes instalar y que te permite crear un esquema realmente fácil en diferentes tipos de vistas. Usé el tablero y la vista esquemática.

Descarga Fritzing:

Asegúrese de que todo esté conectado correctamente. Usé colores para aclarar un poco dónde conectar los cables. En mi caso utilicé diferentes colores para los cables.

Paso 3: Diseño de la base de datos

Diseño de base de datos
Diseño de base de datos

Estamos recopilando una gran cantidad de datos de los 3 sensores (temperatura de DS18B20, brillo de LDR y estado de sensor PIR). Así que es mejor mantener todos estos datos en una base de datos. Explicaré en un paso posterior cómo configurar la base de datos (Paso 5: ¡Reenviar la ingeniería de nuestra base de datos al RPi!) Pero primero se debe realizar el diseño o ERD (diagrama de relación de entidades). El mío se normalizó con 3NF, por eso dividimos los componentes y el historial de los componentes en otra tabla. Usamos la base de datos de Música para realizar un seguimiento de las canciones que se han escuchado.

En general, este es un diseño de base de datos realmente básico y fácil de seguir trabajando.

Paso 4: Configura Raspberry Pi

Así que ahora que tenemos algunos conceptos básicos del proyecto hechos. ¡Comencemos con la configuración de la Raspberry Pi!

Parte 1: Configurar la tarjeta SD

1) Descargue el software y los archivos necesarios

Necesita descargar 2 software y 1 SO, es decir, Raspbian para este proceso completo. 1er software: El primer software es Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

Segundo software: el segundo software es el formateador de tarjetas SD.

www.sdcard.org/downloads/formatter_4/

Sistema operativo Raspbian: este es el sistema operativo principal del Pi.

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

Extrae todos los archivos al escritorio.

2) Obtenga la tarjeta SD y el lector de tarjetas

Obtenga una tarjeta SD clase 10 de 8 GB como mínimo con un lector de tarjetas. Inserte esa tarjeta en el lector de tarjetas y conéctela al puerto USB.

3) Formatee la tarjeta SD

Abra SD Card Formatter y seleccione la unidad.

Haga clic en formato y no modifique ninguna otra opción.

Cuando se complete el formateo, haga clic en Aceptar.

4) Escriba el sistema operativo en la tarjeta SD

Abra win32diskimager.

Busque el archivo.img de Raspbian OS que se extrajo del archivo descargado.

Haga clic en abrir y luego haga clic en Escribir.

Si aparece alguna advertencia, ignórela haciendo clic en Aceptar. Espere a que se complete la escritura y puede tardar algunos minutos. Sé paciente.

norte

5) Una vez hecho esto, estamos listos para hacer algunos ajustes finales antes de poner la imagen en nuestro RPi.

Vaya al directorio de su tarjeta SD, busque el archivo llamado 'cmdline.txt' y ábralo.

Ahora agregue 'ip = 169.254.10.1' en la misma línea.

Guarda el archivo.

Cree un archivo llamado 'ssh' sin extensión ni contenido (la forma más fácil es crear un archivo txt y luego eliminar el.txt)

Ahora que todo está instalado en la tarjeta SD, puede expulsarlo de manera SEGURA de su computadora y colocarlo en la Raspberry Pi SIN conectar la alimentación. Una vez que la tarjeta SD esté en el RPI, conecte un cable LAN desde su computadora al puerto LAN del RPi, una vez que esté conectado puede conectar la alimentación al RPi.

Parte 2: Configurar el RPi

Masilla

Ahora queremos configurar nuestra Raspberry Pi, esto se hace a través de Putty.

Software de masilla:

Una vez descargado, abre Putty e inserta la IP '169.254.10.1' y el Puerto '22' y el tipo de conexión: SSH.

Ahora finalmente podemos abrir nuestra interfaz de línea de comando e iniciar sesión con la información de inicio de sesión -> Usuario: pi y contraseña: raspberry. (Se recomienda cambiarlo lo más rápido posible. Aquí hay una guía de cómo hacerlo:

Raspi-config

Tendremos que habilitar diferentes interfaces y para ello primero tenemos que teclear el siguiente código:

sudo raspi-config

Las cosas que necesitamos habilitar están en la sección de interfaz. Necesitamos habilitar las siguientes interfaces:

  • Un hilo
  • De serie
  • I2C
  • SPI

Eso era todo lo que necesitábamos hacer con raspi-config.

Añadiendo tu WIFI

Primero, debe ser root para que el siguiente comando se convierta en root

sudo -i

Una vez que sea root, use el siguiente comando: (Reemplace SSID con su nombre de red y contraseña con su contraseña de red)

wpa_passphrase "ssid" "contraseña" >> /etc/wpa_supplicant/wpa_supplicant.conf

En caso de que haya hecho algo mal, puede verificar, actualizar o eliminar esta red con solo ingresar el siguiente comando:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Entonces, después de ingresar a nuestra red, ingresemos a la interfaz del cliente WPA

wpa_cli

Seleccione su interfaz

interfaz wlan0

Recargar el archivo

reconfigurar

Y finalmente puedes ver si estás bien conectado:

ip a

Parte 3: Actualización del software de instalación de RPi +

Ahora que estamos conectados a Internet, actualizar los paquetes ya instalados sería una decisión inteligente, así que hagámoslo antes de instalar otros paquetes.

sudo apt-get update

sudo apt-get upgrade

Luego de actualizar el RPi tendremos que instalar el siguiente software:

Base de datos MariaDB

sudo apt-get install mariadb-server

Servidor web Apache2

sudo apt instalar apache2

Pitón

alternativas de actualización --install / usr / bin / python python /usr/bin/python3.7 1 alternativas de actualización --install / usr / bin / python python / usr / bin / python3 2

Paquete de Python

Tendrás que instalar todos estos paquetes para que el backend funcione a la perfección:

  • Matraz
  • Matraz-Cors
  • Matraz-MySql
  • Matraz-SocketIO
  • Solicitudes de PyMySQL
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Biblioteca de altavoces

Para usar el altavoz con el amplificador tendremos que instalar una biblioteca para ello

rizo -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

¡Configuración de la base de datos para el RPi!
¡Configuración de la base de datos para el RPi!

Ahora que hemos instalado todo lo que necesitábamos, ¡coloquemos nuestra base de datos que diseñamos en nuestra Raspberry Pi!

Para configurar la base de datos tendremos que conectar MySql y RPi. Para eso abriremos MySQLWorkbench y haremos una nueva conexión. Al mirar la imagen, tendrá que cambiar para cambiar la información a la suya.

Si aún no ha cambiado nada, puede usar para SSH pi y raspberry, para MySQL mysql y mysql.

Cuando algo no está claro, también puede seguir este tutorial:

Para exportar su base de datos debería ser más fácil usar PHPmyAdmin porque puede obtener muchos errores al hacerlo con MySql

Paso 6: configurar Bluetooth en nuestro RPi

Estamos creando un altavoz Mood, que también podemos usar con nuestra propia música para que sea más fácil cuando el RPi está

conectado a bluetooth seguí un tutorial para ello que puedes encontrar aquí:

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

También escribí todo aquí para todos los que quieran recrearlo.

Eliminando el bluealsa que ya se está ejecutando

sudo rm / var / run / bluealsa / *

Agregue el rol de receptor de perfil A2DP

sudo bluealsa -p a2dp-sink &

Abra la interfaz bluetooth y encienda su bluetooth

bluetoothctl encendido

Configure un agente de emparejamiento

agente en agente predeterminado

Haz que tu RPi sea reconocible

visible en

  • Ahora, desde su dispositivo bluetooth, busque el RPi y conéctese con él.
  • Confirme el emparejamiento en ambos dispositivos, escriba 'sí' en su masilla.
  • Autorice el servicio A2DP, escriba 'sí' nuevamente.
  • Una vez hecho esto, podemos confiar en nuestro dispositivo, por lo que no tenemos que pasar por todo esto cada vez que queremos conectarnos.

confíe en XX: XX: XX: XX: XX: XX (su dirección mac bluetooth de nuestro dispositivo de origen)

Si desea que su RPi siga siendo visible, es su propia elección, pero prefiero apagarlo nuevamente, para que la gente no pueda intentar conectarse con su caja

visible fuera

Entonces podemos salir de nuestra interfaz bluetooth

Salida

Y finalmente nuestro enrutamiento de audio: nuestro dispositivo de origen que reenvía a nuestro RPi

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

Ahora nuestro dispositivo está conectado a nuestra Raspberry con bluetooth y debería poder probarlo reproduciendo cualquier medio, por ejemplo, Spotify, etc.

Paso 7: escribir el backend completo

Entonces, ahora que la configuración está lista, ¡finalmente podemos comenzar a escribir nuestro programa de backend!

Usé Visual Studio Code para todo mi backend, solo necesita asegurarse de que su proyecto de Visual Studio esté conectado a su Raspberry Pi, esto significa que su cable LAN debe estar conectado a su RPi y hacer una conexión SSH. (Puede encontrar información sobre cómo crear una conexión remota aquí:

Usé mis propias clases y estas también están incluidas en mi GitHub.

En mi archivo de backend usé diferentes clases, por lo que todo se puede usar por separado y para que mi código principal no sea un lío con todos los diferentes subprocesos. Usé subprocesos para ejecutar todas las clases diferentes a la vez. Y en la parte inferior tiene todas las rutas para que podamos obtener datos fácilmente en nuestra interfaz.

Paso 8: escribir el frontend (HTML, CSS y JavaScript)

Ahora que el backend está listo, podemos comenzar a escribir el front-end completo.

HTML y CSS fueron bastante difíciles para mí, hice todo lo posible para hacerlo móvil primero porque puedo conectarme con bluetooth para cambiar las canciones con Spotify. Por lo tanto, sería más fácil de controlar desde un panel de control móvil.

Puede diseñar su tablero de la forma que desee, solo dejaré mi código y diseño aquí, ¡puede hacer lo que quiera!

Y Javascript no fue más fácil para mí, funcionó con algunos GET de mis rutas de backend, toneladas de oyentes de eventos y algunas estructuras de socketio para obtener los datos de mis sensores.

Paso 9: Construir mi caso y ponerlo todo junto

Construyendo mi caso y poniéndolo todo junto
Construyendo mi caso y poniéndolo todo junto
Construyendo mi caso y poniéndolo todo junto
Construyendo mi caso y poniéndolo todo junto
Construyendo mi caso y poniéndolo todo junto
Construyendo mi caso y poniéndolo todo junto
Construyendo mi caso y poniéndolo todo junto
Construyendo mi caso y poniéndolo todo junto

Primero comencé a esbozar cómo quería que se viera la carcasa, algo importante era que tenía que ser lo suficientemente grande para que todo encajara, ya que teníamos un gran circuito para colocar en la carcasa, pero teníamos que mantenernos compactos para que no encajara ''. no ocupa mucho espacio

Hice el estuche de madera, creo que es más fácil trabajar con él cuando no tienes tanta experiencia en la construcción de estuches y también tienes muchas cosas que puedes hacer con él.

Comencé con una tabla vieja que tenía por ahí y comencé a aserrar la madera. Una vez que tuve mi estuche básico, solo tuve que perforar agujeros en él (muchos en el frente del estuche, como se puede ver en las fotos y ponerle algunos clavos, es un estuche realmente básico, pero se ve muy bien y queda perfecto. También decidí pintarlo de blanco para que se viera bien.

Y una vez que el caso estuvo terminado, llegó el momento de ponerlo todo junto, como puede ver en la última imagen. Es un poco desordenado dentro de la caja, pero todo funciona y no tenía mucho más espacio, así que te aconsejo que tal vez crees un caso más grande si estás recreando mi proyecto.

Recomendado: