Я не являюсь экспертом в схемотехнике и разработке печатных плат, это был мой первый опыт в этой области, и, конечно, я ожидал, что мой путь будет долгим и тернистым. Но я был решительно настроен, так как конечный результат должен быть использован в моем доме как полноценно работающее устройство.
Задачи:
передача показаний температуры, влажности, CO2, качества воздуха, уровня освещенности, а также данные с датчика присутствия человека на сервер Home Assistant
передача данных по Ethernet
питание устройства по PoE
-
устройство должно подходить к китайскому подрозетнику
Для разработки принципиальной схемы и разводки печатной платы я использовал бесплатную он-лайн версию EasyEDA. Как мне кажется, она неплохо подходит для новичков, а для профессионалов есть более сложные программы.
По окончании проектирования встал вопрос, где заказывать сами платы и компоненты к ним. Из раскрученных сервисов, к которым есть доступ из РФ я выбрал NextPCB, там все тоже самое, что и у всем известной JLCPCB. Дополнительная задача стояла в максимальной экономии. У данного сервиса есть акция, где напайка компонентов стоит всего 20 долларов, но есть ряд существенных ограничений:
плата должна быть не более 100x100 мм
не более 100 компонентов в сумме
не более 30 уникальных компонентов.
Однако, благодаря разделению платы на две части, эта проблема была решена. В итоге получилась следующая ревизия первого опытного образца:
Функционал:
Питание PoE (модуль SDAPO DP1435)
Ethernet (Wiznet W5500)
-
Встроенные датчики:
Датчик температуры и влажности (ENS210)
Датчик температуры, влажности и качества воздуха (Bosch BME680)
Датчик температуры, влажности и CO2 (Sensirion SCD40)
Датчик освещенности (BH1750FVI)
Контактный разъем под впайку датчика присутствия (HLK-LD2410c)
Пищалка (buzzer)
-
Выходы на пять GPIO, вторую шину I2C, GND, 3V3A и 3V3D для тестов
В качестве прошивки я пробовал CircuitPython, но столкнулся с рядом трудностей, таких как отсутствие библиотек (пришлось переписывать Python-библиотеку LD2410c под CircuitPython) и скорость работы (от момента включения устройства до загрузки прошивки пищалка начинает издавать звуки, что можно исправить дополнительным резистором).
Для тестов CircuitPython вполне сойдет, но для полноценной работы больше подойдет ESPHome, в виду простоты, широкой поддержки различных библиотек, и то, что конечный код компилируется в C++.
Планируемые доработки:
разработка корпуса
приведение показаний с датчиков температуры и влажности к референсным
Датчики очень чувствительны к шумам и нагреву от других компонентов. В следующей ревизии будет изменен дизайн front-платы. Будет разделена “земля” на аналоговую и цифровую, полигоны GND будут отведены от датчиков, сами датчики будут разнесены по-другому, будет улучшена фрезеровка.
На этом все, большое спасибо что прочитали, если у вас есть вопросы и замечания по проекту буду рад ответить в комментариях.
Ссылка на проект с gerber-файлом, принципиальной схемой и прошивкой находится здесь.
Комментарии (4)
alaltitov Автор
07.09.2024 10:36Если платы между собой подключать по проводам, а не пинам, то датчик SCD40 уже будет показывать данные, близие к референсным. Разница меньше одного градуса по сравнению с ртутным градусником. По-хорошему, тут нужно использовать не модуль ESP32-S3, а сам чип, так как wi-fi и bt тут не нужны. Разнести датчики ближе к краям платы, а плату использовать 4-х слойную.
little-brother
07.09.2024 10:36А в чем смысл использовать провода Ethernet/PoE, если ничего важного датчики не передают? Я бы смотрел в сторону Bluetooth с питанием от батарейки или аккумулятора, для подзарядки которого можно просто вывести usb-разъем. Если уменьшить частоту передачи данных, отправляя их не сразу после опроса, а собранным пакетом за пару минут, то одного заряда будет хватать надолго.
Pyku_He_oTTyda
А как устройство, спрятанное в стене, будет корректно считывать параметры воздуха в комнате?
alaltitov Автор
В стене будет по факту только задняя часть с PoE. Сами датчики будут находиться снаружи. Как пример, Вы можете посмотреть Wi-Fi точку для подрозетника или дисплей в подрозетник.