Данная статья является продолжением раннее опубликованной мною темы: Умный дом на основе интерфейса CAN. Вот ссылки на предыдущие статьи:
В качестве ядра схемы контроллера сети был выбран модуль ESP32-C6-WROOM-1-N8. Для грамотной разработки схемы рекомендую пользоваться следующими источниками информации:
Datasheet ESP32-C6-WROOM-1: https://documentation.espressif.com/esp32-c6-wroom-1_wroom-1u_datasheet_en.pdf
1. Требования к источнику питания
1.1 Общие рекомендации по проектированию источников питания:
При использовании одного источника питания рекомендуемое напряжение питания составляет 3,3 В, а выходной ток — не менее 500 мА.
Рекомендуется добавить диод защиты от электростатического разряда и конденсатор емкостью не менее 10 мкФ на входе питания.
От себя добавлю, что лучше использовать две ступени стабилизации напряжения. Первая ступень — импульсный стабилизатор (поддерживает широкий разброс входных напряжений и высокий к.п.д., вторая — традиционный стабилизатор. Это улучшит фильтрацию выходного напряжения и снизит импульсные помехи.
В качестве импульсного источника питания могу посоветовать стабилизатор на микросхеме TPS54331DR фирмы Texas Instruments (доступна и сравнительно дешево, к тому же есть хорошее руководство по применению).
В качестве традиционного стабилизатора — AMS1117-3.3V.
2. Время включения и сброса чипа
Аппаратный сброс микросхемы производится подачей нулевого потенциала на вход EN (вывод 3). Для нормальной работы, после подачи напряжения на микросхему необходимо выдержать интервал минимум 50 мкс. Это достигается с помощью RC цепочки установленной по входу EN(вывод 3) с параметрами: 1мкФ; 10 кОм. Причем, так как напряжение на данном выводе не может быть плавающем, резистор должен быть подключен к питающему напряжению, а конденсатор к шине «общий».
3. JTAG интерфейс
JTAG (Joint Test Action Group) — это стандартный аппаратный интерфейс, используемый для программирования, тестирования и отладки электронных плат и микросхем.
В качестве JTAG интерфейса можно использовать вывод 25/TXD0; вывод 24/RXD0. Здесь реализуется последовательный интерфейс (UART) передачи данных типа RS232/COM – порт. Для его осуществления необходимо дополнительное устройство типа ESP-Prog, поэтому данные каналы желательно не использовать.
Также в модуле реализован полноценный JTAG интерфейс: вывод 4/IO4(TMS); вывод 5/IO5(TDI); вывод 6/IO6(TCK); вывод 7/IO7(TDO). Однако его использование для тестирования и отладки сильно ограничит полезное число используемых выводов.
В качестве JTAG интерфейса рекомендую использовать аппаратно/программно реализованный в микросхеме интерфейс USB, что позволит напрямую подключаться к компьютеру. Для реализации данного интерфейса в микросхеме выделены: вывод 13(IO12/D-), вывод 14(IO13/D+). Причем вывод 14 рекомендуется подключать через резистор 10кОм к источнику питания.
4. Конфигурационные выводы
При каждом запуске или сбросе микросхеме требуются некоторые начальные параметры конфигурации, например, режим загрузки и т. д. Эти параметры передаются через соединительные контакты. После сброса соединительные контакты работают как обычные функциональные контакты.
GPIO8/IO8(вывод 10), GPIO9/IO9(вывод 15), GPIO15/IO15(вывод 23), MTMS/IO4(вывод 4) и MTDI/IO5(вывод 5) — это конфигурационные выводы.
Режим загрузки чипа определяется начальным состоянием выводов GPIO8 (вывод 10) и GPIO9 (вывод 15). Для записи программы во флеш‑память и последующего запуска этой программы из флеш‑памяти необходимо подключить данные выводы к источнику питания через резисторы 10 кОм.
MTMS/IO4(вывод 4) и MTDI/IO5(вывод 5) служат для определения фронта тактового сигнала, по которому следует производить выборку сигналов и управлять выходными линиями. Поэтому желательно не подключать к внешним источникам сигнала или резисторам задающим определенный потенциал. То есть рекомендую использовать их только как выходы.
GPIO15/IO15(вывод 23) используется для управления источником сигналов JTAG во время процесса начальной загрузки в зависимости от запрограммированных битов конфигурации eFuse. В исходном состоянии модуля эти биты имеют значение 0, при этом потенциал напряжения на выводе 23 игнорируется и по умолчанию используется интерфейс USB; UART.
5. Ограничения по использованию выводов
При использовании данного модуля накладываются следующие ограничения по выводам:
GPIO12 (вывод 13) не задействовать для подключений устройств, использовать только в качестве D‑ интерфейса USB. Данный интерфейс будет использоваться для программирования и отладки программы.
GPIO13 (вывод 14) не задействовать для подключений устройств, использовать только в качестве D+ интерфейса USB.
GPIO8 (вывод 10) и GPIO9 (вывод 15) использовать как входы и подключить данные выводы к источнику питания через резисторы 10 кОм.
IO4(вывод 4) и IO5(вывод 5) использовать их только как выходы.
-
Кроме, того следующие выводы по умолчанию подключены внутренними подтягивающими резисторами к источнику питания: GPIO6 (вывод 6), TXD0 (вывод 25), RXD0 (вывод 24), GPIO18 (вывод 16), GPIO19 (вывод 17), GPIO20 (вывод 18), GPIO21 (вывод 19), GPIO22 (вывод 20), GPIO23 (вывод 21). Значит, если в программе они будут использоваться как выходы управления исполнительными устройствами, то возможно ложное срабатывание в начальный момент если сигнал управления высоким потенциалом. Поэтому рекомендую сигнал управления формировать только низким потенциалом.
Остались несколько GPIO находящихся в нейтральном состоянии или настроенные по умолчанию как входы, без подключенных сопротивлений. Это: GPIO7 (вывод 7), GPIO0 (вывод 8), GPIO1 (вывод 9), GPIO10 (вывод 11), GPIO11 (вывод 12), GPIO15 (вывод 23), GPIO2 (вывод 27), GPIO3 (вывод 26). Из них только GPIO2 (вывод 27), GPIO3 (вывод 26), GPIO10 (вывод 11),GPIO11 (вывод 12) не задействованы во внутренних процессах и могут использоваться как входы/выходы не обремененные различными условиями.
6. Функциональные узлы
По возможности, схема контроллера должна быть наиболее универсальной, чтобы изготовленную по ней печатную плату можно было использовать и как контроллер подключаемый к сети Ethernet, так и не подключаемый. Кроме того, необходимо максимально организовать наиболее востребованные функции.
Разработанная схема содержит следующие функциональные узлы:
Импульсный источник питания основанный на микросхеме TDS54331DR, позволяющий из входного напряжения питания от 7 В до 28 В получить стабилизированное напряжение 5 В. Желательно данный источник питания поместить в экран, чтобы не было помех на работу других узлов схемы.
Дополнительный пассивный стабилизатор напряжения 3,3 В из 5 В, для улучшения стабилизации и фильтрации напряжения питания схемы.
Узел формирования сигналов интерфейса CAN, на специализированной микросхеме SIT1050T.
ПРИМЕЧАНИЕ — Данная микросхема рассчитана на напряжение питания 5 В, однако хорошо работает и при 3,3 В. Производитель рекомендует использовать SN65HVD23x в качестве шинного формирователя CAN, однако ее стоимость значительно дороже.
Для гальванически развязанного управления нагрузкой в схему введены два реле.
Для подключения внешних реле, исполнительных устройств или моторов, реализованы два канала на мощных полевых транзисторах.
Также есть два гальванически развязанных входа для подачи сигналов различного напряжения от 5 В до 220 В.
На схеме реализован разъем для подключения модуля Ethernet WIZ850io
Узел согласования и разъем для подключения USB.
Разъем для подключения датчика температуры и влажности типа DHT22.
Колодка для набора с помощью перемычек локального адреса устройства в двоичном коде (6 разрядов). Используется только если не установлен модуль Ethernet.
Три светодиода индикации: работа — «WORK», авария/сбой — «ALARM», обмен по сети CAN — «CAN».
7. Реализация
Изложенные здесь идеи и требования были учтены при разработки схемы контроллера сети CAN. Однако все учесть не удалось при изготовлении прототипов, поэтому пришлось исправлять ошибки. На рис. 1 приведена фотография макета работающей сети CAN из трех контроллеров.

По результатам проверки и настройки схема была изменена и окончательный вариант разработанной схемы приведен на рис. 2.

Комментарии (29)

alcotel
21.12.2025 09:03В тему. Как раз ковыряем CAN на плате Liligo T-CAN485.
На схеме много странностей есть:
ESD-защита VD8,9 почему-то защищает RXD и TXD, а не CANH и CANL;
VT3,4 всегда включены;
джамперы адреса замыкают сигналы SPI на землю;
чтобы включить оптрон DA3, не жалко взять 10 mA RMS от 220 В.Она точно работает?

vozov Автор
21.12.2025 09:03Я так понял вопросы по моей схеме.
Диоды VD8, VD9 защищают контроллер ESP32. А интерфейсная микросхема SIT1050 внутреннею защиту по выходам CANH и CANL.
Полевые транзисторы c p-каналом VT3, VT4 в исходный момент закрыты, так как напряжение затвор-исток нулевое.
Как я уже указывал в статье, так как схема разрабатывалась по возможности универсальной, колодка адреса используется только на тех устройствах где не устанавливается модуль Ethernet.
На вход схемы можно подавать сигналы различного уровня от 5 до 220 В как постоянного так и переменного напряжения. В дальнейшем, каждый пользователь подбором сопротивлений может задавать удобный для себя уровень сигнала.

alcotel
21.12.2025 09:03Диоды VD8, VD9 защищают контроллер ESP32
Защищают от чего? И если шина CAN двухпроводная, и питание разных устройств друг-от-друга изолировано (не как в тестировании по-быстрому) , то что-то должно ограничивать допустимое синфазное напряжение на SIT1050.
колодка адреса используется только на тех устройствах где не устанавливается модуль Ethernet
Понял. Сам прочитал невнимательно.
В дальнейшем, каждый пользователь подбором сопротивлений может задавать удобный для себя уровень сигнала.
"Пользователь" и "перепайка SMD-резисторов" - несовместимые вещи ИМХО. Я к тому, что греть каждый такой контроллер лишними 2 W от жирных резисторов - это расточительно. Оптрону для срабатывания достаточно тока раз в 10 меньше.

vozov Автор
21.12.2025 09:03В моем случае питание для всех устройств сети одно и интерфейсная микросхема SIT1050 не имеет гальванической развязки. А диоды VD8, VD9 защищают контроллер ESP32 от коротких импульсов по напряжению по входам.

alcotel
21.12.2025 09:03А с ключами, если перерисовать схему по классике, чтобы большее напряжение было выше на картинке, получается так

Напряжение затвор-исток у верхних ключей около 6-7 V всегда. Либо я ошибся, либо выложенная версия схемы нерабочая.

vozov Автор
21.12.2025 09:03Ваша схема действительно не рабочая из-за диода в цепи выходного транзистора.
В моей схеме входной транзистор в исходном состоянии закрыт, так как на вход подается сигнал 3В и напряжение затвор-исток около 0В, поэтому ток через него не течет и выходной транзистор тоже оказывается закрытым так как из-за напряжения 12В подаваемого резистором на затвор потенциал затвор-исток нулевой.

alcotel
21.12.2025 09:03Ваша схема действительно не рабочая
Это не моя схема. Я просто перерисовал вашу цепочку R20 R18 VT1 R36 R35 VT4 VD13. Я надеюсь, не ошибся.
В моей схеме входной транзистор в исходном состоянии
Закрыт - это да. Но диод между стоком и истоком включëн "из коробки, бесплатно". У p-канального мосфета AO3401 ведь нет отдельной четвëртой ноги, канал соединëн с истоком.

vozov Автор
21.12.2025 09:03Читайте datasheet, изучайте что такое затвор (GATE), исток (SOURCE), сток (DRAIN) и полярность диода. https://static.chipdip.ru/lib/167/DOC011167549.pdf

x89377
21.12.2025 09:03Интересный проект. А программа для ESP32-C6 в каком репозитории ?
https://github.com/OldIngineer
vozov Автор
21.12.2025 09:03Программа есть, она работает. Но я ее еще не выложил. Собираюсь в ближайшее время написать новую статью по программе, а также выложить ее в github.

Lissodelphis
21.12.2025 09:03А есть что-то интересное без проводов, чтобы взял старый смартфон повесил его на стенку и он управлял умным домом по зигби и вайфай? С одним апк внутри смартфона.

vozov Автор
21.12.2025 09:03На просторах интернета когда то давно я встречал такой вариант. Однако я считаю что главная функция умного дома для частного дома это обеспечивать охрану, что беспроводными технологиями невозможно обеспечить из-за их уязвимости, например сбой с помощью "глушилок".

NutsUnderline
21.12.2025 09:03по зигби
вообще так делают китайский умный дом. нужен еще китайских шлюз zigbee wifi . и zigbee скорее всего только от того же производителя И китайское облако где это будет крутиться

checkpoint
21.12.2025 09:03Предыдущих статей не чинал, но хочу задать вопрос: чем обоснован выбор CAN, а не RS-485/Modbus ? Ведь всякого рода датчиков и плат управления с интерфейсом Modbus на несколько порядков больше и ценник на них ниже чем на CAN. Есть какое-то простое обоснование выбору CAN ?
У себя на фазенде я подключил все датчик через 1-Wire к RPi4. На Pi простой перловый скрипт делает регулярный опрос датчиков и скидывает данные через HTTPS запросы типа POST на сервер (в Postgres), где они обрабатываются и визуализируются простыми CGI скриптами. На всё-провсе ушло два дня. Пришлось вынужденно заняться этой темой в позапрошлом году после того, как из-за морозов ниже -35С у меня остановился газовый котел и все нафиг замерзло. Теперь весь дом мониторится, визуализируется и рассылаются оповещалки по e-mail. :-)

vozov Автор
21.12.2025 09:03Выбор CAN я как раз обосновал в предыдущей статье, которую вы как раз не читали.
Еще раз повторюсь: CAN по отношению к RS-485 хорош тем, что работает на принципе равнозначности членов (контроллеров) сети, что позволяет работать каждому узлу или части сети автономно без главного устройства. А также возможна передача функции обмена данными с внешней сетью любому участнику этой сети.

checkpoint
21.12.2025 09:03Спасибо. Тогда еще вопрос: по каким проводам Вы гоняете CAN внутри дома ?

vozov Автор
21.12.2025 09:03Изначально, уже давно при постройке дома я заложил под штукатурку Ethernet кабель (4 витые пары) так до сих пор ими и пользуюсь. Одна пара сигнал, две соединены параллельно это для питания и одна пара резерв.

NutsUnderline
21.12.2025 09:03В качестве JTAG интерфейса можно использовать вывод .. UART
Ну если это назвать jtag... Но вообще в c6 есть встроенная usb jtag
а если нужен еще ethernet то уже стоит смотреть p4

vozov Автор
21.12.2025 09:03Ну во первых когда я начинал разработку почти год назад ESP32-p4 еще не было. Во вторых, если вы имеете ввиду плату ESP32-P4-EV-Board v1.5.2, где установлен модуль Ethernet и дополнительно ESP32-c6, то это довольно дорогое удовольствие для реализации сети при использовании модуля Ethernet только в одном контроллере.

NutsUnderline
21.12.2025 09:03сейчас уже есть варианты подешевле, но много вариантов повторяют связку из двух микросхем. типа скажем ESP32-P4-ETH (mini, nano)

vozov Автор
21.12.2025 09:03Да, забавная вещица, но пока дороже ESP32-C6-WROOM-1 + WIZ850io (371р+327 < 1000р) и как я понял программное обеспечение ни до конца отлажено.

sergey2212
Прочитал вашу статью и предыдущие две. Спасибо за ваш труд и желание поделиться полезной информацией. Как вариант подключение по CAN - это рабочий а главное надежный метод. Я тоже как то проводам больше доверяю, хотя это и заморочнее. Продолжайте!
У меня еще вопрос - а вы лично вот на практике какие уже IoT устройства смогли интегрировать в свою систему? Почему именно эта тематика вас заинтерисовала? У вас свой дом и вы для себя нашли практическую ценность или это больше как хобби и желание попробовать что то новое?
vozov Автор
Спасибо за отзыв. И да, у меня свой частный дом и это уже третий вариант создания умного дома, правда еще не законченный до конца. Кроме того у меня есть еще проекты IoT устройств, если интересно откройте на github мою страничку: https://github.com/OldIngineer