Москва

+7 495 741-65-70

Корзина пуста
Загрузка списка товаров из файла
SALE!-10% -20% -30% -40% -50% -60%
дефицитные компоненты
Возможности связки Arduino и Nucleo: Производительность STM32G0 и простота Arduino IDE. Часть1

Возможности связки Arduino и Nucleo: Производительность STM32G0 и простота Arduino IDE. Часть1

Платформа Arduino разрабатывалась в первую очередь для пользователей, только начинающих ознакомление с программированием микроконтроллеров и создание собственных решений на их базе. Как следствие, средства Arduino - как отладочные платы, так и IDE, - делались максимально простыми и имели весьма ограниченный функционал. И, несмотря на высокую популярность на любительском рынке, именно ограниченный функционал отталкивает мало-мальски серьезных разработчиков. Компания STMicroelectronics, видя популярность данной платформы, предлагает своим клиентам обновленную линейку отладочных плат Nucleo на базе микроконтроллеров STM32G0, совместимых с Arduino и значительно расширяющих возможности стандартных решений платформы и повышающих их производительность.

Платы выполнены в стандартном формфакторе, а за программную часть отвечает библиотека STM32duino. Кроме того, функционал плат Nucleo также может быть расширен с помощью линейки Nucleo Expansion Boards. Более подробно о сопряжении и использовании Arduino, Arduino Shield, Nucleo и X-NUCLEO будет рассказано в следующих разделах статьи.

 Arduino: Особенности платформы

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

На рис. 1 показана наглядная иллюстрация использования платформы Arduino для решения конкретной задачи (управление перемещением экструдера и другим оборудованием 3D-принтера).

Применение платформы Arduino для организации управления 3D-принтером

Рис. 1. Применение платформы Arduino для организации управления 3D-принтером

На рис. 1, помимо головной платы управления, содержащей в себе микроконтроллер с прошивкой, созданной в среде Arduino IDE, присутствуют также платы расширения Arduino Shield, обеспечивающие основной функционал: управление шаговыми двигателями, определение координат положения экструдера, его температуры и многое другое. Платы расширения подключаются к основной плате через стандартные разъемы и могут комбинироваться друг с другом, создавая тем самым необходимый для конкретного решения пакет. Для создания кода, в котором бы задействовались платы расширения, необходимо задействовать специальные библиотеки. К счастью, большинство из них уже доступно в Arduino IDE или на сайте платформы.

С точки зрения профессионального пользователя, предложенная на рисунке 1 схема выглядит довольно абстрактно и прячет на задний план как структуру микроконтроллера, так и способы управления подключаемыми датчиками. Тем не менее, именно так представляет себе работу большинство пользователей Arduino. И, с одной стороны, в этом нет ничего плохого: нет необходимости настраивать микроконтроллер и регистры, выделять стек, мучаться с тактированием - все это происходит автоматически при подключении к проекту нужных библиотек.

Не удивительно, что решения на Arduino быстро завоевали популярность среди пользователей (согласно подсчетам, в день реализуется около 1000 официальных экземпляров плат Arduino), ведь для создания простых приложений, казалось бы, лучше и быть ничего не может. Но что делать, если хочется создать решение, которое будет чуть сложнее любительского уровня, иметь большую производительность, чем стандартные решения Arduino, но в то же время нет желания разбираться во внутренней структуре микроконтроллера? Именно на данный сегмент направлены линейки Arduino-совместимых плат Nucleo производства компании STMicroelectronics, а также плат расширения X-NUCLEO.

Arduino и Arduino Shield

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

Отдельного внимания заслуживают базовые платы Arduino UNO, ставшие уже традиционным решением на любительском рынке. Именно Arduino UNO V3 (рис. 2) компании STMicroelectronics использовала в качестве основы для своих продуктов Nucleo-64 и Nucleo-144, с которыми теперь могут использоваться как официальные платы расширения Arduino Shield, так и платы других производителей в этом форм-факторе.

Преимущества применения плат расширения Nucleo вместо Arduino UNO V3 заключаются, в первую очередь, в том, что взамен маломощного 8-битного контроллера ATmega328, который является достаточно слабым решением для профессиональных приложений и обладает рабочей частотой всего до 16 МГц, скромной Flash-памятью в 32 кбайта и двумя кбайтами RAM, пользователь может получить 32-битный микроконтроллер STM32G071RB с частотой до 64 МГц, 128 кбайт Flash-памяти и 32 кбайт RAM при сохранении прочего функционала решения.

