Оглавление:

Концентратор для умного дома ESP32: 11 шагов
Концентратор для умного дома ESP32: 11 шагов

Видео: Концентратор для умного дома ESP32: 11 шагов

Видео: Концентратор для умного дома ESP32: 11 шагов
Видео: Дешевый умный дом своими руками! Полный гид ОТ и ДО! 2024, Июнь
Anonim
Концентратор умного дома ESP32
Концентратор умного дома ESP32
Концентратор умного дома ESP32
Концентратор умного дома ESP32
Концентратор умного дома ESP32
Концентратор умного дома ESP32
Концентратор умного дома ESP32
Концентратор умного дома ESP32

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

Спасибо 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

Внешняя интеграция IoT
Внешняя интеграция IoT
Внешняя интеграция IoT
Внешняя интеграция IoT
Внешняя интеграция IoT
Внешняя интеграция 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.

Рекомендуемые: