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

Сочетание производительности плат Nucleo, периферии плат расширения X-Nucleo и простоты платформы Arduino позволяет организовать решения, способные удовлетворить не только потребности любителей, но и обратить на себя внимание профессионалов. В статье рассматривается работа с библиотекой STM32duino и связка Arduino-Nucleo на ее основе.
687
В избранное

STM32duino: Программы для STM32 в Arduino IDE

Библиотеки, выпускаемые компанией Arduino для своих решений, предоставляют пользователям весь необходимый функционал для работы как с базовыми платами, так и с платами расширения. Однако для работы с микроконтроллерами семейства STM32 и платами Nucleo необходима новая библиотека, способная интегрировать решения STM в платформу Arduino. STM32duino [11], являющийся открытым проектом, представляет собой именно такую библиотеку.

STM32duino – это совокупность библиотек и утилит для ядра, плат расширения X-NUCLEO и датчиков производства компании STMicroelectronics. Главной и, как следствие, основной библиотекой в данном пакете является Arduino_Core_STM32. Именно с ее помощью осуществляется взаимодействие Arduino и продуктов на основе STM32.

На сегодняшний день Arduino_Core_STM32 обеспечивает поддержку работы со следующими базовыми отладочными платами на базе STM32 (таблица 5).

Таблица 5. Поддерживаемые Arduino_Core_STM32 платы на основе микроконтроллера STM32

Линейка

Поддерживаемые платы

NUCLEO-32

Nucleo-F303K8, Nucleo-G431KB, Nucleo-L031K6, Nucleo-L412KB, Nucleo-L432KC, NUCLEO-F031K6, NUCLEO-L011K4, NUCLEO-F042K6

NUCLEO-64

Nucleo-F030R8, Nucleo-F091RC, Nucleo-F103RB, Nucleo-F302R8, Nucleo-F303RE, Nucleo-F401RE, NUCLEO-F410RB, Nucleo-F411RE, Nucleo-F446RE, Nucleo-G071RB, Nucleo-G431RB, Nucleo-G474RE, Nucleo-L073RZ, Nucleo-L152RE, Nucleo-L452RE, Nucleo-L452RE-P, Nucleo-L476RG, NUCLEO-F070RB, NUCLEO-L010RB, NUCLEO-L412RB-P, NUCLEO-L433RC-P

NUCLEO-144

Nucleo-F207ZG, Nucleo-F429ZI, Nucleo-F767ZI, Nucleo-L496ZG, Nucleo-L496ZG-P, Nucleo-L4R5ZI, Nucleo-L4R5ZI-P, Nucleo-H743ZI, Nucleo-H743ZI2, NUCLEO-H745ZI-Q, NUCLEO-F722ZE, NUCLEO-F439ZI, NUCLEO-L4R5ZI, NUCLEO-F412ZG, NUCLEO-F413ZH, NUCLEO-F746ZG, NUCLEO-F303ZE, NUCLEO-F446ZE

Discovery

STM32F0308-DISCO, STM32F072B-DISCO, STM32VLDISCOVERY, STM32F407G-DISC1, STM32F746G-DISCO, STM32F429I-DISC1, STM32L4R9I-DISCO, B-L072Z-LRWAN1, B-L475E-IOT01A и др. 

NUCLEO-68

P-NUCLEO-WB55

Если Arduino_Core_STM32 обеспечивает работу с базовыми платами, то для плат расширения необходимо подключение дополнительных библиотек (таблица 6).

Таблица 6. Библиотеки для работы с платами расширения NUCLEO

Наименование библиотеки

Описание

FP_Examples

Примеры, показывающие варианты совместной работы нескольких плат расширения X-NUCLEO

X-NUCLEO-IHM12A1

Библиотека для плат X-NUCLEO-IHM12A1, служащих для работы с DC-моторами посредством микросхемы STSPIN240

X-NUCLEO-53L1A1

Библиотека для плат X-NUCLEO-53L1A1 с датчиком приближения VL53L1x

I-NUCLEO-LRWAN1

Библиотека для плат I-NUCLEO-LRWAN1 LoRa® с модулем USI® LoRaWAN

X-NUCLEO-GNSS1A1

Библиотека для плат X-NUCLEO-GNSS1A1 с модулем навигации Teseo-LIV3F

X-NUCLEO-53L0A1

Библиотека для плат X-NUCLEO-53L0A1 с датчиком приближения VL53L0x

X-NUCLEO-6180XA1

Библиотека для плат X-NUCLEO-6180XA1 с датчиком приближения VL6180x

X-NUCLEO-IKS01A3

Библиотека для плат X-NUCLEO-IKS01A3 с инерционными МЭМС-датчиками

X-NUCLEO-IHM02A1

Библиотека для плат X-NUCLEO-IHM02A1

X-NUCLEO-NFC03A1

Библиотека для плат X-NUCLEO-NFC03A1 с NFC-микросхемой CR95HF

X-NUCLEO-NFC04A1

Библиотека для плат X-NUCLEO-NFC04A1 с NFC/RFID-микросхемой ST25DV04K

X-NUCLEO-NFC01A1

Библиотека для плат X-NUCLEO-NFC01A1 с NFC/RFID-микросхемой M24SR64-Y

X-NUCLEO-IDB05A1

Библиотека для плат X-NUCLEO-IDB05A1 с Bluetooth-модулем SPBTLE-RF

X-NUCLEO-IKS01A2

Библиотека для плат X-NUCLEO-IKS01A2 с МЭМС-датчиками

X-NUCLEO-IKS01A1

Библиотека для плат X-NUCLEO-IKS01A1 с МЭМС-датчиками

X-NUCLEO-LED61A1

Библиотека для плат X-NUCLEO-LED61A1 с DC/DC LED-драйвером LED6001

X-NUCLEO-IKA01A1

Библиотека для плат X-NUCLEO-IKA01A1 с операционными усилителями

При работе с библиотеками для плат расширения также необходимо интегрировать в проект библиотеки для работы с расположенными на них датчиками. К примеру, X-NUCLEO-GNSS1A1 используют библиотеку для Teseo-LIV3F, X-NUCLEO-IKS01A2 – библиотеки для LSM6DSL, LSM303AGR, HTS221, LPS22HB и так далее. Более подробное описание используемых библиотек датчиков приведено в таблице 7.

Таблица 7. Библиотеки датчиков STM32duino

Наименование библиотеки/утилиты

Описание

Proximity_Gesture

Библиотека для распознавания жестов при помощи датчиков приближения

USBMicrophone

Библиотека для поддержки USB Audio class отладочными платами с STM32

STM32SD

Библиотека для поддержки SDcard отладочными платами с STM32

STM32RTC

Библиотека для RTC микроконтроллеров STM32

LIS3DHH

Библиотека для трехосевого акселерометра LIS3DHH

LSM6DSOX

Библиотека для трехосевого гироскопа LSM6DSOX

HTS221

Библиотека для датчика влажности и температуры HTS221

LSM6DSO

Библиотека для комбинированного инерционного МЭМС-датчика LSM6DSO (трехосевой акселерометр + трехосевой гироскоп)

Teseo-LIV3F-Flash-Updater

Java-приложение для обновления прошивки модулей Teseo-LIV3F

LSM303AGR

Библиотека для комбинированного инерционного МЭМС-датчика LSM303AGR (трехосевой акселерометр + трехосевой магнитометр)

VL53L1X

Библиотека для поддержки датчика приближения VL53L1X

STTS751

Библиотека для поддержки цифрового датчика температуры STTS751

SPBTLE-RF

Библиотека для поддержки Bluetooth-модуля SPBTLE-RF

VL53L0X

Библиотека для поддержки датчика приближения VL53L0X

VL6180X .

Библиотека для поддержки датчика приближения VL6180X

LIS2DW12

Библиотека для поддержки трехосевого акселерометра LIS2DW12

LPS22HH

Ard-библиотека для поддержки цифрового барометра LPS22HH

LIS2MDL

Библиотека для поддержки трехосевого магнитометра LIS2MDL

WiFi-ISM43362-M3G-L44

Библиотека для поддержки wi-fi-модуля Inventek ISM43362-M3G-L44 (802.11 b/g/n)

LIS3MDL

Библиотека для поддержки трехосевого магнитометра LIS3MDL

LSM6DSL

Библиотека для поддержки инерционного сенсора LSM6DSL (трехосевой гироскоп + трехосевой акселерометр)

LSM6DS3

Библиотека для поддержки инерционного сенсора LSM6DS3 (трехосевой гироскоп + трехосевой акселерометр)

LSM6DS0

Библиотека для поддержки инерционного сенсора LSM6DS0 (трехосевой гироскоп + трехосевой акселерометр)

M24SR64-Y

Библиотека для поддержки беспроводной NFC/RFID-памяти M24SR64-Y

LPS25HB

Библиотека для поддержки цифрового барометра LPS25HB

LPS22HB

Библиотека для поддержки цифрового барометра LPS22HB

MX25R6435F

Библиотека для поддержки Quad-SPI NOR Flash-памяти MX25R6435F

ST-SPSGRF

Библиотека для поддержки субгигагерцевых ВЧ-модулей SPSGRF-868 и SPSGRF-915

MP34DT01

