Руководство пользователя Arduino UNO R4 Minima

Узнайте, как настроить UNO R4 Minima — четвёртую ревизию нашей самой популярной и важной платы для разработки.

Arduino UNO R4 Minima — это плата для разработки с классическим форм-фактором UNO, построенная на микроконтроллере RA4M1, произведённом компанией Renesas. Теперь она оснащена 32 КБ оперативной памяти, тактовой частотой 48 МГц и портом USB-C.

Это первая плата UNO, использующая 32-битную архитектуру, тогда как предыдущие версии были основаны на 8-битной архитектуре AVR.

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

Даташит

Полный даташит доступен для загрузки в формате PDF по ссылке ниже:

Питание

Для питания UNO R4 Minima вы можете использовать либо кабель USB-C, либо вывод VIN.

Плата может питаться через вывод VIN, поддерживающий диапазон от 6 до 24 В. Вывод VIN также подключён к разъёму DC-jack (цилиндрический штекерный разъём).

При питании через вывод VIN вы используете встроенный стабилизатор напряжения для понижения напряжения до 5 В, что означает, что вывод 5 V может обеспечить ток до 1,2 А. Имейте в виду, что этот стабилизатор напряжения также питает остальную часть платы, включая микроконтроллер, светодиоды и другие компоненты.

Предупреждение

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

Если вы используете разъём USB-C, необходимо подавать питание 5 В.

При питании через USB вы полностью обходите встроенный стабилизатор напряжения. В этом случае вывод 5 V может обеспечить ток до 2 А без повреждения платы.

Пакет платы

UNO R4 Minima основана на пакете плат UNO R4.

Установка

UNO R4 Minima можно программировать через Arduino IDE, Arduino Cloud Editor или Arduino CLI.

Arduino IDE

Для использования платы в Arduino IDE необходимо установить последнюю версию пакета Arduino UNO R4 Boards из менеджера плат.

Подробнее читайте в руководстве Начало работы с UNO R4 Minima.

Arduino Cloud Editor

Cloud Editor — это онлайн-IDE, которая включает все официальные платы, без необходимости устанавливать пакет плат. Для использования Cloud Editor вам потребуется установить плагин Create на ваш компьютер.

Подробнее читайте в руководстве Начало работы с Cloud Editor.

Renesas RA4M1

UNO R4 Minima оснащена мощным и очень надёжным микроконтроллером Renesas, который также используется в UNO R4 WiFi. Микроконтроллеры Renesas известны своей высокой производительностью и надёжностью, включая встроенный набор периферийных устройств.

Эти периферийные устройства включают аналого-цифровые преобразователи, таймеры, блоки широтно-импульсной модуляции (ШИМ), интерфейсы связи (такие как UART, SPI и I2C) и многое другое.

Микроконтроллер на UNO R4 Minima

Микроконтроллер на UNO R4 Minima

Память

Плата оснащена:

  • 32 КБ SRAM

  • 256 КБ Flash

  • 8 КБ данных (EEPROM)

Выводы (пины)

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

Ниже приведена полная таблица всех выводов ввода/вывода на UNO R4 Minima:

Вывод

Тип

Функция

D0

Цифровой

Приём UART

D1

Цифровой

Передача UART

D2

Цифровой

GPIO, прерывание

D3

Цифровой

GPIO, прерывание, ШИМ

D4

Цифровой

GPIO

D5

Цифровой

GPIO, ШИМ

D6

Цифровой

GPIO, ШИМ

D7

Цифровой

GPIO

D8

Цифровой

GPIO

D9

Цифровой

GPIO, ШИМ

D10

Цифровой

SPI (CS), GPIO, ШИМ

D11

Цифровой

SPI (CIPO), GPIO, ШИМ

D12

Цифровой

SPI (COPI), GPIO

D13

Цифровой

SPI (SCK), GPIO, встроенный светодиод

A0

Аналоговый

Аналоговый вход, DAC

A1

Аналоговый

Аналоговый вход, OPAMP +

A2

Аналоговый

Аналоговый вход, OPAMP -

A3

Аналоговый

Аналоговый вход, OPAMP OUT

A4

Аналоговый

Аналоговый вход, SDA*

A5

Аналоговый

Аналоговый вход, SCL*

Примечание

Выводы A4 и A5 подключены к одной и той же шине I2C.

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

UNO R4 Minima имеет шесть аналоговых входов (A0-A5), которые можно считывать с помощью функции analogRead().

Вывод

Тип

Функция

A0

Аналоговый

Аналоговый вход, DAC

A1

Аналоговый

Аналоговый вход, OPAMP +

A2

Аналоговый

Аналоговый вход, OPAMP -

A3

Аналоговый

Аналоговый вход, OPAMP OUT

A4

Аналоговый

Аналоговый вход, SDA*

A5

Аналоговый

Аналоговый вход, SCL*

Примечание

Выводы A4 и A5 подключены к одной и той же шине I2C.

value = analogRead(pin);

Опорное напряжение этих выводов по умолчанию составляет 5 В, но его можно изменить следующим образом:

  • analogReference(AR_DEFAULT) — опорное напряжение по умолчанию 5 В

  • analogReference(AR_INTERNAL) — встроенное опорное напряжение 1,5 В

Разрешение по умолчанию установлено на 10 бит, но может быть обновлено до 12-битного и 14-битного разрешения. Для этого используйте следующий метод в setup() вашего скетча:

  • analogReadResolution(10) — по умолчанию

  • analogReadResolution(12)

  • analogReadResolution(14)

Чтобы узнать больше о возможностях АЦП UNO R4 Minima, ознакомьтесь с руководством по разрешению АЦП.

Выводы OPAMP

RA4M1 имеет встроенный операционный усилитель (OPAMP), который на UNO R4 Minima представлен следующими выводами:

Вывод

OPAMP

A1

OPAMP +

A2

OPAMP -

A3

OPAMP OUT

ШИМ (PWM)

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

UNO R4 Minima поддерживает ШИМ на выводах, отмеченных символом ~ на гребёнке. Официально поддерживаемые выводы:

Вывод

RA4M1

Таймер

D3

P104

GTIOC1B

D5

P102

GTIOC2B

D6

P106

GTIOC0B

D9

P303

GTIOC7B

D10

P112

GTIOC3B

D11

P109

GTIOC1A

Вы можете использовать их как аналоговые выходы с помощью функции:

analogWrite(pin, value);

По умолчанию разрешение составляет 8 бит (0-255). Вы можете использовать analogWriteResolution() для его изменения, поддерживается разрешение до 12 бит (0-4096).

analogWriteResolution(resolution);

Цифровые выводы

UNO R4 Minima имеет в общей сложности 14 цифровых выводов. Хотя некоторые из них служат другой цели и не должны использоваться как GPIO, если у вас есть другие свободные выводы.

Вывод

Тип

Функция

D0

Цифровой

Приём UART

D1

Цифровой

Передача UART

D2

Цифровой

GPIO, прерывание

D3

Цифровой

GPIO, прерывание, ШИМ

D4

Цифровой

GPIO

D5

Цифровой

GPIO, ШИМ

D6

Цифровой

GPIO, ШИМ

D7

Цифровой

GPIO

D8

Цифровой

GPIO

D9

Цифровой

GPIO, ШИМ

D10

Цифровой

SPI (CS), GPIO, ШИМ

D11

Цифровой

SPI (CIPO), GPIO, ШИМ

D12

Цифровой

SPI (COPI), GPIO

D13

Цифровой

SPI (SCK), GPIO, встроенный светодиод

Кроме того, аналоговые выводы A0-A5 также могут использоваться как цифровые выводы. Обратите внимание, что A4/A5 зарезервированы для шины I2C.

Опорное напряжение всех цифровых выводов составляет 5 В.

Светодиоды (LED)

UNO R4 Minima имеет в общей сложности четыре светодиода, три из которых программируемые:

  • ON — светодиод питания, не программируется.

  • LED_BUILTIN — классический «встроенный светодиод», подключённый к выводу 13.

  • LED_RX — светодиод с маркировкой «RX» на плате.

  • LED_TX — светодиод с маркировкой «TX» на плате.

Для управления ими определите их как выходы и запишите желаемое состояние. Приведённый ниже пример мигает каждым светодиодом раз в секунду.

void setup(){
  //определяем выводы как выходы
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(LED_RX, OUTPUT);
  pinMode(LED_TX, OUTPUT);
}

void loop(){
  //включаем все светодиоды
  digitalWrite(LED_BUILTIN, HIGH);
  digitalWrite(LED_RX, LOW);
  digitalWrite(LED_TX, LOW);
  delay(1000);

  //выключаем все светодиоды
  digitalWrite(LED_BUILTIN, LOW);
  digitalWrite(LED_RX, HIGH);
  digitalWrite(LED_TX, HIGH);
  delay(1000);
}

DAC

Вывод DAC

Вывод DAC

UNO R4 Minima имеет ЦАП (цифро-аналоговый преобразователь) с разрешением до 12 бит, который может работать как настоящий аналоговый выход, что делает его ещё более функциональным, чем выводы ШИМ.

analogWrite(pin, value);

Этот вывод DAC имеет разрешение записи по умолчанию 8 бит. Это означает, что значения, записываемые на вывод, должны быть в диапазоне 0-255.

Однако вы можете изменить это разрешение записи при необходимости до 12 бит, и в этом случае значения, записываемые на вывод, должны быть в диапазоне 0-4096.

analogWriteResolution(12);

Чтобы узнать больше о возможностях DAC UNO R4 Minima, ознакомьтесь с руководством по DAC.

RTC

Часы реального времени (RTC) используются для измерения времени и полезны в любом приложении, связанном с отслеживанием времени.

Ниже приведён минимальный пример, показывающий, как получить дату и время из RTC:

#include "RTC.h"

void setup() {
  Serial.begin(9600);

  RTC.begin();
  RTCTime mytime(30, Month::JUNE, 2023, 13, 37, 00, DayOfWeek::WEDNESDAY, SaveLight::SAVING_TIME_ACTIVE);

  RTC.setTime(mytime);
}

void loop() {
  RTCTime currenttime;

  // Получаем текущее время из RTC
  RTC.getTime(currenttime);

  // Выводим дату (ДД/ММ/ГГГГ)
  Serial.print(currenttime.getDayOfMonth());
  Serial.print("/");
  Serial.print(Month2int(currenttime.getMonth()));
  Serial.print("/");
  Serial.print(currenttime.getYear());
  Serial.print(" - ");

  // Выводим время (ЧЧ:ММ:СС)
  Serial.print(currenttime.getHour());
  Serial.print(":");
  Serial.print(currenttime.getMinutes());
  Serial.print(":");
  Serial.println(currenttime.getSeconds());

  delay(1000);
}

Чтобы узнать больше о возможностях RTC UNO R4 Minima, ознакомьтесь с руководством по RTC.

EEPROM

EEPROM, также называемая памятью «данных», — это тип памяти, который может сохранять данные даже после отключения питания платы. Arduino UNO R4 Minima имеет 8 КБ EEPROM.

EEPROM.write(address, val);
EEPROM.read(address);

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

Подробнее читайте в руководстве по EEPROM.

Если вы хотите узнать больше о EEPROM, ознакомьтесь со статьёй об EEPROM Arduino UNO R4 Minima.

SPI

Выводы SPI

Выводы SPI

UNO R4 Minima оснащена интерфейсом последовательной периферийной связи (SPI). Шина (разъём) „SPI“ использует следующие выводы:

Вывод

Тип

D13

SCK

D12

CIPO

D11

COPI

D10

CS

Следующий пример показывает, как использовать SPI:

#include <SPI.h>

const int CS = 10;

void setup() {
  pinMode(CS, OUTPUT);

  SPI.begin();

  digitalWrite(CS, LOW);

  SPI.transfer(0x00);

  digitalWrite(CS, HIGH);
}

void loop() {
}

I2C

Выводы I2C

Выводы I2C

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

UNO R4 Minima имеет одну шину I2C, которая обозначена SCL и SDA. Они разделены с A4 (SDA) и A5 (SCL), что знакомо владельцам предыдущих версий UNO. Подтягивающие резисторы не установлены на печатной плате, но предусмотрены посадочные места для их монтажа при необходимости.

Отсутствие предустановленных подтягивающих резисторов имеет ряд преимуществ:

  • Поскольку выводы, используемые для I2C, напрямую подключены к A4 и A5 соответственно, они также могут использоваться как цифровые входы/выходы и аналоговые входы. Установка подтягивающих резисторов I2C на эти выводы ограничила бы их функциональность только I2C, так как по умолчанию они логически находились бы в состоянии HIGH.

  • Выбирая различные номиналы сопротивлений, вы можете определить, хотите ли вы работать с устройством I2C на 3,3 В или 5 В через эти выводы.

Выводы, используемые для I2C на UNO R4 Minima:

  • SDA — D18 или A4

  • SCL — D19 или A5

Для подключения устройств I2C вам потребуется подключить библиотеку Wire в начале вашего скетча.

#include <Wire.h>

В void setup() необходимо инициализировать библиотеку и порт I2C, который вы хотите использовать.

Wire.begin() //SDA & SDL

А чтобы записать что-либо на устройство, подключённое через I2C, можно использовать следующие команды:

Wire.beginTransmission(1); //начинаем передачу устройству 1
Wire.write(byte(0x00)); //отправляем байт инструкции
Wire.write(val); //отправляем значение
Wire.endTransmission(); //завершаем передачу

Подробнее о протоколе I2C читайте в руководстве по протоколу I2C.

USB Serial и UART

Плата UNO R4 Minima оснащена двумя отдельными аппаратными последовательными портами.

  • Один порт доступен через USB-C, и

  • один — через выводы RX/TX.

Это одно из немногих существенных отличий UNO R3 от UNO R4, поскольку UNO R3 имеет только один аппаратный последовательный порт, который подключён одновременно к USB-порту и выводам RX/TX на плате.

Нативный USB

Отправка последовательных данных на компьютер выполняется с помощью стандартного объекта Serial.

