Съдържание:

Slimbox - интелигентен Bluetooth високоговорител!: 10 стъпки (със снимки)
Slimbox - интелигентен Bluetooth високоговорител!: 10 стъпки (със снимки)

Видео: Slimbox - интелигентен Bluetooth високоговорител!: 10 стъпки (със снимки)

Видео: Slimbox - интелигентен Bluetooth високоговорител!: 10 стъпки (със снимки)
Видео: Samsung Level Slim Box - recenzja głośnika |Opinie RTV AGD 2024, Ноември
Anonim
Slimbox - интелигентен Bluetooth високоговорител!
Slimbox - интелигентен Bluetooth високоговорител!

Здравей!

За моя училищен проект в MCT Howest Kortrijk направих интелигентно Bluetooth устройство за високоговорители с различни сензори, с включен LCD и RGB NeoPixel пръстен. Всичко работи на Raspberry Pi (база данни, уеб сървър, бекенд).

Така че в тази инструкция ще ви покажа как направих този проект за 3 седмици, стъпка по стъпка, така че ако някой от вас иска да пресъздаде моя проект, можете лесно да го направите!

Това е и първият ми инструктаж, ако имате въпроси, ще се опитам да отговоря възможно най -бързо!

Моят GitHub:

Стъпка 1: Консумативи

Консумативи
Консумативи
Консумативи
Консумативи
Консумативи
Консумативи

DS18B20 Температурен сензор

DS18B20 е едножичен сензор, който измерва температурата, произведен от Maxim Integrated. Има 2 вида сензори DS18B20, само компонентният (който използвах) и водоустойчивата версия, която е много по -голяма, но това не ми трябваше за моя проект, затова използвах само компонента. Сензорът може да измерва температурата в диапазона от -55 ° C до +125 ° C (-67 ° F до +257 ° F) и има точност от 0,5 ° C от -10 ° C до +85 ° C. Той също така има програмируема резолюция от 9 бита до 12 бита.

Информационен лист:

Сензор за потенциометър

Потенциометърът е резистор с три извода, който се регулира ръчно само чрез завъртане на горната част на сензора. Положението на горната част определя изходното напрежение на потенциометъра.

LSM303 акселерометър + пробив на компас

Пробивната платка LSM303 е комбинация от триосен акселерометър и магнитометър / компас, произведени от Adafruit. Използва се с интерфейса I2C на Raspberry Pi.

Общ преглед:

Информационен лист:

MCP3008

За да прочета данните от моя потенциометър използвах MCP3008, който е 8 -канален 10 -битов аналогово -цифров преобразувател с SPI интерфейс и е доста лесен за програмиране.

Информационен лист:

Високоговорител - 3”Диаметър - 8 Ohm 1 Watt

Това е конусът на високоговорителя, който избрах, след като изчислих напрежението и амперите, от които се нуждае, и това беше идеално подходящо за моя проект Raspberry Pi, произведен от Adafruit.

Общ преглед:

MAX98357 I2S Class-D моно усилвател

Това е усилвателят, който се доставя с високоговорителя, не само че е усилвател, той е и I2S цифров към аналогов преобразувател, така че той също е идеално подходящ за моя високоговорител и аудио система.

Общ преглед:

Информационен лист:

Arduino Uno

Arduino Uno е микроконтролерна платка с отворен код, базирана на микроконтролера Microchip ATmega328P, произведен от Arduino.cc. Платката Uno има 14 цифрови пина, 6 аналогови пина и е напълно програмируема със софтуера Arduino IDE

Общ преглед:

Превключвател на нива

Това е малка дъска, която се грижи за комуникацията между Arduino Uno и Raspberry Pi и различните напрежения, Arduino: 5V & Raspberry Pi: 3.3V. Това е необходимо, тъй като пръстенът NeoPixel е свързан към Arduino и работи там, докато всички останали неща работят на Raspberry Pi.

RGB NeoPixel пръстен

Това е малък пръстен, пълен с 12 RGB светодиода (можете да си купите по -големи пръстени с повече RGB светодиоди, ако искате). Което в моя случай е свързано с Arduino Uno, но може да бъде свързано и с много други устройства и е наистина лесно за използване.

Общ преглед:

