Tabla de contenido:
- Paso 1: Suministros
- Paso 2: Esquema y cableado
- Paso 3: Diseño de la base de datos
- Paso 4: Configura Raspberry Pi
- Step 5: Setting Up the Database to the RPi
- Paso 6: configurar Bluetooth en nuestro RPi
- Paso 7: escribir el backend completo
- Paso 8: escribir el frontend (HTML, CSS y JavaScript)
- Paso 9: Construir mi caso y ponerlo todo junto
Video: Mood Speaker: un potente altavoz para reproducir música ambiental en función de la temperatura ambiente: 9 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
¡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
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
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
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
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:
Álbumes con etiquetas NFC para reproducir automáticamente música de Spotify en Chromecast: 5 pasos
Álbumes con etiquetas NFC para reproducir automáticamente música de Spotify en Chromecast: este proyecto comenzó con la idea de hacer un collage de álbumes de mis artistas más reproducidos en Spotify. Después de jugar con la API de Spotify en Python, pensé que sería bueno vincular estas portadas de álbumes a sus URI de Spotify y comenzar a reproducir el
Reproducir canciones (MP3) con Arduino usando PWM en el altavoz o transformador Flyback: 6 pasos (con imágenes)
Reproducir canciones (MP3) con Arduino usando PWM en altavoz o transformador Flyback: Hola chicos, este es mi primer instructivo, ¡espero que les guste! Básicamente, en este proyecto he utilizado la comunicación en serie entre mi Arduino y mi computadora portátil, para transmitir datos de música desde mi computadora portátil al Arduino. Y usando los TIMERS de Arduino t
Greatest Holdies: pirateé un teléfono antiguo para reproducir la mejor música de espera: 13 pasos (con imágenes)
Greatest Holdies: Hackeé un teléfono antiguo para reproducir la mejor música de espera: https: //youtu.be/Ma4QnfQ7Dxo Bueno … Estoy bastante seguro de que no quieres un teléfono que solo reproduzca música de retención … Pero hay un sinnúmero de otros proyectos interesantes que puede realizar con este truco muy básico de estos " escritorio " Los telefonos
Reproducir la misma música en varias habitaciones: 3 pasos
Reproduzca la misma música en varias habitaciones: Hola a todos, no sé ustedes, pero me gusta tener la misma música en todo mi apartamento sin que el sonido sea demasiado alto. Entonces, después de investigar un poco sobre este problema, decidí construir varios altavoces, todos conectados por wifi al mismo
Cómo reproducir música a través de un amplificador de guitarra: 4 pasos
Cómo reproducir música a través de un amplificador de guitarra: este es un Instructable que le mostrará cómo reproducir música a través de un amplificador de guitarra Disfrute