Библиотека для поддержки цифровых микрофонов MP32DT01

Пример добавления поддержки STM32 в Arduino

После выбора базовой платы Arduino, отладочной платы Nucleo и, возможно, платы расширения X-NUCLEO, стоит, наконец, перейти к добавлению программной поддержки Nucleo в проекте Arduino. Добавление Arduino_Core_STM32 в проект подробно описано в соответствующем разделе на GitHub [12]. Также на видеохостинге Youtube можно с легкостью найти видеоролики [13], в которых данный процесс выполняется наглядно в реальном времени.

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

  1. Установка последней версии Arduino IDE [6]. Arduino IDE постоянно совершенствуется и обновляется, поэтому не стоит пренебрегать версией среды и последующим ее обновлением.
  2. Запуск Arduino IDE. При запуске перед пользователем предстанет стартовое окно, которое уже было показано на рис. 3.
  3. После запуска необходимо зайти в меню «File» и выбрать пункт «Preferences» (рис. 7).

    Меню «File», пункт «Preferences»

    Рис. 7. Меню «File», пункт «Preferences»
  1. В открывшемся окне необходимо в поле Additional Boards Managers URLs ввести адрес: https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/master/STM32/package_stm_index.json и нажать кнопку «Ок» для сохранения параметров (рис. 8).

    Настройка Additional Boards Managers URLs в меню «Preferences»


    Рис. 8. Настройка Additional Boards Managers URLs в меню «Preferences»
  1. Найти нужную библиотеку для работы с STM Для этого сначала следует открыть меню «Tools» и в нем выбрать пункты «Boards» → «Boards Manager» (рис. 9).

    Меню «Tools», пункт «Boards Manager»

    Рис. 9. Меню «Tools», пункт «Boards Manager»
  1. В окне Boards Manager ввести сочетание «STM32 Cores» в графу поиска. После нахождения нужной библиотеки нажать кнопку «Install» (рисунок 10).

    Поиск и установка «STM32 Cores»

    Рис. 10. Поиск и установка «STM32 Cores»
  1. После завершения установки появится отметка «INSTALLED», после чего «Boards Manager» можно смело закрывать.

Благодаря установке данной библиотеки в меню «Tools» и пункте «Board» для работы стали доступны платы Nucleo.

Далее в статье будут разобраны три простых примера взаимодействия с платами Nucleo через проект Arduino.

Мигание светодиода

Для демонстрации данного примера будем использовать плату Nucleo-G071RB на базе микроконтроллера STM32G071, которую мы уже разбирали ранее.

Для организации миганиявыполним следующие шаги:

  1. Подключение Nucleo-G071RB к персональному компьютеру посредством USB-кабеля и создание нового проекта в Arduino IDE.
  2. Выбор нужной линейки плат (Nucleo-64) в разделе «Board» меню «Tools» (рис. 11).

    Выбор платы Nucleo-64

    Рис. 11. Выбор платы Nucleo-64
  1. Выбор нужной модели (Nucleo-G071RB) в разделе «Board part number» (рис. 12).

    Выбор модели Nucleo-G071RB

    Рис. 12. Выбор модели Nucleo-G071RB
  1. Выбор способа записи программы, для чего в меню «Tools» выбираем пункт «Upload method». По умолчанию там стоит «Mass Storage», но его можно изменить на загрузку с помощью ST-Link (рис. 13).

    Выбор способа загрузки «Mass Storage»

    Рис. 13. Выбор способа загрузки «Mass Storage»
  1. Следующим этапом является выбор номера последовательного (COM) порта (рис. 14). Какой именно порт назначен на подключенную плату, можно узнать в диспетчере устройств Windows.

    Выбор COM-порта

    Рис. 14. Выбор COM-порта 
  1. Самым простой организацией мигания является выбор примера «Blink» в разделе базовых примеров (меню «File» → «Examples» → «Basic»), что демонстрирует рис. 15.

    Выбор примера для упрощенной организации мигания

    Рис. 15. Выбор примера для упрощенной организации мигания
  1. При выборе нужного примера в окне Arduino IDE будет отображен листинг программы (листинг 1). Как уже упоминалось ранее, в программе содержатся две основополагающие функции: функция инициализации void setup() и основная функция void loop(). Для инициализации порта управления светодиодом внутри void setup() используется функция pinMode(). Включение/выключение светодиода происходит посредством digitalWrite() внутри void loop(), а временная задержка задается с помощью функции delay() в миллисекундах.

Листинг 1. Пример организации мигания светодиодом

// Запуск функции инициализации происходит единовременно после подачи питания или нажатия Reset
void setup() {

 // Настройка вывода LED_BUILTIN на выход
 pinMode(LED_BUILTIN, OUTPUT);

}

