Table des matières:
- Étape 1: Fournitures
- Étape 2: Schéma et câblage
- Étape 3: Conception de la base de données
- Étape 4: Préparation du Raspberry Pi
- Étape 5: Transférer l'ingénierie de notre base de données au RPi
- Étape 6: Configuration du Bluetooth sur notre RPi
- Étape 7: écriture du backend complet
- Étape 8: Rédaction du Frontend (HTML, CSS & JavaScript)
- Étape 9: Construire mon dossier et tout assembler
- Étape 10: Quelques problèmes que j'ai rencontrés sur mon chemin de création du haut-parleur Slimbox…
Vidéo: Slimbox - un haut-parleur Bluetooth intelligent ! : 10 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Salut!
Pour mon projet scolaire au MCT Howest Kortrijk, j'ai fabriqué un haut-parleur Bluetooth intelligent avec différents capteurs, un anneau LCD et RGB NeoPixel inclus. Tout fonctionne sur le Raspberry Pi (Base de données, Webserver, Backend).
Donc, dans ce instructable, je vais vous montrer comment j'ai fait ce projet en 3 semaines, étape par étape, donc si l'un d'entre vous veut recréer mon projet, vous pouvez facilement le faire !
C'est aussi mon premier instructable, si vous avez des questions, je vais essayer d'y répondre le plus rapidement possible !
Mon GitHub:
Étape 1: Fournitures
Capteur de température DS18B20
Le DS18B20 est un capteur à un fil qui mesure la température, fabriqué par Maxim Integrated. Il existe 2 sortes de capteurs DS18B20, le composant uniquement (que j'ai utilisé) et la version étanche, qui est beaucoup plus grande, mais ce n'est pas ce dont j'avais besoin pour mon projet, j'ai donc utilisé uniquement le composant. Le capteur peut mesurer la température dans une plage de -55°C à +125°C (-67°F à +257°F) et il a une précision de 0,5°C de -10°C à +85°C. Il a également une résolution programmable de 9 bits à 12 bits.
Fiche technique:
Capteur potentiomètre
Un potentiomètre est une résistance à trois bornes qui est réglable manuellement en tournant simplement la partie supérieure du capteur. La position de la partie supérieure détermine la tension de sortie du potentiomètre.
LSM303 Accéléromètre + Compas Breakout
La carte de dérivation LSM303 est une combinaison d'un accéléromètre à trois axes et d'un magnétomètre / boussole, fabriqué par Adafruit. Il est utilisé avec l'interface I2C du Raspberry Pi.
Aperçu:
Fiche technique:
MCP3008
Pour lire les données de mon potentiomètre, j'ai utilisé un MCP3008, qui est un convertisseur analogique-numérique 8 canaux 10 bits avec l'interface SPI et est assez facile à programmer.
Fiche technique:
Haut-parleur - 3" de diamètre - 8 Ohm 1 Watt
C'est le cône de haut-parleur que j'ai choisi après avoir calculé la tension et les ampères dont il aurait besoin et c'était un ajustement parfait pour mon projet Raspberry Pi, fabriqué par Adafruit.
Présentation:
Amplificateur mono classe D MAX98357 I2S
C'est l'amplificateur fourni avec le haut-parleur, non seulement c'est un amplificateur, c'est aussi un convertisseur numérique-analogique I2S, il convient donc parfaitement à mon haut-parleur et à mon système audio.
Aperçu:
Fiche technique:
Arduino Uno
L'Arduino Uno est une carte microcontrôleur open source basée sur le microcontrôleur Microchip ATmega328P, fabriqué par Arduino.cc. La carte Uno a 14 broches numériques, 6 broches analogiques et est entièrement programmable avec le logiciel Arduino IDE
Aperçu:
Changeur de niveau
Il s'agit d'une petite carte qui s'occupe de la communication entre l'Arduino Uno et le Raspberry Pi et les différentes tensions, Arduino: 5V & Raspberry Pi: 3,3V. Cela est nécessaire car l'anneau NeoPixel est connecté à l'Arduino et y fonctionne, tandis que tous les autres éléments fonctionnent sur le Raspberry Pi.
Anneau NeoPixel RVB
Il s'agit d'un petit anneau rempli de 12 leds RVB (vous pouvez acheter des anneaux plus gros avec plus de leds RVB, si vous le souhaitez). Ce qui est dans mon cas connecté à l'Arduino Uno, mais peut également être connecté à de nombreux autres appareils et est vraiment simple à utiliser.
Présentation:
Écran LCD 16x2
J'ai utilisé un écran LCD de base pour imprimer ma température, mon volume et mon adresse IP.
Fiche technique:
Carte SD Raspberry Pi 3B+ et 16 Go
Tout mon projet s'exécute sur mon Raspberry Pi 3B+ avec une image configurée, que je vous aiderai à configurer plus tard dans mon instructable.
GPIO T-Part, 2 Breadboards et beaucoup de cavaliers
Pour connecter tout ce dont j'avais besoin de planches à pain et de fils de connexion, j'ai utilisé la partie en T GPIO afin d'avoir plus d'espace et de savoir quelle broche est laquelle.
Étape 2: Schéma et câblage
Pour mon schéma, j'ai utilisé Fritzing, c'est un programme que vous pouvez installer qui vous permet de créer un schéma très facilement dans différents types de vues.
Télécharger Fritzing:
Assurez-vous donc de tout connecter correctement ! Dans mon cas, les couleurs des fils ne sont pas les mêmes que sur le schéma.
Étape 3: Conception de la base de données
Nous collectons beaucoup de données à partir des 3 capteurs connectés, nous avons donc besoin d'une base de données pour stocker les données et les capteurs. Plus tard, nous verrons comment configurer la base de données sur le Raspberry Pi et comment y ajouter des données. Mais d'abord la conception de la base de données ou ERD (Entity Relationship Diagram) doit être faite et la mienne a également été normalisée avec 3NF. C'est pourquoi nous divisons les capteurs dans une autre table et travaillons avec des ID.
Dans l'ensemble, il s'agit d'une conception de base de données vraiment basique et facile à utiliser.
Étape 4: Préparation du Raspberry Pi
Alors maintenant que nous avons fait quelques bases du projet. Commençons par le Raspberry Pi !
Configuration de la carte SD
Tout d'abord, vous avez besoin d'une carte SD de 16 Go sur laquelle vous pouvez mettre votre image et d'un programme pour télécharger une image de départ sur la carte SD.
Logiciel:
Image de démarrage:
Donc une fois ceux-ci téléchargés:
- Insérez votre carte SD dans votre ordinateur.
- Ouvrez Win32 que vous venez de télécharger.
- Sélectionnez le fichier image Raspbian que vous venez également de télécharger.
- Cliquez sur « écrire » à l'emplacement de votre carte SD.
Cela peut prendre un certain temps, selon votre matériel. Une fois cela fait, nous sommes prêts à faire quelques derniers ajustements avant de mettre l'image dans notre RPi.
- Allez dans le répertoire de votre carte SD, recherchez le fichier nommé 'cmdline.txt' et ouvrez-le.
- Ajoutez maintenant 'ip=169.254.10.1' sur la même ligne.
- Enregistrez le fichier.
- Créez un fichier nommé 'ssh' sans extension ni contenu.
Vous pouvez maintenant éjecter la carte SD de votre ordinateur en toute SÉCURITÉ et la mettre dans le Raspberry Pi SANS alimentation. Une fois la carte SD insérée dans le RPI, connectez un câble LAN de votre ordinateur au port LAN du RPi, une fois celui-ci connecté, vous pouvez connecter l'alimentation au RPi.
Maintenant, nous voulons contrôler notre Raspberry Pi, cela se fait via Putty.
Logiciel Putty:
Une fois téléchargé, ouvrez Putty et insérez l'IP '169.254.10.1' et le port '22' et le type de connexion: SSH. Maintenant, nous pouvons enfin ouvrir notre interface de ligne de commande et nous connecter avec les informations de connexion de démarrage -> Utilisateur: pi & Mot de passe: raspberry.
Raspi-config
sudo raspi-config
Ce qui est vraiment important pour ce projet, c'est la section d'interfaçage, nous devons activer beaucoup d'interfaces différentes, activer toutes les interfaces suivantes:
- Un fil
- SPI
- I2C
- En série
Maintenant que nous avons terminé avec raspi-config, essayons de nous connecter à Internet.
Connexion Wifi
Tout d'abord, vous devez être root pour les commandes suivantes
sudo -i
Une fois que vous êtes root, utilisez la commande suivante. Le SSID est votre nom de réseau et le mot de passe est évidemment son mot de passe.
wpa_passphrase "ssid" "mot de passe" >> /etc/wpa_supplicant/wpa_supplicant.conf
En cas d'erreur, vous pouvez vérifier, mettre à jour ou supprimer ce réseau en saisissant simplement ce fichier:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Donc, après être entré dans notre réseau, entrons dans l'interface client WPA
wpa_cli
Sélectionnez votre interface
interface wlan0
Recharger le fichier
reconfigurer
Et enfin vous pouvez voir si vous êtes bien connecté:
IP un
Mettre à jour et mettre à niveau
Maintenant que nous sommes connectés à Internet, mettre à jour les packages déjà installés serait une décision intelligente, alors faisons-le d'abord avant d'installer d'autres packages.
sudo apt-get mise à jour
sudo apt-get mise à niveau
Base de données MariaDB
Installez le serveur de base de données MariaDB:
sudo apt-get install mariadb-server
Serveur Web Apache2
Installez le serveur Web Apache2:
sudo apt installer apache2
Python
Installez Python:
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives --install /usr/bin/python python /usr/bin/python3 2
paquet Python
Vous devrez installer tous ces packages pour que le backend fonctionne parfaitement:
- Ballon
- Flacon-Cors
- Flask-MySql
- Flacon-SocketIO
- PyMySQL
- Demandes
- Python-socketio
- RPi. GPIO
- Gévent
- Gevent-websocket
- Ujson
- Wsaccel
Bibliothèque de conférenciers
Installez la bibliothèque de haut-parleurs d'Adafruit:
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | frapper
Il est temps de redémarrer
redémarrage sudo
Étape 5: Transférer l'ingénierie de notre base de données au RPi
Maintenant que nous avons installé tout ce dont nous avions besoin, plaçons notre base de données que nous avons conçue sur notre Raspberry Pi !
Nous devons donc d'abord transférer notre base de données dans l'atelier MySql, tout en faisant cela, copier le code complet de votre base de données et supprimer tous les mots « visibles » qu'il contient. Donc, une fois que c'est copié, ouvrons à nouveau putty, connectez-vous et tapez:
sudo mysql
et maintenant vous êtes dans l'interface mysql, copiez le code de votre base de données et appuyez sur Entrée.
Il ne nous reste plus qu'à créer un utilisateur
CRÉER UN UTILISATEUR « utilisateur » IDENTIFIÉ PAR « utilisateur »;
ACCORDER TOUS LES PRIVILÈGES SUR *.* À « utilisateur »;
Maintenant, redémarrez.
Tout doit donc être configuré maintenant, vous pouvez également établir une connexion avec votre Pi et MySql Workbench, il est donc plus facile de vérifier toutes les données de vos tables.
Étape 6: Configuration du Bluetooth sur notre RPi
Nous créons un haut-parleur Bluetooth, cela signifie donc que le média est envoyé de notre source au Raspberry Pi et cela peut être fait assez facilement, allons-y !
Ma source pour la connexion bluetooth:
Suppression du bluealsa déjà en cours d'exécution
sudo rm /var/run/bluealsa/*
Ajouter le rôle de récepteur de profil A2DP
sudo bluealsa -p a2dp-évier &
Ouvrez l'interface Bluetooth et allumez votre Bluetooth
bluetoothctl
allumer
Configurez un agent de jumelage
agent sur
agent-par défaut
Rendez votre RPi détectable
découvrable sur
- Maintenant, à partir de votre appareil Bluetooth, recherchez le RPi et connectez-vous avec lui.
- Confirmez l'appairage sur les deux appareils, tapez « oui » dans votre mastic.
- Autorisez le service A2DP, tapez à nouveau 'yes'.
- Une fois cela fait, nous pouvons faire confiance à notre appareil, nous n'avons donc pas à tout faire à chaque fois que nous voulons nous connecter
faites confiance à XX:XX:XX:XX:XX:XX (votre adresse mac bluetooth de notre appareil source)
Si vous voulez que votre RPi reste détectable, c'est votre choix, mais je préfère le désactiver à nouveau, afin que les gens ne puissent pas essayer de se connecter avec votre box
détectable désactivé
Ensuite, nous pouvons quitter notre interface bluetooth
sortir
Et enfin notre routage audio: notre transfert de périphérique source vers notre RPi
00:00:00:00:00:00
Maintenant, notre appareil est entièrement connecté à notre Raspberry et vous devriez pouvoir lire les médias de votre appareil source sur le haut-parleur Pi.
Étape 7: écriture du backend complet
Alors maintenant que la configuration est terminée, nous pouvons enfin commencer à écrire notre programme backend !
J'ai utilisé PyCharm pour tout mon backend, il vous suffit de vous assurer que votre projet PyCharm est connecté à votre Raspberry Pi, cela signifie que votre chemin de déploiement est configuré dans vos paramètres et que vous avez installé tous les packages dont nous avons besoin, cela devrait déjà être fait à l'étape 4.
J'ai utilisé mes propres classes et celles-ci sont également toutes incluses dans mon GitHub. Le lien est dans l'intro au cas où vous l'auriez manqué;)
Dans mon fichier backend, j'ai utilisé des classes de threading, donc tout peut s'exécuter en même temps et cela ne s'interrompt pas. Et en bas, vous avez toutes les routes afin que nous puissions facilement obtenir des données dans notre frontend.
Étape 8: Rédaction du Frontend (HTML, CSS & JavaScript)
Maintenant que le backend est terminé, nous pouvons commencer à écrire le front-end complet.
HTML & CSS a été fait assez facilement, a essayé de travailler d'abord mobile autant que possible, puisque nous nous connectons la plupart du temps avec Bluetooth à partir d'un appareil mobile, il serait plus facile de contrôler à partir d'un tableau de bord mobile.
Vous pouvez concevoir votre tableau de bord comme vous le souhaitez, je vais simplement laisser mon code et mon design ici, vous pouvez faire ce que vous voulez !
Et Javascript n'était pas si difficile, fonctionnait avec quelques GET de mes routes backend, des tonnes d'écouteurs d'événements et quelques structures socketio.
Étape 9: Construire mon dossier et tout assembler
J'ai d'abord commencé par quelques croquis de ce à quoi je voulais que le boîtier ressemble, quelque chose d'important était qu'il devait être assez grand pour que tout puisse rentrer, car nous avons un gros circuit à mettre dans le boîtier.
J'ai fabriqué le boîtier en bois, je pense que c'est le plus facile à utiliser lorsque vous n'avez pas beaucoup d'expérience dans la construction de boîtiers et que vous pouvez également faire beaucoup de choses avec.
Je suis parti d'une caisse pour bouteilles de vin et je viens de commencer à scier le bois. Une fois que j'ai eu mon étui de base, j'ai juste eu à percer des trous dedans (beaucoup sur le devant du boîtier, comme vous pouvez le voir sur les photos:P) et à y mettre des clous, c'est un étui vraiment basique, mais il a l'air plutôt cool et s'adapte parfaitement.
Et une fois l'affaire terminée, il était temps de tout assembler, comme vous pouvez le voir sur la dernière photo ! C'est un peu le bordel à l'intérieur de la boîte, mais tout fonctionne et je n'avais pas beaucoup plus d'espace, alors je vous conseille de créer peut-être un boîtier plus grand si vous recréez mon projet.
Étape 10: Quelques problèmes que j'ai rencontrés sur mon chemin de création du haut-parleur Slimbox…
Erreurs Bluetooth et bluealsa
Chaque fois que je voulais écouter de la musique ou me connecter avec Bluetooth, je recevais des erreurs de Bluetooth et de bluealsa. J'ai fait quelques recherches là-dessus et c'était la solution à mon problème. Donc, pour une raison quelconque, mon bluetooth a été bloqué en douceur, je ne sais pas s'il s'agit d'un blocage en douceur standard. Vous pouvez voir si c'est en tapant la commande suivante dans votre Putty.
liste rfkill
Donc, s'il est bloqué, utilisez simplement ceci:
rfkill débloquer bluetooth
Et vous voudrez peut-être redémarrer après cela, ma source:
Problèmes de connexion série
Donc, un autre gros problème que j'ai eu était que je ne pouvais établir aucune connexion avec mon Arduino via le levelshifter, après quelques recherches, j'ai découvert que mon '/dev/ttyS0' avait disparu et cela pourrait être dû à une mise à jour de votre RPi. J'ai aussi trouvé une solution à ce sujet
Vous devrez réactiver la console série avec raspi-config, redémarrer, puis supprimer manuellement le bit "console=serial0, 115200" de '/boot/cmdline.txt'. Confirmez que "enable_uart=1" est dans ' /boot/config.txt', et redémarrez à nouveau. Cela devrait récupérer votre port ttyS0, ainsi que le lien logiciel '/dev/serial0' vers celui-ci.
Source:
Conseillé:
Lampe LED de bureau intelligente - Éclairage intelligent avec Arduino - Espace de travail Neopixels : 10 étapes (avec photos)
Lampe LED de bureau intelligente | Éclairage intelligent avec Arduino | Espace de travail Neopixels : maintenant, nous passons beaucoup de temps à la maison, à étudier et à travailler virtuellement, alors pourquoi ne pas agrandir notre espace de travail avec un système d'éclairage personnalisé et intelligent basé sur les LED Arduino et Ws2812b. Ici, je vous montre comment construire votre Smart Lampe LED de bureau qui
Garduino – le jardin intelligent avec Arduino : 4 étapes (avec photos)
Garduino – le jardin intelligent avec Arduino : de nos jours, personne n'est innocent. Y a-t-il quelqu'un qui n'a pas accidentellement tué une plante ??? Il est difficile de garder vos plantes en vie. Vous achetez une nouvelle plante, et dans le pire des cas, vous oubliez simplement de l'arroser. Dans le meilleur des cas, vous vous souvenez qu'il existe, mais vous le faites
Réveil intelligent : un réveil intelligent fabriqué avec Raspberry Pi : 10 étapes (avec photos)
Réveil intelligent : un réveil intelligent fabriqué avec Raspberry Pi : Avez-vous déjà voulu une horloge intelligente ? Si oui, c'est la solution pour vous ! J'ai fait Smart Alarm Clock, c'est une horloge dont vous pouvez changer l'heure de l'alarme en fonction du site Web. Lorsque l'alarme se déclenche, il y aura un son (buzzer) et 2 lumières s'allumeront
Miroir magique intelligent flottant d'un vieil ordinateur portable avec reconnaissance vocale Alexa : 6 étapes (avec photos)
Miroir magique intelligent flottant d'un vieil ordinateur portable avec reconnaissance vocale Alexa : inscrivez-vous à mon cours « L'électronique en bref » ici : https://www.udemy.com/electronics-in-a-nutshell/?couponCode=TINKERSPARK Consultez également mon chaîne youtube ici pour plus de projets et de tutoriels électroniques : https://www.youtube.com/channel/UCelOO
Une magnifique lampe flash rechargeable avec haut-parleurs Bluetooth et recharge de téléphones portables : 4 étapes (avec photos)
Une magnifique lampe de poche rechargeable avec haut-parleurs Bluetooth et recharge de téléphones portables : Salut les amis, dans cette instructable, je parle d'une lampe de poche rechargeable équipée de haut-parleurs Bluetooth et de charge USB femelle pour le chargement de téléphone portable, c'est donc un appareil à multiples facettes qui est bon pour camper et se promener dans les parcs ou monter