Inhoudsopgave:
- Stap 1: Benodigdheden
- Stap 2: Schema en bedrading
- Stap 3: Database-ontwerp
- Stap 4: Stel Raspberry Pi in
- Step 5: Setting Up the Database to the RPi
- Stap 6: Bluetooth configureren op onze RPi
- Stap 7: De volledige backend schrijven
- Stap 8: Frontend schrijven (HTML, CSS & JavaScript)
- Stap 9: Mijn zaak opbouwen en alles samenvoegen
Video: Mood Speaker- een krachtige luidspreker voor het afspelen van Mood Music op basis van de omgevingstemperatuur - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Hoi!
Voor mijn schoolproject bij MCT Howest Kortrijk heb ik een Mood Speaker gemaakt dit is een slim Bluetooth speaker apparaat met verschillende sensoren, een LCD en WS2812b ledstrip meegeleverd. De speaker speelt achtergrondmuziek af op basis van de temperatuur maar kan ook als gewone bluetooth gebruikt worden spreker. Alles draait op de Raspberry Pi (Database, Webserver, Backend).
Dus deze instructable is een stapsgewijs proces van hoe ik dit project in 3 weken heb gerealiseerd. Dus als jullie mijn project opnieuw willen maken, kun je de gids volgen
Deze instructable is mijn eerste die ik heb geschreven, dus als er vragen zijn, zal ik proberen ze zo snel mogelijk te beantwoorden!
Mijn GitHub:
Stap 1: Benodigdheden
Raspberry Pi 3B & 16GB SD-kaart
Mijn hele project draait op mijn Raspberry Pi 3B met een geconfigureerde afbeelding, die ik in een latere stap zal uitleggen (stap 4: Setup Raspberry Pi)
LCD-scherm 16x2
Ik gebruikte een standaard LCD-scherm om mijn temperatuur, helderheid en IP-adres af te drukken.
Gegevensblad:
DS18B20 Temperatuursensor
De DS18B20 is een eendraadssensor die de temperatuur meet, vervaardigd door Maxim Integrated. Er zijn 2 soorten DS18B20-sensoren, alleen de component (die ik heb gebruikt) en de waterdichte versie, die veel groter is, maar dat was niet wat ik nodig had voor mijn project, dus ik gebruikte alleen de component. De sensor kan de temperatuur meten in een bereik van -55 °C tot +125 °C (-67 °F tot +257 °F) en heeft een nauwkeurigheid van 0,5 °C van -10 °C tot +85 °C. Het heeft ook een programmeerbare resolutie van 9 bits tot 12 bits.
Gegevensblad:
MCP3008
Om de data van mijn LDR en PIR-sensor uit te lezen heb ik een MCP3008 gebruikt, dit is een 8 kanaals 10 bit analoog naar digitaal convertor met de SPI interface en is vrij eenvoudig te programmeren.
Gegevensblad:
PIR bewegingssensor
Om te detecteren wanneer iemand mijn kamer binnenkomt en verlaat, heb ik een passieve infraroodsensor gebruikt, omdat ze gemakkelijk te gebruiken en klein zijn.
Gegevensblad:
LDR
Ik heb een fotoresistor of LDR (Light Decreasing Resistance, of lichtafhankelijke weerstand) gebruikt om het helderheidsniveau van de kamer waarin het zich bevindt te detecteren. En om ook mijn Ledstrip aan te zetten als het te donker is.
Luidspreker – 3”Diameter – 4 Ohm 3 Watt
Dit is de luidsprekerconus die ik heb gekozen na het berekenen van de spanning en ampère die hij nodig heeft en deze paste perfect bij mijn Raspberry Pi-project, vervaardigd door Adafruit.
Overzicht:
MAX98357 I2S klasse-D monoversterker
Dit is de versterker die bij de luidspreker wordt geleverd, het is niet alleen een versterker, het is ook een I2S digitaal naar analoog converter, dus het past ook perfect bij mijn luidspreker- en audiosysteem.
Overzicht:
Gegevensblad:
Arduino Uno
De Arduino Uno is een open-source microcontrollerkaart op basis van de Microchip ATmega328P-microcontroller, vervaardigd door Arduino.cc. Het Uno-bord heeft 14 digitale pinnen, 6 analoge pinnen en is volledig programmeerbaar met de Arduino IDE-software
Overzicht:
Niveauverschuiver
Dit is een klein bordje dat zorgt voor de communicatie tussen de Arduino Uno en de Raspberry Pi en de verschillende spanningen, Arduino: 5V & Raspberry Pi: 3.3V. Dit is nodig omdat de ledstrip is aangesloten op de Arduino en daarop draait, terwijl alle andere dingen op de Raspberry Pi draaien.
WS2812B - Ledstrip
Dit is een ledstrip met 60 RGB-leds (je kunt desgewenst langere strips met meer RGB-leds kopen). Die is in mijn geval aangesloten op de Arduino Uno, maar kan ook op veel andere apparaten worden aangesloten en is echt eenvoudig te gebruiken.
Gegevensblad:
GPIO T-Part, 1 Breadboard en veel jumperwires
Om alles wat ik nodig had breadboards en jumperwires aan te sluiten, heb ik het GPIO T-deel niet gebruikt, maar je kunt het gebruiken om duidelijk te weten welke bak waar hoort.
Stap 2: Schema en bedrading
Voor het maken van mijn schema heb ik Fritzing gebruikt, het is een programma dat je kunt installeren waarmee je heel eenvoudig een schema kunt maken in verschillende soorten weergaven. Ik gebruikte het breadboard en de schematische weergave.
Fritzing downloaden:
Zorg ervoor dat alles correct is aangesloten. Ik heb kleuren gebruikt om het wat duidelijker te maken waar de draden moeten worden aangesloten. In mijn geval gebruikte ik verschillende kleuren voor de draden
Stap 3: Database-ontwerp
We verzamelen veel gegevens van de 3 sensoren (Temperatuur van DS18B20, Helderheid van LDR en Status van PIR-sensor). Het is dus het beste om al deze gegevens in een database te bewaren. Ik zal in een latere stap uitleggen hoe je de database configureert (Stap 5: Forward Engineering Our Database to the RPi!) Maar eerst moet het ontwerp of ERD (Entity Relationship Diagram) worden gemaakt. De mijne was genormaliseerd met 3NF, daarom hebben we de componenten en de geschiedenis van de componenten in een andere tabel opgesplitst. We gebruiken de muziekdatabase om bij te houden welke nummers zijn beluisterd.
Over het algemeen is dit een heel eenvoudig en eenvoudig databaseontwerp om verder mee te werken.
Stap 4: Stel Raspberry Pi in
Dus nu we een aantal basisprincipes van het project hebben gedaan. Laten we beginnen met het instellen van de Raspberry Pi!
Deel 1: De SD-kaart configureren
1) Download de benodigde software en bestanden
U moet 2 software en 1 besturingssysteem, d.w.z. Raspbian, downloaden voor dit volledige proces. 1e software: de eerste software is Win32 Disk Imager.
sourceforge.net/projects/win32diskimager/
2e software: Tweede software is SD Card Formatter.
www.sdcard.org/downloads/formatter_4/
Raspbian OS: Dit is het belangrijkste besturingssysteem van de Pi.
www.raspberrypi.org/downloads/raspberry-pi-os/
Pak alle bestanden uit naar het bureaublad.
2) Haal de SD-kaart en de kaartlezer
Koop een SD-kaart van minimaal 8 GB klasse 10 met een kaartlezer. Steek die kaart in de kaartlezer en steek die in de USB-poort.
3) Formatteer de SD-kaart
Open SD Card Formatter en selecteer het station.
Klik op formaat en wijzig geen andere opties.
Wanneer het formatteren is voltooid, klikt u op OK.
4) Schrijf het besturingssysteem op de SD-kaart
Open win32diskimager.
Blader door het.img-bestand van Raspbian OS dat uit het gedownloade bestand is geëxtraheerd.
Klik op openen en vervolgens op Schrijven.
Als er een waarschuwing verschijnt, negeer deze dan door op OK te klikken. Wacht tot het schrijven is voltooid. Dit kan enkele minuten duren. Dus wees geduldig.
N
5) Zodra dit is gebeurd, zijn we klaar om enkele laatste aanpassingen te maken voordat we de afbeelding in onze RPi plaatsen.
Ga naar de map van je SD-kaart, zoek naar het bestand met de naam 'cmdline.txt' en open het.
Voeg nu 'ip=169.254.10.1' toe op dezelfde regel.
Bewaar het bestand.
Maak een bestand met de naam 'ssh' zonder extensie of inhoud. (de makkelijkste manier is om een txt-bestand te maken en daarna de.txt te verwijderen)
Nu alles op de SD-kaart is geïnstalleerd, kunt u deze VEILIG van uw computer verwijderen en in de Raspberry Pi plaatsen ZONDER de stroom aan te sluiten. Zodra de SD-kaart in de RPI zit, sluit u een LAN-kabel van uw computer aan op de RPi LAN-poort, zodra deze is aangesloten, kunt u de voeding op de RPi aansluiten.
Deel 2: De RPi. configureren
Stopverf
Nu willen we onze Raspberry Pi configureren, dit gaat via Putty.
Putty-software:
Na het downloaden opent u Putty en voert u IP '169.254.10.1' en poort '22' en verbindingstype: SSH in.
Nu kunnen we eindelijk onze opdrachtregelinterface openen en inloggen met de inloggegevens van de starter -> Gebruiker: pi & wachtwoord: raspberry. (Het wordt aanbevolen om het zo snel mogelijk te wijzigen. Hier is een handleiding hoe:
Raspi-config
We zullen verschillende interfaces moeten inschakelen en daarvoor moeten we eerst de volgende code typen:
sudo raspi-config
De dingen die we moeten inschakelen, staan in de interface-sectie. We moeten de volgende interfaces inschakelen:
- Eendraads
- serieel
- I2C
- SPI
Dat was alles wat we moesten doen met raspi-config
Uw wifi toevoegen
Eerst moet je root zijn om het volgende commando root te laten worden:
sudo -i
Als je eenmaal root bent, gebruik je de volgende opdracht: (Vervang SSID door je netwerknaam en wachtwoord door je netwerkwachtwoord)
wpa_passphrase "ssid" "password" >> /etc/wpa_supplicant/wpa_supplicant.conf
Als je iets verkeerd hebt gedaan, kun je dit netwerk controleren, bijwerken of verwijderen door het volgende commando in te voeren:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Dus nadat we ons netwerk zijn binnengegaan, gaan we naar de WPA-clientinterface
wpa_cli
Selecteer uw interface
interface wlan0
Herlaad het bestand
opnieuw configureren
En tot slot kun je zien of je goed aangesloten bent:
ip a
Deel 3: De RPi bijwerken + software installeren
Nu we verbonden zijn met internet, zou het een slimme zet zijn om de reeds geïnstalleerde pakketten bij te werken, dus laten we dat eerst doen voordat we andere pakketten installeren.
sudo apt-get update
sudo apt-get upgrade
Na het updaten van de RPi zullen we de volgende software moeten installeren:
MariaDB-database
sudo apt-get install mariadb-server
Apache2-webserver
sudo apt installeer 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
Python-pakket
Je zult al deze pakketten moeten installeren om de backend perfect te laten werken:
- Kolf
- Kolf-Cors
- Kolf-MySql
- Kolf-SocketIO
- PyMySQL-verzoeken
- Python-socketio
- RPi. GPIO
- Gent
- Gevent-websocket
Luidsprekerbibliotheek
Om de luidspreker met de versterker te gebruiken, moeten we er een bibliotheek voor installeren
krul -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
Nu we alles hebben geïnstalleerd wat we nodig hadden, laten we onze database die we hebben ontworpen op onze Raspberry Pi zetten!
Voor het opzetten van de database zullen we MySql en RPi moeten verbinden. Daarvoor openen we MySQLWorkbench en maken we een nieuwe verbinding. Als je naar de afbeelding kijkt, moet je veranderen om de informatie in de jouwe te veranderen.
Als je nog niets hebt veranderd, kun je voor SSH pi en raspberry, voor MySQL mysql en mysql gebruiken.
Als iets niet duidelijk is, kun je ook deze tutorial volgen:
Om uw database te exporteren, zou het gemakkelijker moeten zijn om PHPmyAdmin te gebruiken, omdat u veel fouten kunt krijgen als u dit doet met MySql
Stap 6: Bluetooth configureren op onze RPi
We zijn een Mood-luidspreker aan het maken, die we ook met onze eigen muziek kunnen gebruiken, dus dit is gemakkelijker als de RPi is
verbonden met bluetooth Ik heb er een tutorial voor gevolgd die je hier kunt vinden:
scribles.net/streaming-bluetooth-audio-fr…
Ik heb hier ook alles opgeschreven voor iedereen die het opnieuw wil maken
Het verwijderen van de reeds lopende bluealsa
sudo rm /var/run/bluealsa/*
Voeg A2DP-profiel Sink-rol toe
sudo bluealsa -p a2dp-sink &
Open de bluetooth-interface en zet je bluetooth aan
bluetoothctl inschakelen
Stel een koppelingsagent in
agent op default-agent
Maak uw RPi vindbaar
vindbaar op
- Zoek nu vanaf uw Bluetooth-apparaat naar de RPi en maak er verbinding mee.
- Bevestig de koppeling op beide apparaten, typ 'ja' in je stopverf.
- Autoriseer A2DP-service, typ nogmaals 'ja'.
- Zodra dit is gebeurd, kunnen we ons apparaat vertrouwen, dus we hoeven dit niet elke keer opnieuw te doen als we verbinding willen maken
vertrouw XX:XX:XX:XX:XX:XX (Uw bluetooth mac-adres van ons bronapparaat)
Als je wilt dat je RPi vindbaar blijft, is dat je eigen keuze, maar ik zet hem liever weer uit, zodat mensen niet kunnen proberen verbinding te maken met je box
vindbaar uit
Dan kunnen we onze bluetooth-interface verlaten
Uitgang
En tot slot onze audiorouting: ons bronapparaat doorsturen naar onze RPi
bluealsa-aplay 00:00:00:00:00:00
Nu is ons apparaat met bluetooth verbonden met onze Raspberry en je zou het moeten kunnen testen door media af te spelen, bijvoorbeeld Spotify, enz.
Stap 7: De volledige backend schrijven
Dus nu de installatie is voltooid, kunnen we eindelijk beginnen met het schrijven van ons backend-programma!
Ik heb Visual Studio Code voor mijn hele backend gebruikt, je hoeft alleen maar te zorgen dat je Visual Studio-project is aangesloten op je Raspberry Pi, dit betekent dat je LAN-kabel moet zijn aangesloten op je RPi en een SSH-verbinding moet maken. (info over het maken van een externe verbinding vindt u hier:
Ik heb mijn eigen lessen gebruikt en deze zijn ook allemaal opgenomen in mijn GitHub.
In mijn backend-bestand heb ik verschillende klassen gebruikt, zodat alles afzonderlijk kan worden gebruikt en zodat mijn hoofdcode geen puinhoop is met alle verschillende threads. Ik gebruikte threading om alle verschillende klassen tegelijk uit te voeren. En onderaan heb je alle routes zodat we gemakkelijk gegevens in onze frontend kunnen krijgen.
Stap 8: Frontend schrijven (HTML, CSS & JavaScript)
Nu de backend klaar is, kunnen we beginnen met het schrijven van de volledige frontend.
HTML en CSS waren best moeilijk voor mij, ik deed mijn best om het eerst mobiel te maken omdat ik er verbinding mee kan maken met bluetooth om de nummers met Spotify te wijzigen. Dus het zou gemakkelijker te bedienen zijn vanaf een mobiel dashboard
Je kunt je dashboard op elke gewenste manier ontwerpen, ik laat gewoon mijn code en ontwerp hier achter, je kunt doen wat je wilt!
En Javascript was niet eenvoudiger voor mij, werkte met een paar GET's van mijn backend-routes, tonnen gebeurtenisluisteraars en enkele socketio-structuren om de gegevens van mijn sensoren te krijgen.
Stap 9: Mijn zaak opbouwen en alles samenvoegen
Ik begon eerst te schetsen hoe ik wilde dat de behuizing eruit zou zien, iets belangrijks was dat het groot genoeg moest zijn om alles erin te laten passen, aangezien we een groot circuit hadden om in de behuizing te plaatsen, maar we moesten compact blijven zodat het niet deed' neemt niet veel ruimte in beslag
Ik heb de kist van hout gemaakt, ik denk dat het het gemakkelijkst is om mee te werken als je niet zoveel ervaring hebt met het bouwen van kisten en je ook veel dingen hebt die je ermee kunt doen.
Ik ben begonnen met een oude plank die ik had liggen en ben net begonnen met het zagen van het hout. Toen ik mijn basiskoffer had, moest ik er alleen gaten in boren (veel aan de voorkant van de koffer, zoals je op de foto's kunt zien en er wat spijkers in doen, het is een heel basiskoffer, maar het ziet er best cool uit en past perfect. Ik heb ook besloten om het wit te schilderen om het er goed uit te laten zien.
En toen de zaak klaar was, was het tijd om alles in elkaar te zetten, zoals je kunt zien op de laatste foto! Het is een beetje een puinhoop in de doos, maar alles werkt en ik had niet zoveel meer ruimte, dus ik raad je aan om misschien een grotere koffer te maken als je mijn project opnieuw maakt.
Aanbevolen:
Idee voor doe-het-zelf-activiteit voor weerstations voor 12+ jaar: 4 stappen
Idee voor doe-het-zelf-weerstationactiviteit voor 12-plussers: in deze activiteit zullen deelnemers hun weerstation opzetten, de lucht in sturen en de opnames (licht, temperatuur, vochtigheid) in realtime volgen via de Blynk-app. Bovendien leert u hoe u de geregistreerde waarden publiceert
Water is de basis voor het menselijk leven: 4 stappen
Water is de basis voor het menselijk leven: Inleiding: Arduino gebruiken om een project te maken dat een functie bevat. Ik maak een Arduino-project dat je eraan herinnert om een bepaalde tijd water te drinken.Motivatie:Tegenwoordig besteden de meeste mensen het grootste deel van hun tijd aan hun werk en ze vaak voor
Ga ermee om Oogbescherming (voor aanpassing van het gezichtsvermogen bij het wakker worden): 35 stappen
Ga ermee om Oogbescherming (voor aanpassing van het gezichtsvermogen bij het ontwaken): Groot probleem: wanneer we uit de slaap ontwaken en onze vriend de kamerverlichting aandoet, worden de meesten van ons onmiddellijk verblind door de lichten omdat onze ogen tijd nodig hebben om zich aan te passen van een donkere omgeving naar een lichte. Wat gaan we doen als we willen oplossen
Hoe u Facebook kunt stoppen met het automatisch afspelen van video's op Android !!: 10 stappen
Hoe Facebook te stoppen met het automatisch afspelen van video's op Android !!: Deze instructable laat je zien hoe je kunt voorkomen dat Facebook video's automatisch afspeelt op zowel data als wifi op een Android-apparaat Abonneer je op mijn kanaal Bedankt
Hoe muziek te krijgen van BIJNA ELKE (Haha) website (zolang je het kunt horen, kun je het krijgen Ok prima als het in Flash is ingesloten, kun je dat misschien niet) BEWERKT !!!!! Info toegevoegd: 4 stappen
Hoe muziek te krijgen van BIJNA ELKE (Haha) website (zolang je het kunt horen, kun je het krijgen … Ok prima als het in Flash is ingesloten, kun je dat misschien niet) BEWERKT !!!!! Toegevoegde info: als je ooit naar een website gaat en een nummer speelt dat je leuk vindt en wilt, dan is hier de instructie voor jou, niet mijn schuld als je iets verknoeit (de enige manier waarop het zal gebeuren is als je dingen begint te verwijderen zonder reden )ik heb muziek kunnen krijgen voor