// Вызов основной функции происходит в цикле

void loop() {

 digitalWrite(LED_BUILTIN, HIGH);  // Включение светодиода

 delay(1000);            // Организация задержки 1000 мс (1 секунда)

 digitalWrite(LED_BUILTIN, LOW);  // Выключение светодиода

 delay(1000);            // Организация задержки 1000 мс (1 секунда)

}

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

    Компиляция и загрузка программы

    Компиляция и загрузка программы

    Рис. 16. Компиляция и загрузка программы

Результатом должно стать мигание светодиода с периодом раз в 1 секунду. Благодаря описанным выше шагам мы выполнили запуск штатного проекта Arduino, не написав ни оной строчки кода. В следующем примере мы рассмотрим слегка усложненный пример организации мигания – при помощи пользовательской кнопки.

Управление светодиодом при помощи кнопки 

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

Организуем алгоритм, при котором светодиод мигает с той же частотой, что и раньше, а при нажатии кнопки частота мигания увеличивается в два раза. Еще одной модернизацией является использование вместо мнемоники LED_BUILTIN обозначений PA5-вывод микроконтроллера STM32G071, который отвечает за управление светодиодом, и PC13-вывод, к которому подключена кнопка. Для определения состояния кнопки будем использовать функцию digitalRead() (листинг 2). 

Листинг 2. Управление светодиодом при помощи кнопки

// Запуск функции инициализации происходит единовременно после подачи питания или нажатия Reset

void setup() {

// Настройка вывода управления светодиодом (используется вывод микроконтроллер PA5)

pinMode(PA5, OUTPUT);

// Настройка входа контроля состояния кнопки (используется вывод микроконтроллер PС13)

pinMode(PC13, INPUT);
  
}
  
// Вызов основной функции происходит в цикле
  
void loop() {
 
if(digitalRead(PC13)) // Проверка состояния кнопки

{

// Если кнопка нажата – частота моргания увеличивается в два раза

digitalWrite(PA5, HIGH); // Включение светодиода

delay(500); )         // Организация задержки 500 мс (0,5 секунды)

digitalWrite(PA5, LOW); // Выключение светодиода

delay(500);    // Организация задержки 500 мс (0,5 секунды)

}

// Если кнопка не нажата - частота остается прежней

else

{

digitalWrite(PA5, HIGH); // Включение светодиода

delay(1000); // Организация задержки 1000 мс (1 секунда)

digitalWrite(PA5, LOW); // Выключение светодиода

delay(1000); // Организация задержки 1000 мс (1 секунда)

}

}

Рассмотренные выше примеры носят довольно простой характер. В сети можно найти множество подобных на любой вкус[14].

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

Добавление библиотек для работы с платами расширения

Первое, на что стоит обратить внимание при подключении платы расширения X-NUCLEO-IKS01A2 – это то, что для корректной работы с ней, помимо соответствующей библиотеки платы [15], также потребуется подключение библиотек датчиков:

Процесс установки в таком случае содержит в себе следующие шаги:

  1. В меню «Sketch» необходимо выбрать раздел «Include Library», в котором, в свою очередь, выбрать пункт «Manage Libraries» (рис. 17).

    Пункт «Manage Libraries» (управление библиотеками) в меню «Sketch»

    Рис. 17. Пункт «Manage Libraries» (управление библиотеками) в меню «Sketch»
  1. В строке поиска открывшегося окна «Library Manager» необходимо задать модель интересующей платы, - в нашем случае – X-NUCLEO-IKS01A2, - и после ее обнаружения нажать кнопку «Install» (рис. 18).

    Поиск и установка библиотеки X-NUCLEO-IKS01A2

    Рис. 18. Поиск и установка библиотеки X-NUCLEO-IKS01A2
  1. Аналогичным образом необходимо провести установку библиотек HTS221, LSM6DSL, LSM303AGR и LPS22HB. При наличии нескольких версий рекомендуется выбирать версию для STM32duino (рис. 19).

    Поиск и установка библиотеки HTS221 (нужная версия для STM32duino расположена внизу)

    Рис. 19. Поиск и установка библиотеки HTS221 (нужная версия для STM32duino расположена внизу)
  1. После инсталляции всех необходимых библиотек можно отметить значительное расширение списка доступных примеров. Одним из самых простых является «X_NUCLEO_IKS01A2_HelloWorld», который можно найти по пути: «File» → «Examples» → STM32duino X-NUCLEO-IKS01A2 (рис. 20).

    Пример X_NUCLEO_IKS01A2_HelloWorld

    Рис. 20. Пример X_NUCLEO_IKS01A2_HelloWorld

