Перейти к содержимому

Контроллер ЙоТик32 v2.0B: обзор и функциональные возможности

Метки:

Добрый день, уважаемые читатели!

Предлагаю вашему вниманию небольшой обзор аппаратной части отладочной платы на базе микроконтроллера ESP32 в форм-факторе Arduino UNO R3. Конечно же, как и Arduino UNO, данная плата предназначена для обучения программированию, чем для “рабочих” проектов – но именно для целей обучения и исследований микроконтроллера ESP32 как такового она подходит, на мой взгляд, почти идеально (в отличие от моих любимых китайских ESP32-DevKitC-V4, например). Почему я сделал такие выводы – я постараюсь рассказать ниже.

Вид сверху. ESP32 притаился на нижней стороне платы

 

Дисклеймер. Данная статья – обзор, написанный по заказу производителя на основе бесплатно предоставленного экземпляра. Тем не менее я постарался сделать обзор максимально беспристрастным со своей стороны. Так это или нет – судить вам. 

Производством и разработкой ЙоТик занимается российская компания MGBot, которая базируется в Санкт-Петербурге, производство (сборка) плат также расположено там же. Производитель кроме собственно плат с микроконтроллерами предлагает периферийные платы и даже целые обучающие наборы. Продукция компании, судя по текстам на официальном сайте, позиционируется в основном для образовательных учреждений, так как цена на них, наверное, достаточно высока для DIY-любителей. 

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

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


Модуль контроллера

Производитель на текущий момент выпускает две версии платы (ссылки ведут на документацию в электронном виде на момент публикации статьи):

  • Контроллер “ЙоТик 32А v2.1” – базовая версия, по расположению выводов она чем-то похожа на Arduino Uno R4 и Wemos D1 R1/R2
  • Контроллер “ЙоТик 32В v2.0” – расширенная версия, дополнительно оснащенная:
    • Слотом под карту памяти MicroSD (до 32 ГБ в 4-битном режиме)
    • IR-приемником (приемник инфракрасных кодовых сигналов от различных пультов)
    • Выключателем питания (если питание на плату подано с помощью разъема питания 8-32В)

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

  • Основная сторона

 

Сердцем платы является модуль ESP32-WROOM-32D (более подробно о чипах и модулях ESP32 здесь). Модуль самый обычный, с 4 Мб embedded flash и без дополнительной внешней RAM.

На основной плате сделан вырез под антенну модуля, что несомненно плюс – некоторые китайские производители даже не заморачиваются с такими “тонкостями”. Это обеспечит несколько большую дальность WiFi-связи.

Модуль маркирован как ESP32-WROOM-32D, что говорит о том, что внутри него установлен самый распространенный на данный момент двухядерный чип “классической” серии ESP32 – ESP32-D0WD. Подробнее об видах модулей и чипах ESP32, их характеристиках и отличиях здесь.

Это же подтверждает Espressif IDE путем опроса чипа:

 

Для связи с ПК на плате предусмотрен стандартный в таких случаях чип Silicon Labs CP2102, драйвер (если он еще не установлен в вашей системе) можно скачать тут. Разъем для связи с ПК классический USB Type-B, может и считается несколько устаревшим, зато обеспечит гораздо большую надежность при многочисленных подключениях и отключениях.

  • Интерфейс с ПК


Система питания

Питание платы может осуществляться от двух источников:

  • USB-интерфейса 5В – в этом случае на плате светится синий светодиод
  • Внешнего источника питания напряжением 8-32В, подключенного к дополнительному разъему питания – в этом случае на плате светиться красный светодиод.

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

Для внешнего источника питания предусмотрен импульсный стабилизатор на микросхеме LM2678, понижающий напряжение до стандартных 5В, который можно отключать с помощью кнопки, но кнопка расположена не очень удачно (извиняюсь за фото низкого качества) – высота кнопки меньше рядом установленных деталей.

  • Стабилизатор 12->5В

 

Применение LM2678 весьма оправдано из-за его высокой нагрузочной способности, ибо линейные стабилизаторы типа L7805 и LM1117-5,0 ощутимо греются без дополнительного радиатора уже при питании только одного контроллера, а LM2678 вполне потянет и дополнительную нагрузку – реле, датчики и т.д. В данном случае общий ток нагрузки (включая микроконтроллер) может достигать 5А. Хотя LM2678 и дороже своих линейных собратьев.

Контроллеры ESP32, как известно из datasheet-а, работают при напряжении питания 3,3 вольт (допустимые пределы 2.7 ~ 3.6В), поэтому напряжение 5В требуется дополнительно понижать до 3,3В. На всех китайских платах, с которыми лично мне приходилось работать, в этом случае устанавливается стабилизатор LM1117-3,3В, который рассчитан на максимальный ток 0,8 А, из который 150 ~ 250 мА обычно забирает сам контроллер, и при общей нагрузке 0,5 А уже начинает ощутимо греться. Поэтому к той же ESP32-DevKitC, например, я бы не советовал навешивать много доп. оборудования на шину питания 3.3В. 

На данной же плате установлен более мощный (и соответственно более дорогой) чип – BA33BC0, который допускает предельный ток нагрузки уже до 1А. Поэтому и подключить к плате на линию 3,3В можно уже несколько больше датчиков и реле. Но всё равно не увлекайтесь.

Зеленый светодиод индицирует подачу питания 3,3В на микроконтроллер, то есть будет светиться при нормальной работе платы в любом случае. 


Периферийные разъемы и GPIO

Как я уже отметил, плата создана в форм-факторе классических Arduino. Если вы помните, все классические Arduino предназначены для работы с TTL-логикой 5В. Соответственно, большинство периферийных модулей, датчиков, реле, и т.д. созданы для работы с пяти-вольтовой логикой. И было бы не логичным не иметь возможности использовать их.

Контроллеры ESP32 (да и ESP8266), наоборот, проектировались для работы с логикой 3,3В. В сети широко распространена байка о якобы “толерантности” ESP к напряжению на выводах GPIO до 5В. И даже многие достаточно известные китайские производители не гнушаются подавать 5В напрямую на выводы ESP32. Я таки считаю, что это не более чем байка, и в некотором смысле опасная байка, так как datasheet на ESP32 считает совсем по другому:

Поэтому для возможности подключения периферии 5В к выводам ESP совершенно необходимо обязательно иметь схему согласования уровней. В некоторых случаях достаточно использовать резистивный делитель (а не просто один резистор), в некоторых требуется активная схема согласования на транзисторах. Обычно такие схемы включают между ESP и внешней периферией – например дисплеем LCD1602 (но в случае с LCD возможны другие обходные пути).

На данной плате как раз и установлены подобные схемы согласования уровней на всех цифровых входа/выходах, выведенных на разъемы J3 и J4: 

Соответственно, все цифровые входы, выведенные на разъем J3 уже подтянуты резисторами 10 кОм к линии 5В – что, несомненно, будет полезно при подключении различных сенсоров I2C, 1-Wire и аналогичных, но может немного мешать при работе “на выход”.

Теперь давайте поподробнее рассмотрим контакты и разъемы платы. Они максимально соответствуют классическим платам Arduino UNO.

Схема разъемов из документации

На схеме после символа слеш ( / ) обозначены назначение ( функциональность ) выводов платы “по умолчанию” в платформе Arduino, но следует понимать, что для ESP32 все эти функции могут быть переназначены произвольным образом (за некоторым исключением), а в платформе ESP-IDF все выводы контроллера даже не имеют функций по умолчанию. Поэтому стоит рассматривать предложенные функции выводов контроллера лишь как рекомендации по использованию в среде Arduino, но не как обязательное условие всегда и везде. Подробнее о выводах “классической” серии ESP32 и их функциях вы можете почитать здесь.

Мне привычнее использовать другую схему выводов, поэтому я переделал её в свой вариант (не обращайте внимания на рисунок в центре):

По нижней схеме уже видно, что Strapping Pins учтены максимально корректно, китайские производители иногда не обращают внимания “на такие мелочи”.

На красный разъем J1 выведены линии питания и сброса микроконтроллера: 3,3В, 5В и напряжение питания 5В, подаваемое в данный момент на плату (REF). Здесь же выведены всего два вывода GND, хотя остался свободным один контакт. Вкупе с ещё одним контактом GND на разъеме J4 всего их получается только три. Это не много, при подключении периферии без использования внешних макетных плат могут возникнуть сложности. Сделано это так, по всей видимости, из-за совместимости с Arduino UNO R3. Лично я бы плюнул на совместимость и добавил ещё парочку (что остались свободными на J1 и J4) – это улучшит ситуацию с GND – примечание автора.