Arduino UNO V3

Рис. 2. Arduino UNO V3

Для обеспечения совместимости с платами расширения от разных производителей (в том числе и STMicroelectronics), компания Arduino провела стандартизацию назначений контактов для всех своих базовых плат. В частности, для Arduino UNO V3 и, как следствие, своместимых с ней плат Nucleo-64 и Nucleo-144 распиновка носит следующий характер:

  • IOREF – референсный выход, предоставляющий информацию об уровне напряжения на основной плате подключенным к ней платам расширения;
  • Reset – сброс контроллера. Как правило, на данный контакт вешается специальная кнопка, а сам сброс осуществляется подтяжкой контакта на землю;
  • 3V3 – выход напряжения 3,3 В. 3,3 В на выходе происходят из 5 В на входе питания после преобразования стабилизатором LP2985-33DBVR. Максимальный ток нагрузки на выходе составляет 50 мА.
  • 5V – выход напряжения 5 В. Напряжение на выходе имеет три варианта формирования и либо происходит из преобразования стабилизатором NCP1117ST50T3G напряжения питания платы (7…12 В), либо это преобразование напряжения со входа VIN. Еще один вариант – получение 5 В от порта USB, подключенного к персональному компьютеру;
  • GND – земля;
  • VIN – вход для альтернативного способа подачи питания на базовую плату. Данный способ записи используется, если источник питания находится на подключаемой плате расширения;
  • AREF – референсное напряжение для аналоговых входов;
  • A..A5 – аналоговые входы платы с рабочим напряжением 0…5 В. Верхняя граница входного напряжения может быть задана при помощи AREF, разрядность составляет 10 бит;
  • 0…13 – цифровые входы-выходы, ток 20 мА (максимальное значение – до 40 мА).

Отдельные цифровые и аналоговые входы платы могут быть задействованы для выполнения специальных функций:

  • 0 (RX) и 1 (TX) – интерфейс UART;
  • 2 и 3 – внешние прерывания;
  • 3, 5, 6, 9, 10 и 11 – выходы 8-битного ШИМ;
  • 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) - SPI;
  • 13 – управление светодиодом базовой платы;
  • A4 (SDA) и A5 (SCL) – интерфейсы.

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

Arduino IDE: Среда разработки, библиотеки, примеры

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

Внешний вид стартового окна Arduino IDE

Рис. 3. Внешний вид стартового окна Arduino IDE

К основным преимуществам использования Arduino IDE стоит отнести следующие аспекты:

  1. Arduino IDE устанавливается с набором примеров, наглядно показывающих принцип написания кода практически для любых сценариев;
  2. код программы пишется не на ассемблере или СИ, а на упрощенном варианте С++, содержащем в своем составе всего три крупных раздела: функции, структуры, переменные и константы. При включении в проект новые библиотеки также добавляют в него новые функции;
  3. упрощенная структура программ. Начальный шаблон проекта состоит из всего двух функций: void setup(), в которой пользователю необходимо провести инициализацию входов/выходов и настроить необходимые интерфейсы, и void loop(), где прописывается основной алгоритм и тело программы;
  4. нет необходимости настраивать периферию, задавать тактирование, формировать стек и так далее. Всю «грязную» работу за пользователя делают подключаемые библиотеки;
  5. возможность свободного скачивания нужных библиотек. Если пользователь пытается использовать функцию, которая отсутствует в проекте, Arduino IDE сообщит ему название недостающей библиотеки.

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

Nucleo-64: Высокая производительность по минимальной цене

Платформа Arduino завоевала сердца пользователей именно своей простотой, благодаря которой создать собственное приложение можно даже практически не разбираясь в электронике. Решения на Arduino популярны не только на любительском рынке, они также неплохо проявили себя на поприще создания прототипов или даже готовых штучных изделий в профессиональном сегменте. Однако там, где новичку частоты в 16 Мгц и памяти в 2 кбайт RAM будет хватать с лихвой, профессионал выпадет в осадок от таких показателей. Именно для таких целей компания STMicroelectronics создала Arduino-совместимые платы Nucleo.

На текущий момент STMicroelectronics предлагает своим клиентам три типа плат Nucleo: Nucleo-32 (могут работать в связке с Arduino Nano V3), Nucleo-64 и Nucleo-144 (могут работать в связке с Arduino Uno V3). С учетом того, что при рассмотрении платформы Arduino мы уже ознакомились с некоторыми характеристиками Arduino Uno V3, для ознакомления с Arduino-совместимым Nucleo выберем плату из линейки Nucleo-64 (рис. 4), так как данная линейка является более бюджетным и распространенным решением относительно Nucleo-144.

Внешний вид плат линейки Nucleo-64

Рис. 4. Внешний вид плат линейки Nucleo-64

Ключевыми характеристиками плат Nucleo-64 являются:

  • 32-битный микроконтроллер в корпусе LQFP64;
  • 1 светодиод пользователя;
  • 1 кнопка пользователя;
  • 1 кнопка «Reset»;
  • кварцевый резонатор с частотой 32,768 кГц;
  • сокет для подключения плат типа Arduino Uno V3;
  • сокет для подключения плат типа ST morpho;
  • возможность работы от внешнего источника питания (3,3/5 В), от USB или от 7…12 В сокета Arduino;
  • встроенный программатор-отладчик ST-LINK V2.

Еще более значимым решением для бюджетного сегмента стала установка на платах Nucleo-64 нового семейства микроконтроллеров STM32G0, сместившего с позиции лидера семейство STM32F0. Микроконтроллеры STM32G0 построены на базе ядра Cortex-M0+, которое представляет собой результат глубокой модернизации ядра Cortex-M0, применяемого в STM32F0. Cortex-M0+ обладает улучшенными показателями эффективности и времени отклика, более высоким уровнем производительности, имеет надежную архитектуру с защищаемой областью памяти, значительный объем RAM и Flash, поддерживает перемещение таблицы векторов и так далее. Частота работы STM32G0 составляет до 64 МГц, объем Flash-памяти может принимать значение до 128 кбайт, RAM-память – до 36 кбайт (в ближайшее время также планируется производство моделей с Flash-памятью до 512 кбайт и до 128 кбайт RAM).

На сегодняшний день номенклатура STM32G0 включает в себя модели из двух линеек:

  • Value Line – бюджетная линейка микроконтроллеров;
  • Access Line – базовая линейка микроконтроллеров.

Что касается отладочных плат, то пользователям на данный момент доступны два вида плат Nucleo-64 (таблица 1) на базе микроконтроллеров STM32G0.

Таблица 1. Платы Nucleo-64 на базе микроконтроллеров STM32

Обозначение

Наименование

Поддержка плат

Число клавиш управления

Количество светодиодов

ST-LINK

Питание, В

NUCLEO-F070RB

STM32F070RB

Arduino Uno, ST Morpho

1

1

ST-LINK V2-1, USB Micro-B

Внешнее 3,3/5, USB

NUCLEO-G070RB

STM32G070RB

Arduino Uno, ST Morpho

1

1

ST-LINK V2-A, USB Mini-B

Внешнее 3,3/5, USB

NUCLEO-G071RB

STM32G071RB

Arduino Uno, ST Morpho

1

1

ST-LINK V2-1, USB Micro-B

Внешнее 3,3/5, USB

В таблице 2 приведены сравнительные характеристики микроконтроллеров семейства STM32G0, используемых для построения плат Nucleo-64 (STM32G070RB и STM32G071RB).

Таблица 2. Сравнение характеристик STM32G070RB и STM32G071R

Параметр

STM32G070RB

STM32G071RB

Процессор, ядро

ARM Cortex-M0+

ARM Cortex-M0+

Максимальная частота, МГц

64

64

Размер Flash, кбайт

128

128

Размер SRAM, кбайт

36

36

Частота внешнего резонатора, МГц

4…48

4…48

DMA

7 каналов

7 каналов

АЦП

12 бит, 16 каналов, 2,5 MSPS

12 бит, 16 каналов, 2,5 MSPS

ЦАП

2 x 12 бит

Аналоговые компараторы