Считывание показаний МЭМС-датчиков X-NUCLEO и передача их на ПК

Перед началом написания кода программы следует рассмотреть основные нюансы используемых библиотек. Описание всех доступных API-функций библиотек есть на GitHub. К примеру, API библиотеки HTS221, которые нам понадобятся - следующие:

  1. Создание экземпляра датчика:

HumTemp = new HTS221Sensor (dev_i2c); // Создание экземпляра

HumTemp->Enable(); // Запуск работы датчика

  1. Считывание показаний:

HumTemp->GetHumidity(&humidity); // Считываем показания влажности

HumTemp->GetTemperature(&temperature); // Считываем температуру

  1. Активация I2C-интерфейса для обмена с датчиком:

dev_i2c = new TwoWire(I2C2_SDA, I2C2_SCL);

dev_i2c->begin();

Интегрируем все необходимые библиотеки при помощи прямой вставки #include в созданный ранее проект X_NUCLEO_IKS01A2_HelloWorld, и организуем считывание показаний датчиков платы расширения и передачи их на персональный компьютер (листинг 3).

Листинг 3. Пример считывания и передачи показаний датчиков на базе проекта X_NUCLEO_IKS01A2_HelloWorld

// Подключение заголовочных файлов нужных библиотек

#include <HTS221Sensor.h>

#include <LPS22HBSensor.h>

#include <LSM303AGR_ACC_Sensor.h>

#include <LSM303AGR_MAG_Sensor.h>

#include <LSM6DSLSensor.h>

// Определение последовательного интерфейса и I2C

#define DEV_I2C Wire

#define SerialPort Serial

// Определение экземпляров для датчиков

HTS221Sensor *HumTemp;

LPS22HBSensor *PressTemp;

LSM6DSLSensor *AccGyr;

LSM303AGR_ACC_Sensor *Acc2;

LSM303AGR_MAG_Sensor *Mag;

// Функция инициализации

void setup() {

 // Настройка вывода для светодиода

 pinMode(LED_BUILTIN, OUTPUT);

 // Инициализация последовательного порта. Скорость 115200 кбит/с
 
 SerialPort.begin(115200);
 
 // Инициализация I2C
 
 DEV_I2C.begin();

 // Инициализация экземпляров
 
 HumTemp = new HTS221Sensor (&DEV_I2C);
 
 HumTemp->Enable();
 
 PressTemp = new LPS22HBSensor (&DEV_I2C);
 
 PressTemp->Enable();
 
 AccGyr = new LSM6DSLSensor(&DEV_I2C);
 
 AccGyr->Enable_X();
 
 AccGyr->Enable_G();
 
 Acc2 = new LSM303AGR_ACC_Sensor(&DEV_I2C);
 
 Acc2->Enable();
 
 Mag = new LSM303AGR_MAG_Sensor(&DEV_I2C);
 
 Mag->Enable();
 
}
 
// Основная функция
 
void loop() {
 
 // Мигание светодиодом (пример 1)
 
 digitalWrite(LED_BUILTIN, HIGH); // Включение светодиода
 
 delay(250); // Организация задержки 250 мс (0,25 секунды)
 
 digitalWrite(LED_BUILTIN, LOW); // Выключение светодиода

 delay(250); // Организация задержки 250 мс (0.25 секунды)
 
 // Считываем влажность и температуру из датчика HTS221
 
 float humidity, temperature;
 
 HumTemp->GetHumidity(&humidity);
 
 HumTemp->GetTemperature(&temperature);
 
 // Считываем давление и температуру из датчика LPS22HB
 
 float pressure, temperature2;
 
 PressTemp->GetPressure(&pressure);
 
 PressTemp->GetTemperature(&temperature2);
 
 // Считываем показания акселерометра и гироскопа из датчика LSM6DSL
 
 int32_t accelerometer[3];
 
 int32_t gyroscope[3];
 
 AccGyr->Get_X_Axes(accelerometer);
 
 AccGyr->Get_G_Axes(gyroscope);
 
 // Считываем показания акселерометра из комбинированного модуля LSM303AGR
 
 int32_t accelerometer2[3];

 Acc2->GetAxes(accelerometer2);
 
 // Считываем показания магнитометра из комбинированного модуля LSM303AGR
 
 int32_t magnetometer[3];
 
 Mag->GetAxes(magnetometer);
 
 // Выводим данные через последовательный порт на персональный компьютер
 
 SerialPort.print("| Hum[%]: ");
 
 SerialPort.print(humidity, 2);
 
 SerialPort.print(" | Temp[C]: ");
 
 SerialPort.print(temperature, 2);
 
 SerialPort.print(" | Pres[hPa]: ");
 
 SerialPort.print(pressure, 2);
 
 SerialPort.print(" | Temp2[C]: ");
 
 SerialPort.print(temperature2, 2);
 
 SerialPort.print(" | Acc[mg]: ");
 
 SerialPort.print(accelerometer[0]);
 
 SerialPort.print(" ");
 
 SerialPort.print(accelerometer[1]);
 
 SerialPort.print(" ");
 
 SerialPort.print(accelerometer[2]);
 
 SerialPort.print(" | Gyr[mdps]: ");
 
 SerialPort.print(gyroscope[0]);
 
 SerialPort.print(" ");
 
 SerialPort.print(gyroscope[1]);
 
 SerialPort.print(" ");
 
 SerialPort.print(gyroscope[2]);
 
 SerialPort.print(" | Acc2[mg]: ");
 
 SerialPort.print(accelerometer2[0]);
 
 SerialPort.print(" ");
 
 SerialPort.print(accelerometer2[1]);
 
 SerialPort.print(" ");
 
 SerialPort.print(accelerometer2[2]);
 
 SerialPort.print(" | Mag[mGauss]: ");
 
 SerialPort.print(magnetometer[0]);
 
 SerialPort.print(" ");
 
 SerialPort.print(magnetometer[1]);
 
 SerialPort.print(" ");
 
 SerialPort.print(magnetometer[2]);
 
 SerialPort.println(" |");
 
}

После компиляции и загрузки кода для проверки его работоспособности необходимо открыть терминал в меню «Tools» (рис. 21).

Открытие терминала в меню «Tools»

Рис. 21. Открытие терминала в меню «Tools»

Далее необходимо настроить скорость передачи в соответствии с заданным в коде параметром (115200 бод). Если все сделано верно, на экране начнут появляться данные с датчиков (рис. 22).

Прием данных с датчиков платы по последовательному порту

Рис. 22. Прием данных с датчиков платы по последовательному порту

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

Заключение

Создание прототипов устройств и простых готовых решений на базе STM32 стало еще проще благодаря возможности организации связки Arduino - Nucleo.

Такая организация стала возможной благодаря библиотеке STM32duino, которая, помимо основных плат Nucleo, также поддерживает широкий спектр плат расширения STM32 Nucleo Expansion Boards и датчиков производства STMicroelectronics

Высокая производительность 32-битных микроконтроллеров достигается благодаря высокой частоте работ, достаточному объему памяти, малому потреблению энергии, наличию всевозможной периферии и максимально простому интерфейсу платформы Arduino. Это может стать действительно полезным решением не только для любителей, но и для профессионалов.

Опубликованные главы

  1. Возможности связки Arduino и Nucleo: Производительность STM32G0 и простота Arduino IDE. Часть 1
