Отладочные платы для микроконтроллеров. Умный робот своими руками

Успех компании STMicroelectronics на рынке микроконтроллеров обеспечен не только огромным перечнем предлагаемых моделей, но и широким спектром отладочных программных и аппаратных средств , позволяющих создавать и отлаживать резидентное программное обеспечение. В статье пойдет речь об отладочных платах серий Discovery , Nucleo и Evaluation Boards .

Микроконтроллеры STM32

Компания STMicroelectronics занимается разработкой, изготовлением и продажей полупроводниковых и микроэлектронных компонентов. Компания занимает лидирующую позицию по выпуску микроконтроллерной продукции в мире и электронных компонентов в Европе.

Микроконтроллеры семейства STM32 производятся компанией STMicroelectronics начиная с 2007 года и объединяются в серии, каждая из которых базируется на одном и том же 32-битном ядре ARM, имеющим разные модификации: Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4F, Cortex-M7F. На данный момент номенклатура контроллеров STM32 представляет собой перечень из более чем десяти серий. Каждая из серий обладает своими отличительными особенностями. На рисунке 1 приведен перечень микроконтроллеров компании STMicroelectronics, относящихся к семейству STM32.

Для понимания различий между сериями приведем их краткую характеристику (таблица 1).

Таблица 1. Краткая характеристика серий микроконтроллеров STM32

Серия Наименование серии STM32L0 STM32L1 STM32L4
Серия STM32L включает в себя микроконтроллеры, архитектура которых ориентирована, в первую очередь, на достижение минимального уровня потребления энергии с сохранением должной производительности. Для достижения требуемых характеристик применяются различные методы, такие как: гибкая система тактирования, контроль потребления энергии за счет наличия специальных режимов, управление входным напряжением в динамическом режиме, включение специальной периферии, такой как LP – UART, LP – Timer и т.д. Ядро Cortex-M0+ Cortex-M3 Cortex-M4
Частота работы До 32 МГц До 32 МГц До 80 МГц
Flash-память 16…192 кбайт 32…512 кбайт 256 кбайт…1 Мбайт
Память RAM До 20 кбайт До 80 кбайт До 320 кбайт
Особенность Первоначально разрабатывались в качестве конкурентного решения для 16-битных контроллеров, однако в преобладающем большинстве случаев превосходят их по уровню производительности. Данная группа обладает меньшим энергопотреблением по сравнению традиционной линейкой STM32F, но в то же время мало уступает им в производительности. Производительность этой группы может выдавать до 177ULPMark /273CoreMark, что даже превышает производительность таких семейств, как STM32F, относящихся к базовым.
STM32F0, STM32F1 и STM32F3 – являются базовыми сериями. Микроконтроллеры приведенных серий обладают наиболее рациональным характеристиками и наиболее сбалансированным соотношением производительности, энергопотребления и цены. Наименование серии STM32F0 STM32F1 STM32F3
Ядро Cortex-M0 Cortex-M3 Cortex-M4
Частота работы До 48 МГц До 72 МГц До 72 МГц
Flash-память 16…256 кбайт 16 кбайт…1 Мбайт 16…512 кбайт
Память RAM До 32 кбайт До 96 кбайт До 80 кбайт
Особенность Данная серия обладает относительно невысокой производительностью. Основное назначение серии – замена 8- и 16-битных контроллеров в традиционных бюджетных решениях. Первая 32-битная линейка контроллеров, выпущенная компанией STMicroelectronics. Контроллеры именно этой серии сподвигли многих разработчиков уйти от решений на 8-битных ядрах. Приоритет для данной серии – это работа с аналоговыми сигналами. Контроллеры серии обладают блоком вычислений с плавающей запятой и поддержкой DSP-инструкций. Включает в себя богатый набор аналоговой периферии, в том числе – 16-битные ΣΔ-АЦП, быстродействующие АЦП с поразрядным уравновешиванием и скоростью преобразования достигающей величины до пяти миллионов выборок в единицу времени.
STM32F2, STM32F4, STM32F7, STM32H7 – это высокопроизводительные серии, предназначенные для получения максимального уровня производительности. Однако, среди данных серий существуют линейки, целью которых является снижение динамического энергопотребления, например, STM32F401. Наименование серии STM32F2 STM32F4 STM32F7 STM32H7
Ядро Cortex-M3 Cortex-M4 Cortex-M7 Cortex-M7
Частота работы До 120 МГц 168…180 МГц до 216 МГц до 400 МГц
Flash-память 128 Кбайт…1 Мбайт до 2 Мбайт до 2 Мбайт до 2 Мбайт
Память RAM До 128 кбайт До 384 кбайт До 512 кбайт До 1 Мбайт
Особенность Является следующей стадией развития микроконтроллеров серии STM32F1, описанной ранее. Объединяет в себе более сотни моделей микроконтроллеров. Серия состоит из нескольких линеек, оптимизированных и объединенных по различным характеристикам, таким как: уровень интеграции устройства, уровень энергопотребления, производительность и т.д. Перечень доступной периферии существенно разнится от линейки к линейке. Наиболее простые микроконтроллеры включают в себя только самое необходимое: различные коммуникационные интерфейсы, таймеры, порты ввода/вывода. Однако продвинутые модели этой серии уже обладают более прогрессивным набором: графический ускоритель, TFT-чип, аудиосистема, контроллер внешней памяти и т.д. Сверхпроизводительная серия, включающая в себя набор периферии, обладающий большим разнообразием: USB и Ethernet интерфейсы, CAN, HDMI, ЕАЕ-контроллер, DFSDM, FMC-контроллер внешней памяти, графический ускоритель, и т.д. Данная серия была наиболее производительной среди микроконтроллеров ST до выхода контроллера STM32H7. На данный момент –флагманская серия. При производстве контроллеров используются топологические нормы в 40 нанометров, что позволяет увеличить быстродействие и в то же время снизить энергопотребление. Также увеличен перечень коммуникационных средств по сравнению с предшественниками:
  • Контроллер CAN способен работать не только с протоколами ISO 11898-1, но и с CAN FD1.0 и TTCAN(ISO 11898-4).
  • CAN FD является версией протокола, направленной на увеличение скорости передачи: результат может достигать до 12 Мбит/с.
  • TTCAN-протокол высокого уровня, необходимый в данном случае для увеличения детерминированности при пересылке данных. В результате применения TTCAN происходит контроль глобального времени посредством мастера, расположенного на шине, и выполняется арбитраж, при котором все устройства могут претендовать на гарантированный доступ к шине данных.

Линейка микроконтроллеров STM32 постоянно расширяется, и та производительность, которая вчера казалась фантастикой, уже сегодня становится обыденностью. STM32 обладает огромным количеством моделей и насчитывает на данный момент более семисот представителей. Благодаря такому многообразию каждый инженер, исходя из предъявляемых к будущему устройству требований, – уровня производительности, уровня интеграции, энергопотребления и/или стоимости, – может подобрать микроконтроллер с оптимальными характеристиками практически для любого приложения. Среди иных преимуществ STM32:

  • Десятилетняя гарантия выпуска на абсолютно все серии линейки STM32:

Такая гарантия существенно важна (а во многих случаях и необходима) для изделий автомобильной и станкостроительной промышленности, где жизненный цикл разработок составляет от десяти до двадцати лет. Если проводить аналогию с коммерческими отраслями, где цикл жизни электронных изделий составляет около пяти лет, то станет ясно, что если следовать критериям рынка коммерческих решений и, соответственно, прекращать выпуск компонентов, входящих в элементную базу, уже через 5 лет, то такие промышленные устройства, как станки ЧПУ, электропривод, модули связи и так далее не смогут окупаться, не говоря уже о принесении прибыли. Через 5 лет, в случае выхода из строя, также сложно будет устранить поломку (из-за отсутствия запасных частей) или найти аналогичную модель на замену.

  • Большой перечень утилит и систем для разработки, включающий в себя в том числе находящееся в свободном доступе бесплатное программное обеспечение. В перечень входят продукты от компании ST, а также различные решения от сторонних производителей. Также в последнее время все большую популярность получают открытые для редактирования платформы разработки и утилиты от различных разработчиков, доступные для скачивания в сети.
  • Широкая поддержка со стороны производителя в информационной сфере: документация на продукты компании, руководства по применению, универсальные готовые решения, примеры подключения и т.д., а также тематические форумы и паблики, создаваемые самими пользователями.
  • ST предлагает большое количество плат для отладки и ознакомления с работой своих контроллеров: Nucleo, Discovery и Evaluation Boards. Отладочные платы этих семейств имеют приемлемую стоимость и обладают возможностью глубокого взаимодействия с программным обеспечением, поставляемым компанией. Также платы поддерживаются системами разработки ПО от сторонних производителей (Olimex, Keil, IARи т.д).

На последнем пункте стоит заострить особое внимание: во многом популярность контроллеров производства ST, в частности – семейства STM32, обусловлена наличием возможности быстрого старта, который обеспечивается именно отладочными платами. Благодаря им пользователь может оперативно освоить работу контроллера, отладить свою программу и даже создать прототип будущего устройства. На данный момент произведено более одного миллиона отладочных комплектов, базирующихся на STM32. Упомянутые комплекты представляют собой часть платформы ODE (Open Development Environment). Данная платформа значительно облегчает процесс знакомства и последующей работы с контроллерами семейства STM32, а также с другими решениями компании ST, являющимися частью платформы.

Средства отладки и разработки

Средства отладки и разработки можно разделить на две основные группы: аппаратные и программные. Обе эти группы широко представлены компанией STMicroelectronics. К аппаратным средствам прежде всего относятся отладочные платы, которые так же, как и сами микроконтроллеры, на которых они базируются (в данном случае STM32), разделены на серии (рисунок 2).

На данный момент пользователю доступны более сотни различных отладочных комплектов трех основных групп: Nucleo, Discovery и Evaluation Boards, а также различные модули расширения для плат серии Nucleo и комплекты разработки от сторонних производителей.

STM32 Nucleo

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

Сейчас на рынке представлено около тридцати комплектов отладочных плат Nucleo. Серия Nucleo включает в себя три линейки: Nucleo-32, Nucleo-64 и Nucleo-144, внешний вид и основные отличия в интерфейсах которых приведены на рисунке 3.

Основным отличием между платами является количество выводов микроконтроллера.

Имя серии Nucleo («ядро») также выбрано не случайно: эти платы имеют довольно ограниченный функционал при использовании их в автономной работе, они предназначены прежде всего для совместного использования с модулями расширения. При использовании модулей плата Nucleo является вычислительным ядром системы и основой построения всего решения. Платы Nucleo могут работать с модулями Arduino: Nucleo-32 совместимы с Arduino nano, Nucleo-64 и Nucleo-144 способны взаимодействовать с Arduino UnoV3.

Возможности плат Nucleo могут разительно отличаться в зависимости от группы. Например, Nucleo-32 и Nucleo-64 обладают только набором из базовых элементов (светодиоды индикации состояния и пользовательские, пользовательская кнопка, а также кнопка Reset) и встроенным в плату программатором-отладчиком ST-LINK, а Nucleo-144 имеет более расширенный функционал, включающий различные коммуникационные интерфейсы (Ethernet, USB и т.д.).

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

На рисунке 4 показана структура серии отладочных плат STM32 Nucleo, а по таблице 1 можно сравнить основные параметры используемых контроллеров. Благодаря большому разнообразию применяемых микроконтроллеров задача выбора отладочной платы для будущей разработки значительно упрощается.

Как уже упоминалось ранее, функционал отладочных плат Nucleo в основном определен модулями расширения. Компания STMicroelectronics предлагает широкий перечень таких плат (таблица 2). Также возможно включение плат с поддержкой Arduino от сторонних производителей.

Таблица 2. Платы расширения для отладочных плат семейства Nucleo

Наименование Краткое описание
X-NUCLEO-IKS01A2 Плата расширения, базирующаяся на основе МЭМС-датчиков движения, а также датчиков состояния окружающей среды.
X-NUCLEO-6180XA1 Плата расширения с датчиками контроля освещения.
X-NUCLEO-53L0A1 Плата расширения на базе модуля лазерного дальномера и датчика жестов VL52L0X, которые применяют технологии Time-of-Flight и FlightSense
X-NUCLEO-CCA02M1 Плата расширения с микрофоном на базе MP34DT01-M
X-NUCLEO-IDB05A1 Плата расширения с Bluetooth-модулем SPBTLE-RF
X-NUCLEO-NFC04A1 Плата расширения с NFC/RFID-меткой на основе ST25DV04K
X-NUCLEO-PLM01A1 Плата расширения на основе ST7580
X-NUCLEO-GNSS1A1 Плата расширения с модулем навигации GNSS
X-NUCLEO-IHM01A1 L6474
X-NUCLEO-IHM02A1 Плата расширения на основе драйвера L6470 двухфазного биполярного шагового двигателя с поддержкой микрошагового режима.
X-NUCLEO-IHM03A1 Плата драйвера мощного шагового двигателя на основе системы в корпусе (SiP) powerSTEP01
X-NUCLEO-IHM04A1 Плата расширения для управления шаговым двигателем. Базируется на основе микросхемы L6206
X-NUCLEO-IHM07M1 Трехфазный драйвер для BLDC/PMSM-двигателей
X-NUCLEO-IHM06A1 STSPIN220
X-NUCLEO-IHM05A1 Плата расширения для управления шаговым двигателем. Базируется на основе микросхемы L6208
X-NUCLEO-IHM12A1 Плата расширения на основе микросхемы низковольтного драйвера шагового двигателя STSPIN240
X-NUCLEO-IKA01A1 Мультифункциональная плата расширения, основанная на операционных усилителях
X-NUCLEO-CCA01M1 Плата расширения на основе микросхемы высокоэффективной цифровой аудиосистемы STA350BW .
X-NUCLEO-LED61A1 Плата расширения, которая была разработана в качестве примера использования чипа LED6001 в компактном драйвере светодиодов.
X-NUCLEO-IPS02A1 Плата расширения для управления заземленной нагрузкой (нагревательные элементы, драйвер соленоида, светодиодный драйвер, драйвер лампы, замена реле насосов и вентиляторов).
X-NUCLEO-LPM01A Плата расширения, служащая для измерения энергопотребления. Плата представляет собой программируемый источник питания, который работает в диапазоне от 1,8 до 3,3 вольт и обладает возможностями измерения мощности потребления нагрузки.

Примером использования стандарта LoRa в продукции STMicroelectronics может служит плата расширения I-NUCLEO-LRWAN1 , позволяющая пользователю в связке с отладочной платой Nucleo ознакомиться с процессами отладки и разработки устройств, способных работать согласно алгоритмам IoT, при этом используя технологию LoRa.

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

Отладочные платы Discovery

На сегодняшний день разработчику доступно более двадцати различных отладочных плат серии Discovery. Название серии, также, как и у плат Nucleo, имеет основополагающее значение и в переводе значит «открытие». Платы Discovery предназначены прежде всего для простоты ознакомления разработчика с работой и устройством микроконтроллера, на основе которого построена плата, при минимальных затратах времени.

Платы Discovery – это законченное устройство, которое полностью готово к началу работы и имеет в составе всю необходимую для этого периферию: кнопки, светодиоды, штыревые колодки и т.д., а также инфраструктуру для демонстрации отличительных характеристик устройств.

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

В комплекте с отладочной платой идет набор HAL-библиотек и комплект примеров программ для микроконтроллера, позволяющий еще больше упростить процесс разработки и написания программного кода.

Несмотря на одинаковые принципы построения, каждая плата Discovery обладает своими особенностями. Например, отладочная плата Discovery на базе STM32F0 имеет в своем составе только стартовый набор периферии (плюс пара дополнительных кнопок), а плата Discovery на основе STM32F7 уже включает в себя достаточно большой перечень дополнительных элементов: цветной TFT-дисплей, USB, Ethernet и так далее, и обладает впечатляющим внешним видом (рисунок 5).

Рис. 5. Отладочные платы Discovery

Серия Discovery, как и Nucleo, имеет в своем составе программатор ST-LINK, интегрированный в саму отладочную плату, который может быть использован для программирования внешних устройств на базе контроллеров STM.