Синий разъем J2 целиком и полностью отдан под аналоговые входы, которые в конечном итоге соединены с контактами IO25,26,32-35. Выбор GPIO, на мой взгляд, несколько странный, если учитывать, что GPIO26 – это канал ADC2, который не совместим с работающим с WiFi, а VP/36 и VN/39 (их тоже можно легко использовать как Digital Input или ADC1) остались свободными. Я бы сдвинул выводы ADC “выше” на пару строчек в моей таблице. Контакты разъема J2 соединены с выводами ESP через резистивный делитель, который позволяет снизить напряжение на ножке ESP до необходимого уровня (не выше напряжения питания). Если же в этом необходимости нет, то на части выводов можно закоротить верхнее плечо делителя и подать сигнал на вывод микросхемы напрямую. Либо к этим выводам можно подключить периферию, рассчитанную на 3.3В, например какие-либо сенсоры.

Зеленый разъем J3 используется под универсальные цифровые входы/выходы общего назначения со схемой согласования уровней 3,3В <-> 5В и подтяжкой к питанию 5В через резистор 10 кОм (об этом подробнее я писал выше). К этим контактам можно без проблем подключать любые модули расширения и реле, рассчитанные на 5В. А если вы будете подключать какие-либо датчики, например DS18B20, то и резистор подтяжки линии устанавливать не требуется – он уже есть на плате контроллера.

На желтый разъем J4 выведен интерфейс программирования UART0 (в соответствии с платой Arduino UNO R3), выводы I2C “по умолчанию” и ещё несколько дополнительных цифровых входов / выходов общего назначения. UART0 (GPIO1 / 3) в проектах использовать настоятельно не рекомендуется, но можно использовать для прошивки отладки помимо USB-интерфейса.


Дополнительное периферийное оборудование

Кроме собственно выводов GPIO, на рассматриваемой плате ЙоТик 32 B установлены:

  • Розовый светодиод LED3, подключенный к GPIO18, который можно использовать для опытов типа “помигать светодиодиком”. Кстати, светодиоды очень-очень яркие, слепят глаза при включении.
  • Приемник инфракрасного излучения IR RECIEVER, подключенный к GPIO27 – его можно использовать для обработки сигналов с IR пультов управления (в комплект пульт не входит).
  • Карт-ридер для MicroSD-карт памяти до 32 гигабайт на обратной стороне платы. Работает он в 4-битном режиме, это не очень быстро, но для целей обучения вполне достаточно и очень удобно – не нужно путаться с проводами и дополнительными модулями.

Всё это позволяет проводить программные эксперименты сразу же, без необходимости покупки и подключения дополнительного оборудования. Примеры для работы со всем этим богатством есть на GitHub – ссылки в конце статьи. Впрочем эти примеры можно использовать и не только с рассматриваемым контроллером.

По умолчанию контроллер прошит программой, которая мигает светодиодом с частотой 1Гц.

 


На чем программировать?

Поскольку это самый обычный ESP32, то и программировать его можно на чем угодно и в чем угодно (более подробно о выборе инструментов для программирования вы можете узнать здесь):

IoTil Studio IoTil Studio является модификацией интерактивной системы программирования TRIK Studio и позволяет программировать устройство на базе блоков, а дистанционное управление осуществляется через приложение Blynk.

 

В рамках данной статьи я не буду рассматривать вопросы программирования, но планирую собрать на базе этой платы проект ESP-IDF для сравнительного тестирования датчиков температуры и влажности воздуха, о чем будет обязательно написана ещё статья.


Выводы

Лично на мой взгляд плата получилась довольно удачной “для опытов”, особенно для школьников и начинающих самодельщиков. Она позволяет не задумываться о согласованиях уровней и дополнительных стабилизаторах при подключении периферии. Очень похожа по разъемам на Arduino UNO R3, что позволяет легко перейти на использование более мощного процессора с встроенными WiFi и BLE. Использование подобной платы в production – проектах вряд-ли оправдано из-за высокой цены и возможно лишнего “обвеса”.

Из недостатков существенным является лишь только относительно высокая цена – на момент написания статьи это 3900 руб (для версии А) или 4700 руб (для рассматриваемой версии). Но, наверное, в большой части это обусловлено большим количеством и более дорогими комплектующими (взять те же стабилизаторы и согласователи уровней хотя бы). Стоит ли оно того? – решать вам.

 


Ссылки

  1. Электронная документация на контроллер IoTik 32B
  2. Сайт производителя
  3. Примеры программирования 1
  4. Примеры программирования 2

 

Связанные статьи

  1. ESP32 – чипы, модули, платы… Как во всем этом разобраться?
  2. Статьи на тему “Arduino”
  3. Статьи на тему “ESP-IDF”
  4. Облачные сервисы для умных устройств
 

 


Пожалуйста, оцените статью:
[ 5 из 5, всего 1 оценок ]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *