Ранее я уже писал о плате mCore от компании MakeBlock, которую долгое время мы считали лучшим решением для проектов на основе Arduino UNO (чисто наше мнение, не навязываем))). И тому причиной были не только надежность и продуманность платы, но и поддержка основной блочной среды программирования mBlock - уникально удобной для использования с ребятами 3-8 классов. Ну а с расширением Advanced Arduino Extention, созданным нашим коллегой по "Лаборатории проектов 169", Александром Григорьевым, стало возможным создавать в этой среде и проекты профессионального уровня.
Идея создания SPBot
Идея создать "свой" контроллер появилась у партнера - издательства БХВ, когда создавалась наша книга Проектов по робототехнике.
Книга реально уникальная, содержит крутые проекты, которые были апробированы на наших занятиях. Продвинутые проекты по робототехнике требовали хорошего железа и мы воспользовались уже привычным mCore. Но и его пришлось дорабатывать. Пришлось допаять один контакт (сами площадки на mCore уже предусмотрены), иначе не получалось поставить 3 датчика линии, а они нужны были для проектов. В таком варианте все проекты работали. Но, т.к. мы знали о готовящемся закрытии производства mCore, стали искать аналоги, которые не нарушали бы совместимость с проектами из книги. Нашли. Попробовали.... Ну что могу сказать... mCore - был очень хорош, а аналоги так и не смогли((( Выявлялись проблемы с питанием, т.е. при подключении пары потребителей уже выявлялись глюки, на части плат просто бракованными оказывались светодиоды или другие электронные части... В общем, пришлось отказаться от идеи.
И подумать про свою плату, причем уже был накоплен изрядный багаж знаний о mCore, что позволяло изначально спроектировать более интересный вариант.
Так появился SPBot. Он полностью повторяет функционал mCore, совместим ссо средами mBlock и при этом лишен недостатков, выявленных годами применения mCore в кружках. При этом никто не мешает программировать плату и в привычной текстовой среде Arduino IDE.
Отличия SPBot и mCore
Здесь отражены только "внешние" отличия, видно увеличенное у SPBot количество портов Dupont 1x3, которых нам так не хватало в проектах, добавление еще одного порта ИК, смена разъема на Type-C. Но в глубине изменений намного больше. Мощная схема питания, дополнительные специализированные разъемы, возможность с помощью джампера добавлять неиспользуемый порт для работы в проекте и т.д.
SPBot. Основные компоненты, разъемы, джамперы
В дополнение к возможностям Arduino Uno R3 на плате SPBot интегрированы дополнительные устройства: драйверы двигателей TB6612FNG и разъемы для подключения двух редукторных двигателей 3-6 В., датчик освещенности QT523C-EE1, два адресных RGB-светодиода WS2812B, два ИК-приемника TSOP38238, ИК-передатчик TSAL6400, зуммер.
На рисунках 4 и 5 показано размещение электронных компонентов и разъемов на плате SPBot
На рисунке 4 отметим наличие кнопки управления (используется порт А7). Кнопка позволяет выполнять управляющие действия. Пример ситуации: робот при выполнении спортивной дисциплины. Кнопкой запускается выполнение юстировки датчиков. Вторичное нажатие – робот готов к прохождению дистанции и т.д.
Видны и отличия от платы mCore, плата SPBot оснащена инфракрасными приемниками и спереди, и сзади (у mCore – один). При работе с ИК-пультом управления роботы на основе mCore показывали нестабильность при развороте робота на 180 градусов от оператора. Добавление второго ИК-приемника убрало эту проблему и обеспечило стабильность связи на максимальных расстояниях робота от оператора.
Сразу пройдемся и по отличиям от mCore на рисунке 5. Первое, что бросается в глаза – на плате SPBot интегрированы 2 разъема Dupont 1x8 ("мама"). Один из них используется для подключения модуля гироскопа и других устройств I2C. Второй для подключения устройств SPI (например, матрицы 8x8 c драйвером дисплея MAX7219). При этом напряжение Vin поступает напрямую от источника питания, т. к. светодиодная матрица потребляет до 500 мА. Кроме того, на втором разъеме расположены контакты SDA и SCL для подключения устройства I2C, для которых также требуется питание Vin, например, ЖК-дисплея с модулем I2C(рис.6).
На mCore аналога такого разъема нет, а возможность выводить информацию на матрицу 8х8 и подключать устройства по I2C существенно расширяет возможности использования платы.
Следующее важное отличие – присутствует выделенный порт для подключения серводвигателя с питанием Vin (рис. 5,7, обозначен цифрой 5). Этого порта очень не хватало на mCore. Серводвигатель очень важный компонент мобильного робота и его подключение на SPBot сделано надежным и простым. При этом трехпиновый разъем большинства доступных серводвигателей просто вставляется в соответствующий разъем на плате.
Цифрами 1-8 на рисунках 5 и 7 обозначены восемь дополнительных GVS разъемов Dupont 3x1 ("папа") для подключения внешних устройств с контактами GVS. Это так же преимущество платы SPBot. Аналогичные разъемы имеются на Arduino Uno Sensor Shield 5.0. Они упрощают процесс макетирования.
Назначение контактов разъемов GVS (Ground-Vcc-Signal) показано на рис. 7.
Эти разъемы удобны для подключения датчиков и модулей, которые также имеют расположение контактов GVS. Пример таких датчиков приведен на рис. 2.42.
Для подключения подобных датчиков понадобятся кабели с разъемами Dupont "мама"-"мама".
В SPBot решена и еще одна проблема, обнаруженная при эксплуатации mCore. Периодически при сборке проектов мы испытывали нехватку свободных портов. В mCore порты D2 и D3 были заняты под ИК-приемник и ИК-передатчик. Но ведь эти устройства нужны не всегда! В SPBot эти пины можно освободить с помощью специальных джамперов и использовать для других целей. По умолчанию джамперы замыкают контакты D2 и D3. Убрав джамперы, вы освобождаете на плате контакты D2 и D3, которые можете использовать по своему усмотрению (рис. 2.43).
Используя разъемы RJ25 на плате SPBot можно быстро и надежно подключить внешние устройства к плате с помощью кабелей RJ25 6P6C (шестиместный-шестиконтактный). Это особенно удобно при проведении занятий в школах и кружках, чтобы не тратить время на коммутацию устройств и предотвратить повреждение платы в случае ошибок при подключении.
Примечание: обозначение 6P6C означает, что контакты на этих розетках/вилках имеют 6 позиций, в которых размещены 6 позолоченных контактов. Эти разъемы предназначены для использования с многожильным плоским кабелем (рис. 10,11).
В зависимости от контактов на внешних устройствах можно использовать либо кабель типа RJ25–RJ25, либо RJ25-Dupont.
Назначение контактов разъемов RJ25 приведено на рис. 13
Разъем ICSP типа Dupont 3x2 ("папа") для подключения внешнего программатора. Предназначен для подключения внешнего программатора (например, UDBasp), с помощью которого можно записать загрузчик и скетчи в микроконтроллер ATMerga328 напрямую с ПК (рис. 14).
На плате SPBot установлен современный разъем Type-C для загрузки скетчей через порт USB персонального компьютера. Это не настолько принципиальное отличие для плат на основе Arduino (в mCore использует USB-B), но Type-C обеспечивает более стабильное соединение и меньше подвержен разбалтыванию, обеспечивая стабильность связи.
SPBot. Питание платы
Плата включается с помощью ползункового выключателя. При этом загорается красный светодиодный индикатор питания электронных компонентов, расположенных на плате (PWR, рис. 15).
Для платы предусмотрено три варианта питания:
1. Через кабель USB.
2. От аккумулятора 18650.
3. От аккумуляторов (батарей) AA или внешнего сетевого блока 5 В.
Плата SPBot оборудована разъемом USB Type-C. При подключении платы к порту USB ПК напряжение питания (VIN) составляет 5 В, а ток ~500 мA (при подключении к USB 2.0) и ~900 мА (при подключении к USB 3.0). Поэтому такой тип питания можно использовать при выполнении простых экспериментов с устройствами, интегрированными на плате, и при подключении к плате датчиков и модулей, которые не потребляют большой ток. При мощных нагрузках (выше 500-600 мА) микроконтроллер перезапустится, так как напряжение упадет ниже критического порога и сработает защита порта USB компьютера от высокого потребления тока компонентами схемы и от случайного короткого замыкания.
Ток потребления различных устройств:
- Датчики/модули ~ 10-30 мА
- Адресные RGB-светодиоды WS2812: ~15 мА
- Зуммер: 30 мА
- ЖК-дисплеи: ~40 мА
- Модуль Bluetooth: 45 мА (максимальный)
- Модули реле: ~60 мА (при активации)
- Мотор: ~400 мА
- Светодиодная матрица 8x8: ~500 мА (максимальный)
- Сервопривод: ~500 мА (во время работы)
Аккумулятор типа 18650 напряжением 3,7 В
Для автономного питания платы, а также подключения устройств с большим током потребления (моторы, серводвигатели, светодиодные матрицы и др.) предусмотрено питание от одного аккумулятора 18650.
Подключение к плате Li-Ion аккумулятора 18650 3,7 В осуществляется через разъем JST XH2.54. На плате SPBot реализована схема зарядки аккумулятора током 800 мА. Если при подключенном аккумуляторе 18650 соединить плату с работающим компьютером или ноутбуком, то начнется зарядка аккумулятора и загорится красный индикатор. По окончании зарядки, красный индикатор потухнет и загорится зеленый индикатор (рис. 15).
Среднее время зарядки, за которое прибор с литий-ионным аккумулятором набирает нужное количество энергии, составляет около 3-4 часов.
Рекомендуемая емкость аккумулятора — от 2000 мАч.
Аккумуляторы типа AA, блок питания 5 В
Для автономного питания также можно использовать 34 аккумуляторные или солевые/алкалиновые батареи 1,5 В типа AA (AAA) или блок питания 5 В от сети переменного тока 220 В.
Зарядка аккумуляторов типа AA на плате не предусмотрена.
Емкость солевых батареек AA составляет от 550–1500 мА∙ч, а NiMH аккумуляторов — 1400–2200 мА∙ч.
*********************************
Ну вот пока и все. Дальше надеюсь опубликовать несколько примеров использования SPBot с программированием и в среде Arduino IDE и в mBlock.
Несколько полезных ссылок:
1. Руководство пользователя SPBot
2. Страница разработчика с полным описанием (там же можно и купить плату)
При разработке статьи были использованы материалы И.В.Шишигина, к.т.н., руководителя проектов издательства "БХВ", очень много сделавшего для того, чтобы SPBot увидел свет))))