Table des matières:

Mood Speaker - un haut-parleur puissant pour écouter de la musique d'ambiance en fonction de la température ambiante : 9 étapes
Mood Speaker - un haut-parleur puissant pour écouter de la musique d'ambiance en fonction de la température ambiante : 9 étapes

Vidéo: Mood Speaker - un haut-parleur puissant pour écouter de la musique d'ambiance en fonction de la température ambiante : 9 étapes

Vidéo: Mood Speaker - un haut-parleur puissant pour écouter de la musique d'ambiance en fonction de la température ambiante : 9 étapes
Vidéo: SYSTEME MULTIMEDIA MERCEDES EN DETAIL - Toutes les fonctions et personnalisations 2024, Décembre
Anonim
Mood Speaker - un haut-parleur puissant pour écouter de la musique d'ambiance en fonction de la température ambiante
Mood Speaker - un haut-parleur puissant pour écouter de la musique d'ambiance en fonction de la température ambiante

Salut!

Pour mon projet scolaire au MCT Howest Kortrijk, j'ai fabriqué un haut-parleur d'ambiance. Il s'agit d'un haut-parleur Bluetooth intelligent avec différents capteurs, un écran LCD et une bande LED WS2812b inclus. Le haut-parleur joue de la musique de fond en fonction de la température mais peut également être utilisé comme Bluetooth ordinaire. conférencier. Tout fonctionne sur le Raspberry Pi (Base de données, Webserver, Backend).

Donc, cette instructable est un processus étape par étape de la façon dont j'ai réalisé ce projet en 3 semaines. Donc, si vous voulez recréer mon projet, vous pouvez suivre le guide

Cette instructable est mon premier que j'ai écrit, donc s'il y a des questions, je vais essayer d'y répondre aussi rapidement que possible !

Mon GitHub:

Étape 1: Fournitures

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 j'expliquerai dans une étape ultérieure (Étape 4: Configurer Raspberry Pi)

Écran LCD 16x2

J'ai utilisé un écran LCD de base pour imprimer ma température, ma luminosité et mon adresse IP.

Fiche technique:

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:

MCP3008

Pour lire les données de mon capteur LDR et PIR, j'ai utilisé un MCP3008, qui est un convertisseur analogique-numérique à 8 canaux 10 bits avec l'interface SPI et qui est assez facile à programmer.

Fiche technique:

Détecteur de mouvement PIR

Pour détecter quand quelqu'un entre et sort de ma chambre, j'ai utilisé un capteur infrarouge passif car ils sont faciles à utiliser et sont petits.

Fiche technique:

LDR

J'ai utilisé une photorésistance ou une LDR (Light Decreasing Resistance, ou résistance dépendante de la lumière) pour détecter le niveau de luminosité de la pièce dans laquelle elle se trouve. Et aussi pour allumer ma Ledstrip lorsqu'il fait trop sombre.

Haut-parleur - 3"Diamètre - 4 Ohm 3 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.

Présentation:

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 la bande de LED est connectée à l'Arduino et y fonctionne, tandis que tous les autres éléments fonctionnent sur le Raspberry Pi.

WS2812B - Bande LED

Il s'agit d'une bande de leds avec 60 leds RVB (vous pouvez acheter des bandes plus longues 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.

Fiche technique:

GPIO T-Part, 1 Breadboard et beaucoup de cavaliers

Pour connecter tout ce dont j'avais besoin de planches à pain et de fils de connexion, je n'ai pas utilisé la partie en T GPIO, mais vous pouvez l'utiliser pour savoir clairement quel bac va où.

Étape 2: Schéma et câblage

Schéma et câblage
Schéma et câblage
Schéma et câblage
Schéma et câblage

Pour faire 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. J'ai utilisé la maquette et la vue schématique.

Télécharger Fritzing:

Assurez-vous que tout est correctement connecté. J'ai utilisé des couleurs pour rendre un peu plus clair pour savoir où connecter les fils. Dans mon cas, j'ai utilisé différentes couleurs pour les fils

Étape 3: Conception de la base de données

Conception de base de données
Conception de base de données

Nous collectons beaucoup de données des 3 capteurs (température du DS18B20, luminosité du LDR et statut du capteur PIR). Il est donc préférable de conserver toutes ces données dans une base de données. J'expliquerai dans une étape ultérieure comment configurer la base de données (Etape 5: Transférer l'ingénierie de notre base de données au RPi !) Mais d'abord la conception ou ERD (Entity Relationship Diagram) doit être faite. Le mien a été normalisé avec 3NF, c'est pourquoi nous avons divisé les composants et l'historique des composants dans une autre table. Nous utilisons la base de données Musique pour garder une trace des chansons qui ont été écoutées.

Dans l'ensemble, il s'agit d'une conception de base de données vraiment basique et facile à utiliser.

Étape 4: Configurer Raspberry Pi

Alors maintenant que nous avons fait quelques bases du projet. Commençons par configurer le Raspberry Pi !

Partie 1: Configuration de la carte SD

1) Téléchargez le logiciel et les fichiers requis

Vous devez télécharger 2 logiciels et 1 système d'exploitation, c'est-à-dire Raspbian pour ce processus complet. 1er logiciel: le premier logiciel est Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

2ème logiciel: Le deuxième logiciel est SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

OS Raspbian: Il s'agit du système d'exploitation principal du Pi.

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

Extrayez tous les fichiers sur le bureau.

2) Obtenez la carte SD et le lecteur de carte

Obtenez une carte SD de classe 10 d'au moins 8 Go avec un lecteur de carte. Insérez cette carte dans le lecteur de carte et branchez-la sur le port USB.

3) Formatez la carte SD

Ouvrez SD Card Formatter et sélectionnez le lecteur.

Cliquez sur format et ne modifiez aucune autre option.

Une fois le formatage terminé, cliquez sur OK.

4) Écrire le système d'exploitation sur la carte SD

Ouvrez win32diskimager.

Parcourez le fichier.img de Raspbian OS qui a été extrait du fichier téléchargé.

Cliquez sur Ouvrir puis sur Écrire.

Si un avertissement apparaît, ignorez-les en cliquant sur OK. Attendez que l'écriture soit terminée et cela peut prendre quelques minutes. Soyez donc patient.

m

5) 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 (le moyen le plus simple est de créer un fichier txt et de supprimer le.txt par la suite)

Maintenant que tout est installé sur la carte SD, vous pouvez l'éjecter en toute sécurité de votre ordinateur et le mettre dans le Raspberry Pi SANS brancher l'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.

Partie 2: Configuration du RPi

Mastic

Maintenant, nous voulons configurer 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. (Il est recommandé de le changer le plus rapidement possible. Voici un guide comment:

Raspi-config

Nous devrons activer différentes interfaces et pour ce faire, nous devons d'abord taper le code suivant:

sudo raspi-config

Les choses que nous devons activer se trouvent dans la section d'interfaçage. Nous devons activer les interfaces suivantes:

  • Un fil
  • En série
  • I2C
  • SPI

C'était tout ce que nous avions besoin de faire avec raspi-config

Ajout de votre Wi-Fi

Tout d'abord, vous devez être root pour que la commande suivante devienne root

sudo -i

Une fois que vous êtes root, utilisez la commande suivante: (Remplacez SSID par votre nom de réseau et votre mot de passe par votre mot de passe réseau)

wpa_passphrase "ssid" "mot de passe" >> /etc/wpa_supplicant/wpa_supplicant.conf

Si vous avez fait quelque chose de mal, vous pouvez vérifier, mettre à jour ou supprimer ce réseau en entrant simplement la commande suivante:

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

Partie 3: Mise à jour du RPi + logiciel d'installation

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

Après la mise à jour du RPi, nous devrons installer le logiciel suivant:

Base de données MariaDB

sudo apt-get install mariadb-server

Serveur Web Apache2

sudo apt installer apache2

Python

update-alternatives --install /usr/bin/python python /usr/bin/python3.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
  • Requêtes PyMySQL
  • Python-socketio
  • RPi. GPIO
  • Gévent
  • Gevent-websocket

Bibliothèque de conférenciers

Pour utiliser le haut-parleur avec l'amplificateur, nous devrons installer une bibliothèque pour cela

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

Configuration de la base de données sur le RPi !
Configuration de la base de données sur le 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 !

Pour configurer la base de données, nous devrons connecter MySql et RPi. Pour cela, nous allons ouvrir MySQLWorkbench et établir une nouvelle connexion. Lorsque vous regardez l'image, vous devrez modifier les informations pour les vôtres.

Si vous n'avez encore rien changé, vous pouvez utiliser pour SSH pi et raspberry, pour MySQL mysql et mysql.

Lorsque quelque chose n'est pas clair, vous pouvez également suivre ce tutoriel:

Pour exporter votre base de données, il devrait être plus facile d'utiliser PHPmyAdmin car vous pouvez obtenir beaucoup d'erreurs en le faisant avec MySql

Étape 6: Configuration du Bluetooth sur notre RPi

Nous créons un haut-parleur Mood, que nous pouvons également utiliser avec notre propre musique, ce qui est plus facile lorsque le RPi est

connecté au bluetooth j'ai suivi un tuto pour cela que vous pouvez trouver ici:

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

J'ai tout écrit ici aussi pour tous ceux qui veulent le recréer

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

mise sous tension bluetoothctl

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 connecté à notre Raspberry avec Bluetooth et vous devriez pouvoir le tester en lisant n'importe quel média, par exemple Spotify, etc.

É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é Visual Studio Code pour tout mon backend, il vous suffit de vous assurer que votre projet Visual Studio est connecté à votre Raspberry Pi, cela signifie que votre câble LAN doit être connecté à votre RPi et établir une connexion SSH. (des informations sur la création d'une connexion à distance peuvent être trouvées ici:

J'ai utilisé mes propres classes et celles-ci sont également toutes incluses dans mon GitHub.

Dans mon fichier backend, j'ai utilisé différentes classes, donc tout peut être utilisé séparément et pour que mon code principal ne soit pas un gâchis avec tous les différents threads. J'ai utilisé le threading pour exécuter toutes les différentes classes à la fois. 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 et CSS étaient assez difficiles pour moi, j'ai fait de mon mieux pour le rendre mobile d'abord parce que je peux m'y connecter avec Bluetooth pour changer les chansons avec Spotify. Il serait donc plus facile de contrôler depuis 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 plus facile pour moi, j'ai travaillé avec quelques GET de mes routes backend, des tonnes d'écouteurs d'événements et quelques structures socketio pour obtenir les données de mes capteurs.

Étape 9: Construire mon dossier et tout assembler

Construire mon dossier et tout assembler
Construire mon dossier et tout assembler
Construire mon dossier et tout assembler
Construire mon dossier et tout assembler
Construire mon dossier et tout assembler
Construire mon dossier et tout assembler
Construire mon dossier et tout assembler
Construire mon dossier et tout assembler

J'ai d'abord commencé à esquisser à 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 avions un gros circuit à mettre dans le boîtier mais devions rester compacts pour qu'il ne le fasse pas. ne prend pas beaucoup de place

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 vieille planche que j'avais autour et j'ai juste commencé à 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 et y mettre des clous, c'est un étui vraiment basique, mais il a l'air plutôt cool et s'adapte parfaitement. J'ai également décidé de le peindre en blanc pour le rendre beau.

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.

Conseillé: