INHOUDSOPGAWE:

Slimbox - 'n slim Bluetooth -luidspreker!: 10 stappe (met foto's)
Slimbox - 'n slim Bluetooth -luidspreker!: 10 stappe (met foto's)

Video: Slimbox - 'n slim Bluetooth -luidspreker!: 10 stappe (met foto's)

Video: Slimbox - 'n slim Bluetooth -luidspreker!: 10 stappe (met foto's)
Video: Универсальная прошивка для ТВ Боксов на AMLOGIC процессорах SLIMBOX. На примере TANIX TX9S 2024, November
Anonim
Slimbox - 'n slim Bluetooth -luidspreker!
Slimbox - 'n slim Bluetooth -luidspreker!

Haai daar!

Vir my skoolprojek by MCT Howest Kortrijk, het ek 'n slim Bluetooth -luidsprekerapparaat gemaak met verskillende sensors, 'n LCD en RGB NeoPixel -ring ingesluit. Alles werk op die Raspberry Pi (databasis, webbediener, backend).

In hierdie instruksies sal ek u stap vir stap wys hoe ek hierdie projek binne 3 weke gemaak het, so as iemand van julle my projek wil herskep, kan julle dit maklik doen!

Dit is ook my eerste opdrag, as u enige vrae het, sal ek probeer om dit so vinnig as moontlik te beantwoord!

My GitHub:

Stap 1: Voorrade

Voorrade
Voorrade
Voorrade
Voorrade
Voorrade
Voorrade

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:

Potensiometer sensor

'N Potensiometer is 'n weerstand met drie terminale wat met die hand verstel kan word deur net die boonste deel van die sensor te draai. Die posisie van die boonste deel bepaal die uitgangsspanning van die potensiometer.

LSM303 versnellingsmeter + kompasbreek

Die LSM303-uitbreekbord is 'n kombinasie van 'n drie-as versnellingsmeter en 'n magnetometer / kompas, vervaardig deur Adafruit. Dit word gebruik met die I2C -koppelvlak van die Raspberry Pi.

Oorsig:

Gegevensblad:

MCP3008

Om die data van my potensiometer 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:

Luidspreker - 3”Diameter - 8 Ohm 1 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 NeoPixel -ring aan die Arduino gekoppel is en daar loop, terwyl al die ander dinge op die Raspberry Pi werk.

RGB NeoPixel -ring

Dit is 'n klein ring gevul met 12 RGB -leds (as u wil, kan u groter ringe met meer RGB -leds koop). 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.

Oorsig:

LCD -skerm 16x2

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

Gegevensblad:

Framboos Pi 3B+ en 16 GB SD -kaart

My hele projek loop op my Raspberry Pi 3B+ met 'n gekonfigureerde prentjie, wat ek later sal help om in my instruksies op te stel.

GPIO T-Part, 2 Breadboards en baie jumperwires

Ek het die GPIO T-onderdeel gebruik om alles wat ek broodborde en jumperwires nodig het, aan te sluit, sodat ek meer ruimte het en dit is duidelik watter pen dit is.

Stap 2: Skematiese en bedrading

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

Vir my skematiese gebruik ek Fritzing, dit is 'n program wat u kan installeer, waarmee u 'n baie eenvoudige skema kan maak in verskillende aansigte.

Laai Fritzing af:

Maak dus seker dat u alles op die regte manier verbind! In my geval is die kleure van die drade nie dieselfde as op die skema nie.

Stap 3: Databasisontwerp

Databasisontwerp
Databasisontwerp

Ons versamel baie data van die 3 gekoppelde sensors, so ons benodig 'n databasis om die data en sensors in te stoor. Later sal ons sien hoe u die databasis op die Raspberry Pi kan opstel en hoe u data daaraan kan byvoeg. Maar eers moet die databasisontwerp of ERD (Entity Relationship Diagram) gemaak word en myne is ook genormaliseer met 3NF. Daarom verdeel ons die sensors in 'n ander tafel en werk ons met ID's.

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

Stap 4: Berei die Raspberry Pi voor

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

SD -kaartkonfigurasie

Eerstens benodig u 'n 16 GB SD -kaart waarop u u prent kan aanbring en 'n program om 'n beginbeeld na die SD -kaart op te laai.

Sagteware:

Beginprent:

Dus, sodra dit afgelaai is:

  1. Plaas u SD -kaart in u rekenaar.
  2. Maak die Win32 oop wat u pas afgelaai het.
  3. Kies die Raspbian -prentlêer wat u pas afgelaai het.
  4. Klik op 'skryf' na die plek van u SD -kaart.

Dit kan 'n rukkie neem, afhangende van u hardeware. Sodra dit klaar is, is ons gereed om 'n paar finale aanpassings aan te bring voordat ons die beeld in ons RPi plaas.

  1. Gaan na die gids van u SD -kaart, soek die lêer met die naam 'cmdline.txt' en maak dit oop.
  2. Voeg nou 'ip = 169.254.10.1' op dieselfde reël by.
  3. Stoor die lêer.
  4. Skep 'n lêer met die naam 'ssh' sonder uitbreiding of inhoud.

Nou kan u die SD -kaart VEILIG van u rekenaar verwyder en dit sonder krag in die Raspberry Pi sit. 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.

Nou wil ons ons Raspberry Pi beheer, dit word gedoen deur middel van stopverf.

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.

Raspi-konfig

sudo raspi-config

Wat regtig belangrik is vir hierdie projek, is die koppelvlakafdeling; ons moet baie verskillende koppelvlakke moontlik maak, al die volgende koppelvlakke aktiveer:

  • Eendraad
  • SPI
  • I2C
  • Reeks

Noudat ons klaar is met raspi-config, probeer ons 'n verbinding met die internet maak.

Wi-Fi-verbinding

Eerstens moet u die wortels van die volgende opdragte wees

sudo -i

As u eers die wortel het, gebruik die volgende opdrag. SSID is u netwerknaam en wagwoord is natuurlik die wagwoord.

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

As u 'n fout gemaak het, kan u hierdie netwerk kontroleer, opdateer of uitvee deur net die lêer 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

Opdateer en opgradeer

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

MariaDB -databasis

Installeer die MariaDB -databasisbediener:

sudo apt-get install mariadb-bediener

Apache2 webbediener

Installeer die Apache2 -webbediener:

sudo apt installeer apache2

Python

Installeer Python:

update-alternatiewe-installeer/usr/bin/python python /usr/bin/python2.7 1

update-alternatiewe-installeer/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
  • Ujson
  • Wsaccel

Spreker biblioteek

Installeer die luidsprekerbiblioteek van Adafruit:

krul -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash

Tyd om weer te begin

sudo herlaai

Stap 5: Stuur Engineering ons databasis deur na die RPi

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

Ons moet dus eers ons databasis in die MySql -werkbank ontwerp, terwyl u dit doen, kopieer u volledige databasiskode en verwyder al die 'sigbare' woorde daarin. Dus, sodra dit gekopieer is, kan ons weer stopverf oopmaak, aanmeld en tik:

sudo mysql

en nou is u in die mysql -koppelvlak, kopieer u databasiskode daarin en druk op enter.

Nou moet ons net 'n gebruiker skep

SKEP 'GEBRUIKER' gebruiker 'GEIDENTIFISEER DEUR' gebruiker ';

GEEN ALLE VOORREGTE AAN *. * AAN 'gebruiker';

Herlaai nou.

Alles moet dus nou opgestel wees; u kan ook 'n verbinding maak met u Pi en MySql Workbench, sodat dit makliker is om al die data in u tabelle na te gaan.

Stap 6: Bluetooth instel op ons RPi

Ons is besig om 'n Bluetooth -luidspreker te skep, so dit beteken dat die media van ons bron na die Raspberry Pi gestuur word, en dit kan redelik maklik gedoen word; laat ons dadelik begin!

My bron vir die Bluetooth-verbinding:

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

skakel aan

Stel 'n paringsagent op

agent op

standaard-agent

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 volledig gekoppel aan ons Framboos en behoort u media vanaf u brontoestel op die Pi -luidspreker te kan speel.

Stap 7: Skryf die volledige backend

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

Ek het PyCharm vir my hele backend gebruik; u hoef net seker te maak dat u PyCharm -projek aan u Raspberry Pi gekoppel is, dit beteken dat u implementeringspad in u instellings opgestel is en dat u al die pakkette wat ons benodig geïnstalleer het, reeds in stap gedoen moet word 4.

Ek het my eie klasse gebruik, en dit is ook almal ingesluit in my GitHub. Die skakel is in die inleiding as u dit gemis het;)

In my backend -lêer het ek threading -klasse gebruik, sodat alles op dieselfde tyd kan werk en dit mekaar nie sal onderbreek nie. 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 is redelik maklik gedoen, maar eers probeer om soveel as moontlik selfoon te werk, aangesien ons meestal met Bluetooth vanaf 'n mobiele toestel kon skakel, sou dit 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 so moeilik nie, het gewerk met 'n paar GET's van my backend -roetes, tonne luisteraars na geleenthede en 'n paar socketio -strukture.

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

Ek het eers begin met 'n paar sketse van hoe ek wou hê dat die saak moet lyk; iets belangrik was dat dit groot genoeg moes wees om alles in te pas, aangesien ons 'n groot kring in die kas kon sit.

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 boks vir wynbottels en 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: P) en 'n paar spykers daarin sit, dit is regtig 'n basiese omhulsel, maar dit is lyk baie oulik en pas perfek.

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.

Stap 10: 'n Paar probleme wat ek ondervind het tydens die skep van die Slimbox -luidspreker …

Bluetooth- en bluealsa -foute

Elke keer as ek musiek wou speel of met bluetooth verbind het, het ek foute ontvang van bluetooth en bluealsa. Ek het daaroor navorsing gedoen en dit was die oplossing vir my probleem. Dus is my bluetooth om een of ander rede sagte geblokkeer, nie seker of dit standaard sagte geblokkeer is nie. U kan sien of dit die geval is deur die volgende opdrag in u stopverf in te tik.

rfkill lys

As dit dus geblokkeer is, gebruik dit dan net:

rfkill ontblokkeer bluetooth

En u wil miskien daarna herlaai, my bron:

Seriële verbindingsprobleme

'N Ander groot probleem wat ek ondervind het, was dat ek geen verbinding met my Arduino kon maak deur middel van die levelhifter nie, maar na 'n paar soektogte het ek uitgevind dat my'/dev/ttyS0 'weg was, en dit kan wees as gevolg van 'n opdatering van u RPi. Het ook 'n oplossing hiervoor gevind

U sal die seriële konsole weer moet aktiveer met raspi-config, herlaai en dan die "console = serial0, 115200" -bits handmatig verwyder van '/boot/cmdline.txt'. Bevestig dat' enable_uart = 1 'in is' /boot/config.txt ', en herlaai weer. Dit behoort u ttyS0 -poort terug te kry, sowel as die'/dev/serial0 'sagte skakel daarna.

Bron:

Aanbeveel: