
Оглавление:
- Шаг 1. Расходные материалы
- Шаг 2: Схема и проводка
- Шаг 3: Дизайн базы данных
- Шаг 4: Настройте Raspberry Pi
- Step 5: Setting Up the Database to the RPi
- Шаг 6: Настройка Bluetooth на нашем RPi
- Шаг 7: написание полного бэкэнда
- Шаг 8: Написание внешнего интерфейса (HTML, CSS и JavaScript)
- Шаг 9: построение моего кейса и объединение всего этого
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04

Привет!
Для своего школьного проекта в MCT Howest Kortrijk я сделал динамик Mood Speaker, это умный динамик Bluetooth с различными датчиками, ЖК-дисплеем и светодиодной лентой WS2812b в комплекте. Динамик воспроизводит фоновую музыку в зависимости от температуры, но также может использоваться как обычный Bluetooth оратор. Все работает на Raspberry Pi (база данных, веб-сервер, бэкэнд).
Это руководство представляет собой пошаговый процесс того, как я реализовал этот проект за 3 недели. Так что, если вы хотите воссоздать мой проект, следуйте руководству
Это руководство - мое первое, что я написал, поэтому, если есть какие-либо вопросы, я постараюсь ответить на них как можно быстрее!
Мой GitHub:
Шаг 1. Расходные материалы
Raspberry Pi 3B и SD-карта 16 ГБ
Весь мой проект работает на моем Raspberry Pi 3B с настроенным образом, который я объясню позже (Шаг 4: Настройка Raspberry Pi).
ЖК-дисплей 16x2
Я использовал базовый ЖК-дисплей, чтобы распечатать данные о температуре, яркости и IP-адресе.
Лист данных:
Датчик температуры DS18B20
DS18B20 - это однопроводной датчик для измерения температуры, произведенный компанией Maxim Integrated. Есть 2 типа датчиков DS18B20: только компонентный (который я использовал) и водонепроницаемая версия, которая намного больше, но это не то, что мне нужно для моего проекта, поэтому я использовал только компонент. Датчик может измерять температуру в диапазоне от -55 ° C до + 125 ° C (от -67 ° F до + 257 ° F) и имеет точность 0,5 ° C от -10 ° C до + 85 ° C. Он также имеет программируемое разрешение от 9 до 12 бит.
Лист данных:
MCP3008
Для чтения данных с моих LDR и PIR-сенсора я использовал MCP3008, который представляет собой 8-канальный 10-битный аналого-цифровой преобразователь с интерфейсом SPI и довольно легко программируется.
Лист данных:
Датчик движения PIR
Чтобы обнаружить, что кто-то входит в мою комнату и выходит из нее, я использовал пассивный инфракрасный датчик, так как они просты в использовании и имеют небольшие размеры.
Лист данных:
LDR
Я использовал фоторезистор или LDR (Light Decreasing Resistance, или светозависимый резистор), чтобы определить уровень яркости комнаты, в которой он находится. А также включить светодиодную полосу в темноте.
Динамик - 3 дюйма, диаметр - 4 Ом, 3 Вт
Это диффузор динамика, который я выбрал после расчета необходимого напряжения и силы тока, и он идеально подошел для моего проекта Raspberry Pi, производимого Adafruit.
Обзор:
MAX98357 I2S, моноусилитель класса D
Это усилитель, который идет в комплекте с динамиком, это не только усилитель, но и цифро-аналоговый преобразователь I2S, поэтому он также идеально подходит для моей акустической системы и аудиосистемы.
Обзор:
Лист данных:
Ардуино Уно
Arduino Uno - это плата микроконтроллера с открытым исходным кодом, основанная на микроконтроллере Microchip ATmega328P, производимом Arduino.cc. Плата Uno имеет 14 цифровых контактов, 6 аналоговых контактов и полностью программируется с помощью программного обеспечения Arduino IDE.
Обзор:
Levelshifter
Это небольшая плата, которая обеспечивает связь между Arduino Uno и Raspberry Pi и различные напряжения: Arduino: 5 В и Raspberry Pi: 3,3 В. Это необходимо, потому что светодиодная лента подключена к Arduino и работает там, а все остальное работает на Raspberry Pi.
WS2812B - светодиодная лента
Это светодиодная лента с 60 светодиодами RGB (вы можете купить более длинные полосы с большим количеством светодиодов RGB, если хотите). Который в моем случае подключен к Arduino Uno, но также может быть подключен ко многим другим устройствам и действительно прост в использовании.
Лист данных:
GPIO T-Part, 1 макет и множество перемычек
Чтобы подключить все, что мне было нужно, макетные платы и перемычки, я не использовал Т-образную часть GPIO, но вы можете использовать ее, чтобы четко знать, какая корзина куда идет.
Шаг 2: Схема и проводка


Для создания моей схемы я использовал Fritzing, это программу, которую вы можете установить, которая позволяет вам очень легко создавать схемы в различных видах. Я использовал макет и схематический вид.
Скачать Fritzing:
Убедитесь, что все подключено правильно. Я использовал цвета, чтобы было проще понять, где соединять провода. В моем случае я использовал разные цвета для проводов
Шаг 3: Дизайн базы данных

Мы собираем много данных с 3 датчиков (температура с DS18B20, яркость с LDR и статус с PIR-датчика). Поэтому лучше всего хранить все эти данные в базе данных. На более позднем этапе я объясню, как настроить базу данных (Шаг 5: Передайте проектирование нашей базы данных в RPi!) Но сначала необходимо разработать дизайн или ERD (диаграмму отношений сущностей). Мой был нормализован с помощью 3NF, поэтому мы разделили компоненты и историю компонентов в другую таблицу. Мы используем базу данных «Музыка», чтобы отслеживать прослушанные песни.
В целом, это действительно простой и простой дизайн базы данных для дальнейшей работы.
Шаг 4: Настройте Raspberry Pi
Итак, теперь у нас есть некоторые основы проекта. Начнем с настройки Raspberry Pi!
Часть 1: Настройка SD-карты
1) Загрузите необходимое программное обеспечение и файлы
Вам необходимо загрузить 2 программного обеспечения и 1 ОС, например Raspbian, для этого полного процесса. 1-е программное обеспечение: первое программное обеспечение - это Win32 Disk Imager.
sourceforge.net/projects/win32diskimager/
2-е программное обеспечение: Второе программное обеспечение - это SD Card Formatter.
www.sdcard.org/downloads/formatter_4/
Raspbian OS: это основная операционная система Pi.
www.raspberrypi.org/downloads/raspberry-pi-os/
Распакуйте все файлы на рабочий стол.
2) Получите SD-карту и картридер.
Получите SD-карту памяти класса 10 минимум на 8 ГБ с картридером. Вставьте эту карту в кардридер и подключите ее к USB-порту.
3) Отформатируйте SD-карту
Откройте SD Card Formatter и выберите диск.
Нажмите на формат и не меняйте другие параметры.
Когда форматирование будет завершено, нажмите ОК.
4) Записываем ОС на SD карту
Откройте win32diskimager.
Просмотрите файл.img ОС Raspbian, который был извлечен из загруженного файла.
Нажмите «Открыть», а затем нажмите «Написать».
Если появится какое-либо предупреждение, проигнорируйте его, нажав ОК. Подождите, пока запись будет завершена, это может занять несколько минут. Так что наберитесь терпения.
п
5) Как только это будет сделано, мы готовы внести некоторые окончательные корректировки, прежде чем помещать изображение в наш RPi.
Перейдите в каталог SD-карты, найдите файл с именем cmdline.txt и откройте его.
Теперь добавьте ip = 169.254.10.1 в ту же строку.
Сохраните файл.
Создайте файл с именем 'ssh' без расширения или содержимого. (Самый простой способ - создать текстовый файл, а затем удалить.txt)
Теперь, когда все установлено на SD-карте, вы можете БЕЗОПАСНО извлечь ее из своего компьютера и вставить в Raspberry Pi БЕЗ подключения питания. Как только SD-карта вставлена в RPI, подключите кабель LAN от вашего компьютера к LAN-порту RPi, после того, как он будет подключен, вы можете подключить питание к RPI.
Часть 2: Настройка RPi
Шпатлевка
Теперь мы хотим настроить Raspberry Pi, это делается через Putty.
Программное обеспечение для шпатлевки:
После загрузки откройте Putty и вставьте IP-адрес «169.254.10.1», порт «22» и тип подключения: SSH.
Теперь мы можем, наконец, открыть интерфейс командной строки и войти в систему, указав данные для входа в систему -> Пользователь: pi и пароль: raspberry. (Рекомендуется изменить его как можно быстрее. Вот как это сделать:
Распи-конфиг
Нам нужно будет включить разные интерфейсы, и для этого нам сначала нужно ввести следующий код:
sudo raspi-config
То, что нам нужно включить, находится в разделе интерфейса. Нам нужно включить следующие интерфейсы:
- Однопроводной
- Серийный
- I2C
- SPI
Это было все, что нам нужно было сделать с raspi-config.
Добавление вашего WIFI
Во-первых, вы должны быть root, чтобы следующая команда стала root
судо -i
После того, как вы получите root-права, используйте следующую команду: (Замените SSID своим сетевым именем и паролем своим сетевым паролем)
wpa_passphrase "ssid" "пароль" >> /etc/wpa_supplicant/wpa_supplicant.conf
Если вы сделали что-то не так, вы можете проверить, обновить или удалить эту сеть, просто введя следующую команду:
нано /etc/wpa_supplicant/wpa_supplicant.conf
Итак, после того, как мы вошли в нашу сеть, давайте войдем в клиентский интерфейс WPA.
wpa_cli
Выберите свой интерфейс
интерфейс wlan0
Перезагрузить файл
переконфигурировать
И, наконец, вы можете увидеть, хорошо ли вы подключены:
ip a
Часть 3: Обновление программного обеспечения для установки RPi +
Теперь, когда мы подключены к Интернету, обновление уже установленных пакетов было бы разумным шагом, поэтому давайте сделаем это сначала, прежде чем устанавливать другие пакеты.
sudo apt-get update
sudo apt-get upgrade
После обновления RPi нам нужно будет установить следующее программное обеспечение:
База данных MariaDB
sudo apt-get install mariadb-server
Веб-сервер Apache2
sudo apt установить apache2
Python
альтернативы обновлений --install / usr / bin / python python /usr/bin/python3.7 1 альтернативы обновлений --install / usr / bin / python python / usr / bin / python3 2
Пакет Python
Вам нужно будет установить все эти пакеты, чтобы серверная часть работала безупречно:
- Колба
- Фляга-Корс
- Flask-MySql
- Flask-SocketIO
- Запросы PyMySQL
- Python-socketio
- RPi. GPIO
- Gevent
- Gevent-websocket
Библиотека динамиков
Для использования динамика с усилителем нам потребуется установить для него библиотеку.
curl -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

Теперь, когда мы установили все необходимое, давайте поместим нашу базу данных, которую мы разработали, на Raspberry Pi!
Для настройки базы данных нам нужно будет подключить MySql и RPi. Для этого мы откроем MySQLWorkbench и создадим новое соединение. При просмотре изображения вам нужно будет изменить информацию на свою.
Если вы еще ничего не изменили, вы можете использовать для SSH pi и raspberry, для MySQL mysql и mysql.
Если что-то неясно, вы также можете следовать этому руководству:
Чтобы экспортировать вашу базу данных, будет проще использовать PHPmyAdmin, потому что вы можете получить множество ошибок, выполняя это с помощью MySql.
Шаг 6: Настройка Bluetooth на нашем RPi
Мы создаем динамик Mood, который мы также можем использовать с нашей собственной музыкой, поэтому это будет проще, когда RPi
подключенный к bluetooth, я следовал руководству по нему, которое вы можете найти здесь:
scribles.net/streaming-bluetooth-audio-fr…
Я написал все здесь, а также для всех, кто хочет это воссоздать
Удаление уже запущенного 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 (ваш Mac-адрес bluetooth с нашего исходного устройства)
Если вы хотите, чтобы ваш RPi оставался обнаруживаемым, это ваш собственный выбор, но я предпочитаю выключить его снова, чтобы люди не могли пытаться подключиться к вашему устройству
обнаруживаемый
Затем мы можем выйти из нашего интерфейса Bluetooth
выход
И, наконец, наша аудиомаршрутизация: наше исходное устройство перенаправляет на наш RPi
bluealsa-aplay 00: 00: 00: 00: 00: 00
Теперь наше устройство подключено к Raspberry через bluetooth, и вы сможете протестировать его, проиграв любой носитель, например Spotify и т. Д.
Шаг 7: написание полного бэкэнда
Итак, настройка завершена, мы можем наконец приступить к написанию нашей серверной программы!
Я использовал код Visual Studio для всего своего бэкэнда, вам просто нужно убедиться, что ваш проект Visual Studio подключен к вашему Raspberry Pi, это означает, что ваш сетевой кабель должен быть подключен к вашему RPi и установить соединение SSH. (информацию о том, как создать удаленное соединение, можно найти здесь:
Я использовал свои собственные классы, и все они также включены в мой GitHub.
В моем бэкэнд-файле я использовал разные классы, поэтому все можно использовать отдельно, и мой основной код не беспорядок со всеми разными потоками. Я использовал потоки для одновременного запуска всех разных классов. А внизу у вас есть все маршруты, чтобы мы могли легко получать данные в нашем интерфейсе.
Шаг 8: Написание внешнего интерфейса (HTML, CSS и JavaScript)
Теперь, когда бэкэнд готов, мы можем приступить к написанию полного интерфейса.
HTML и CSS были для меня довольно сложными, я старался сначала сделать его мобильным, потому что я могу подключиться к нему через Bluetooth, чтобы менять песни с помощью Spotify. Так было бы проще управлять с мобильного дашборда
Вы можете создать свою панель управления как хотите, я просто оставлю здесь свой код и дизайн, вы можете делать все, что захотите!
И Javascript для меня не был проще, работал с несколькими GET из моих внутренних маршрутов, тоннами прослушивателей событий и некоторыми структурами socketio для получения данных с моих датчиков.
Шаг 9: построение моего кейса и объединение всего этого




Сначала я начал делать наброски того, как я хотел, чтобы корпус выглядел, важно было то, что он должен был быть достаточно большим, чтобы в него поместилось все, поскольку у нас была большая схема, которую нужно было вставить в корпус, но она должна была оставаться компактной, чтобы она не подходила ''. Я занимаю много места
Я сделал корпус из дерева, думаю, с ним легче всего работать, когда у вас нет такого большого опыта в создании корпусов, и у вас также есть много вещей, которые вы можете с ним сделать.
Я начал со старой доски, которую лежал вокруг, и только что начал пилить дерево. Когда у меня был базовый футляр, мне просто нужно было просверлить в нем отверстия (много на передней части футляра, как вы можете видеть на фотографиях, и вставить в него гвозди, это действительно простой футляр, но выглядит он довольно круто. и подходит идеально. Я также решил покрасить его в белый цвет, чтобы он хорошо смотрелся.
И как только дело было сделано, пришло время собрать все воедино, как вы можете видеть на последней картинке! Внутри коробки какой-то беспорядок, но все работает, и у меня не было намного больше места, поэтому я советую вам, возможно, создать более крупный кейс, если вы воссоздаете мой проект.
Рекомендуемые:
Мониторинг потребления электроэнергии и окружающей среды с помощью Sigfox: 8 шагов

Мониторинг потребления электроэнергии и окружающей среды с помощью Sigfox: Описание Этот проект покажет вам, как получить данные о потреблении электроэнергии в помещении при трехфазном распределении энергии, а затем отправлять его на сервер через сеть Sigfox каждые 10 минут. Как измерить мощность? Мы получили три токоизмерительных клещи от
Альбомы с тегами NFC для автоматического воспроизведения музыки Spotify на Chromecast: 5 шагов

Альбомы с тегами NFC для автоматического воспроизведения музыки Spotify на Chromecast: этот проект начался с идеи создать коллаж из альбомов моих самых популярных исполнителей на Spotify. Поигравшись с Spotify API в Python, я подумал, что было бы неплохо связать эти обложки альбомов с их URI Spotify и начать воспроизведение
SilverLight: Монитор окружающей среды на базе Arduino для серверных комнат: 3 шага (с изображениями)

SilverLight: Монитор окружающей среды на базе Arduino для серверных комнат: однажды мне дали задание найти датчик окружающей среды для мониторинга температуры в серверной комнате моей компании. Моя первая идея была: почему бы просто не использовать Raspberry PI и датчик DHT, его можно настроить менее чем за час, включая ОС
Новый слой беспроводного датчика IOT для системы мониторинга окружающей среды дома: 5 шагов (с изображениями)

Новый уровень беспроводного датчика IOT для системы мониторинга окружающей среды дома: в этом руководстве описывается недорогой уровень беспроводного датчика IOT с питанием от батареи для моего предыдущего руководства: система мониторинга домашней среды LoRa IOT. Если вы еще не просматривали это руководство ранее, я рекомендую прочитать введение
Крепление системы датчиков окружающей среды для БПЛА: 18 ступеней

Присоединение системы датчиков окружающей среды для БПЛА: цель данного руководства - описать, как построить, прикрепить и использовать систему датчиков окружающей среды Integrated Solutions Technology в сочетании с дроном DJI Phantom 4. Эти датчики используют дрон для трансляции