INHOUDSOPGAWE:

Mood Speaker- 'n kragtige luidspreker vir bui-musiek wat gespeel moet word op grond van die omgewingstemperatuur: 9 stappe
Mood Speaker- 'n kragtige luidspreker vir bui-musiek wat gespeel moet word op grond van die omgewingstemperatuur: 9 stappe

Video: Mood Speaker- 'n kragtige luidspreker vir bui-musiek wat gespeel moet word op grond van die omgewingstemperatuur: 9 stappe

Video: Mood Speaker- 'n kragtige luidspreker vir bui-musiek wat gespeel moet word op grond van die omgewingstemperatuur: 9 stappe
Video: Джонатан Блоу: Сознание, игровой дизайн и свобода воли 2024, Julie
Anonim
Mood Speaker- 'n kragtige luidspreker vir bui-musiek wat gespeel moet word op grond van die omgewingstemperatuur
Mood Speaker- 'n kragtige luidspreker vir bui-musiek wat gespeel moet word op grond van die omgewingstemperatuur

Haai daar!

Vir my skoolprojek by MCT Howest Kortrijk, het ek 'n Mood Speaker gemaak, dit is 'n slim Bluetooth -luidsprekerapparaat met verskillende sensors, 'n LCD en WS2812b ledstrip ingesluit. Die luidspreker speel agtergrondmusiek op grond van die temperatuur, maar kan ook as gewone bluetooth gebruik word spreker. Alles werk op die Raspberry Pi (databasis, webbediener, backend).

Hierdie instruksies is dus 'n stap -vir -stap proses van hoe ek hierdie projek binne 3 weke gerealiseer het. As u my projek wil herskep, kan u die gids volg

Hierdie instruksie is my eerste een wat ek geskryf het, so as ek vrae het, sal ek probeer om dit so vinnig as moontlik te beantwoord!

My GitHub:

Stap 1: Voorrade

Framboos Pi 3B en 16 GB SD -kaart

My hele projek loop op my Raspberry Pi 3B met 'n gekonfigureerde beeld, wat ek in 'n latere stap sal verduidelik (Stap 4: Stel Raspberry Pi op)

LCD -skerm 16x2

Ek het 'n basiese LCD -skerm gebruik om my temperatuur, helderheid en IP -adres af te druk.

Gegevensblad:

DS18B20 Temperatuursensor

Die DS18B20 is 'n enkeldraadsensor wat die temperatuur meet, vervaardig deur Maxim Integrated. Daar is 2 soorte DS18B20 -sensors, slegs die komponent (wat ek gebruik het) en die waterdigte weergawe, wat baie groter is, maar dit is nie wat ek nodig gehad het vir my projek nie, so ek het slegs die komponent gebruik. Die sensor kan die temperatuur in 'n reeks van -55 ° C tot +125 ° C (-67 ° F tot +257 ° F) meet, en dit het 'n akkuraatheid van 0,5 ° C van -10 ° C tot +85 ° C. Dit het ook 'n programmeerbare resolusie van 9 bis tot 12 bis.

Gegevensblad:

MCP3008

Om die data van my LDR en PIR-sensor te lees, gebruik ek 'n MCP3008, 'n 8-kanaals 10-bis analoog na digitale omskakelaar met die SPI-koppelvlak en redelik maklik om te programmeer.

Gegevensblad:

PIR bewegingsensor

Om te sien wanneer iemand my kamer binnegaan en verlaat, het ek 'n passiewe infrarooi sensor gebruik omdat dit maklik is om te gebruik en klein is.

Gegevensblad:

LDR

Ek het 'n fotoresistor of LDR (Light Decreasing Resistance, of ligafhanklike weerstand) gebruik om die helderheid van die kamer waar te neem, op te spoor. En om my Ledstrip ook aan te skakel as dit donker is.

Luidspreker - 3”Diameter - 4 Ohm 3 Watt

Dit is die luidsprekerkegel wat ek gekies het na die berekening van die spanning en ampère wat dit sou benodig, en dit pas perfek by my Raspberry Pi -projek, vervaardig deur Adafruit.

Oorsig:

MAX98357 I2S Klas-D mono versterker

Dit is die versterker wat by die luidspreker kom, nie net 'n versterker nie, dit is ook 'n I2S digitaal na analoog -omskakelaar, dus dit pas ook perfek by my luidspreker en klankstelsel.

Oorsig:

Gegevensblad:

Arduino Uno

Die Arduino Uno is 'n oopbron-mikrobeheerderbord gebaseer op die Microchip ATmega328P-mikrobeheerder, vervaardig deur Arduino.cc. Die Uno -bord het 14 digitale penne, 6 analoog penne en is volledig programmeerbaar met die Arduino IDE -sagteware

Oorsig:

Vlakveranderaar

Dit is 'n klein bordjie wat sorg vir die kommunikasie tussen die Arduino Uno en die Raspberry Pi en die verskillende spannings, Arduino: 5V en Raspberry Pi: 3.3V. Dit is nodig omdat die ledstrip aan die Arduino gekoppel is en daar loop, terwyl al die ander dinge op die Raspberry Pi werk.

WS2812B - Ledstrip

Dit is 'n ledstrip met 60 RGB -leds (u kan langer stroke met meer RGB -leds koop as u wil). Dit is in my geval gekoppel aan die Arduino Uno, maar kan ook aan baie ander toestelle gekoppel word en is baie eenvoudig om te gebruik.

Gegevensblad:

GPIO T-Part, 1 broodbord en baie jumperwires

Ek het nie die GPIO T-onderdeel gebruik om alles wat ek broodborde en jumperwires nodig het aan te sluit nie, maar u kan dit gebruik om duidelik te weet watter bak waarheen gaan.

Stap 2: Skematiese en bedrading

Skematiese en bedrading
Skematiese en bedrading
Skematiese en bedrading
Skematiese en bedrading

Vir die maak van my skematiese gebruik ek Fritzing, dit is 'n program wat u kan installeer waarmee u 'n baie eenvoudige skema kan maak in verskillende soorte kyke. Ek het die broodbord en die skematiese aansig gebruik.

Laai Fritzing af:

Maak seker dat alles korrek verbind is. Ek het kleure gebruik om dit 'n bietjie duideliker te maak om te weet waar ek die drade moet koppel. In my geval het ek verskillende kleure vir die drade gebruik

Stap 3: Databasisontwerp

Databasisontwerp
Databasisontwerp

Ons versamel baie data van die 3 sensors (temperatuur van DS18B20, helderheid van LDR en status van PIR-sensor). Dit is dus die beste om al hierdie data in 'n databasis te stoor. Ek sal in 'n latere stap verduidelik hoe om die databasis op te stel (Stap 5: Stuur Engineering Our Database aan die RPi!) Maar eers moet die ontwerp of ERD (Entity Relationship Diagram) gemaak word. Myne is genormaliseer met 3NF, daarom het ons die komponente en die geskiedenis van die komponente in 'n ander tabel verdeel. Ons gebruik die Musiek -databasis om die liedjies waarna geluister is, by te hou.

In die algemeen is dit 'n basiese en maklike databasisontwerp waarmee u verder kan werk.

Stap 4: Stel Raspberry Pi op

Nou dat ons 'n paar basiese beginsels van die projek gedoen het. Kom ons begin met die opstel van die Raspberry Pi!

Deel 1: Die opstel van die SD -kaart

1) Laai die nodige sagteware en lêers af

U moet 2 sagteware en 1 bedryfstelsel, dit wil sê Raspbian, aflaai vir hierdie volledige proses. 1ste sagteware: Die eerste sagteware is Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

2de sagteware: Tweede sagteware is SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Dit is die belangrikste bedryfstelsel van die Pi.

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

Pak alle lêers uit na die lessenaar.

2) Kry die SD -kaart en die kaartleser

Kry 'n minimum 8GB klas 10 SD -kaart met 'n kaartleser. Steek die kaart in die kaartleser en steek dit in die USB -poort.

3) Formateer die SD -kaart

Maak die SD -kaartformater oop en kies die skyf.

Klik op die formaat en verander geen ander opsies nie.

As die opmaak voltooi is, klik op OK.

4) Skryf die bedryfstelsel op die SD -kaart

Maak win32diskimager oop.

Blaai deur die.img -lêer van Raspbian OS wat uit die afgelaaide lêer gehaal is.

Klik op oop en klik dan op Skryf.

As daar 'n waarskuwing verskyn, ignoreer dit deur op OK te klik. Wag totdat die skryfwerk voltooi is, en dit kan 'n paar minute neem. Wees dus geduldig.

n

5) Sodra dit klaar is, is ons gereed om 'n paar finale aanpassings aan te bring voordat ons die beeld in ons RPi plaas.

Gaan na die gids van u SD -kaart, soek die lêer met die naam 'cmdline.txt' en maak dit oop.

Voeg nou 'ip = 169.254.10.1' op dieselfde reël by.

Stoor die lêer.

Skep 'n lêer met die naam 'ssh' sonder uitbreiding of inhoud. (Maklikste manier is om 'n txt -lêer te skep en die.txt daarna te verwyder)

Noudat alles op die SD -kaart geïnstalleer is, kan u dit VEILIG van u rekenaar verwyder en in die Raspberry Pi sit sonder om die krag aan te sluit. Sodra die SD -kaart in die RPI is, koppel 'n LAN -kabel van u rekenaar aan die RPi LAN -poort, sodra dit gekoppel is, kan u die krag aan die RPi koppel.

Deel 2: Die opstel van die RPi

Stopverf

Nou wil ons ons Raspberry Pi instel, dit word gedoen via Putty.

Putty sagteware:

Sodra dit afgelaai is, maak Putty oop en plaas die IP '169.254.10.1' en poort '22' en verbindingstipe: SSH.

Nou kan ons uiteindelik ons opdragreël -koppelvlak oopmaak en aanmeld met die aanmeldinligting -> Gebruiker: pi en wagwoord: framboos. (Dit word aanbeveel om dit so vinnig as moontlik te verander. Hier is 'n gids:

Raspi-konfig

Ons sal verskillende koppelvlakke moet aktiveer en om dit te kan doen, moet ons eers die volgende kode tik:

sudo raspi-config

Die dinge wat ons moet aktiveer, is in die koppelvlakafdeling. Ons moet die volgende koppelvlakke aktiveer:

  • Eendraad
  • Reeks
  • I2C
  • SPI

Dit was alles wat ons met raspi-config moes doen

Voeg u WIFI by

Eerstens moet u wortel wees vir die volgende opdrag om wortel te word

sudo -i

Sodra u root is, gebruik die volgende opdrag: (Vervang SSID met u netwerknaam en wagwoord met u netwerkwagwoord)

wpa_passphrase "ssid" "wagwoord" >> /etc/wpa_supplicant/wpa_supplicant.conf

As u iets verkeerd gedoen het, kan u hierdie netwerk kontroleer, opdateer of verwyder deur net die volgende opdrag in te voer:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Dus, nadat ons ons netwerk binnegekom het, laat ons die WPA -kliënt -koppelvlak betree

wpa_cli

Kies u koppelvlak

koppelvlak wlan0

Herlaai die lêer

herkonfigureer

En uiteindelik kan u sien of u goed verbind is:

ip a

Deel 3: Opdatering van die RPi + installeringsagteware

Noudat ons aan die internet gekoppel is, is die opdatering van die reeds geïnstalleerde pakkette 'n slim stap, dus laat ons dit eers doen voordat ons ander pakkette installeer.

sudo apt-get update

sudo apt-get upgrade

Na die opdatering van die RPi, sal ons die volgende sagteware moet installeer:

MariaDB -databasis

sudo apt-get install mariadb-bediener

Apache2 webbediener

sudo apt installeer apache2

Python

update-alternatiewe-install/usr/bin/python python /usr/bin/python3.7 1 update-alternatiewe-install/usr/bin/python python/usr/bin/python3 2

Python pakket

U sal al hierdie pakkette moet installeer om die backend perfek te laat werk:

  • Fles
  • Fles-Kors
  • Fles-MySql
  • Fles-SocketIO
  • PyMySQL -versoeke
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Spreker biblioteek

Om die luidspreker met die versterker te gebruik, moet ons 'n biblioteek daarvoor installeer

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

Die opstel van die databasis vir die RPi!
Die opstel van die databasis vir die RPi!

Noudat ons alles wat ons nodig het geïnstalleer het, laat ons ons databasis op ons Raspberry Pi sit!

Vir die opstel van die databasis sal ons MySql en RPi moet koppel. Hiervoor sal ons MySQLWorkbench oopmaak en 'n nuwe verbinding maak. As u na die prent kyk, moet u verander om die inligting na u s'n te verander.

As u nog niks verander het nie, kan u dit gebruik vir SSH pi en framboos, vir MySQL mysql en mysql.

As iets nie duidelik is nie, kan u hierdie tutoriaal ook volg:

Om u databasis uit te voer, behoort dit makliker te wees om PHPmyAdmin te gebruik, want u kan baie foute ondervind met MySql

Stap 6: Bluetooth instel op ons RPi

Ons skep 'n Mood -luidspreker wat ons ook met ons eie musiek kan gebruik, sodat dit makliker is as die RPi is

gekoppel aan bluetooth, het ek 'n handleiding gevolg wat u hier kan vind:

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

Ek het ook alles hier neergeskryf vir almal wat dit wil herskep

Die verwydering van die reeds uitgevoerde bluealsa

sudo rm/var/run/bluealsa/*

Voeg A2DP -profiel Sinkrol by

sudo bluealsa -p a2dp -wasbak &

Maak die bluetooth -koppelvlak oop en skakel u bluetooth aan

bluetoothctl aan

Stel 'n paringsagent op

agent op verstekagent

Maak u RPi ontdekbaar

ontdekbaar op

  • Soek nou vanaf u bluetooth -toestel na die RPi en maak daarmee verbinding.
  • Bevestig die koppeling op albei toestelle, tik 'ja' in u stopverf.
  • Magtig A2DP -diens, tik weer 'ja'.
  • Sodra dit klaar is, kan ons ons toestel vertrou, sodat ons nie hierdeur hoef te gaan elke keer as ons wil koppel nie

vertrou XX: XX: XX: XX: XX: XX (u bluetooth -mac -adres van ons bronapparaat)

As u wil hê dat u RPi aanhoubaar is, is dit u eie keuse, maar ek verkies om dit weer uit te skakel sodat mense nie met u boks kan skakel nie

ontdekbaar af

Dan kan ons ons bluetooth -koppelvlak verlaat

uitgang

En uiteindelik ons klankroetering: ons bronapparaat stuur na ons RPi

bluealsa-aplay 00: 00: 00: 00: 00: 00

Nou is ons toestel verbind met ons framboos met bluetooth, en u moet dit kan toets deur enige media te speel, byvoorbeeld Spotify, ens.

Stap 7: Skryf die volledige backend

So nadat die opstelling klaar is, kan ons uiteindelik ons backend -program begin skryf!

Ek het Visual Studio Code vir my hele backend gebruik; u hoef net seker te maak dat u Visual Studio -projek aan u Raspberry Pi gekoppel is, dit beteken dat u LAN -kabel aan u RPi gekoppel moet word en 'n SSH -verbinding moet maak. (inligting oor hoe om 'n afstandverbinding te skep, kan hier gevind word:

Ek het my eie klasse gebruik, en dit is ook almal ingesluit in my GitHub.

In my backend -lêer het ek verskillende klasse gebruik, sodat alles afsonderlik gebruik kan word en dat my hoofkode nie 'n gemors met al die verskillende drade is nie. Ek het threading gebruik om al die verskillende klasse gelyktydig uit te voer. En onderaan het u al die roetes gekry, sodat ons maklik data in ons voorkant kan kry.

Stap 8: Skryf die frontend (HTML, CSS en JavaScript)

Noudat die agterkant klaar is, kan ons die volledige voorkant begin skryf.

HTML en CSS was vir my redelik moeilik. Ek het my bes gedoen om dit eers mobiel te maak, want ek kan dit met bluetooth verbind om die liedjies met Spotify te verander. Dit sou dus makliker wees om dit vanaf 'n mobiele paneelbord te beheer

U kan u dashboard ontwerp op elke manier wat u wil; ek laat my kode en ontwerp hier agter; u kan doen wat u wil!

En Javascript was nie vir my makliker nie; ek het gewerk met 'n paar GET's van my backend -roetes, tonne gebeurtenisluisteraars en 'n paar socketio -strukture om die data van my sensors af te haal.

Stap 9: Bou my saak en plaas dit alles saam

Bou my saak en plaas dit alles saam
Bou my saak en plaas dit alles saam
Bou my saak en plaas dit alles saam
Bou my saak en plaas dit alles saam
Bou my saak en plaas dit alles saam
Bou my saak en plaas dit alles saam
Bou my saak en plaas dit alles saam
Bou my saak en plaas dit alles saam

Ek het eers begin skets hoe ek die saak wil laat lyk; iets belangrik was dat dit groot genoeg moes wees om alles in te pas, want ons het 'n groot kring om in die tas te sit, maar ons moes kompak bly sodat dit nie kon nie. neem baie ruimte in beslag

Ek het die kas van hout gemaak, ek dink dit is die maklikste om mee te werk as u nie soveel ervaring het met die bou van kaste nie, en u het ook baie dinge waarmee u dit kan doen.

Ek het begin met 'n ou plank wat ek gaan lê het, en ek het net die hout begin saag. Sodra ek my basiese omhulsel gehad het, moes ek net gate daarin boor (baie aan die voorkant van die omhulsel, soos u op die foto's kan sien en 'n paar spykers daarin moet sit, dit is regtig 'n basiese omhulsel, maar dit lyk baie gaaf en pas perfek. Ek het ook besluit om dit wit te verf om dit goed te laat lyk.

En sodra die saak klaar was, was dit tyd om alles bymekaar te maak, soos u op die laaste foto kan sien! Dit is 'n bietjie gemors in die boks, maar alles werk en ek het nie veel meer ruimte nie, so ek raai u aan om miskien 'n groter saak te skep as u my projek herskep.

Aanbeveel: