
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05




Создание системы, которая может обрабатывать большие объемы данных датчиков, иметь несколько выходов и подключаться к Интернету или локальной сети, требует много времени и больших усилий. Слишком часто люди, желающие создать свои собственные сети умного дома, испытывают затруднения с возможностью найти и собрать пользовательские компоненты в более крупную систему. Вот почему я хотел создать модульную многофункциональную платформу, которая упростила бы создание датчиков и выходов, подключенных к Интернету вещей.
Спасибо DFRobot и PCBGOGO.com за спонсирование этого проекта!
Для получения более подробной информации посетите репозиторий Github:
Запасы
-
DFRobot ESP32 FireBeetle
www.dfrobot.com/product-1590.html
-
Датчик DHT22
www.dfrobot.com/product-1102.html
-
APDS9960 Датчик света и жестов
www.dfrobot.com/product-1361.html
-
ЖК-модуль I2C 20x4
www.dfrobot.com/product-590.html
-
Аналоговая светодиодная лента RGB
www.dfrobot.com/product-1829.html
- Драйверы шагового двигателя DRV8825
- Устройство чтения SD-карт
- Шаговые двигатели NEMA17
Шаг 1: особенности



Основной особенностью этой платы является плата разработки ESP32 FireBeetle, которая обрабатывает все коммуникации, показания датчиков и выходы. Есть два драйвера шагового двигателя, которые управляют двумя биполярными шаговыми двигателями.
Шина I2C также предназначена для использования с такими компонентами, как APDS9960 или ЖК-дисплей. Для считывания температуры есть сломанные контакты для подключения к датчику DHT22, а также фоторезистор для считывания уровней внешней освещенности.
На плате имеется поддержка аналоговой световой полосы, на которой расположены три полевых МОП-транзистора для управления светодиодными лампами.
Шаг 2: печатная плата




Я начал процесс проектирования печатной платы с создания схемы в Eagle. Поскольку мне не удалось найти библиотеку ESP32 FireBeetle, я просто использовал вместо нее двухконтактные разъемы 1x18. Затем я создал схему управления питанием, которая могла принимать 12 В через цилиндрический разъем постоянного тока и преобразовывать его в 5 В для питания датчиков и ESP32.
После того, как схема была завершена, я перешел к разработке самой печатной платы.
Я знал, что цилиндрический штекер постоянного тока должен быть рядом с передней частью платы, а сглаживающие конденсаторы источника питания 100 мкФ должны быть рядом с входами питания драйвера шагового двигателя. После того, как все было разложено, я начал трассировать следы.
Хотя Ошпарк производит печатные платы отличного качества, цены на них довольно высоки. К счастью, PCBGOGO.com также производит отличные печатные платы по доступной цене. Я смог купить десять печатных плат всего за 5 долларов, вместо того, чтобы платить 52 доллара за три платы на Oshpark.com.
Шаг 3: Сборка



В целом сборка платы прошла довольно легко. Я начал с пайки компонентов для поверхностного монтажа, а затем прикрепил разъем цилиндрического разъема и регулятор. Затем я припаял контакты для таких компонентов, как драйверы двигателя и FireBeetle.
После завершения пайки я проверил плату на короткое замыкание, переведя мультиметр в режим измерения сопротивления и проверив, не превышает ли сопротивление определенную величину. Плата прошла, поэтому я смог подключить каждый компонент.
Шаг 4: Обзор программирования
Я хотел, чтобы код этой платы был модульным и простым в использовании. Это означало наличие нескольких классов, обрабатывающих определенные функции, а также более крупного класса-оболочки, объединяющего более мелкие.
Шаг 5: входные данные



Для обработки входных данных я создал класс под названием «Hub_Inputs», который позволяет домашнему концентратору взаимодействовать с APDS9960, а также создавать и управлять кнопками и емкостными сенсорными интерфейсами. Он содержит следующие функции:
Создать кнопку
Получить, если нажата кнопка
Получить количество нажатий кнопок
Получить последний жест
Получите емкостное сенсорное значение
Кнопки хранятся в виде структуры с тремя атрибутами: is_pressed, numberPresses и pin. Каждая кнопка при создании прикрепляется к прерыванию. Когда это прерывание запускается, подпрограмме обслуживания прерывания (ISR) передается указатель этой кнопки (заданный как адрес его памяти в массиве кнопок) и увеличивается количество нажатий кнопки, а также обновляется логическое значение is_pressed.
Значения емкостного касания намного проще. Они извлекаются путем передачи сенсорного вывода в функцию touchRead ().
Последний жест обновляется путем опроса APDS9960 и проверки, был ли обнаружен какой-либо новый жест, и если он был обнаружен, установите для этого жеста переменную частного жеста.
Шаг 6: выходы