Пользователь может взаимодействовать с выводами контроллера платы через разъемы на самой плате. Отладочная плата может быть запитана как от USB-разъема, так и от внешнего источника. Как правило, платы Discovery имеют в своем составе светодиоды индикации, отображающие состояние питания (включен или выключен на данный момент отладочный модуль), обмен данными и т.д., а также светодиоды, работающие согласно алгоритму программы пользователя, кнопку Reset и пользовательскую кнопку. Также платы имеют в своем составе различные датчики: микрофоны, акселерометры, гироскопы и т.д., а также дисплеи для визуализации и отображения информации, построенные по технологиям TFT, E-Ink, ЖКИ.

Не так давно в серию плат Discovery вошли платы с возможностью прямого подключения к облачным сервисам, поддержкой Lora и Sigfox. В таблице 3 отображены приведенные решения, а также другие новинки серии Discovery от STMicroelectronics.

Таблица 3. Новинки отладочных плат Discovery

Наименование Краткое описание
STM32L4R9I-DISCO Отладочная плата на базе контроллера STM32L4R9AII6 :
  • Микроконтроллер STM32L4R9AII6 в корпусе UF BGA169;
  • 2 Мбайта Flash;
  • 640 кбайт RAM;
  • Емкостной сенсорный AMOLED-дисплей круглой формы, размером 1,2 дюйма и разрешением 390 на 390 пикселей работающий через интерфейс MIPI DSI;
  • SAI аудио кодек;
  • ST-MEMS цифровые микрофоны;
  • 16 Мбит асинхронный PSRAM;
  • 512 Мбит Octo-SPI Flash;
  • Два светодиода, работающие по алгоритму пользователя;
  • Одна кнопка Reset;
  • Джойстик: движение в четырех направления + кнопка выбора;
  • Разъемы для подключения дополнительной периферии:
    • разъем подключения 8-битной видеокамеры,
    • USB OTG FS с Micro-AB,
    • разъем для подключения стереонаушников и аналогового микрофона,
    • слот для карт памяти формата microSD;
STM32F413H-DISCO STM32F413ZHT6 :
  • Микроконтроллер STM32F413ZHT6;
  • 1,5 Мбайт Flash;
  • LCD-дисплей разрешением в 240х240 пикселей с параллельным интерфейсом и touch-panel коннектором;
  • 8 Мбит PSRAM (512K слов x 16 бит);
  • 128 Мбит Quad-SPI Nor Flash;
  • I 2 C-аудиокодек;
  • Аудио разъем для подключения динамиков и микрофона;
  • Два встроенных ST-MEMS-микрофона;
  • Разъем расширения для подключения до пяти MEMS-микрофонов;
  • USB OTG FS с Micro-AB разъемом;
  • Слот для MicroSD-карт;
  • Встроенный Wi-Fi-модуль 802.11 b/g/n;
  • Две кнопки: пользовательская и Reset;
  • Два светодиода, работающих по алгоритму пользователя: зеленый и оранжевый;
STM32F769I-DISCO Отладочная плата Discovery на базе микроконтроллера STM32F769NIH6 :
  • Микроконтроллер STM32F769NIH6 в корпусе BGA216;
  • 2 Мбайт Flash;
  • 512+16+4 кбайт RAM;
  • Емкостной сенсорный LCD-дисплей диагональю 4 дюйма; работающий через интерфейс MIPI DSI;
  • SAI-аудио кодек;
  • Два разъема аудио: линейный вход и линейный выход;
  • Выход стерео для динамиков;
  • Четыре ST MEMS-микрофона с DFSDM-входами;
  • Два разъема SPDIF RCA: вход и выход;
  • Две кнопки (пользовательская и Reset);
  • 512 Mбит Quad-SPI Flash;
  • 128 Mбит SDRAM;
  • Слот для карт памяти формата microSD;
  • Разъем Ethernet совместимый с IEEE-802.3-2002;
P-L496G-CELL01 &
P-L496G-CELL02
Данные платы являются готовой платформой, служащей для разработки приложений на основе сотовой и облачной технологии.
  • Микроконтроллер STM32L496AGI6 ;
  • 1 Мбайт Flash;
  • 320 кбайт RAM;
  • Аудиокодек SAI;
  • Цифровые микрофоны ST-MEMS;
  • 8 Mбит PSRAM;
  • Два светодиода, работающих по алгоритму пользователя;
  • Две кнопки – пользовательская и сброс;
  • Джойстик: движение в четырех направлениях + кнопка выбора;
    Разъемы для подключения дополнительной переферии:
  • Камера 8 бит;
  • USB с микро-AB;
  • Разъем для стереогарнитуры с аналоговым микрофонным входом;
  • Слот для карт памяти формата microSD.

Отладочная плата, дающая возможность пользователям разрабатывать решения, обладающие способностью прямого подключения к облачным серверам.

  • Микроконтроллер STM32L475
  • 1 Мбайт Flash
  • 128 кбайт RAM
  • 64 Mbit Quad-SPI (Macronix) Nor Flash
  • Bluetooth V4.1 модуль SPBTLE-RF
  • Sub-GHz (868 MHz или 915 MHz) модуль SPSGRF-868 или SPSGRF-915
  • 802.11 b/r/N совместимый беспроводной модуль от Inventek Systems ISM43362-M3G-L44
  • Метка NFC основанная на M24SR
  • Два цифровых микрофона MP34DT01
  • Емкостный датчик влажности и температуры HTS221
  • Высокопроизводительный трехосевой магнитометр LIS3MDL
  • Акселерометр и гироскоп LSM6DSL
  • Две кнопки (пользовательская и Reset)

Для работы с облачными сервисами, LoRa и Sigfox, компанией STMicroelectronics были разработаны специальные расширения для среды STM32Cube:

  • I-CUBE-LRWAN – расширение для работы с LoRa
  • X-CUBE-SFOX – расширение для работы с Sigfox
  • X-CUBE-CLOUD – расширение для работы и взаимодействия с сервисами, использующими облачную инфраструктуру, такими как Amazon Web Services, Microsoft Azure, IBM Watson и т.д.

Discovery является широко распространенной серией, программный код для плат которой может быть разработан как в средах и утилитах STMicroelectronics, так и в сторонних средах разработки, поддерживающих микроконтроллеры STM32: IAR, Keil, Atollic и т.д.

Отладочные платы семейства Discovery являются отличным решением для тех, кто хочет разобраться в работе контроллера или построить прототип, в котором, однако, может быть задействовано не так много периферии, как в других сериях изделий компании, в частности в отладочных платах Evaluation Boards.

Evaluation Boards

Отладочные платы серии Evaluation Boards предназначены для полного и глубокого ознакомления с работой и особенностями различных линеек контроллеров STM32. Как уже было отмечено ранее, если сравнивать Discovery и Evaluation Boards, становится понятно, насколько последние превосходят предыдущую серию в разнообразии периферии: если платы Discovery имели в своем составе только стартовый набор, необходимый для начального ознакомления и отладки работы микроконтроллера, то платы Evaluation Boards обладают куда большим перечнем дополнительных компонентов (рисунок 6), в число которых входят: программатор ST-LINK, дисплеи, построенные по технологиям TFT, E-Ink и ЖКИ, интерфейсы CAN, USB, Ethernet и т.д., различные разъемы для подключения дополнительной периферии, светодиоды, датчики и другое.

Рис. 6. Evaluation Boards

На данный момент разработчикам доступны 27 разновидностей отладочных плат Evaluation Boards, построенных на основе микроконтроллеров STM32 всех доступных семейств, начиная от экономной серии STM32L и заканчивая флагманом STM32H7. Среди последних новинок следует отметить:

  • STM32L4R9I-EVAL STM32L4R9AI . Микроконтроллер из линейки STM32L4+ имеет сверхнизкое энергопотребление, заключен в корпус UFBGA169 и способен работать с частотой до 120 МГц, а также обладает 2 Мбайт Flash и 640 кбайт RAM-памяти. На плате расположен 1,2 дюймовый LCD-дисплей круглой формы разрешением 390×390 пикселей, работающий по MIPI DSI-интерфейсу, а также 4,3 дюймовый TFT LCD-дисплей разрешением 480×272 пикселей с режимом RGB. Также на плате расположены 2 х ST-MEMS цифровых микрофона, слот под microSD, поддержка интерфейса I 2 C, порт RS-232, USB OTG FS Micro-AB порт, CAN 2.0A/B-совместимый порт и др.
  • STM32F769I-EVAL – отладочная плата на базе контроллера STM32F769NI . Микроконтроллер состоит в линейке STM32F7 и обладает высокой производительностью, заключен в корпус BGA216 и способен работать с частотой до 216 МГц, а также обладает 2 Мбайт Flash и 512+16+4 кбайт RAM-памяти. На плате расположен 4-дюймовый сенсорный LCD дисплей, работающий по MIPI DSI-интерфейсу. Плата также включает в себя следующие интерфейсы: 4 I 2 C, 6 SPI, SDIO, 2 SAI, интерфейс 8-14-битного модуля цифровой камеры, Ethernet MAC, FMC и Quid-SPI. Она также имеет 4 USART и 4 UART, 2 CAN шины, 3 12-битных АЦП, 2 12-битных канала ЦАП, RS-232 и т.д.
  • STM32H743I-EVAL – отладочная плата на базе контроллера STM32H743XI . Микроконтроллер является на сегодняшний день флагманом среди всей линейки STM32, заключен в корпус TFBGA240+25 и способен работать с частотой до 400 МГц, а также обладает 2 Мбайт Flash и 1 Мбайт RAM-памяти. На плате расположен 5,7 дюймовый TFT-дисплей с сенсорной панелью и разрешением 640×480 пикселей; Плата обладает 3 USB с Micro-AB разъемами, RS-232, Ethernet RJ45, FD-CAN разъемом, разъемом для подключения динамиков и микрофона, слотом для microSD карты, JTAG/SWD и ETM и т.д.

Аналогично предыдущей серии Discovery, отладочные платы Evaluation Boards могут использоваться автономно, без подключения дополнительных модулей.

Применяя отладочные платы STMicroelectronics для своих решений, пользователи получают доступ не только к аппаратным средствам разработки, но и к широкому спектру сопроводительной информации, в который входят:

  • Принципиальная схема отладочной платы, Gerber-файлы и спецификация;
  • Руководство пользователя, примеры использования платы;
  • Бесплатные и свободно распространяемые программные средства разработки от STMicroelectronics;
  • Перечень информации, созданный самими пользователями и находящийся в открытом доступе на различных форумах и пабликах.

Однако для полноценного использования отладочных плат прежде всего нужно создать программный код, который бы включал в себя алгоритм работы контроллера и его взаимодействия с периферией платы или, как минимум, загрузить такой код из представленных примеров для первичного ознакомления. В том и другом случае необходимо наличие специализированного программного обеспечения, и здесь большим плюсом является возможность применения бесплатных средств разработки программного кода от компании STMicroelectronics (STM32CubeMX, STM Studio и т.д.). Конечно, существуют и другие среды разработки программного обеспечения, например, Keil, IAR и т.д., однако лицензия на работу с ними стоит несколько тысяч долларов. В этом смысле компания STMicroelectronics вместе с партнерами существенно упрощают жизнь независимым компаниям со скромным бюджетом.

Бесплатные программные средства от STMicroelectronics

Как правило, процесс разработки программного обеспечения для отладочных плат включает в себя четыре основные стадии:

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

Благодаря компании STMicroelectronics описанные выше шаги могут быть успешно выполнены без каких-либо материальных затрат: компания на данный момент предлагает четыре бесплатных инструмента для программирования контроллеров собственного производства:

  • ST MCU Finder – представляет собой мобильное приложение, в котором пользователь может выбрать оптимально подходящий по требованиям микроконтроллер или отладочный набор для своего решения, выполнив тем самым первую стадию разработки.
  • STM32CubeMX графическая среда, предназначенная для генерации проектов на базе микроконтроллеров семейства STM32. Среда дает возможность пользователям автоматически генерировать код на языке С и основу прикладной программы посредством использования визуальных утилит. Благодаря данной среде процесс написания функций инициализации не занимает много времени, так как у программиста нет необходимости создавать стартовые функции вручную. Однако основной алгоритм работы пользователь по-прежнему должен создавать самостоятельно.
  • SW4STM32 – открытая интегрированная среда разработки, построенная на базе Eclipse. Среда служит для разработки встраиваемого программного обеспечения для контроллеров семейства STM32. Данная среда предоставляет пользователю возможность написания программного кода, а также его отладки и загрузки в микроконтроллер.
  • STM Studio – представляет собой утилиту, разработанную компанией STMicroelectronics. Данная утилита предоставляет пользователю возможность отслеживать значения переменных при отладке/выполнении программного кода в реальном времени.

Заключение

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

Выбор микроконтроллера, а также ознакомление с принципами его работы во многом облегчаются благодаря отладочным платам компании: платы Nucleo имеют низкую стоимость и дают пользователю возможность создать наиболее оптимальное решение при помощи дополнительных модулей, платы Discovery отлично подходят для ознакомления и отладки начальных решений и имеют в своем составе всю необходимую для этого периферию; если же периферии плат Discovery недостаточно, на помощь приходят Evaluation Boards, способные удовлетворить требования самых дотошных разработчиков.

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

Литература

  1. STM32Cube High Quality Process. Qualified STM32Cube Embedded Software libraries, ST Microelectronics, 2017.

Преамбула

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

Идея была собрать более или менее компактного робота, но достаточно проходимого и функционального. Я не хотел привязываться к каким-то определённым платформам или собирать китовые наборы, поэтому решил отдельно заказывать детали и стараться по максимуму делать из подручных средств.

Подбор запчастей

Вначале я стал выбирать «мозг» робота. Очень привлекательным мне казался LEGO Mindstorms, привлекало именно то, что можно было собрать из деталей любую шасси, какую захочется. Но мне хотелось не готовый конструктор, подключил проводки и готово, а самому паять, программировать, изучать микроконтроллеры, да и набор LEGO дороговато стоит. Поэтому выбор пал на семейство Arduino. И не такое дорогое, и программировать можно. Мне советовали взять Arduino Uno, но так как я решил делать компактно, решено было взять Arduino Nano.

Когда я начал выбирать шасси, я вдруг вспомнил, что где-то в шкафу пылится LEGO SpyBotics, это что-то вроде прародителя Mindstorms.

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

Небольшие размеры, два моторчика, гусеничное шасси – всё это идеально подходило под мои нужды. Тем более эта модель давно уже не на ходу, дата кабель бесследно затерялся, программировать эту модель было адское занятие, да и это шло вразрез с моим желанием освоить микроэлектронику.

Я решил, что выпаяю с платы моторчики, их оставлю, а саму плату верну обратно в шкаф, хотя вероятно можно будет с неё выпаять различные датчики для дальнейших опытов.

Итак, с основными деталями разобрались, теперь остальное. И вот я стал искать, где вообще можно выбрать и купить запчасти. Я нашёл девочку, которая заказывает из Китая вещи, она пообещала помочь с покупкой и дала ссылку на Taobao, посоветовав покупать детали у одного продавца, чтобы меньше платить за доставку. Через пару дней анализа я определился с поставщиком и сделал заказ.

И вот после месяца ожидания, наконец, пришла посылка.

Содержимое:

1) Arduino Nano V3.0 ATMEGA328P

2) Motors driver L298

Но в Китае я эту модель так и не нашёл, поэтому заказал обычную модель.

3) Bluetooth HC-05

Через этот модуль мы будем связываться с ПК. В дальнейшем я планирую написать управление под Android.

4) LM2577 DC-DC Adjustable Step Up Power

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

Ну и плюс мелочи: Монтажная плата и различные проводки.

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

Сборка робота

Сборку решил делать поэтапно, экспериментируя с различными вариантами.

Примерный план был такой:
1) Подключить к Arduino драйвер моторов, ну, и собственно, сами моторы.
2) Прикрутить мозги к шасси и установить элементы питания.
3) Прикрутить к роботу дистанционное управление.

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

Оказалось, это не так просто, ибо плата достаточно крепко сидела на корпусе.

И тут первая неожиданность, моторчики держались за счёт крепления к плате. Поэтому я их приклеил и припаял к контактам проводки, для дальнейшего удобства.

С самой шасси я решил пока особо не экспериментировать и собрать её по стандартной схеме.

Я старался сделать схему гибкой, чтобы можно было легко отсоединять детали от робота. Мне нужно было придумать, как приделать мои детали к LEGO. Это оказалось легче, чем казалось. Вначале я взялся за драйвер двигателей, лёгким движением руки, прикрепив его к деталям LEGO. Правда пришлось немного модернизировать старый корпус, получилась такая интересная композиция.

Которая без проблем прикрепилась к шасси робота.