Serial.begin(9600);
Serial.print("hello world");

Для отправки и приёма данных через UART сначала необходимо установить скорость передачи данных (бод) в void setup().

UART

Выводы, используемые для UART на UNO R4 Minima:

Вывод

Функция

D0

RX (приём)

D1

TX (передача)

Для отправки и приёма данных через UART сначала необходимо установить скорость передачи данных (бод) в void setup(). Обратите внимание, что при использовании UART (выводы RX/TX) мы используем объект Serial1.

Serial1.begin(9600);

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

while(Serial1.available()){
    delay(2);
    char c = Serial1.read();
    incoming += c;
  }

А чтобы отправить что-либо, можно использовать следующую команду:

Serial1.write("Hello world!");

Serial Event

Метод serialEvent() поддерживается на старых ревизиях платы UNO, но не поддерживается на платах UNO R4 (или любых других новых платах Arduino).

Однако, поскольку этот метод используется только для обнаружения последовательных данных и выполнения функции, вы также можете использовать Serial.available() для определения поступления новых данных:

if(Serial.available() > 0) {
  //код здесь
}

SerialUSB

UNO R4 Minima имеет расширенный набор методов Serial:

  • Serial.baud() — возвращает текущую скорость передачи данных (int).

  • Serial.stopbits() — возвращает количество стоп-битов (int), используемых в обмене данными.

  • Serial.paritytype() — возвращает тип чётности (int), используемый в обмене данными.

  • Serial.numbits() — возвращает количество битов данных (int), используемых в обмене данными.

  • Serial.dtr() — возвращает состояние сигнала Data Terminal Ready (DTR) (bool), а также устанавливает флаг ignore_dtr в true, если сигнал DTR активно используется.

  • Serial.rts() — возвращает состояние сигнала Request to Send (RTS) (bool).

Полезные ссылки:

USB HID

Эта плата может работать как HID-устройство (клавиатура/мышь) и отправлять нажатия клавиш или координаты на компьютер через нативный USB.

keyboard.press('W');
mouse.move(x,y);

Эта поддержка обеспечивается библиотеками keyboard и mouse, которые можно установить из менеджера библиотек в IDE.

Чтобы узнать больше о возможностях HID UNO R4 Minima, ознакомьтесь с руководством по HID.

Разъём SWD

Разъём SWD

Разъём SWD

На UNO R4 Minima доступна возможность отладки с использованием выводов разъёма SWD, предоставляющая расширенные функции отладки для более продвинутых пользователей.

Модуль CAN

Микроконтроллер RA4M1 на UNO R4 Minima имеет встроенный модуль CAN, соответствующий стандарту CAN 2.0A/CAN 2.0B.

Выводы CANRX и CANTX могут быть подключены к приёмопередатчику CAN, такому как микросхемы MCP2551 или TJA1050.

Вывод

Функция

D4

CANTX

D5

CANRX

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

//устанавливаем скорость CAN и инициализируем библиотеку
//выбирайте из BR_125k, BR_250k, BR_500k, BR_1000k
CAN.begin(CanBitRate::BR_250k);

Создание CAN-сообщения и его отправка:

uint8_t const msg_data[] = {0xCA,0xFE,0,0,0,0,0,0};
memcpy((void *)(msg_data + 4), &msg_cnt, sizeof(msg_cnt));
CanMsg msg(CAN_ID, sizeof(msg_data), msg_data);
CAN.write(msg);

Чтение входящего CAN-сообщения:

CanMsg const msg = CAN.read(); //чтение

Важно

Без приёмопередатчика CAN невозможно обмениваться данными с другими CAN-устройствами.

Загрузчик (Bootloader)

Если вам необходимо прошить загрузчик на UNO R4 Minima, выполните следующие шаги:

Шаг 1

Установите пакет плат UNO R4, как описано в руководстве по началу работы.

Шаг 2

Перейдите по пути: C:\Users\YourWindowsUserName\AppData\Local\Arduino15\packages\arduino\hardware\renesas_uno\1.X\bootloaders\UNO_R4

Шаг 3

Найдите файл dfu_minima.hex.

Шаг 4

Установите программатор Renesas Flash Programmer (страница загрузки).

Предупреждение

Программатор Renesas Flash Programmer в настоящее время доступен только для Windows.

Шаг 5

Прошейте загрузчик с помощью программатора Renesas:

  • Выберите файл dfu_minima.hex.

  • Подключите вашу плату.

  • Замкните выводы BOOT и GND на UNO R4 Minima.

  • Перейдите на вкладку Connect Settings.

  • Выберите COM-порт в меню Tool > выберите порт, отображаемый в IDE.

  • Нажмите Start.

Совет

Для получения дополнительной информации ознакомьтесь с файлом README.md или страницей на GitHub.