Добрый день, уважаемый читатель!
Когда то я уже писал обзор для платы Kincony KC868-A16 на базе микроконтроллера классической серии ESP32 от довольно известного KinCony Electronics Co., Ltd. Если вы помните ту статью, конструкция получилась, на мой личный взгляд, хоть и не без недостатков, но довольно удачная.
Тем временем производитель уже выпустил новую версию платы – v 3.1, теперь уже на базе более современного микроконтроллера ESP32-S3. Поэтому я решил приобрести её для сравнения и обзора, тем более что я планирую использовать её в одном из своих будущих практических проектов – новой реинкарнации автоматической теплицы.
Дисклеймер.
Данная статья – не реклама в исходном смысле этого слова. Я никак не связан ни с производителем ни с продавцом, и не получал от них бесплатные образцы продукции или тем более деньги. Рассматриваемую плату я купил для себя лично и на свои средства, полученные от рекламы на данном сайте.
Данный обзор написан исключительного для того, чтобы вы могли заранее понять, можно ли покупать это изделие, для чего её можно применить и каких подводных камней от неё ожидать.
Отличия от прежней версии Kincony KC868-A16
Прежде чем мы начнем, я хочу перечислить список того, что изменилось в новой версии платы, в отличие от той, про которую я уже писал ранее – Kincony KC868-A16.
- Модуль ESP32-WROOM-32E заменен на более современный ESP32-S3-WROOM-1U-N16R8, в связи с чем:
- модуль имеет в 4 раза больше flash-памяти: 16Мб вместо обычных 4-х
- дополнительно мы имеем 8Мб внешней оперативной памяти, подключенной по интерфейсу Quad SPI
- встроенной антенны на модуле нет, но имеется разъем IPEX, посредством которого теперь необходимо подключать внешнюю WiFi-антенну, что очень актуально при установке платы в металлическом боксе
- теперь мы имеем немного больше GPIO, к которым можно подключить различную периферию
- ESP32-S3 не имеет встроенного MAC-интерфейса для Ethernet, поэтому производителю пришлось изменить чип Ethernet-контроллера на SPI-версию с интерфейсами MAC+PHY – W5500, что также экономит GPIO
- Добавлен разъем и точки крепления для подключения I2C дисплея SSD1306
- Добавлена микросхема высокоточных часов реального времени DS3231 и держатель батареи резервного питания для неё
- Добавлен слот для microSD-карты, на которую можно сохранять какие-то данные и журналы работы.
- Теперь на плате нет привычного интерфейса USB-UART, поэтому работать с данной платой придется через интерфейс USB JTAG, а это означает, что привычные драйверы и методы уже не сработают. На Windows рекомендуется установить драйвер “Espressif – WinUSB support for JTAG (ESP32-C3/S3)” для корректной работы с USB-программированием, см. Configure ESP32-S3 Built-in JTAG Interface.
Что не исправили:
- Для расширителей входов PCF8574 по прежнему не подключены к модулю выходы прерываний, так что получается, что это “очень не серьезные” 16 входов.
- Схема защиты линий А и В для RS485 осталась по прежнему не правильной.
Внешний вид
Плата A16 v3.1 имеет довольно большие размеры: 186 мм * 106 мм. Все элементы расположены на верхней стороне платы, снизу ничего интересного нет.
Для подключения периферийного оборудования предусмотрены разъемные винтовые клеммные соединители, что позволяет с одной стороны удобно подключить провода при монтаже, а с другой – быстро отключить плату при необходимости без применения шанцевого инструмента.
Интерфейсы платы
Плата A16v3 обладает достаточно богатым набором интерфейсов:
- питание DC 12~24 В
- 16 цифровых входов «сухой контакт» с опторазвязкой
- 16 MOSFET выходов 12/24 В 10А MAX для управления реле, клапанами, моторами и прочими исполнительными механизмами
- Ethernet-интерфейс на базе SPI чипа W5500
- 4 аналоговых входа 0–5 В
- 3 входа для подключения датчиков DS18B20 с подтяжкой к 3.3В
- интерфейс RS485
- разъемы для подключения передатчика и приемника 315 / 433 МГц с согласованием уровней
- шина I2C для подключения дисплея или других устройств
- разъём USB Type-C для программирования и отладки
Кроме этого, на плате выведены контакты с трех не задействованных GPIO ESP32-S3, которые можно использовать для других целей.
Схема разъемов и интерфейсов данной платы по информации с сайта производителя выглядит следующим образом:
Однако не всё так “красиво”, как кажется на первый взгляд – есть некоторые особенности, которые придется учитывать при разработке реального проекта. О чем мы и поговорим ниже.
Используемые GPIO
Как я уже упомянул выше, на данной плате использован новый модуль ESP32-S3-WROOM-1U (вы также можете почитать небольшой обзор или перевод технического паспорта).
Он имеет большее количество свободных GPIO по сравнению со своим предшественником. Если сравнивать с предыдущим вариантом, то много GPIO освободилось от Ethernet RMII интерфейса, но вместо этого добавили ещё один SPI для карт памяти.
Модуль с разъемом IPEX требует подключения внешней антенны WiFi, которая не входит в комплект и приобретается отдельно.
Схема включения модуля, но на ней есть одна ошибка:
Описание использованных выводов можно найти на форуме производителя, но я составил другую, на мой взгляд, более наглядную таблицу. Моя карта использованных выводов модуля ESP32-S3-WROOM-1U выглядит следующим образом:
Как видим, производитель платы вполне грамотно подошел к распределению GPIO микроконтроллера. В частности, strapping pins подтянуты к земле или питанию в полном соответствии с рекомендациями Espressif и не используются для других целей. Например:
- GPIO0 по умолчанию подтянут к земле, что позволяет загрузчику определять режим запуска с помощью кнопки PROG
- GPIO3 подтянут к питанию, что активирует встроенный JTAG-контроллер на USB Serial/JTAG вместо внешних JTAG-пинов MTDI, MTCK, MTMS, MTDO
- GPIO45 управляет напряжением VDD_SDIO (от которого работает внешняя Flash и PSRAM) и он подтянут к земле
- GPIO46 также подтянут к земле, так как это необходимо для перевода CPU в режим загрузки прошивки
Здесь производителю платы также пришлось отказаться от использования GPIO35 ~ GPIO37, так как на модулях с 8Мб PSRAM используется интерфейс Octal SPI и эти выводы уже заняты этим интерфейсом.
И не смотря на всё это, осталось еще целых три вывода GPIO39 ~ GPIO41, который никуда не использованы и никуда не подтянуты, а просто выведены на ряд отверстий рядом с микроконтроллером.
Сюда можно впаять обычную “гребенку” и использовать для вывода каких-либо сигналов, которые невозможно реализовать через расширители GPIO – например вывода сигналов широтно-импульсной модуляции. А я использовал эти выводы для небольшой модернизации данной платы согласно своим соображениям, о чем будет рассказано в конце статьи.
Определения выводов, их можно использоваться в вашей прошивке:
// EN: Pins DS18B20/DHT11/DHT21/I2C#1 // RU: Выводы DS18B20/DHT11/DHT21/I2C#1 #define CONFIG_GPIO_1WIRE_HT1 47 #define CONFIG_GPIO_1WIRE_HT2 48 #define CONFIG_GPIO_1WIRE_HT3 38 // EN: Analog inputs // RU: Аналоговые входы #define CONFIG_GPIO_ANALOG_A1 4 #define CONFIG_GPIO_ANALOG_A2 6 #define CONFIG_GPIO_ANALOG_A3 7 #define CONFIG_GPIO_ANALOG_A4 5 // EN: RF433 MHz // RU: RF433 МГц #define CONFIG_GPIO_RF433_RX 8 #define CONFIG_GPIO_RF433_TX 18 // EN: RS485 bus // RU: Шина RS485 #define CONFIG_GPIO_RS485_RX 17 #define CONFIG_GPIO_RS485_TX 16 #define CONFIG_GPIO_RS485_RTS -1 // EN: I2C bus #0: pins, pullup, frequency // RU: Шина I2C #0: выводы, подтяжка, частота #define CONFIG_I2C_PORT0_SDA 9 #define CONFIG_I2C_PORT0_SCL 10 // EN: GPIO expanders PCF8574 // RU: Расширители GPIO PCF8574 #define CONFIG_I2C_INPUTS1_ADDRESS 0x22 // pcf8574_hub_in_1 # for input channel 1-8 #define CONFIG_I2C_INPUTS2_ADDRESS 0x21 // pcf8574_hub_in_2 # for input channel 9-16 #define CONFIG_I2C_OUTPUTS1_ADDRESS 0x24 // pcf8574_hub_out_1 # for output channel 1-8 #define CONFIG_I2C_OUTPUTS2_ADDRESS 0x25 // pcf8574_hub_out_2 # for output channel 9-16 // EN: Other devices on I2C bus // RU: Другие устройства на шине I2C #define CONFIG_I2C_EPROM_24C02 0x50 #define CONFIG_I2C_RTC_DS3231 0x68 #define CONFIG_I2C_SSD1306 0x3C // EN: SD CARD // RU: SD CARD #define CONFIG_GPIO_SD_CS 11 #define CONFIG_GPIO_SD_MOSI 12 #define CONFIG_GPIO_SD_MISO 14 #define CONFIG_GPIO_SD_SCK 13 #define CONFIG_GPIO_SD_CD 21 // EN: Ethernet (W5500) // RU: Ethernet (W5500) #define CONFIG_GPIO_ETH_RES 1 #define CONFIG_GPIO_ETH_INT 2 #define CONFIG_GPIO_ETH_CS 15 #define CONFIG_GPIO_ETH_SCK 42 #define CONFIG_GPIO_ETH_MISO 43 #define CONFIG_GPIO_ETH_MOSI 44 // EN: Reserved // RU: Резерв #define CONFIG_GPIO_RESERVED1 39 #define CONFIG_GPIO_RESERVED2 40 #define CONFIG_GPIO_RESERVED3 41
Схема питания
Плата рассчитана на внешний источник питания напряжением от 12В до 24В. Обратите внимание: напряжение питания не подается на исполнительные устройства, так как для этого предусмотрены отдельные клеммы.
Система внутреннего питания платы двухступенчатая:
- вначале напряжение питания 12В понижается с помощью импульсного DC-DC преобразователя на микросхеме XL1509-5.0 до 5В,
- затем линейным стабилизатором LM1117-3V3 понижается до необходимых микроконтроллеру 3,3В.
Схема питания практически не отличается от предыдущего варианта платы. Единственное отличие – на входе DC-DC конвертера добавили защитный диод Шоттки SB1045L и NTC резистор. Эти элементы призваны защитить элементы платы при ошибочном подключении кабеля питания и превышении напряжения.
USB-интерфейс программирования
Для подключения к компьютеру и программированию предусмотрен разъем USB Type-C. Вот только вместо уже многим привычного преобразователя UART-USB разъем теперь напрямую подключен к микроконтроллеру.
Поэтому для программирования этой платы может потребоваться установить дополнительный драйвер “Espressif – WinUSB support for JTAG (ESP32-C3/S3)”, подробнее об этом см в разделе Configure ESP32-S3 Built-in JTAG Interface.
Однако в этом есть и весомый “плюс” – ESP32-S3 имеет встроенный JTAG-контроллер на интерфейсе USB Serial/JTAG, который можно использовать для отладки без необходимости применения специальных аппаратных отладчиков.
Для перевода контроллера в режим программирования рядом с разъемом предусмотрены две кнопки: RESET и DOWNLOAD – последняя подключена к GPIO 0. Для перевода МК в режим загрузки прошивки удерживайте кнопку DOWNLOAD в момент сброса кнопкой RESET. Но, на самом деле, вам это вряд ли понадобится, так как контроллер USB Serial сам может распознать это. Но, это так, на всякий случай, потому что всегда полезно знать – как перевести ESP32 в режим прошивки вручную.
В run-time вы можете использовать кнопку DOWNLOAD по своему усмотрению. Главное не забывайте – в момент любого сброса ESP32 она должна быть отпущена, иначе чип перейдет в режим прошивки.
Шина I2C и встроенные устройства
Шина IIC ( I2C ) используется для обмена данными с квазидвунаправленными расширителями GPIO PCF8574, часами, экраном и EPROM. Шина I2C использует следующие сигнальные GPIO:
// EN: I2C bus #0: pins, pullup, frequency // RU: Шина I2C #0: выводы, подтяжка, частота #define CONFIG_I2C_PORT0_SDA 9 #define CONFIG_I2C_PORT0_SCL 10
На “внешние” разъемы контакты шины не выведены, да и не должны были быть выведены. Системный контроллер I2C #0 должен использоваться исключительно “внутри” платы и ней лучше не подключать никаких внешних датчиков. Если вам потребуется подключить “внешние” устройства на шине I2C, то я бы настоятельно рекомендовал использовать для этого два свободных контакта из HT1 ~ HT3 и контроллер шины I2C #1 (отличный от “системного” #0).
К шине IIC #0 подключены:
- Расширитель GPIO PCF8574 с адресом 0x22 – входные каналы с 1 по 8
- Расширитель GPIO PCF8574 с адресом 0x21 – входные каналы с 9 по 16
- Расширитель GPIO PCF8574 с адресом 0x24 – выходные каналы с 1 по 8
- Расширитель GPIO PCF8574 с адресом 0x25 – выходные каналы с 9 по 16
- EEPROM объемом 2 Кбит (256 байт) 24C02 с адресом 0x50
- Микросхема часов реального времени DS3231 с адресом 0x68 вместе с разъемом батареи CR1220 для резервного питания часов, когда питание платы отключено.
- Дополнительно имеется возможность подключить OLED дисплей SSD1306:
- Рядом с дисплеем расположен разъем XH2.54 для возможности подключения другого типа дисплеев.
Цифровые дискретные выходы
Как я уже написал, плата имеет 16 выходов с открытым стоком на MOSFET-транзисторах c P-каналом: NCE60P10E. Этот транзистор по паспорту допускает ток до 10А при максимальном напряжении до 60В. Но я бы не стал нагружать его током 10А, да ещё на длительное время по двум причинам: во-первых китайские 10А можно смело делить на два, а во вторых транзисторы не имеют радиатора (хотя как бы они на это и рассчитаны). Производитель поступил ещё проще – рекомендованный им ток через ключи – всего 500 мА ( 0,5 А ).
Каждый ключ снабжен защитным диодом, поэтому Вы можете легко управлять этими ключами любой низковольтной нагрузкой, в том числе индуктивной, вроде катушек реле, ламп, актуаторов, клапанов, вентиляторов, насосов и т.д. В этом плане описываемая плата идеально подходит для моего проекта автоматической теплицы, так как почти все исполнительное оборудование у меня как раз рассчитано на 12-вольт. А если требуется включить что-то на 220в или более мощное, то можно использовать любое удобное промежуточное реле на DIN-рейку или контактор. Производитель предлагает свой набор реле в корпусе на туже самую рейку.
Все это добро управляется двумя микросхемами PCF8574 с адресами 0x24 и 0x25. Схема управления транзисторами приведена ниже. Собственно выход на нагрузку – это контакт Y1, контакт LO0 – это вывод напряжения питания нагрузки (общий для группы). Все выходы снабжены индикацией включения.
На вывод LO0 через колодку вы можете подать любое необходимое напряжение: 12В, 24В или даже 5 или 36 при необходимости. Выходы объединены в две группы, таким образом одну половину можно задействовать на включение устройств с одним напряжением питания, а другую – с другим.
Оптрон включается при низком напряжении на выводе PCF8574, таким образом для включения нагрузки нам необходимо записать 0
в соответствующий вывод, а для выключения – 1
. Собственно, такое поведение (высокий уровень на выходах) предусмотрено для PCF8574 по умолчанию, поэтому включения нагрузки при запуске платы не происходит. Но это не помешает нам при запуске платы записать 0xFF в микросхему еще раз для гарантии.
Применение расширителей GPIO в управлении дискретными выходами накладывает определенные ограничения на функционал платы – например не получится вывести PWM-сигнал с LED PWM контроллера.
Цифровые дискретные входы
Две из четырех PCF8574, установленных на плате, обеспечивают получение данных с 16 дискретных входов. Они объединены в две группы и выведены на два разъема. Для изменения состояния любого дискретного входа необходимо замкнуть цепь с соответствующего контакта разъема на “землю”, которая выведена на тот же самый разъем. Напряжение на входе 0 ~ 1.8 В соответствует логическому нулю на входе PCF, напряжение выше 8В – единице. Промежуточные напряжения 2 ~ 8 В могут дать неожиданные значения, поэтому их следует избегать.
Схема входов построена на оптоизоляторах PC357С, при этом на контакт 1 подано +12В со входа питания платы, то есть входные цепи гальванически связаны с линией питания – это может быть важным в некоторых случаях.
Ещё мне очень непонятно назначение резисторов, подтягивающих аноды светодиодов оптронов к питанию. Светодиод не транзистор, и оптопара не сможет сработать, даже если один из выводов светодиода “болтается в воздухе”. Как по мне – так это бесполезный расход деталей, места на плате и 2 мА тока на нагрев воздуха.
Но главная проблема подстерегает нас не в этом!!! Главная проблема – ни одна из микросхем, обрабатывающих дискретные входы, не имеет подключения своего выхода прерывания с ESP32. То есть фактически вы не сможете обрабатывать дискретные входы по прерыванию! При таком включении вы сможете опрашивать входы только периодически, например один раз в секунду. Соответственно замутить в таком режиме какой-нибудь счетчик (например от датчика скорости ветра) будет крайне затруднительно.
Хотя свободные GPIO на микроконтроллере, как мы помним, остались. И их вполне можно было использовать. А уж пользователь сам бы решил – создавать обработчик прерываний или нет – в конце концов это не обязательно.
Аналоговые входы 0 – 5В
Плата имеет четыре аналоговых входа, способных измерять напряжение в пределах от 0 дол 5 В (на прежней версии платы два входа могли измерять напряжение 0 ~ 5В, а два – ток 0 ~ 20 мА).
// EN: Analog inputs // RU: Аналоговые входы #define CONFIG_GPIO_ANALOG_A1 4 #define CONFIG_GPIO_ANALOG_A2 6 #define CONFIG_GPIO_ANALOG_A3 7 #define CONFIG_GPIO_ANALOG_A4 5
Все входы идентичны по схеме:
Входной сигнал поступает на вход делителя напряжения из двух резисторов 5,1кОм и 10кОм, а затем подается на вход одного из четырех операционных усилителей LM224, включенных в режиме повторителя со 100% обратной связью (на каждом усилителе вход “-” соединен с его выходом OUT), поэтому коэффициент его усиления равен единице. Но сделано это вовсе не зря – входное сопротивление такого усилителя очень и очень большое, а это значит оно не будет влиять на результаты измерений.
Сигнал с выхода ОУ уже подается на вход ESP32. Там же, на выходах ОУ, установлены диоды Шоттки BAT54S для защиты ESP32 от повышенного и пониженного напряжения.
Операционный усилитель запитан от 12В через дополнительный фильтр на дросселе и конденсаторах для уменьшения помех по линии питания.
Входы для подключения датчиков температуры
Плата имеет три входа для подключения датчиков, которым для работы необходимо напряжение питания 3.3В и подтяжка линии данных к питанию. Это могут быть “народные” DS18B20, Aosong DHT11, DHT22 или аналоги.
По сути это просто выведенные “наружу” GPIO с подтяжкой к питанию, поэтому для из них можно использовать как шину I2C#1, к которой можно подключить всевозможные датчики и устройства. Например SHT2x / SHT3x / SHT4x и аналогичных. Или организовать аппаратный счетчик импульсов для измерения скорости ветри или подсчета литров воды, если потребуется.
Интерфейс карт памяти
На данной плате установлен слот для установки карты памяти, которую можно использовать для записи журналов работы или хранения файлов с какими-либо данными. Под это выделен один из интерфейсов SPI:
// EN: SD CARD // RU: SD CARD #define CONFIG_GPIO_SD_CS 11 #define CONFIG_GPIO_SD_MOSI 12 #define CONFIG_GPIO_SD_MISO 14 #define CONFIG_GPIO_SD_SCK 13 #define CONFIG_GPIO_SD_CD 21
Картридер установлен не с края платы, а в её середине, поэтому замена карты без снятия корпуса не представляется возможной.
Я не пользовался этой функциональностью, поэтому ничего определенного пока сказать не могу. Но, судя по примерам в этих ваших интернетах, в этом ничего сложного.
Интерфейс RS485
Наличие интерфейса RS485 уже стало привычным для плат этого производителя, это дает возможность покупателю использовать огромное количество готовых к применению датчиков и исполнительных устройств; и при этом не особо заботясь о длине проводов и помехах на шине. Датчики I2C – это “детский сад” по сравнению с RS485 и Modbus, хотя протоколы в чем-то и похожи друг на друга. Я рекомендую вам использовать именно данный интерфейс в серьезных проектах.
// EN: RS485 bus // RU: Шина RS485 #define CONFIG_GPIO_RS485_RX 17 #define CONFIG_GPIO_RS485_TX 16 #define CONFIG_GPIO_RS485_RTS -1
На данном экземпляре в качестве приемопередатчика RS485 по схеме заявлена микросхема MAX13487EESA. Схема интерфейса ничуть не изменилась, а могла бы – ниже я поясню почему.
На микросхеме шинного буфера 74LVC1G125, судя по всему, собрана схема согласования логических уровней MAX13487E ( 5.0 В) с уровнями ESP32 (3,3В).
Что мне в этой схеме не нравится?
1. Во первых, супрессоры (TVS-диоды, защитные диоды) TVS1 ~ TVS3 подключены непосредственно к контактам разъема без какой-либо дополнительной защиты. А самовосстанавливающиеся предохранители (PPTC или polyfuse), которые на схеме обозначены как R78 и R80? – включены между TVS и микросхемой приемопередатчика. Это противоречит логике работы этой схемы.
Почему это важно? При правильном включении PPTC должны быть включены между разъемом и TVS-диодами. В этом случае, если на выводы A или B из линии связи случайно попадет “постоянка” +12В или +24В, супрессор откроется и замкнет линию на землю, и при этом будет сильно нагреваться. Но через какое-то время нагреется и PPTC и разомкнет цепь. Конечно, через какое-то время он остынет и если напряжение останется, процесс повторится – однако это опять не приведет к повреждению элементов платы.
Здесь же PPTC включены перед микросхемой (которая даже не способна обеспечить необходимый ток для того, чтобы они сработали) и никак не защищает супрессоры. И при подаче постоянного напряжения выше порога срабатывания супрессоров, ничто не остановит ток через них – поэтому в этом случае, почти наверняка, они выйдут из строя через какое-то время.
В нормальных условиях вот это всё будет работать, конечно. И даже краткие импульсные помехи супрессоры должны проглотить вполне достойно. Но вот подавать “постоянку” выше 7В на линии А и В, да еще надолго, я бы категорически не советовал. Поэтому при монтаже периферии RS485 снимаем с нее питание строже чем обязательно.
2. Во-вторых, здесь опять применен метод автоматического переключения режима “приём / передача”. На прежней версии платы (c ESP32 в главной роли) это было оправдано, так как свободных GPIO там не оставалось. Здесь же у нас остались три свободных GPIO и можно было так не экономить. Но об этом даже не думали, скорее всего.
3. В третьих, к линиям A и B сидели на трубе наглухо припаян согласующий резистор 120 Ом (R79). Он обычно устанавливается через перемычку, которая по умолчанию разомкнута. Здесь же производитель решил не заморачиваться с перемычками. Вообще. Даже под припой. Но это не беда – отпаять его не большая проблема.
4. В четвертых, вовсе не обязательно подавать на приемопередатчик питание 5в и ставить микросхему согласования уровней. Вполне достаточно подтянуть к +5В только линию А.
В итоге хотелось бы в следующих версиях видеть нечто похожее на схему ниже:
По факту на плате установлена другая микросхема – MS2548, видимо это аналог MAX13487E от неизвестного китайского производителя. Гуголь про нее пока ничего не знает.
Интерфейс Ethernet
Рассматриваемая плата, как и её предшественник, снабжена ethernet-интерфейсом. Например если вы захотите интегрировать данное чудо китайской техники в металлический коммутационный шкаф, то данный интерфейс вам должен очень пригодится. Но ESP32-S3, в отличие от классического ESP32, не имеет встроенного MAC-контроллера. Поэтому подключение к сети ethernet возможно с использованием внешних MAC + PHY контроллеров, подключаемых по интерфейсу SPI.
На данной плате примерен SPI контроллер WIZnet W5500. W5500 — это ethernet-контроллер с поддержкой протокола Hardwired TCP/IP, который обеспечивает удобное подключение к сети для встраиваемых систем, используя всего один чип со встроенными стеком TCP/IP, MAC-адресами 10/100 Ethernet и физическим уровнем PHY. Интерфейс SPI в W5500 поддерживает частоту 80 МГц и высокоскоростной протокол SPI.
Схема подключения к микроконтроллеру:
На сайте я уже публиковал пример кода для подключения к ethernet с использованием RMII и чипа LAN8720A, возможно позднее будет статья с примером и для W5500.
Интерфейс радиоканала 315 / 433 МГц
Ну и наконец, на плате присутствуют еще два разъема – для подключения “стандартных” модулей приемника и передатчика сигналов 315 / 433 МГц. Это позволяет организовать обмен данными по радиоканалу или получение каких-либо данных от беспроводных датчиков 433 МГц.
// EN: RF433 MHz // RU: RF433 МГц #define CONFIG_GPIO_RF433_RX 8 #define CONFIG_GPIO_RF433_TX 18
Разъем P7 предназначен для подключения передатчика и соединен с выводом GPIO 18 напрямую и без какой либо подтяжки. Разъем P2 предназначен для подключения приемника. Приемник питается от +5В и для понижения логического уровня до 3.3В, необходимого для подачи на вход ESP32, применена еще одна микросхема шинного буфера 74LVC1G125.
Соответственно, этот вход (приемника) легко можно использовать для подключения любых других внешних модулей с напряжением логической единицы равным 5В. Например, через эти интерфейсы можно подключить GSM-модем.
Модернизация платы
Исходя из моих замечаний, которые я привел выше, могу предложить следующие доработки, которые вполне можно выполнить в домашних условиях.
Внимание! Все что описано в данном разделе, вы предпринимаете на свой страх и риск без каких-либо гарантий с моей стороны или стороны производителя платы. Для выполнения указанных ниже манипуляций, вы должны обладать достаточными знаниями и умениями.
Доработка интерфейса дискретных входов
Выводы 13 каждой из микросхем “входов”, подтянутых резисторами к питанию, необходимо соединить со свободными выводами модуля ESP32-S3, например:
- Точку соединения микросхемы U14 вывод 13 – резистор R52 подключить к GPIO40
- Точку соединения микросхемы U31 вывод 13 – резистор R147 подключить к GPIO41
Резисторы можно не выпаивать. Таким образом мы получаем возможность реагировать на изменения уровней немедленно, с помощью прерываний по входам GPIO40 и GPIO41. Колхозинг? Как бы да. Но производитель упорно отказывается от такой простой, казалось бы, доработки.
Но и такая доработка не гарантирует реализацию полноценных счетчиков импульсов по дискретным входам. Дело в том, что для опроса состояний входов приходится читать шину I2C, а делать это можно только вне обработчика прерываний.
Доработка интерфейса RS485
- Выпаять с платы резистор R82, и его левый по схеме контакт (то есть выводы 2-3 микросхемы) проводом в изоляции подключить к GPIO39 микроконтроллера. Таким образом мы добавляем “ручное” управление режимом “приём / передача”, что надежнее текущего способа
- Резистор 120 Ом (“терминатор”) между линиями А и В чаще мешает, чем помогает, поэтому его можно выпаять
- Если вы опасаетесь попадания +12В на линию связи (а исключить этого полностью нельзя) – можно аккуратно разрезать дорожки между TVS3 и разъемом и впаять еще парочку polyfuse. Но действовать придется очень аккуратно. Либо, как вариант, добавить парочку выводных предохранителей уже “за разъемом”.
- Если есть возможность и желание – TVS диоды можно заменить на напряжение 10В – у них на порядок меньше токи утечки в закрытом состоянии. Впрочем – разница будет очень мало заметна и наверное не стоит возиться.
По большому счёту эти доработки можно не выполнять, все и так работает. Но… с доработками, на мой взгляд, лучше.
Ссылки
1. Страница продукта: https://www.kincony.com/esp32-s3-16-channel-gpio-module.html
2. Форум на сайте производителя: https://www.kincony.com/forum/forumdisplay.php?fid=68
Пожалуйста, оцените статью:
-= Каталог статей (по разделам) =- -= Архив статей (подряд) =-