В концентраторе умного дома есть несколько способов вывода информации и переключения освещения. Есть контакты, которые разрывают шину I2C, позволяя пользователям подключать ЖК-дисплей. Пока поддерживается только один размер ЖК-дисплея: 20 x 4. Используя функцию «hub.display_message ()», пользователи могут отображать сообщения на ЖК-дисплее, передавая строковый объект.
Также имеется контактный разъем для подключения цепочки аналоговых светодиодов. Вызов функции «hub.set_led_strip (r, g, b)» устанавливает цвет полосы.
Два шаговых двигателя приводятся в действие с помощью пары плат драйверов DRV8825. Я решил использовать библиотеку BasicStepper для управления двигателем. Когда плата загружается, создаются два шаговых объекта, и активируются оба двигателя. Для пошагового управления каждым двигателем используется функция «hub.step_motor (motor_id, steps)», где id двигателя равен 0 или 1.
Шаг 7: Ведение журнала



Поскольку на плате есть несколько датчиков, я хотел иметь возможность локально собирать и регистрировать данные.
Для начала ведения журнала создается новый файл с именем «hub.create_log (имя файла, заголовок)», где заголовок используется для создания строки файла CSV, обозначающего столбцы. Первый столбец - это всегда метка времени в формате Год Месяц День Час: Мин: Сек. Чтобы получить время, функция hub.log_to_file () получает время с помощью функции basic_functions.get_time (). Затем структура tm time передается по ссылке в функцию ведения журнала вместе с данными и именем файла.
Шаг 8: зуммер

Что хорошего в IoT-доске, если вы не можете воспроизводить музыку? Вот почему я включил зуммер с функцией воспроизведения звуков. Вызов «hub.play_sounds (melody, duration, length)» запускает воспроизведение песни, где мелодия представляет собой массив частот нот, длительность - массив длительностей нот, а длина - количество нот.
Шаг 9: Внешняя интеграция IoT



В настоящее время хаб поддерживает веб-перехватчики IFTTT. Их можно запустить, вызвав функцию Hub_IoT.publish_webhook (url, data, event, key) или Hub_IoT.publish_webhook (url, data). Это отправляет запрос POST на указанный URL-адрес с прикрепленными данными вместе с именем события, если это необходимо. Чтобы настроить пример интеграции IFTTT, сначала создайте новый апплет. Затем выберите службу веб-перехватчика, которая срабатывает при получении запроса.
Затем вызовите событие «high_temp» и сохраните его. Затем выберите службу Gmail для части «Это» и выберите вариант «Отправить мне письмо». В настройках сервиса поставьте «Температура высокая!» для объекта, а затем я поставил «Измеренная температура {{Value1}} в {{OccurredAt}}», которая показывает измеренную температуру и время, когда событие было инициировано.
После настройки просто вставьте URL-адрес веб-перехватчика, сгенерированный IFTTT, и поместите «high_temp» в раздел событий.
Шаг 10: использование




Чтобы использовать Smart Home Hub, просто вызовите любые необходимые функции в setup () или loop (). Я уже помещал примеры вызовов функций, таких как печать текущего времени и вызов события IFTTT.
Шаг 11: планы на будущее
Система Smart Home Hub очень хорошо подходит для простых задач домашней автоматизации и сбора данных. Его можно использовать практически для чего угодно, например, для настройки цвета светодиодной ленты, отслеживания температуры в комнате, проверки того, горит ли свет и многих других потенциальных проектов. В будущем хотелось бы еще больше расширить функционал. Это может включать добавление более надежного веб-сервера, локального хостинга файлов и даже Bluetooth или mqtt.
Рекомендуемые:
Система умного дома Alexa с использованием релейного модуля NodeMCU: 10 шагов

Система умного дома Alexa с использованием модуля реле NodeMCU: в этом проекте IoT я создал систему автоматизации умного дома Alexa с использованием NodeMCU ESP8266 & Релейный модуль. Вы можете легко управлять светом, вентилятором и другой бытовой техникой с помощью голосовой команды. Чтобы подключить интеллектуальную колонку Echo Dot к
SmartBox - система умного дома для вашей комнаты: 6 шагов

SmartBox - система умного дома для вашей комнаты: Всем привет! В этой инструкции я объясню вам, как сделать систему умной комнаты. Эта система содержит два устройства: обычное устройство с датчиком влажности и датчиком температуры, которое измеряет текущее качество жизни в вашей комнате. Вы
ForgetMeNot - Платформа уведомлений для умного дома: 14 шагов (с изображениями)

ForgetMeNot - платформа уведомлений для умного дома: как занятые студенты колледжа, бегающие между уроками, работой и семейными обязанностями, мы склонны забывать о мелочах. День рождения приходит и проходит незаметно для нас, важный дедлайн пропускается из-за явной забывчивости, а иногда просто
Полное дополнение для умного дома: 8 шагов

Дополнение для полного умного дома: мой предыдущий проект "Полный умный дом" успешно работает почти 5 лет без каких-либо проблем. Теперь, когда я решил добавить отзыв к тому же самому без каких-либо изменений существующей схемы и схемы. Так что это дополнение к профи
Система умного дома Arduino: 7 шагов

Система Arduino Smart Home: в этом руководстве мы покажем вам, как создать свою собственную систему умного дома с помощью конструктора приложений MATLAB с платой Sparkfun Red. Это руководство можно использовать, чтобы помочь получить базовое представление о конструкторе приложений MATLAB, а также использовать фоторепортаж