Tabla de contenido:
- Paso 1: Suministros
- Paso 2: Esquema y cableado
- Paso 3: Diseño de la base de datos
- Paso 4: ¡Preparando la Raspberry Pi
- Paso 5: ¡Reenvíe la ingeniería de nuestra base de datos al 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
- Paso 10: Algunos problemas que tuve en mi camino para crear el altavoz Slimbox …
Video: Slimbox: ¡un altavoz Bluetooth inteligente !: 10 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
¡Hola!
Para mi proyecto escolar en MCT Howest Kortrijk, hice un dispositivo de altavoz Bluetooth inteligente con diferentes sensores, un anillo LCD y RGB NeoPixel incluido. Todo se ejecuta en Raspberry Pi (base de datos, servidor web, backend).
Entonces, en este instructivo, les mostraré cómo hice este proyecto en 3 semanas, paso a paso, así que si alguno de ustedes quiere recrear mi proyecto, ¡puede hacerlo fácilmente!
Este es también mi primer instructivo, si tiene alguna pregunta, ¡intentaré responderla lo más rápido posible!
Mi GitHub:
Paso 1: Suministros
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:
Sensor de potenciómetro
Un potenciómetro es una resistencia con tres terminales que se puede ajustar manualmente simplemente girando la parte superior del sensor. La posición de la parte superior determina la tensión de salida del potenciómetro.
Acelerómetro LSM303 + ruptura de brújula
La placa de conexión LSM303 es una combinación de un acelerómetro de triple eje y un magnetómetro / brújula, fabricado por Adafruit. Se utiliza con la interfaz I2C de Raspberry Pi.
Descripción general:
Hoja de datos:
MCP3008
Para leer los datos de mi potenciómetro utilicé un MCP3008, que es un convertidor analógico a digital de 8 canales y 10 bits con la interfaz SPI y es bastante fácil de programar.
Hoja de datos:
Altavoz - 3 "de diámetro - 8 ohmios 1 vatio
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 anillo NeoPixel está conectado al Arduino y se ejecuta allí, mientras que todas las demás cosas se ejecutan en la Raspberry Pi.
Anillo RGB NeoPixel
Este es un anillo pequeño lleno de 12 leds RGB (puede comprar anillos más grandes 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.
Resumen:
Pantalla LCD 16x2
Usé una pantalla LCD básica para imprimir mi temperatura, volumen y dirección IP.
Hoja de datos:
Raspberry Pi 3B + y tarjeta SD de 16GB
Todo mi proyecto se ejecuta en mi Raspberry Pi 3B + con una imagen configurada, que te ayudaré a configurar más adelante en mi instructable.
GPIO T-Part, 2 placas de prueba y muchos cables de puente
Para conectar todo lo que necesitaba placas de prueba y cables de puente, utilicé la parte GPIO T para tener más espacio y está claro qué pin es cuál.
Paso 2: Esquema y cableado
Para 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.
Descarga Fritzing:
¡Así que asegúrese de conectar todo de la manera correcta! En mi caso, los colores de los cables no son los mismos que en el esquema.
Paso 3: Diseño de la base de datos
Estamos recopilando una gran cantidad de datos de los 3 sensores conectados, por lo que necesitamos una base de datos para almacenar los datos y los sensores. Más adelante veremos cómo configurar la base de datos en la Raspberry Pi y cómo agregarle datos. Pero primero hay que hacer el diseño de la base de datos o ERD (Entity Relationship Diagram) y el mío también se normalizó con 3NF. Por eso dividimos los sensores en otra tabla y trabajamos con ID.
En general, este es un diseño de base de datos realmente básico y fácil de seguir trabajando.
Paso 4: ¡Preparando la Raspberry Pi
Así que ahora que tenemos algunos conceptos básicos del proyecto hechos. ¡Empecemos con la Raspberry Pi!
Configuración de la tarjeta SD
Primero, necesita una tarjeta SD de 16GB donde pueda colocar su imagen y un programa para cargar una imagen de inicio en la tarjeta SD.
Software:
Imagen de inicio:
Entonces, una vez que estos se descargan:
- Pon tu tarjeta SD en tu computadora.
- Abra Win32 que acaba de descargar.
- Seleccione el archivo de imagen de Raspbian que también acaba de descargar.
- Haga clic en "escribir" en la ubicación de su tarjeta SD.
Esto puede llevar algún tiempo, dependiendo de su hardware. 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.
Ahora puede expulsar de forma SEGURA la tarjeta SD de su computadora y colocarla en la Raspberry Pi SIN energía. 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.
Ahora queremos controlar 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.
Raspi-config
sudo raspi-config
Lo realmente importante para este proyecto es la sección de interfaz, tenemos que habilitar muchas interfaces diferentes, habilitar todas las siguientes interfaces:
- Un hilo
- SPI
- I2C
- De serie
Ahora que hemos terminado con raspi-config, intentemos establecer una conexión con Internet.
Conexión wifi
Primero, debes ser root para los siguientes comandos
sudo -i
Una vez que sea root, use el siguiente comando. SSID es su nombre de red y la contraseña es obviamente su contraseña.
wpa_passphrase "ssid" "contraseña" >> /etc/wpa_supplicant/wpa_supplicant.conf
En caso de que haya cometido un error, puede verificar, actualizar o eliminar esta red con solo ingresar ese archivo:
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
Actualización actualización
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
Base de datos MariaDB
Instale el servidor de base de datos MariaDB:
sudo apt-get install mariadb-server
Servidor web Apache2
Instale el servidor web Apache2:
sudo apt instalar apache2
Pitón
Instale Python:
alternativas de actualización --install / usr / bin / python python /usr/bin/python2.7 1
actualizar-alternativas --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
- PyMySQL
- Peticiones
- Python-socketio
- RPi. GPIO
- Gevent
- Gevent-websocket
- Ujson
- Wsaccel
Biblioteca de altavoces
Instale la biblioteca de altavoces de Adafruit:
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | intento
¡Es hora de reiniciar
sudo reiniciar
Paso 5: ¡Reenvíe la ingeniería de nuestra base de datos al RPi
Ahora que hemos instalado todo lo que necesitábamos, ¡coloquemos nuestra base de datos que diseñamos en nuestra Raspberry Pi!
Entonces, primero tenemos que reenviar la ingeniería de nuestra base de datos en el banco de trabajo MySql, mientras lo hacemos, copie el código completo de su base de datos y elimine todas las palabras 'visibles' que contiene. Entonces, una vez que se haya copiado, abramos la masilla nuevamente, inicie sesión y escriba:
sudo mysql
y ahora está en la interfaz mysql, copie el código de su base de datos y presione enter.
Ahora solo necesitamos crear un usuario
CREAR USUARIO 'usuario' IDENTIFICADO POR 'usuario';
OTORGAR TODOS LOS PRIVILEGIOS EN *. * A 'usuario';
Ahora reinicie.
Entonces, todo debería estar configurado ahora, también puede hacer una conexión con su Pi y MySql Workbench, por lo que es más fácil verificar todos los datos en sus tablas.
Paso 6: configurar Bluetooth en nuestro RPi
Estamos creando un altavoz Bluetooth, por lo que esto significa que los medios se están enviando desde nuestra fuente a la Raspberry Pi y esto se puede hacer con bastante facilidad, ¡empecemos!
Mi fuente para la conexión bluetooth:
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á completamente conectado a nuestra Raspberry y debería poder reproducir medios desde su dispositivo fuente en el altavoz Pi.
Paso 7: escribir el backend completo
Entonces, ahora que la configuración está lista, ¡finalmente podemos comenzar a escribir nuestro programa de backend!
Usé PyCharm para todo mi backend, solo necesita asegurarse de que su proyecto PyCharm esté conectado a su Raspberry Pi, esto significa que su ruta de implementación está configurada en su configuración y que instaló todos los paquetes que necesitamos, ya debería estar hecho en el paso 4.
Usé mis propias clases y estas también están incluidas en mi GitHub. El enlace está en la introducción en caso de que te lo hayas perdido;)
En mi archivo de backend usé clases de subprocesos, por lo que todo puede ejecutarse al mismo tiempo y no se interrumpen entre sí. 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 se hizo bastante fácil, primero intenté trabajar en dispositivos móviles tanto como fue posible, ya que la mayoría de las veces nos conectamos con Bluetooth desde un dispositivo móvil, 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 tan difícil, funcionó con algunos GET de mis rutas de backend, toneladas de oyentes de eventos y algunas estructuras de socketio.
Paso 9: Construir mi caso y ponerlo todo junto
Primero comencé con algunos bocetos de 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 maleta.
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.
Empecé con un estuche para botellas de vino y comencé a aserrar la madera. Una vez que tuve mi estuche básico, solo tuve que perforarle agujeros (muchos en la parte frontal del estuche, como se puede ver en las fotos: P) y ponerle algunos clavos, es un estuche realmente básico, pero se ve muy bien y queda perfecto.
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.
Paso 10: Algunos problemas que tuve en mi camino para crear el altavoz Slimbox …
Errores de bluetooth y bluealsa
Cada vez que quería reproducir música o conectarme con bluetooth, recibía errores de bluetooth y bluealsa. Investigué un poco y esta fue la solución a mi problema. Entonces, por alguna razón, mi bluetooth fue bloqueado por software, no estoy seguro de si esto es estándar por bloqueo suave. Puedes ver si es así escribiendo el siguiente comando en tu Putty.
lista de rfkill
Entonces, si está bloqueado por software, solo use esto:
rfkill desbloquear bluetooth
Y es posible que desee reiniciar después de esto, mi fuente:
Problemas de conexión en serie
Entonces, otro gran problema que tuve fue que no pude hacer ninguna conexión con mi Arduino a través del cambiador de nivel, después de algunas búsquedas descubrí que mi '/ dev / ttyS0' se había ido y esto podría deberse a una actualización de su RPi. También encontré una solución a esto
Tendrá que volver a habilitar la consola serie con raspi-config, reiniciar y luego eliminar manualmente el bit "console = serial0, 115200" de '/boot/cmdline.txt'. Confirme que "enable_uart = 1" está en' /boot/config.txt ', y reinicie nuevamente. Eso debería recuperar su puerto ttyS0, así como el enlace suave' / dev / serial0 '.
Fuente:
Recomendado:
Luz LED de escritorio inteligente - Iluminación inteligente con Arduino - Espacio de trabajo de Neopixels: 10 pasos (con imágenes)
Luz LED de escritorio inteligente | Iluminación inteligente con Arduino | Espacio de trabajo de Neopixels: Hoy en día pasamos mucho tiempo en casa, estudiando y trabajando virtualmente, así que ¿por qué no ampliar nuestro espacio de trabajo con un sistema de iluminación personalizado e inteligente basado en Arduino y LEDs Ws2812b? Aquí te muestro cómo construir tu Smart Luz LED de escritorio que
Reloj despertador inteligente: un reloj despertador inteligente hecho con Raspberry Pi: 10 pasos (con imágenes)
Reloj despertador inteligente: un reloj despertador inteligente hecho con Raspberry Pi: ¿Alguna vez has querido un reloj inteligente? Si es así, ¡esta es la solución para usted! Hice Smart Alarm Clock, este es un reloj que puede cambiar la hora de la alarma de acuerdo con el sitio web. Cuando suene la alarma, habrá un sonido (zumbador) y 2 luces
Cómo convertir cualquier ALTAVOZ en ALTAVOZ BLUETOOTH: 5 pasos
Cómo convertir cualquier ALTAVOZ en ALTAVOZ BLUETOOTH: Si tiene un sistema de cine en casa antiguo como yo, entonces ha descubierto que falta en su sistema una opción de conectividad muy popular, llamada Bluetooth. Sin esta función, tienes que enfrentarte al lío de cables de la conexión AUX normal y, por supuesto, si
Cómo controlar el interruptor inteligente básico Sonoff basado en ESP8266 con un teléfono inteligente: 4 pasos (con imágenes)
Cómo controlar el interruptor inteligente básico Sonoff basado en ESP8266 con un teléfono inteligente: Sonoff es una línea de dispositivos para Smart Home desarrollada por ITEAD. Uno de los dispositivos más flexibles y económicos de esa línea es Sonoff Basic. Es un conmutador habilitado para Wi-Fi basado en un gran chip, ESP8266. Este artículo describe cómo configurar el Cl
Convierta cualquier altavoz en un altavoz Bluetooth: 4 pasos
Convierta cualquier altavoz en un altavoz Bluetooth: hace varios años era común que los altavoces portátiles tuvieran un conector de 3,5 mm y funcionaran con pilas AA. Según los estándares actuales, está un poco desactualizado, especialmente la batería, ya que todos los dispositivos de hoy en día tienen una batería recargable. El conector de audio está st