2

Количество таймеров

11

14

RTC

+

+

I2C

2

2

USART

4

4

SPI

2

2

LPUART

1

LPTIM

2

Напряжение питания, В

2,0…3,6

1,7…3,6

Мониторинг питания

POR/PDR

POR/PDR/BOR/PVD

Использование плат Nucleo-64 в качестве Arduino Shield позволяет значительно улучшить характеристики базовой платы. В таблице 3 приведены сравнительные характеристики базовой платы Arduino Uno V3 и Nucleo-G071RB, используемой в качестве платы расширения.

Таблица 3. Сравнение характеристик Arduino Uno V3 и Nucleo-G071RB

Параметр

Arduino Uno  V3

NUCLEO-G071RB

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

ATmega328P

STM32G071RB

Напряжение работы, В

5

5 (USB)

Рекомендуемое входное напряжение, В

7-12

7-12 (через сокет Arduino или STMorpho)

Количество цифровых входов/выходов

14

14 (Arduino), все порты микроконтроллера доступны через ST Morpho

ШИМ-выходы

6

6 (Arduino)

Аналоговые входы

6

6 (Arduino)

Выходной ток, мА

20

20

Flash-память, кбайт

32, из них 0,5 занимает загрузчик

128

SRAM-память, кбайт

2

36

EEPROM-память, кбайт

1

Максимальная рабочая частота процессора, МГц

16

64

Светодиод

1

1

Пользовательская кнопка

1

Кнопка «Reset»

1

1

Длина, мм

68,6

82,5

Ширина, мм

53,4

70

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

Платы расширения X-NUCLEO

X-NUCLEO созданы для расширения функционала базовых плат Nucleo, в том числе рассмотренной ранее NUCLEO-G071RB (рис. 5).

Организация стека на базе Nucleo-64 и плат расширения X-NUCLEO

Рис. 5. Организация стека на базе Nucleo-64 и плат расширения X-NUCLEO

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

Таблица 4. Платы расширения X-NUCLEO производства компании STMicroelectronics

Наименование платы расширения

Краткое описание

X-NUCLEO-GNSS1A1

Плата расширения с модулем навигации Teseo-LIV3F. Модуль поддерживает ГЛОНАСС, GPS, Galileo, BeiDou, QZSS.

X-NUCLEO-6180XA1

Плата расширения с предустановленным датчиком приближения и освещения VL6180x и 7-сегментными индикаторами.

X-NUCLEO-CCA01M1

Плата расширения с аудиомикросхемой STA350BW, обладающей двумя аудиовыходами мощностью 25 Вт каждый.

X-NUCLEO-IDB05A1

Плата расширения с Bluetooth-модулем SPBTLE-RF (BLE).

X-NUCLEO-NFC05A1

Плата расширения с микросхемой-считывателем NFC - ST25R3911B.

X-NUCLEO-LPM01A

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

X-NUCLEO-PLM01A1

Плата расширения с SOC-модемом ST7580.

X-NUCLEO-STMODA1

Переходная плата расширения, дающая возможность подключать модули с новым интерфейсом STMod+ к платам Nucleo.

X-NUCLEO-IKS01A2

Плата расширения для работы и взаимодействия с МЭМС-датчиками.

X-NUCLEO-IHM03A1

Плата драйвера мощного шагового двигателя на основе системы-в-корпусе (SiP) powerSTEP01.

X-NUCLEO-IHM07M1

Плата расширения на базе драйвера трехфазного двигателя постоянного тока L6230.

X-NUCLEO-53L1A1

Плата расширения на основе миниатюрного модуля лазерного датчика расстояния VL53L1X с диапазон измерений до 400 см.

Для примера организации стека на базе Nucleo-64 и Arduino используем из таблицы 4 плату расширения X-NUCLEO-IKS01A2.

X-NUCLEO-IKS01A2 (рисунок 6), как уже описывалось выше, служит для работы с МЭМС-датчиками и имеет на борту следующие из них:

  • Модуль LSM6DSL, представляющий собой трехосевой МЭМС-акселерометр (±2/±4/±8/±16 g) и трехосевой МЭМС-гироскоп (±125/±245/±500/±1000/±2000 dps);
  • модуль LSM303AGR, представляющий собой трехосевой МЭМС-акселерометр (±2/±4/±8/±16 g) и трехосевой МЭМС-магнитометр (±50 Гс);
  • барометр LPS22HB, имеющий диапазон измерений 260…1260 кПа;
  • датчик температуры и влажности HTS221;
  • также присутствует возможность подключения других датчиков через сокет DIL24.

Внешний вид X-NUCLEO-IKS01A2

Рис. 6. Внешний вид X-NUCLEO-IKS01A2

Связь и взаимодействие между периферией из датчиков X-NUCLEO-IKS01A2 и центральным микроконтроллером отладочной платы Nucleo осуществляется через интерфейс I2C.

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

Во второй части обзора мы рассмотрим программы для STM32 в Arduino IDE.

Автор: Святослав Зубарев, г. Смоленск

Производители: ST Microelectronics

Разделы: Демонстрационные платы, Аксессуары для микроконтроллерных плат

Опубликовано: 21.11.2019

Товары

NUCLEO-F070RB NUCLEO-F070RB (ST)
0 шт.
нет в наличии
NUCLEO-G070RB NUCLEO-G070RB (ST)
0 шт.
нет в наличии
NUCLEO-G071RB NUCLEO-G071RB (ST)
0 шт.
нет в наличии
STM32G071CBT6 STM32G071CBT6 (ST)
0 шт.
нет в наличии
STM32G071CBT6TR STM32G071CBT6TR (ST)
0 шт.
нет в наличии
STM32G071CBU6 STM32G071CBU6 (ST)
0 шт.
нет в наличии
X-NUCLEO-53L1A1 X-NUCLEO-53L1A1 (ST)
0 шт.
нет в наличии
добавить к сравнению
X-NUCLEO-6180XA1 X-NUCLEO-6180XA1 (ST)
0 шт.
нет в наличии
добавить к сравнению
X-NUCLEO-CCA01M1 X-NUCLEO-CCA01M1 (ST)
17 шт.
нет в наличии
добавить к сравнению
X-NUCLEO-GNSS1A1 X-NUCLEO-GNSS1A1 (ST)
0 шт.
нет в наличии
X-NUCLEO-IDB05A1 % X-NUCLEO-IDB05A1 (ST)
0 шт.
нет в наличии
X-NUCLEO-IHM03A1 X-NUCLEO-IHM03A1 (ST)
32 шт.
нет в наличии
добавить к сравнению
X-NUCLEO-IHM07M1 X-NUCLEO-IHM07M1 (ST)
36 шт.
нет в наличии
добавить к сравнению
X-NUCLEO-IKS01A2 X-NUCLEO-IKS01A2 (ST)
19 шт.
нет в наличии
добавить к сравнению
X-NUCLEO-LPM01A X-NUCLEO-LPM01A (ST)
0 шт.
нет в наличии
X-NUCLEO-NFC05A1 X-NUCLEO-NFC05A1 (ST)
0 шт.
нет в наличии
добавить к сравнению
X-NUCLEO-PLM01A1 X-NUCLEO-PLM01A1 (ST)
0 шт.
нет в наличии
X-NUCLEO-STMODA1 X-NUCLEO-STMODA1 (ST)
0 шт.
нет в наличии
  • Москва
  • Санкт-Петербург
  • Мурманск
  • Ульяновск
  • Новосибирск
  • Екатеринбург
  • Краснодар
  • Нижний Новгород
  • Воронеж
  • Уфа
  • Челябинск
  • Самара
  • Красноярск
  • Казань
  • Ростов-на-Дону
  • Саратов
  • Пермь
  • Томск
  • Иркутск
  • Омск
  • Тюмень

Актуальность предложений на товары в корзине истекла, данные были удалены 02.12.2022 в 00:00:00 (Мск.) Список позиций из корзины сохранен в Списке товаров
Актуальность предложений на товары в корзине истекла, данные были удалены 02.12.2022 в 00:00:00 (Мск.) Зарегистрируйтесь или авторизуйтесь на сайте, если регистрировались ранее, чтобы сохранять список товаров из корзины

Данный товар получен от клиентов, которые купили его для целей производства, но он оказался не востребован. Возможно отсутствие ГТД и страны происхождения.