Затем я взялся за bluetooth модуль и arduino. Bluetooth модуль я приклеил к одной из деталей, чтобы легко можно было прикрепить его к любому месту. А для arduino решил использовать разъём, приклеил его к одной из деталей LEGO, и припаял необходимые провода к нему.

Теперь чтобы прикрепить arduino, достаточно воткнуть её в разъём, и подключить к ней разъём питания.

Программирование робота

Наконец, пришло время подключить собранную схему и заставить моторчики крутиться.

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

Для тестов был использован смартфон, так как у него есть bluetooth. Покопавшись в интернете я нашёл пару интересных программ. Blue Arduino показалась мне очень удобной. Ничего лишнего, обычный терминал для связи с arduino. Так же заинтересовала программа Arduino Bluetooth Controller , удобно в ней то, что интерфейс управления представлен в виде джойстика и можно очень быстро назначить на любой элемент управления любую команду. Для тестирования моего робота уже в собранном виде она подошла очень кстати.

Для программирования arduino я использовал стандартный пакет с официального сайта. Была написана самая простейшая программа, взятая из тестовых примеров, чтобы только тестировать.

Char incomingByte; // Входящие данные void setup() { Serial.begin(9600); // инициализация порта Serial.println("Robot online..."); } void loop() { if (Serial.available() > 0) //если пришли данные { incomingByte = Serial.read(); // считываем байт if(incomingByte == "w") // если w, то едем вперед { digitalWrite(DR, HIGH); digitalWrite(DL, HIGH); digitalWrite(MR, LOW); digitalWrite(ML, LOW); Serial.println("Forward"); } if(incomingByte == "s") // если s, то едем назад { digitalWrite(DR, LOW); digitalWrite(DL, LOW); digitalWrite(MR, HIGH); digitalWrite(ML, HIGH); Serial.println("Backward"); } if(incomingByte == "a") // если a, то поворачиваемся налево { digitalWrite(DR, HIGH); digitalWrite(DL, LOW); digitalWrite(MR, LOW); digitalWrite(ML, HIGH); Serial.println("Left"); } if(incomingByte == "d") // если d, то поворачиваемся направо { digitalWrite(DR, LOW); digitalWrite(DL, HIGH); digitalWrite(MR, HIGH); digitalWrite(ML, LOW); Serial.println("Right"); } if(incomingByte == "f") // если f, то стоп { digitalWrite(DR, LOW); digitalWrite(DL, LOW); digitalWrite(MR, LOW); digitalWrite(ML, LOW); Serial.println("Stop"); } } }
А вот и проблемы
Вначале я наткнулся на то, что при подключенном bluetooth модуле не заливается прошивка. Но это решилось тем, что провод питания от bluetooth легко отключался от arduino.

Самая большая проблема оказалась в том, что надо правильно подобрать источники питания.

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

Оказалось, что можно всю схему питать как через Arduino, так и через драйвер двигателя.

В первой схеме я подавал напряжение на Arduino на вход Vin, а на драйвер двигателя пускаем через 5V, но таким образом двигателям не хватало напряжения.

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

В итоге я просто параллельно подал питание, и всё стало нормально работать.

На этапе тестирования всё было отлично, потому что я питался от usb-провода. Зря я изначально упёрся в деку для трёх батареек АА.

Трёх батареек оказалось не достаточно, чтобы привести робота в движение, даже с использованием преобразователя. В итоге преобразователь был убран из схемы. Походя по магазинам, нашёл замечательные литий-ионные(li-ion) аккумуляторы, формата AA.

Они подошли идеально (напряжение 3.7V). При первом тесте этих аккумуляторов, мой робот на огромной скорости устремился в стену, остановить его я не успел. Трёх аккумуляторов оказалось слишком много. В итоге я оставил только два аккумулятора.

Для зарядки этих аккумуляторов был докуплен такой модуль:

Заключение

Получилась такая вот модель робота.

Потом шасси всё-таки пришлось пересобрать, потому что он очень коряво дёргался, точнее, вставал на дыбы, так и ехал.

Получилась модель достаточно компактная, как я и хотел. Проходимость пока не проверял, главное модель получилась гибкой - при необходимости, легко можно снять саму плату arduino и использовать в других проектах. Так же доступ к usb в свободном доступе, для отладки.

Правда, моя модель поворачивает очень грубо, гусеницы проворачиваются, надо будет попробовать ещё раз шасси пересобрать.

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

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

UPD
По просьбе желающих добавляю видео с тестированием своего робота.

Устройство является универсальной системой для отладки микроконтроллеров AVR. Плата не привязана к конкретному микроконтроллеру, а имеет универсальный разъем, к которому можно подключить модуль с любым микроконтроллером. На данный момент разработаны модули для микроконтроллеров:
- ATmega8
- ATmega16
- ATmega162
- ATtiny2313
- ATtiny13

Но ничего не мешает разработать модули и под другие микроконтроллеры. Устройство включает в себя программатор USBASP и может быть полностью запитано от USB или внешнего источника питания. Устройство включает в себя все необходимое для отладки: ЖК и светодиодные дисплеи, часы реального времени и EEPROM память, интерфейсы RS232 и RS485, разъем для подключения клавиатуры, кнопки, светодиоды и многое другое. Части устройства соединяются между собой при помощи специальных проводов, перемычек и переключателей. Некоторые части постоянно соединены с портами выбранного микроконтроллера (например, LCD), что убирает проблему спутанных проводов.

Описание констукции

Так как проект является сложным, схема разделена на несколько частей.

Наиболее важная часть всего устройства, которая управляет процессорным модулем и остальной частью устройства. К этой части подключаются светодиодные дисплеи, таймер и I2C интерфейс, UART и инфракрасный приемник. На микроконтроллере U6 (ATmega8) собран программатор USBASP. Для корректной работы необходим кварц X1 (12 МГц) и конденсаторы C9 (22pF) и С10 (22pF). Резистор R27 (10k) подтягивает вывод сброса микроконтроллера к плюсу. Резисторы R31 (470R) и R32 (470R) ограничивают ток светодиодов D3 и D4. Резистор R58 (470R) играет ту же роль для светодиода D1. KANDA - это разъем ISP. Конденсаторы C12 (100nF) и С11 (4,7 мкФ) - фильтрующие. Для правильной работы шины USB необходимы резисторы R29 (68R) и R30 (68R), стабилитроны D1 и D2 (3,6 V). Резистор R28 (2,2 кОм) необходим для того, чтобы устройство определялось компьютером как работающее на малой скорости. Отладочная плата подключается к компьютеру через разъем ZUSB1 (USB-B).

U3 и U4 (DS18B20) - это датчики температуры работающие по шине 1-wire. Для правильной работы шины необходим резистор R24 (4,7 кОм). 1WR_OUT разъем позволяет подключать дополнительные датчики, а разъем 1WR обеспечивает связь с модулем микроконтроллера. PS2 разъем (Mini DIN6) есть не что иное, как разъем для подключения клавиатуры персонального компьютера. Резисторы R59 (4,7 кОм) и R60 (4,7 кОм) подтягивают шину данных и вывод "Clock" к плюсу. Разъем KBD обеспечивает связь с модулем микроконтроллера. Клавиатура питается от внешнего источника питания +5 В.

На плате имеется дополнительный генератор частоты 16 мГц. Также имеется дополнительный кварцевый резонатор X3 и два конденсатора C16 (22pF) и С17 (22pF) для любых целей.

ZUSB2 в связке с элементами C18 (100nF), C19 (4,7 мкФ), R48 (68R), R49 (68R) и стабилитронами D8 (3,6 V) и D9 (3.6 V) предназначены для отладки произвольных устройств, с подключением к порту USB. Резистор R47 (2,2 К) может быть отключен с помощью перемычки ZW7, благодаря этому возможно использовать USB порт для получения питания без уведомления о устройстве USB.

W1 LCD (20x4) является главным элементом для отображения данных. Резистор R3 (47R) ограничивает ток подсветки, которая активируется транзистором Т1 (BC556) и резисторами R1 (3,3 кОм) и R2 (3,3 кОм) перемычкой ZW1. Потенциометр P1 (10 кОм) позволяет установить контрастность дисплея. Перемычка PW4 включает дисплей. Переключатель SD1 (SW6) служит для отключения линий управления дисплеем, подключенным к главному процессору (можно не ставить).

Транзисторы T2 - T5 (BC556) и резисторы R4-R11 (3,3 кОм) контролируют аноды 4-х разрядного LED дисплея W2. Резисторы R12 - R20 (330 Ом) ограничивают ток через сегменты дисплея. Переключатели SD2 (SW4) и SD3 (SW8) служит для отключения линий управления дисплеем, подключенным к главному процессору (можно не ставить). Разъем W2L используется для подключения центральных точек к процессору.

U9 (TL431) с резисторами R45 (330 Ом) и R46 (10 кОм) и потенциометром P2 (1 кОм) является источником опорного напряжения около 2,56 В. Выход через разъем VREF. Пьезо пищалка с генератором BUZ1 (5В) управляется при помощи транзистора T12 (BC556) и резисторов R40 (3,3 кОм) и R41 (3,3 кОм). Управление зуммером осуществляется через разъем BUZ. Также на плате установлен фототранзистор T7 (L-93P3BT). Резистор R33 (10 кОм) ограничивает ток, протекающий через него. Выход фототранзистора через разъем FOT.

Для преобразования уровней COM порта используется популярная микросхема MAX232 (U1). Для правильной работы требуются конденсаторы С1 - С4 (1 мкФ). Первый выход UART непосредственно подключен к процессорному модулю через переключатель SD4 (SW2). Второй выход UART выведен на разъем и может использоваться для любых целей. С MAX232 через разъем V- снимается отрицательное напряжение (выход инвертора). Это может использоваться для смещения в различных схемах. MAX232 отключается от источника питания с помощью перемычки Pw1.

Перемычка PW2 включает микросхемы, работающие на шине I2C. Резисторы R25 (3,3 кОм) и R26 (3,3 кОм) необходимы для правильной работы шины I2C. Шина I2C подключены к процессорному модулю через переключатель SD5 (SW2). Микросхема U5(AT24C256) - EEPROM память. Диоды D6 (1N4148) и D7 (1N4148) с батареей BAT1(3 В) - источник бесперебойного питания для RTC, микросхемы U7(PCF8583). Перемычкой Zw4 вы можете отключить батарею, а перемычкой ZW3 можно установить адрес U7 160 или 162. Конденсатор C14 (100 нФ) - фильтрующий, и должен располагаться как можно ближе к микросхеме U7. Конденсатор С13 (33 пФ) и кварц X2 (32,768 кГц) обеспечивают точный ход часов. Прерывание от микросхемы U7 выведено на разъем PCF_INT.

На плате установлены два светодиодных дисплея - уровня W3 и W4. Резисторные сборки RP1 (4x470R), RP2 (8x470R) и RP3 (8x470R) ограничивают ток через сегменты дисплеев. Дисплеи соединены с процессорным модулем через разъемы LED1 и LED2. Также на плате установлены RGB светодиоды D13 и D14, с токоограничительными резисторами R63 (180R), R64 (100R), R65 (180R), R66 (180R), R67 (100R) и R68 (180R). Перемычки Zw11 и Zw12 необходимы для включения катодов светодиодов к земле или к транзисторам.

Разъемы V1 - V3, V4 - V9 являются источником питания +5 В. Разъемы G1 - G3, G4-G8 - земля.

Микросхема U8 (ULN2803) предназначена для управления низковольтными нагрузками. Управляющий сигнал подается на разъемы Z3 и Z4. Выход на разъемы ULN1 - ULN4. В связи с высоким потреблением энергии микросхема U8 получает питание от внешнего источника. Разъемы Z1 и Z2 соеденины с разъемами с винтовыми фиксаторами ZU1 - ZU4. Симисторы TR1 (BT138-600E) и TR2 (BT138-600E) с оптопарами OPT1 (MOC3041) и OPT2 (MOC3041) и резисторами R34 (180R), R35 (180R), R37 (180R) и R38 (180R) позволяют управлять нагрузкой 220 В. Резисторы R36 (330R) и R39 (330R), ограничивают ток, протекающий через оптопары. Выход через разъемы с винтовым фиксатором TRO_1 и TRO_2. Управляющий сигнал подается на разьем TR1 Варисторы WR1 (JVR-7N431) и WR2 (JVR-7N431) защищают выход. Панельки PD28 (DIL28) и PD40 (DIL40) предназначены для установки любых микросхем, их выводы разведены на разъемы PDG1 - PDG4.

Выводы энкодера I1 разведены на разъем IMP, перемычка ZW2 используется для подключения земли или +5 В к энкодеру. Конденсаторы C20 (100nF) и C21 (100nF) необходимы для подавления помех. На плате есть также оптропара OPT3 (CNY17) для любых целей. R43 (330R) ограничивает ток светодиода оптропары. R44 (10k) и R42 (100k) подтягивают выводы к питанию. Перемычками ZW5 и ZW6 можно подключать светодиод оптопары к +5 В или на землю. Выход через разъем CNYO.

Кнопки S1 - S8 подключены к разъему SW. Кнопки S9 - S24 образуют матрицу. Столбцы клавиатуры подключаются через разъем SWC, а линейки через разъем SWR.

Разъем ZAC (Molex 2x2) необходим для подачи внешнего питания +5 В с более высоким током. Реле PU1 (HFC-005-12W) необходимо для переключения питания от USB или от внешнего источника питания при условии, что установлена перемычка ZW8. Светодиод D11 и резистор R61 (470R) установлены для сигнализации работы реле. Диод D12 (1N4007) защищает от скачков на катушке реле напряжения при выключении питания. Выключатель питания позволяет отключить питание от USB (запитываться будет только программатор), светодиод D15 с резистором R69 (470R) указывают на этот факт.

Микросхема U2 (TSOP1736) представляет собой ИК-приемник работающий на частоте 36 кГц. Для правильной работы необходимы элементы C8 (100 мкФ) и R23 (220R). Также на плате установлен инфракрасный светодиод D5 (SFH485). Резистор R22 (10R) ограничивает ток. Конденсаторы C6 (100 нФ) и С7 (100 мкФ) - фильтрующие. Транзистор T6 (BC516) управляет инфракрасным светодиодом. База транзистора соединена с процессором через переключатель SD6 (SW2). Резистор R21 (10 кОм) ограничивает ток базы транзистора T6, и R21 * (10 кОм) подтягивает базу транзистора к +5 В. Это предотвращает произвольное включение ИК-светодиода, когда он не используется. Перемычка PW3 включает питание для приемника и ИК-передатчика.

Транзисторы T8 - T11 (BC556) с резисторами R50 - R57 (3,3 кОм) могут использоваться для управления низковольтными нагрузками. Управляющий сигнал подается на разъем Z5. Выход через разъемы с винтовыми фиксаторами ТО1 и ТО2

ATMega 8

ATMega 162

ATTiny 13

ATtiny2313

Изготовление

Устройство изготавливается на основе печатной платы (В конце статьи). Плата не сложна в сборке, но устанавливать придется много элементов. В случае ошибки в установке это будет трудно найти и исправить. Установка начинается с пайки всех перемычек (16 штук). Некоторые перемычки находятся под микросхемами. Далее устанавливают все резисторы, конденсаторы и другие мелкие детали. В последнюю очередь устанавливают микросхемы.

Плата изготавливается из текстолита 1,5 мм и крепится к подставке из металла (см. фото проекта). На всех микросхемах рекомендуется использовать панельку. Вместо датчиков DS18B20 припаяна панелька DIL6. Благодаря этому можно заменять датчики и считывать серийные номера для различных целей. Подробности изготовления платы можно увидеть в разделе "Фотографий проекта".

Перед включением платы нужно проверить плату на предмет коротких замыканий с помощью мультиметра, особенно проверить короткие замыкания между GND и +5В, так как плата подключается к порту USB.

Список деталей

21x Разъем с винтовым фиксатором двойной
1x Разъем с винтовым фиксатором тройной
Разъемы PLS
1x 2x2 MOLEX разъем
2x Панелька цанговая DIL6
1x Панелька цанговая DIL28
1x Панелька цанговая DIL40
1x Панелька цанговая DIL16
1x Разъем ISB(10PIN)
2x Разъем USB - B
1x Разъем PS2
1x Разъем DB9F
1x Разъем DB9M
1x Батарейка 3V (CR2032) + Держатель
1x 2-х позиционный переключатель
25x Кнопка без фиксации
1x Энкодер
1x Реле HFKW-005-1ZW
4x DIP-переключатель SW2
1x DIP-переключатель SW4
1x DIP-переключатель SW6
1x DIP-переключатель SW8

2x Резистор 2.2 кОм
23x Резистор 3,3 кОм
3x Резистор 4,7 кОм
1x Резистор 10 Ом
6x Резистор 10 кОм
1x Резистор 47 Ом
4x Резистор 68 Ом
2x Резистор 100 Ом
1x Резистор 100 кОм
8x Резистор 180 Ом
1x Резистор 220 Ом
13x Резистор 330 Ом
4x Резистор 470 Ом
1x Резисторная сборка 4x470 Ом
2x Резисторная сборка 8x470 Ом
2x Варистор JVR-7N431
1x Потенциометр 1 кОм
1x Потенциометр 10 кОм

1x Конденсатор 10 нФ
4x Конденсатор 22 пФ
1x Конденсатор 33пФ
7x Конденсатор 100 нФ
4x Конденсатор электролит 1 мкФ
2x Конденсатор электролит 4,7 мкФ
2x Конденсатор э лектролит 100 мкФ

1x 12 МГц кварц
1x Часовой кварц 32768Hz
1x 16 МГц кварцевый генератор
1x Диод 1N4007
2x Диод 1N4148
4x 3V6 стабилитрон
4x Светодиод
2x Светодиод RGB (общий катод)
1x ИК-светодиод
2x Светодиодный столбик DIL20
1x ИК-приемник TSOP1736
1x Транзистор BC516
10x Транзистор BC556
1x Фототранзистора L-932P3BT
1x Микроконтроллер ATMEGA8 + панелька
1x AT24C256
1x ULN2803
1x TL431
1x MAX232
1x MAX485
1x PCF8583

2x BT138-600E
2x MOC3041
1x Оптрон CNY17
1x Пищалка 5V с генератором
1x 7-сегментный дисплей (четырехразрядный)
1x LCD 20x4

Модуль ATtiny13:
Разъемы PLS
1x Конденсатор 100nF
1x Микроконтроллер ATTINY13 + панелька

Модуль ATtiny2313 :

Разъемы PLS
2x Конденсатор 22 пФ
1x Конденсатор 100 нФ
1x 16 МГц кварц
1x Микроконтроллер ATTINY2313 + панелька

Модуль ATMega8:
Разъемы PLS
2x Конденсатор 22 пФ
1x Конденсатор 100 нФ
1x 16 МГц кварц
Микроконтроллер ATMEGA8 + Панелька

Модуль ATMega16:
Разъемы PLS
2x Конденсатор 22 пФ
1x Конденсатор 100 нФ
1x 16 МГц кварц
Микроконтроллер ATMEGA16 + Панелька

Модуль ATMega162:
Разъемы PLS
2x Конденсатор 22 пФ
1x Конденсатор 100 нФ
1x 16 МГц кварц
Микроконтроллер ATMEGA162 + Панелька

Фотографии проекта

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Модуль индикации
U9 ИС источника опорного напряжения

TL431

1 В блокнот
T1-T5, T12 Биполярный транзистор

BC556

6 В блокнот
T7 Фототранзистор L-93P3BT 1 В блокнот
P1 Переменный резистор 10 кОм 1 В блокнот
P2 Переменный резистор 1 кОм 1 В блокнот
R1, R2, R4-R11, R40, R41 Резистор

3.3 кОм

12 В блокнот
R3 Резистор

47 Ом

1 В блокнот
R12-R20, R45 Резистор

330 Ом

10 В блокнот
R33, R46 Резистор

10 кОм

2 В блокнот
W1 LCD-дисплей LCD 20x4 1 В блокнот
W2 LED-дисплей 1 7 сегментный 4-х разрядный индикатор с общим анодом В блокнот
BUZ1 Пьезоизлучатель 1 Пьезоизлучатель со встроенным генератором, 5в В блокнот
SD1 Переключатель DIP переключатель, 6 pin 1 В блокнот
SD2 Переключатель DIP переключатель, 4 pin 1 В блокнот
SD3 Переключатель DIP переключатель, 8 pin 1 В блокнот
U1 ИС RS-232 интерфейса

MAX232

1 В блокнот
U5 EEPROM память AT24C256 1 В блокнот
U7 Часы реального времени (RTC)

PCF8583

1 В блокнот
U10 ИС RS-422/RS-485 интерфейсов

MAX485

1 В блокнот
D6, D7 Выпрямительный диод

1N4148

2 В блокнот
C1-C4 1 мкФ 4 В блокнот
C13 Конденсатор 33 пФ 1 В блокнот
C14 Конденсатор 100 нФ 1 В блокнот
R25, R26 Резистор

3.3 кОм

1 В блокнот
X2 Кварцевый резонатор 32768 Гц 1 В блокнот
SD4, SD5, SD7 Переключатель DIP переключатель. 2 pin 3 В блокнот
BAT1 Батарея Батарея литиевая. 3В 1 В блокнот
COM1 Разъём DB9M 1 В блокнот
COM2 Разъём DB9F 1 В блокнот
Светодиодная индикация
D13, D14 Светодиод RGB светодиод 2 В блокнот
W3, W4 Светодиодная полоса 2 10 сегментов, красного свечения В блокнот
RP1 Резисторная сборка 4 х 470 Ом 1 В блокнот
RP2, RP3 Резисторная сборка 8 х 470 Ом 2 В блокнот
R63, R65, R66, R68 Резистор

180 Ом

4 В блокнот
R64, R67 Резистор

100 Ом

2 В блокнот
U8 Составной транзистор

ULN2803

1 В блокнот
TR1, TR2 Симистор

BT138-600E

2 В блокнот
OPT1, OPT2 Оптопара

MOC3041M

2 В блокнот
R34, R35, R37, R38 Резистор

180 Ом

4 В блокнот
R36, R39 Резистор

330 Ом

2 В блокнот
WR1, WR2 Варистор JVR-7N431 2 В блокнот
U2 Ик - приёмник TSOP1736 1 В блокнот
T6 Биполярный транзистор

BC516

1 В блокнот
T8-T11 Биполярный транзистор

BC556

4 В блокнот
OPT3 Оптопара

CNY171M

1 В блокнот
D5 Светодиод SFH485 1 В блокнот
D11, D15 Светодиод 2 В блокнот
D12 Выпрямительный диод

1N4007

1 В блокнот
C5 Конденсатор 10 нФ 1 В блокнот
C6, C20, C21 Конденсатор 100 нФ 3 В блокнот
C7, C8 Электролитический конденсатор 100 мкФ 2 В блокнот
R22 Резистор

10 Ом

1 В блокнот
R23 Резистор

220 Ом

1 В блокнот
R42 Резистор

100 кОм

1 В блокнот
R43 Резистор

330 Ом

1 В блокнот
R44, R21, R21* Резистор

10 кОм

3 В блокнот
R50-R57 Резистор

3.3 кОм

8 В блокнот
R61, R69 Резистор

470 Ом

2 В блокнот
I1 Энкодер 1 В блокнот
PU1 Реле HFC-005-12W 1 В блокнот
SD6 Переключатель DIP переключатель, 2pin 1 В блокнот
S1-S8, S9-S24 Кнопка Тактовая кнопка 24 В блокнот
Процессорные модули
ATMega 8
U1 МК AVR 8-бит

ATmega8-16PU

1 В блокнот
C1 Конденсатор 100 нФ 1 В блокнот
C2, C3 Конденсатор 22 пФ 2 В блокнот
X1 Кварцевый резонатор 16 МГц 1 В блокнот
ATMega 162
U1 МК AVR 8-бит

ATmega162

1 В блокнот
C1 Конденсатор 100 нФ 1 В блокнот
C2, C3 Конденсатор 22 пФ 2 В блокнот
X1 Кварцевый резонатор 16 МГц 1 В блокнот
ATTiny 13
U1 МК AVR 8-бит

ATtiny13

1 В блокнот
C1 Конденсатор 100 нФ 1
21 ноября 2013 в 18:53

Альтернативный контроллер для роботов

  • Блог компании Грамбо

Мы разработали первую версию универсальной платы, которая может служить, как простым блоком питания с изменяемым напряжением и током, так и продвинутым контроллером для разного рода устройств, начиная со светодиодных лампочек, шаговых моторов, и термодатчиков до полноценных полностью автономных роботов! Рабочее название - Grambo Pi (Grambo - это английский Громозека, а Pi - это от Raspberry Pi).


