Данная статья является продолжением раннее опубликованной мною темы: Умный дом на основе интерфейса CAN. Вот ссылки на предыдущие статьи:

  1. Протокол обмена данными. Пользовательский уровень, поверх CAN 2.0. Проект

  2. Выбор структуры для системы «Умный дом»

В качестве ядра схемы контроллера сети был выбран модуль ESP32-C6-WROOM-1-N8. Для грамотной разработки схемы рекомендую пользоваться следующими источниками информации:

  1. Руководство по проектированию оборудования ESP

  2. Datasheet ESP32-C6-WROOM-1: https://documentation.espressif.com/esp32-c6-wroom-1_wroom-1u_datasheet_en.pdf

  3. Datasheet ESP32-C6 Series

  4. ESP32-C6 Техническое руководство пользователя

  5. ESP‑IoT‑решение

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 из трех контроллеров.

Рис. 1 Макет сети CAN
Рис. 1 Макет сети CAN

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

Рис. Схема контроллера CAN
Рис. Схема контроллера CAN

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


  1. sergey2212
    21.12.2025 09:03

    Прочитал вашу статью и предыдущие две. Спасибо за ваш труд и желание поделиться полезной информацией. Как вариант подключение по CAN - это рабочий а главное надежный метод. Я тоже как то проводам больше доверяю, хотя это и заморочнее. Продолжайте!

    У меня еще вопрос - а вы лично вот на практике какие уже IoT устройства смогли интегрировать в свою систему? Почему именно эта тематика вас заинтерисовала? У вас свой дом и вы для себя нашли практическую ценность или это больше как хобби и желание попробовать что то новое?


    1. vozov Автор
      21.12.2025 09:03

      Спасибо за отзыв. И да, у меня свой частный дом и это уже третий вариант создания умного дома, правда еще не законченный до конца. Кроме того у меня есть еще проекты  IoT устройств, если интересно откройте на github мою страничку: https://github.com/OldIngineer


  1. 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 В.

    Она точно работает?


    1. x89377
      21.12.2025 09:03

      "Как раз ковыряем CAN на плате Liligo T-CAN485. "
      Так за 4 года его уже расковыряли по самое нихочу.


    1. vozov Автор
      21.12.2025 09:03

      Я так понял вопросы по моей схеме.

      Диоды VD8, VD9 защищают контроллер ESP32. А интерфейсная микросхема SIT1050 внутреннею защиту по выходам CANH и CANL.

      Полевые транзисторы c p-каналом VT3, VT4 в исходный момент закрыты, так как напряжение затвор-исток нулевое.

      Как я уже указывал в статье, так как схема разрабатывалась по возможности универсальной, колодка адреса используется только на тех устройствах где не устанавливается модуль Ethernet.

      На вход схемы можно подавать сигналы различного уровня от 5 до 220 В как постоянного так и переменного напряжения. В дальнейшем, каждый пользователь подбором сопротивлений может задавать удобный для себя уровень сигнала.


      1. alcotel
        21.12.2025 09:03

        Диоды VD8, VD9 защищают контроллер ESP32

        Защищают от чего? И если шина CAN двухпроводная, и питание разных устройств друг-от-друга изолировано (не как в тестировании по-быстрому) , то что-то должно ограничивать допустимое синфазное напряжение на SIT1050.

        колодка адреса используется только на тех устройствах где не устанавливается модуль Ethernet

        Понял. Сам прочитал невнимательно.

        В дальнейшем, каждый пользователь подбором сопротивлений может задавать удобный для себя уровень сигнала.

        "Пользователь" и "перепайка SMD-резисторов" - несовместимые вещи ИМХО. Я к тому, что греть каждый такой контроллер лишними 2 W от жирных резисторов - это расточительно. Оптрону для срабатывания достаточно тока раз в 10 меньше.


        1. vozov Автор
          21.12.2025 09:03

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


          1. alcotel
            21.12.2025 09:03

            То есть, вы предлагаете кроме сигнала ещë и низковольтное питание между контроллерами прокладывать?


            1. vozov Автор
              21.12.2025 09:03

              Да и есть даже специальный 4-х проводный кабель для этого.


      1. alcotel
        21.12.2025 09:03

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

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


        1. vozov Автор
          21.12.2025 09:03

          Ваша схема действительно не рабочая из-за диода в цепи выходного транзистора.

          В моей схеме входной транзистор в исходном состоянии закрыт, так как на вход подается сигнал 3В и напряжение затвор-исток около 0В, поэтому ток через него не течет и выходной транзистор тоже оказывается закрытым так как из-за напряжения 12В подаваемого резистором на затвор потенциал затвор-исток нулевой.


          1. alcotel
            21.12.2025 09:03

            Ваша схема действительно не рабочая

            Это не моя схема. Я просто перерисовал вашу цепочку R20 R18 VT1 R36 R35 VT4 VD13. Я надеюсь, не ошибся.

            В моей схеме входной транзистор в исходном состоянии

            Закрыт - это да. Но диод между стоком и истоком включëн "из коробки, бесплатно". У p-канального мосфета AO3401 ведь нет отдельной четвëртой ноги, канал соединëн с истоком.


            1. vozov Автор
              21.12.2025 09:03

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


              1. alcotel
                21.12.2025 09:03

                https://static.chipdip.ru/lib/167/DOC011167549.pdf

                Да вроде всё так ми есть, как я и нарисовал.


  1. x89377
    21.12.2025 09:03

    Интересный проект. А программа для ESP32-C6 в каком репозитории ?
    https://github.com/OldIngineer


    1. vozov Автор
      21.12.2025 09:03

      Программа есть, она работает. Но я ее еще не выложил. Собираюсь в ближайшее время написать новую статью по программе, а также выложить ее в github.


  1. Lissodelphis
    21.12.2025 09:03

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


    1. x89377
      21.12.2025 09:03

      Да, пенсионер за 10000 руб в месяц. Кнопочный телефон подойдёт.


      1. vozov Автор
        21.12.2025 09:03

        ???


    1. vozov Автор
      21.12.2025 09:03

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


    1. NutsUnderline
      21.12.2025 09:03

      по зигби 

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


  1. checkpoint
    21.12.2025 09:03

    Предыдущих статей не чинал, но хочу задать вопрос: чем обоснован выбор CAN, а не RS-485/Modbus ? Ведь всякого рода датчиков и плат управления с интерфейсом Modbus на несколько порядков больше и ценник на них ниже чем на CAN. Есть какое-то простое обоснование выбору CAN ?

    У себя на фазенде я подключил все датчик через 1-Wire к RPi4. На Pi простой перловый скрипт делает регулярный опрос датчиков и скидывает данные через HTTPS запросы типа POST на сервер (в Postgres), где они обрабатываются и визуализируются простыми CGI скриптами. На всё-провсе ушло два дня. Пришлось вынужденно заняться этой темой в позапрошлом году после того, как из-за морозов ниже -35С у меня остановился газовый котел и все нафиг замерзло. Теперь весь дом мониторится, визуализируется и рассылаются оповещалки по e-mail. :-)


    1. vozov Автор
      21.12.2025 09:03

      Выбор CAN я как раз обосновал в предыдущей статье, которую вы как раз не читали.

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


      1. checkpoint
        21.12.2025 09:03

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


        1. vozov Автор
          21.12.2025 09:03

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


  1. NutsUnderline
    21.12.2025 09:03

    В качестве JTAG интерфейса можно использовать вывод .. UART

    Ну если это назвать jtag... Но вообще в c6 есть встроенная usb jtag

    а если нужен еще ethernet то уже стоит смотреть p4


    1. vozov Автор
      21.12.2025 09:03

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


      1. NutsUnderline
        21.12.2025 09:03

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


        1. vozov Автор
          21.12.2025 09:03

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