Производитель: STMicroelectronics
Наименование
Производитель
Описание Корпус/
Изображение
Цена, руб. Наличие
NUCLEO-F103RB
NUCLEO-F103RB
STMicroelectronics
Арт.: 1318065 ИНФО PDF AN RD
Доступно: 289 шт. 1370,00
NUCLEO-F103RB – отладочная плата на базе микроконтроллера STM32F103RBT6, представляет собой гибкую платформу, позволяющую разработчикам реализовать собственные идеи и в кратчайшие сроки сделать прототип будущего изделия
NUCLEO-F103RB 1370,00 от 3 шт. 1170,00 от 7 шт. 1060,00 от 14 шт. 977,00 от 36 шт. 928,00
22 шт.
(на складе)
267 шт.
(под заказ)
NUCLEO-F302R8
NUCLEO-F302R8
STMicroelectronics
Арт.: 1318066 ИНФО PDF AN RD
Доступно: 251 шт. от 1 шт. от 1691,78
Выбрать
условия
поставки
NUCLEO-F302R8 – отладочная плата на базе микроконтроллера STM32F302R8T6, представляет собой гибкую платформу, позволяющую разработчикам реализовать собственные идеи и в кратчайшие сроки сделать прототип будущего изделия
NUCLEO-F302R8 от 1 шт. от 1691,78
251 шт.
(под заказ)
Выбрать
условия
поставки
NUCLEO-F401RE
NUCLEO-F401RE
STMicroelectronics
Арт.: 1318067 ИНФО PDF AN RD
Доступно: 277 шт. 1750,00
NUCLEO-F401RE  – отладочная плата на базе микроконтроллера STM32F401RE представляет собой гибкую платформу, позволяющую разработчикам реализовать собственные идеи и в кратчайшие сроки сделать прототип будущего изделия
NUCLEO-F401RE 1750,00 от 3 шт. 1500,00 от 5 шт. 1350,00 от 11 шт. 1250,00 от 28 шт. 1190,00
33 шт.
(на складе)
244 шт.
(под заказ)
NUCLEO-F030R8
NUCLEO-F030R8
STMicroelectronics
Арт.: 1320257 ИНФО PDF AN RD
Доступно: 280 шт. 1380,00
NUCLEO-F030R8 – отладочная плата на базе микроконтроллера STM32F030R8T6, представляет собой гибкую платформу, позволяющую разработчикам реализовать собственные идеи и в кратчайшие сроки сделать прототип будущего изделия. Zephyr OS
NUCLEO-F030R8 1380,00 от 3 шт. 1180,00 от 7 шт. 1060,00 от 14 шт. 983,00 от 35 шт. 934,00
16 шт.
(на складе)
264 шт.
(под заказ)
NUCLEO-F091RC
NUCLEO-F091RC
STMicroelectronics
Арт.: 1899621 ИНФО PDF AN RD
Доступно: 251 шт. от 1 шт. от 1441,37
Выбрать
условия
поставки
NUCLEO-F091RC – отладочная плата семейства STM32 Nucleo-64 на основе микроконтроллера STM32F091RCT6 с поддержкой Arduino и ST Morpho соединителей
NUCLEO-F091RC от 1 шт. от 1441,37
251 шт.
(под заказ)
Выбрать
условия
поставки
NUCLEO-F303RE
NUCLEO-F303RE
STMicroelectronics
Арт.: 1899622 ИНФО PDF AN RD
Доступно: 250 шт. 1380,00
NUCLEO-F303RE – одна из отладочных плат линейки STM32 NUCLEO, которая позволяет реализовать свои идеи и построить прототипы на основе микроконтроллеров STM32, выбирая различные комбинации производительности, мощности рассеивания и другие характеристики
NUCLEO-F303RE 1380,00 от 3 шт. 1190,00 от 7 шт. 1070,00 от 14 шт. 989,00 от 35 шт. 939,00
9 шт.
(на складе)
241 шт.
(под заказ)
NUCLEO-F042K6
NUCLEO-F042K6
STMicroelectronics
Арт.: 2076818 ИНФО PDF AN RD
Доступно: 249 шт. 1330,00
NUCLEO-F042K6 – отладочная плата из семейства STM32 NUCLEO-32, которое предоставляет доступный и гибкий путь для пользователей проверить новые идеи и создать прототипы на основе микроконтроллеров STM32, выбирая различные сочетания производительности, потребления и других параметров
NUCLEO-F042K6 1330,00 от 3 шт. 1140,00 от 7 шт. 1030,00 от 14 шт. 953,00 от 36 шт. 906,00
12 шт.
(на складе)
237 шт.
(под заказ)
NUCLEO-F031K6
NUCLEO-F031K6
STMicroelectronics
Арт.: 2076819 ИНФО PDF AN RD
Доступно: 250 шт. 1320,00
NUCLEO-F031K6 – отладочная плата из линейки STM32 Nucleo-32, обеспечивающей пользователям доступный и гибкий способ проверить свои новые идеи и создать прототипы будущих изделий на основе микроконтроллеров STM32 в 32-выводном корпусе, выбирая различные комбинации производительности, потребляемой мощности и другие характеристики
NUCLEO-F031K6 1320,00 от 3 шт. 1130,00 от 7 шт. 1020,00 от 14 шт. 940,00 от 37 шт. 893,00
48 шт.
(на складе)
202 шт.
(под заказ)
NUCLEO-F410RB
NUCLEO-F410RB
STMicroelectronics
Арт.: 2082316 ИНФО PDF AN RD
Доступно: 157 шт. 1650,00
NUCLEO-F410RB – отладочная плата семейства STM32 Nucleo-64, изготовленная на основе ARM Cortex-M4F микроконтроллера STM32F410RBT6
NUCLEO-F410RB 1650,00 от 3 шт. 1420,00 от 6 шт. 1280,00 от 12 шт. 1180,00 от 29 шт. 1120,00
8 шт.
(на складе)
149 шт.
(под заказ)
NUCLEO-F303K8
NUCLEO-F303K8
STMicroelectronics
Арт.: 2087245 ИНФО PDF AN RD
Доступно: 318 шт. 1350,00
NUCLEO-F303K8  – отладочная плата из линейки STM32 Nucleo-32, обеспечивающей пользователям доступный и гибкий способ проверить свои новые идеи и создать прототипы будущих изделий на основе микроконтроллеров STM32 в 32-выводном корпусе, выбирая различные комбинации производительности, потребляемой мощности и другие характеристики
NUCLEO-F303K8 1350,00 от 3 шт. 1160,00 от 7 шт. 1040,00 от 14 шт. 965,00 от 36 шт. 917,00
16 шт.
(на складе)
302 шт.
(под заказ)
NUCLEO-L031K6
NUCLEO-L031K6
STMicroelectronics
Арт.: 2087254 ИНФО PDF AN RD
Доступно: 251 шт. 1350,00
NUCLEO-L031K6 – отладочная плата из линейки STM32 Nucleo-32, обеспечивающей пользователям доступный и гибкий способ проверить свои новые идеи и создать прототипы будущих изделий на основе микроконтроллеров STM32 в 32-выводном корпусе, выбирая различные комбинации производительности, потребляемой мощности и другие характеристики
NUCLEO-L031K6 1350,00 от 3 шт. 1160,00 от 7 шт. 1040,00 от 14 шт. 965,00 от 36 шт. 917,00
2 шт.
(на складе)
249 шт.
(под заказ)
NUCLEO-L011K4
NUCLEO-L011K4
STMicroelectronics
Арт.: 2089550 ИНФО PDF AN RD
Доступно: 206 шт. 1480,00
NUCLEO-L011K4 - отладочная плата из линейки STM32 Nucleo-32, обеспечивающей пользователям доступный и гибкий способ проверить свои новые идеи и создать прототипы будущих изделий на основе микроконтроллеров STM32 в 32-выводном корпусе, выбирая различные комбинации производительности, потребляемой мощности и другие характеристики
NUCLEO-L011K4 1480,00 от 3 шт. 1270,00 от 6 шт. 1140,00 от 13 шт. 1060,00 от 33 шт. 1000,00
5 шт.
(на складе)
201 шт.
(под заказ)
NUCLEO-L432KC
NUCLEO-L432KC
STMicroelectronics
Арт.: 2176346 ИНФО PDF AN RD
Доступно: 200 шт. 1380,00
NUCLEO-L432KC – отладочная плата из линейки STM32 NUCLEO на основе 32-битного ультрамаломощного FPU ARM Cortex-M4 микроконтроллера 
NUCLEO-L432KC 1380,00 от 3 шт. 1190,00 от 7 шт. 1070,00 от 14 шт. 989,00 от 35 шт. 939,00
12 шт.
(на складе)
188 шт.
(под заказ)
STM32G071CBT6
STM32G071CBT6
STMicroelectronics
Арт.: 3041139 ИНФО PDF AN RD DT
Доступно: 1603 шт. 219,00
IC MCU 32BIT 128KB FLASH 48LQFP
STM32G071CBT6 219,00 от 20 шт. 187,00 от 40 шт. 169,00 от 85 шт. 156,00 от 220 шт. 148,00
76 шт.
(на складе)
1527 шт.
(под заказ)
STM32G071CBU6
STM32G071CBU6
STMicroelectronics
Арт.: 3041140 ИНФО PDF AN RD DT
Доступно: 801 шт. 229,00
MCU, 32BIT, 64MHZ, UFQFPN-48
STM32G071CBU6 229,00 от 17 шт. 197,00 от 37 шт. 177,00 от 80 шт. 164,00 от 200 шт. 156,00
15 шт.
(на складе)
786 шт.
(под заказ)
STM32G071CBT6TR
STM32G071CBT6TR
STMicroelectronics
Арт.: 3094555 ИНФО PDF AN RD DT
Доступно: 2025 шт. от 35 шт. от 160,10
Выбрать
условия
поставки
Микросхема микроконтроллера ARM® Cortex®-M0 + STM32G0, 32-разрядная, 64 МГц, 128 КБ, 128 КБ, 128 МБ FLASH, 48-LQFP (7x7)
STM32G071CBT6TR от 35 шт. от 160,10
2025 шт.
(под заказ)
Выбрать
условия
поставки
NUCLEO-L412KB
NUCLEO-L412KB
STMicroelectronics
Арт.: 3200979 ИНФО RD
Доступно: 212 шт. от 1 шт. от 1526,94
Выбрать
условия
поставки
Отладочная плата STM32 NUCLEO-32 на основе микроконтроллера  STM32L412KB.
NUCLEO-L412KB от 1 шт. от 1526,94
212 шт.
(под заказ)
Выбрать
условия
поставки
NUCLEO-G431KB
NUCLEO-G431KB
STMicroelectronics
Арт.: 3418359 ИНФО AN
Доступно: 178 шт. от 1 шт. от 1812,00
Выбрать
условия
поставки
Отладочная плата семейства STM32 NUCLEO-32 с микроконтроллером STM32G431KB.
NUCLEO-G431KB от 1 шт. от 1812,00
178 шт.
(под заказ)
Выбрать
условия
поставки

Сравнение позиций

  • ()