Grambo Pi - программируемая плата управления на базе микроконтроллера ARM Cortex M3. Она может служить для разнообразных задач, связанных с управлением устройствами и автоматическим получением показаний датчиков. Плата может служить источником напряжения, работать как зарядное устройство для аккумуляторов разных типов, может управлять электродвигателями с максимальным длительным током до 600мА и кратковременным - до 1200мА, имеет схему управления осветительным светодиодом. При проектировании платы была заложена возможность служить источником питания для одноплатного компьютера Raspberry Pi. Плата имеет набор датчиков: термометр, акселерометр и компас, что позволяет использовать плату как систему ориентации для движущихся устройств. С внешними устройствами плата может общаться, используя набор стандартных интерфейсов обмена данными: USB, последовательный порт, I2C (мастер и слейв). Функциональность платы может расширяться за счёт подключения плат расширения!

В плату встроена виртуальная машина, исполняющая байт код, получаемый после компиляции программ, написанных на языке Pawn. Байт код записывается во FLASH память и начинает исполняться каждый раз при подаче питания на плату. Поведение платы и обмен данными с внешними устройствами определяется той программой, которая в неё загружена.

Предусмотрено три основных способа использования платы:

  1. как автономного устройства, работающего самостоятельно;
  2. как устройства, управляемого от компьютера через шину USB;
  3. в связке с одноплатным компьютером Raspberry Pi.

В последнем случае плата не только может управляться компьютером Raspberry Pi, но и служить для него умным источником питания. Например, плата может быть настроена (программой на Pawn, загруженном во внутреннюю FLASH память) как ATX подобный источник питания, включающий и выключающий компьютер по нажатию кнопки или как источник питания, включающийся по расписанию.

На плате установлены программно настраиваемые преобразователи напряжения. Для каждого преобразователя есть возможность задания желаемого выходного напряжения и ограничения максимального входного тока. Для повышающего преобразователя также есть возможность задания минимального входного напряжения. Последнее позволяет использовать плату для получения энергии от солнечных батарей в точке с максимальной мощностью на I-V характеристике батареи.

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

Плата предусматривает три способа подачи питания:

  1. через вход понижающего преобразователя;
  2. через вход повышающего преобразователя;
  3. через разъём USB.
В последнем случае ток, получаемый платой, предварительно аппаратно ограничивается величиной в 400мА, после чего поступает на вход настраиваемого повышающего преобразователя напряжения.

Полный список периферийных устройств на плате:

  • 3-х координатный акселерометр;
  • 3-х координатный компас;
  • цифровой и аналоговый термометры;
  • контроллер 2-х двигателей постоянного тока (или одного биполярного шагового или 4 независимых индуктивных нагрузок) со встроенными защитными диодами;
  • step down преобразователь на 3.3V для питания периферии;
  • настраиваемый понижающий преобразователь с диапазоном выходного напряжения от 0В до 16В, ограничение входного тока от 0А до 3А;
  • настраиваемый повышающий преобразователь с диапазоном выходного напряжения до 16В, входной ток может быть ограничен от 0А до 3А.
  • аппаратный ограничитель тока через USB до 400мА;
  • последовательный порт UART;
  • I2C master;
  • I2C slave;
  • схема питания осветительного светодиода;
  • разъём совмещения с Raspberry Pi;
  • разъём подключения плат расширения;
Все периферийные устройства могут использоваться из внутренней Pawn программы.

Использование Raspberry Pi вместе с Grambo Pi позволяет разрабатывать решения практически любой сложности. Начиная с систем включения и выключения по заранее заданному расписанию с целью экономии потребления энергии и кончая системами, которые требуют полной компьютерной мощности для выполнения таких задач, как обработка видео в реальном времени и поддержка веб приложений!


Функциональность платы Grambo Pi может быть увеличена с помощью специально разработанных плат расширения, которые также просто стыкуются друг c другом. Можно подключать несколько плат одновременно.




Платы расширения могут быть разными. Представленная на рисунке имеет следующие устройства:

  • 8 разъёмов ШИМ, совместимых с разъёмами аналоговых сервомашинок;
  • контроллер 4-х двигателей постоянного тока, либо 2-х биполярных шаговых двигателей;
  • 8 аналоговых входов АЦП с диапазоном от 0В до 3.3В;
  • 8 цифровых входов (например, для детектирования нажатий на кнопку);
Для простоты отладки в каждой плате предусмотрено несколько программно управляемых индикаторных светодиодов, которые могут быть использованы для визуальной отладки или для оповещения о состоянии.

Существует несколько вариантов программного взаимодействия с платой Grambo Pi:

  • Библиотека C++;
  • Модуль Python для взаимодействия через порт USB;
  • Модуль Python для взаимодействия через порт I2C (в случае подключение к Raspberry Pi);
Со стороны платы коммуникация с компьютером и управление периферийными устройствами осуществляется виртуальной Pawn машиной.
Вопросы к хабражителям
Ценители робототехники, интересен ли был бы вам такой модуль? Купили бы вы экземпляр для тестирования? Или собрали бы лучше свое устройство на платформе Arduino?

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

Звучит невероятно? Однако, это возможно! Добро пожаловать в мир МИКРОКОНТРОЛЛЕРОВ!

Список покупок для создания умного робота своими руками. Итак, нам понадобятся:

PICAXE-28X1 (или более поздняя версия) Это — «главный мозг робота».

Набор для начинающего PICAXE-28X1. Включает в себя отладочную плату, а также все, что может понадобиться для программирования микроконтроллеров. Приобрести надо USB версию программатора, на фотографии изображен похожий, но НЕ соответствующий нашему проекту набор!

Драйвер двигателей (ИС) L293D

PICAXE Servo Upgrade Pack. Использовать серводвигатель PICAXE не обязательно, вы можете воспользоваться любым доступным вам серводвигателем, и резистором сопротивлением в 330 Ом вместо желтой микросхемы (см. фото).Значения 3-х проводов: 2 — питание серводвигателя, оставшийся третий — сигнал.

Sharp GP2D120 IR Sensor — 11.5″ / Аналоговый (!) Внимание! Не покупайте цифровую версию!

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

Два моторчика с колесами Чем больше передаточное число — тем сильнее, а значит медленнее, будет ваш робот. Меньшее передаточное число увеличивает скорость, однако уменьшает силу. Я бы рекомендовал что-нибудь между 120:1 и 210:1 для нашего проекта.

Немного проводов
Изоляционная лента
Оборудование для пайки
«Кусачки»
Отвертка
Отсек для элементов питания.

Неплохо было бы к этому списку добавить следующие элементы:
Несколько светодиодов, что бы усовершенствовать робота;
Крошечный динамик, что бы создать интересные звуковые эффекты.

Теперь, когда вы заказали все необходимые компоненты можно приступать непосредственно к работе над роботом. Устанавливаем колеса на моторчики и монтируем «резину».

Используем двухстороннюю клейкую ленту что бы устанавливать оборудование. За основу берем отсек для крепления батареек. Над ним «надстраиваем» другие элементы конструкции. Не забудьте вставить батарейки, что бы правильно сбалансировать робота.

ВНИМАНИЕ! Достаем батарейки, что бы не «сжечь» какой-нибудь дорогой элемент ненароком.

Устанавливаем микросхемы на отладочную плату (см. фотографии). В случае, если вместо рекомендуемого серводвигателя, вы использовали собственный — вместо желтой микросхемы устанавливаем резистор сопротивлением 330 Ом (опять-таки см. фотографию).

Пояснения: черная микросхема (20 выводов) — это наш микроконтроллер, микросхема черная поменьше — драйвер двигателей L293D.

Возможно, на обратной стороне отладочной платы окажутся какие-то красные, странные пластмассовые «заглушки» для отверстий — со спокойной совестью снимайте их.

Теперь подключаем двигатели (моторчики) к отверстиям 4 «A & B» (пока, порядок не важен). Как их подключить — дело вкуса. Вы можете либо припаять их, либо сделать соединения.

Припаяем провода к моторчикам. Провода А — к первому, провода В — к второму.

Для подключения серводвигателя припаиваем дополнительный вывод (см. фотографии). Подключаем.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: