Оглавление:
Видео: EasyTalk: удобное общение и календарь рядом с вами: 6 шагов
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Меня зовут Коби Маршал, я учусь в Ховесте, Бельгия, и я студент мультимедийных и коммуникационных технологий (MCT). Для моего последнего задания первого года мне нужно было сделать IoT-устройство.
Дома у нас есть такая проблема, что мой брат всегда играет, и когда моей маме нужно что-то сказать ему снизу, ей нужно кричать, потому что он носит наушники и ничего не слышит. Я хотел решить эту проблему за нее, поэтому создал устройство, на которое можно отправлять сообщения с веб-сайта. Он также используется в качестве календаря, в котором вы можете сохранять свои собственные события или импортировать внешний календарь по URL-адресу. Это устройство также сохраняет значения температуры и качества воздуха, чтобы вы могли видеть, насколько оно здорово, когда вы играете или работаете, потому что вы часто этого не замечаете.
Это устройство называется EasyTalk и решает эту проблему. Это небольшое устройство, использующее OLED-экран, поэтому вы можете прямо сейчас видеть свои события, время, температуру и качество воздуха. Когда сообщение отправлено, оно замечает вас звуком уведомления и показывает сообщение на экране, где вы можете ответить «да» или «нет».
Если вы хотите построить эту вещь или хотите увидеть, как она сделана, я настоятельно рекомендую продолжить чтение. Если вы хотите узнать обо мне больше, вы можете зайти в мое портфолио.
Шаг 1: материалы
Первый шаг - собрать все материалы для использования в этом проекте. Я буду с тобой честен. Это не дешевое устройство, общая стоимость 271 евро. Ниже приведен их список и несколько фотографий для пояснения.
- Raspberry Pi 4 Модель B - 4 ГБ
- Pibow Coupé 4 - Ниндзя
- 12 x Premium Jumperwires op strip - 40 штанг - M / M - 20 см
- 6 x Premium Jumperwires op strip - 40 штук - M / F - 20 см
- 2 x 36-контактный разъем для стекирования
- 40-контактный штекер коробки передач
- 40 контактов Regenboog GPIO kabel
- Монохромный 2,42-дюймовый 128x64 OLED-графический модуль дисплея
- Динамик Kleine Metalen и Draadjes - 8 Ом 0,5 Вт
- Adafruit Mono 2,5 Вт, класс D Audio Versterker
- Кабель Aux Jack 3,5 мм
- Кнопка мгновенного действия с резьбой 7 мм
- Tuimelschakelaar
- Датчик PIR Bewegingssensor
- DS18B20 Цифровой датчик температуры
- Grove - Lucht kwaliteit sensor v1.3
- Grove - АЦП I2C
- Raspberry Pi 4 USB-C Voeding
- Flexibel mini-statief
- Резисторы 470 Ом
- Резистор 4, 7 кОм
- Термоусадочные трубки
- 6 винтов M2 x 6 мм
- 6 винтов M2 x 8 мм
- 3 винта M2 x 16 мм
- Алюминиевый корпус 3 мм
Я также составил Bill Of Materials (BOM), чтобы вы могли видеть, сколько я заплатил за все материалы и где я их взял.
Шаг 2: Raspberry Pi
В этом проекте мы используем Raspberry Pi, потому что он прост в настройке и может использоваться для многих вещей. Он идеально подходит для того, что мы хотим делать.
Загрузите настольную ОС Raspberry Pi и установите ее на свой Raspberry Pi. Вам нужно включить SPI, I2C и One Wire в raspi-config. Я предлагаю отключить некоторые вещи в параметрах загрузки, чтобы ускорить загрузку. Помимо этого, я использую некоторые библиотеки, которые вам нужно установить с помощью pip, чтобы эта работа работала.
pip3 установить:
- adafruit-circuitpython-ssd1305
- ics
- Колба
- Фляга-Корс
- Flask-JWT-Extended
- MySQL-коннектор-Python
Вам также понадобится apache2 для создания веб-сайта, здесь мы используем apt:
sudo apt install apache2 -y
Вам необходимо настроить беспроводное соединение, потому что вы не можете получить кабель UTP в Raspberry Pi, когда он находится в футляре.
Вам также нужно будет настроить MariaDB, чтобы вы могли получить доступ к базе данных.
Шаг 3: Подключение
Следующий шаг - соединить все вместе и проверить, все ли компоненты работают. Я создал печатную плату, чтобы удалить макетную плату и уменьшить размер проводки, чтобы устройство могло быть меньше. Это необходимо, потому что он будет стоять рядом с вашим монитором и не может занимать много места, чтобы не отвлекать вас от работы.
Шаг 4: База данных
Это устройство использует нормализованную базу данных MySQL для хранения всей своей информации и отображения ее на веб-сайте и на самом устройстве. Я создал его в MySQL Workbench.
В этой базе 5 таблиц.
Таблица Activiteiten (= действия, события) используется для хранения всех событий календаря. Сюда также входят все события, импортированные из другого календаря.
Table Apparaten (= devices) используется для хранения различных типов устройств, которые используются в таблице Historiek (= history). В этом проекте используются два датчика, датчик температуры и датчик качества воздуха, но у меня также есть третье «устройство», сам веб-сайт для хранения сообщений, отправляемых с веб-сайта на устройство.
Таблица Gebruikers (= users) хранит пользователей. Они могут войти в систему со своим паролем и указать псевдоним, который будет отображаться в сообщении при отправке на устройство.
Таблица Historiek (= история) используется для хранения значений датчиков и сообщений, отправленных на устройство.
И, наконец, в таблице Links (= URL’s) хранятся все URL-адреса внешнего календаря.
Шаг 5: Код
Я рекомендую создать нового пользователя, так как это лучшая практика, но это не обязательно, вы также можете использовать пользователя pi по умолчанию.
Код внешнего интерфейса помещается в папку html по умолчанию из apache2. Вы можете найти эту папку в / var / www / html.
Для бэкэнда вам нужно создать папку в своей домашней папке и поместить туда весь код.
Нам также нужно изменить некоторые значения в этом коде. Сначала перейдите на app.py. В строке 23 задайте название однопроводного датчика температуры. Возможно, для вас это будет что-то другое. Чтобы найти правильное имя, откройте терминал и введите:
ls / sys / bus / w1 / устройства
и найдите строку, состоящую из нескольких разных чисел, и замените ее в строке 23.
Еще нам нужно изменить в файле config.py пароль к базе данных.
Если вы хотите, чтобы это запускалось при загрузке, вам также необходимо изменить файл EasyTalk.service. Просто измените WorkingDirectory и User. Вы должны скопировать этот файл с помощью следующей команды:
sudo cp EasyTalk.service / etc / systemd / system / EasyTalk.service
Затем запустите его:
sudo systemctl start EasyTalk.service
А затем включите его, чтобы он запускался при загрузке
sudo systemctl включить EasyTalk.service
Шаг 6: Дело
Я решил напечатать корпус на 3D-принтере, чтобы он был как можно меньше. Принт состоит из 3 частей: самой коробки, крышки и держателя динамика, поскольку в нем нет отверстий для ввинчивания болтов.
Вам также понадобится несколько жирных шрифтов, чтобы скрутить все вместе.
- 6 винтов M2 x 6 мм
- 6 винтов M2 x 8 мм
- 3 винта M2 x 16 мм
Хотя я буду честен. На создание этой штуки у меня ушло 4-5 часов. Поскольку он такой маленький, все просто умещается, и иногда трудно вкрутить полужирный шрифт, но он работает, если вы делаете это осторожно.
Я также разработал печатную плату для замены макета, вам сначала нужно припаять разъемы и 5 резисторов (4 x 470 Ом, 1 x 4,7 кОм).
Когда у вас есть печатная плата, я предлагаю начать с пайки кабелей ко всему, что должно подключаться к печатной плате.
Когда это будет сделано, вы собираетесь прикрутить OLED-дисплей на место и подключить к нему печатную плату. Дисплей удерживает печатную плату. Для этого используйте винты диаметром 6 мм.
Затем вы прикручиваете датчик качества воздуха туда, где он должен быть, но это немного сложно, потому что к нему подключается АЦП. Чтобы сделать это правильно, чтобы два компонента не касались друг друга, используйте винты 16 мм с алюминиевыми трубками 3 x 5 мм, которые необходимо распилить. Я сделал это с двумя винтами, потому что не смог достать до третьего. Вы подключаете 4 провода туда, где они должны идти на печатной плате.
Затем вы подключаете аудиоусилитель к печатной плате и устанавливаете динамик на место с помощью 3D-печатного держателя.
После этих шагов самые сложные части закончены, и вы можете подключить все остальное к печатной плате и прикрутить ее на место. Обратите внимание, что на фотографиях, которые вы видите, я использую другой датчик температуры, для конечного продукта я использовал датчик температуры с длинным кабелем, выходящим из коробки, потому что он измерял тепло изнутри коробки.
Когда все это на месте, вам нужно прикрутить Raspberry Pi. Я использую для этого чехол, потому что я не доверяю теплу, которое он выделяет, этот чехол предназначен для защиты, поэтому 3D-печать не тает. Прежде чем прикручивать его на место, вам нужно подключить кабель питания и вспомогательный кабель (который вам нужно открыть и припаять один провод, а затем подключить Raspberry Pi к печатной плате), потому что после этого вы не сможете добраться до него.
Затем просто подключите кабель заголовка GPIO от печатной платы к Raspberry Pi и проверьте, все ли работает, прежде чем закрывать крышку.
Внизу есть отверстие, куда можно подключить штатив, но это необязательно.
Вот и все! Надеюсь, вам понравилась эта статья! -Кобе