LCD дисплей 16x2

Използвах основен LCD дисплей за отпечатване на моята температура, обем и IP адрес.

Информационен лист:

Raspberry Pi 3B+ & 16GB SD карта

Целият ми проект работи на моя Raspberry Pi 3B+ с конфигурирано изображение, което ще ви помогна да конфигурирате по -късно в инструкциите ми.

GPIO T-Part, 2 платки и много джъмпери

За да свържа всичко, от което се нуждая, има платки и джъмпер кабели, използвах GPIO T-частта, така че имам повече място и е ясно кой щифт е кой.

Стъпка 2: Схема и окабеляване

Схема и окабеляване
Схема и окабеляване
Схема и окабеляване
Схема и окабеляване
Схема и окабеляване
Схема и окабеляване

За моята схема използвах Fritzing, това е програма, която можете да инсталирате, която ви позволява да създавате схема много лесно в различни видове изгледи.

Изтеглете Fritzing:

Затова не забравяйте да свържете всичко по правилния начин! В моя случай цветовете на проводниците не са същите като на схемата.

Стъпка 3: Дизайн на база данни

Проектиране на база данни
Проектиране на база данни

Събираме много данни от 3 -те свързани сензора, така че се нуждаем от база данни, в която да съхраняваме данните и сензорите. По -късно ще видим как да конфигурираме базата данни на Raspberry Pi и как да добавим данни към нея. Но първо трябва да се направи дизайн на базата данни или ERD (Entity Relationship Diagram) и моята също беше нормализирана с 3NF. Ето защо разделихме сензорите на друга маса и работим с идентификационни номера.

Като цяло това е наистина основен и лесен дизайн на база данни, с който да работите по -нататък.

Стъпка 4: Подготовка на Raspberry Pi

Така че сега, когато свършихме някои основи на проекта. Нека започнем с Raspberry Pi!

Конфигурация на SD карта

Първо, имате нужда от 16GB SD карта, където можете да поставите вашето изображение и програма за качване на начално изображение на SD картата.

Софтуер:

Начално изображение:

Така че след като бъдат изтеглени:

  1. Поставете SD картата в компютъра си.
  2. Отворете Win32, който току -що сте изтеглили.
  3. Изберете файла с изображение на Raspbian, който също току -що сте изтеглили.
  4. Кликнете върху „запис“до местоположението на вашата SD карта.

Това може да отнеме известно време, в зависимост от вашия хардуер. След като това е направено, ние сме готови да направим някои окончателни корекции, преди да поставим изображението в нашия RPi.

  1. Отидете в директорията на вашата SD карта, потърсете файла с име „cmdline.txt“и го отворете.
  2. Сега добавете „ip = 169.254.10.1“на същия ред.
  3. Запазете файла.
  4. Създайте файл с име „ssh“без разширение или съдържание.

Сега можете БЕЗОПАСНО да извадите SD картата от компютъра си и да я поставите в Raspberry Pi БЕЗ захранване. След като SD картата е в RPI, свържете LAN кабел от компютъра към порта RPi LAN, след като е свързан, можете да свържете захранването към RPi.

Сега искаме да контролираме нашата Raspberry Pi, това става чрез Putty.

Софтуер за замазка:

След като изтеглите, отворете Putty и поставете IP '169.254.10.1' и Port '22' и тип връзка: SSH. Сега най -накрая можем да отворим интерфейса на командния ред и да влезем с информацията за вход за стартиране -> Потребител: pi & Парола: малинка.

Raspi-config

sudo raspi-config

Това, което е наистина важно за този проект, е секцията за взаимодействие, трябва да активираме много различни интерфейси, да активираме всички следните интерфейси:

  • Едножичен
  • SPI
  • I2C
  • Сериен

Сега, когато приключихме с raspi-config, нека се опитаме да направим връзка с интернет.

Wi-Fi връзка

Първо, трябва да сте root за следните команди

sudo -i

След като сте root, използвайте следната команда. SSID е името на вашата мрежа и паролата очевидно е парола.

wpa_passphrase "ssid" "парола" >> /etc/wpa_supplicant/wpa_supplicant.conf

В случай, че сте допуснали грешка, можете да проверите, актуализирате или изтриете тази мрежа, като просто въведете този файл:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Така че, след като влезем в нашата мрежа, нека влезем в клиентския интерфейс на WPA

wpa_cli

Изберете вашия интерфейс

интерфейс wlan0

Презаредете файла

преконфигурирайте

И накрая можете да видите дали сте свързани добре:

ip a

Актуализиране и надстройване

Сега, когато сме свързани с интернет, актуализирането на вече инсталираните пакети би било умен ход, така че нека направим това първо, преди да инсталираме други пакети.

sudo apt-get update

sudo apt-get надстройка

База данни MariaDB

Инсталирайте сървъра на базата данни MariaDB:

sudo apt-get install mariadb-server

Apache2 уеб сървър

Инсталирайте уеб сървъра Apache2:

sudo apt инсталирате apache2

Python

Инсталирайте Python:

update-alternatives --install/usr/bin/python python /usr/bin/python2.7 1

update-alternatives --install/usr/bin/python python/usr/bin/python3 2

Пакет на Python

Ще трябва да инсталирате всички тези пакети, за да работи бекендът перфектно:

  • Колба
  • Flask-Cors
  • Flask-MySql
  • Flask-SocketIO
  • PyMySQL
  • Искания
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket
  • Ujson
  • Wsaccel

Библиотека на високоговорителите

Инсталирайте библиотеката на високоговорителите от Adafruit:

curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | баш

Време е за рестартиране

sudo рестартиране

Стъпка 5: Препратете инженеринга на нашата база данни към RPi

Сега, когато сме инсталирали всичко необходимо, нека поставим нашата база данни, която проектирахме, на нашия Raspberry Pi!

Така че първо трябва да пренасочим нашата база данни в работната маса MySql, докато правим това, копирайте пълния код на базата данни и изтрийте всички „видими“думи в нея. Така че, след като това се копира, нека отново отворим замазка, влезте и въведете:

sudo mysql

и сега сте в интерфейса на mysql, копирайте кода на базата данни в него и натиснете enter.

Сега просто трябва да създадем потребител

СЪЗДАВАНЕ НА ПОТРЕБИТЕЛ 'потребител' ИДЕНТИФИЦИРАН ОТ 'потребител';

ПРЕДОСТАВЕТЕ ВСИЧКИ ПРИВИЛЕГИИ НА *. * НА 'потребител';

Сега рестартирайте.

Така че всичко трябва да бъде настроено сега, можете също да направите връзка с вашия Pi и MySql Workbench, така че е по -лесно да проверите всички данни във вашите таблици.

Стъпка 6: Конфигуриране на Bluetooth на нашите RPi

Създаваме Bluetooth високоговорител, така че това означава, че медиите се изпращат от нашия източник към Raspberry Pi и това може да стане доста лесно, нека да преминем веднага!

Моят източник за Bluetooth връзка:

Премахване на вече работещата bluealsa

sudo rm/var/run/bluealsa/*

Добавете роля на мивка на A2DP профил

sudo bluealsa -p a2dp -мивка &

Отворете Bluetooth интерфейса и включете вашия Bluetooth

bluetoothctl

включено

Настройте агент за сдвояване

агент включен

default-agent

Направете своя RPi откриваем

откриваеми на

  • Сега от вашето Bluetooth устройство потърсете RPi и се свържете с него.
  • Потвърдете сдвояването и на двете устройства, въведете „да“във вашата замазка.
  • Оторизирайте услугата A2DP, въведете отново „да“.
  • След като това бъде направено, можем да се доверим на нашето устройство, така че не е нужно да преминаваме през това всеки път, когато искаме да се свържем

доверие XX: XX: XX: XX: XX: XX (Вашият bluetooth mac адрес от нашето устройство източник)

Ако искате вашият RPi да продължава да бъде откриваем, това е ваш собствен избор, но предпочитам да го изключвам отново, така че хората да не могат да се опитат да се свържат с вашата кутия

откриваемо изключено

След това можем да излезем от нашия Bluetooth интерфейс

изход

И накрая нашето аудио маршрутизиране: нашето устройство източник, препращащо към нашия RPi

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

Сега нашето устройство е напълно свързано с нашата Raspberry и трябва да можете да възпроизвеждате медии от устройството си източник на високоговорителя Pi.

Стъпка 7: Писане на пълния бекенд

Така че сега настройката е завършена, най -накрая можем да започнем да пишем нашата бекенд програма!

Използвах PyCharm за целия си бекенд, просто трябва да се уверите, че вашият проект на PyCharm е свързан с вашия Raspberry Pi, това означава, че вашият път на разгръщане е настроен в настройките ви и сте инсталирали всички необходими пакети, вече трябва да бъде направено на стъпка 4.

Използвах свои собствени класове и всички те също са включени в моя GitHub. Линкът е в интрото, в случай че сте го пропуснали;)

В моя бекенд файл използвах класове за нишки, така че всичко може да работи едновременно и няма да се прекъсва. И най -долу имате всички маршрути, за да можем лесно да получим данни в нашия интерфейс.

Стъпка 8: Писане на Frontend (HTML, CSS и JavaScript)

Сега, когато бекендът е готов, можем да започнем да пишем пълния интерфейс.

HTML и CSS бяха направени доста лесно, опитах се да работя първо с мобилни устройства, доколкото е възможно, тъй като повечето пъти се свързваме с Bluetooth от мобилно устройство, би било по -лесно да се контролира от мобилно табло.

Можете да проектирате таблото си за управление по всякакъв начин, просто ще оставя кода и дизайна си тук, можете да правите каквото ви харесва!

И Javascript не беше толкова труден, работеше с няколко GET от моите бекенд маршрути, тонове слушатели на събития и някои структури на socketio.

Стъпка 9: Изграждане на моя случай и всичко заедно

Изграждане на моя случай и всичко заедно
Изграждане на моя случай и всичко заедно
Изграждане на моя случай и всичко заедно
Изграждане на моя случай и всичко заедно
Изграждане на моя случай и всичко заедно
Изграждане на моя случай и всичко заедно

Първо започнах с някои скици за това как искам да изглежда калъфът, нещо важно беше, че трябва да е достатъчно голямо, за да се побере всичко, тъй като имаме голяма верига, която да поставим в кутията.

Направих кутията от дърво, мисля, че е най -лесно да работите, когато нямате толкова много опит в изграждането на калъфи и имате също много неща, които можете да правите с нея.

Започнах от калъф за бутилки вино и току -що започнах да режа дървата. След като имах основния си калъф, просто трябваше да пробия дупки в него (много в предната част на кутията, както можете да видите на снимките: P) и да сложа няколко пирони в него, това е наистина основен калъф, но изглежда доста готино и стои перфектно.

И след като делото приключи, беше време да съберем всичко, както можете да видите на последната снимка! Това е някаква бъркотия в кутията, но всичко работи и нямах толкова повече място, затова ви съветвам да създадете по -голям случай, ако пресъздавате моя проект.

Стъпка 10: Някои проблеми, които имах по пътя си към създаването на високоговорител Slimbox …

Грешки в Bluetooth и bluealsa

Всеки път, когато исках да пускам музика или да се свързвам с bluetooth, получавах грешки от bluetooth и bluealsa. Направих някои изследвания по въпроса и това беше решението на моя проблем. Така че по някаква причина моят Bluetooth беше меко блокиран, не съм сигурен дали това е стандартно меко блокиран. Можете да видите дали е така, като въведете следната команда във вашия Putty.

rfkill списък

Така че, ако е мек блок, просто използвайте това:

rfkill отблокирайте bluetooth

Може да искате да рестартирате след това, моят източник:

Проблеми със серийна връзка

Друг голям проблем, който имах, беше, че не можах да направя никаква връзка с моя Arduino чрез превключвателя на нива, след известно търсене установих, че моят '/dev/ttyS0' е изчезнал и това може да се дължи на актуализация на вашия RPi. Намерих и решение по този въпрос

Ще трябва да активирате отново серийната конзола с raspi-config, да рестартирате и след това ръчно да премахнете бита „console = serial0, 115200“от „/boot/cmdline.txt“. Потвърдете, че „enable_uart = 1“е в „ /boot/config.txt "и рестартирайте отново. Това трябва да върне вашия ttyS0 порт, както и меката връзка"/dev/serial0 "към него.

Източник:

Препоръчано: