Справочник по распиновке Arduino UNO R4 WiFi
Arduino UNO R4 WiFi представляет собой значительный шаг вперёд для сообщества мейкеров, привнося бесшовное беспроводное подключение в классический форм-фактор UNO. Как и его собрат UNO R4 Minima, он знаменует окончательный переход от старой 8-битной архитектуры AVR (ATmega328P в Arduino UNO R3) к современной и гораздо более мощной 32-битной экосистеме Arm Cortex-M.
Благодаря интеграции мощного микроконтроллера Renesas RA4M1 совместно с сопроцессором ESP32-S3, UNO R4 WiFi обеспечивает значительный прирост скорости, памяти и возможностей, добавляя надёжную функциональность Wi-Fi и Bluetooth Low Energy (BLE).
Помимо беспроводных функций, UNO R4 WiFi сохраняет расширенные возможности платформы R4: шину CAN, OPAMP, DAC и поддержку HID через USB. Он также добавляет уникальные функции: встроенную светодиодную матрицу 12x8 и разъём Qwiic.
Однако эти дополнительные возможности означают, что есть важные различия, которые необходимо понимать перед подключением проектов по привычке. В частности, UNO R4 WiFi вводит изменения в архитектуру питания, сигнальные домены (включая взаимодействие между стороной RA4M1 на 5V и стороной ESP32-S3 на 3,3V) и ограничения тока GPIO. Если вы переходите с Arduino UNO R3, внимательно изучите распиновку для безопасного и эффективного использования новых функций.
Распиновка Arduino UNO R4 WiFi
UNO R4 WiFi имеет 35 выводов. Распиновка выглядит следующим образом:
Давайте подробнее рассмотрим выводы Arduino и их функции, начиная с цифровых выводов.
Цифровые выводы ввода/вывода Arduino UNO R4 WiFi
UNO R4 WiFi включает 14 цифровых выводов ввода/вывода с маркировкой от D0 до D13.
Вы можете настроить эти выводы как входы или выходы. В режиме входа вывод может считывать цифровые сигналы, например, нажата ли кнопка. В режиме выхода он может отправлять цифровые сигналы для управления устройствами: светодиодами, моторами или реле.
Для использования цифрового вывода сначала укажите Arduino его поведение с помощью функции pinMode(). Для установки как входа используйте pinMode(pin, INPUT) и считывайте состояние функцией digitalRead(pin). Для выхода — pinMode(pin, OUTPUT) и управляйте записью digitalWrite(pin, HIGH) для включения или digitalWrite(pin, LOW) для выключения.
Важные электрические ограничения: выводы работают на логическом уровне 5V. Каждый цифровой вывод может безопасно обрабатывать до 8 мА тока, а суммарный ток всех цифровых выводов не должен превышать 60 мА.
Это важное отличие от микроконтроллера ATmega328P на UNO R3, где каждый вывод мог обрабатывать от 20 до 40 мА. При переходе с UNO R3 будьте осторожны и не подключайте высокотоковые нагрузки напрямую без токоограничивающих резисторов или транзисторных ключей. Превышение лимита 8 мА может привести к неожиданному падению напряжения на выводе или необратимому повреждению внутренних выходных драйверов микроконтроллера.
Внутренние подтягивающие резисторы
Каждый цифровой вывод UNO R4 WiFi включает встроенный подтягивающий резистор. Эта функция особенно полезна, когда вывод используется как вход и к нему ничего не подключено. Без подтягивающего резистора входной вывод может «плавать», случайно переключаясь между HIGH и LOW из-за электрических помех.
Внутренний подтягивающий резистор решает эту проблему, мягко подтягивая напряжение вывода к HIGH. Для включения используйте pinMode(pin, INPUT_PULLUP) вместо pinMode(pin, INPUT).
Значение подтягивающего резистора не фиксировано, но обычно составляет около 20 кОм.
Выводы прерываний Arduino UNO R4 WiFi
Выводы прерываний — это специальные цифровые входные выводы, запускающие определённый блок кода (ISR) при внешнем событии. Это позволяет Arduino мгновенно реагировать без постоянной проверки состояния вывода в основном цикле.
UNO R4 WiFi имеет два основных вывода внешних прерываний на выводах 2 и 3:
UNO R4 WiFi поддерживает четыре режима срабатывания:
Режим |
Условие срабатывания |
Типичные случаи применения |
|---|---|---|
RISING |
Вывод переходит из LOW в HIGH |
Обнаружение нажатия кнопки (подтяжка к земле) |
FALLING |
Вывод переходит из HIGH в LOW |
Обнаружение нажатия кнопки (подтяжка к питанию) |
CHANGE |
Вывод меняет состояние (в любом направлении) |
Считывание энкодера, подсчёт импульсов |
LOW |
Вывод остаётся на уровне LOW |
События по уровню сигнала |
Для настройки прерывания используется функция attachInterrupt(interrupt, ISR, mode). Значение interrupt указывает, какое прерывание использовать: interrupt 0 соответствует цифровому выводу 2, а interrupt 1 — цифровому выводу 3.
Важно понимать, что UNO R4 WiFi использует современный микроконтроллер на базе Cortex-M4 с системой контроллера вложенных векторных прерываний (NVIC). Эта система поддерживает прерывания практически на каждом цифровом и аналоговом выводе. Однако для простоты Arduino-ПО фокусируется на выводах D2 и D3.
Выводы PWM Arduino UNO R4 WiFi
Выводы PWM на UNO R4 WiFi — это цифровые выводы, имитирующие аналоговый выход путём быстрого переключения между HIGH и LOW. Ключевая идея — коэффициент заполнения, определяющий среднее напряжение.
UNO R4 WiFi предоставляет 6 выводов с поддержкой PWM: D3, D5, D6, D9, D10 и D11. Отмечены тильдой (~) на плате.
Примечание:
Выводы D0, D1, D2, D4, D7, D8, D12, D13, SDA и SCL поддерживают PWM, но могут конфликтовать с другими функциями на плате UNO R4 WiFi. Избегайте их использования, так как они не являются официально поддерживаемыми выводами PWM.
Для генерации PWM-сигнала установите вывод как выход с помощью pinMode(pin, OUTPUT) в setup(), затем используйте analogWrite(pin, value).
По умолчанию разрешение PWM — 8 бит (значения 0-255). Можно увеличить до 12 бит с помощью analogWriteResolution().
analogWriteResolution(12); //Sets the PWM resolution to 12 bits
analogWriteResolution(8); //Sets the PWM resolution to 8 bits (default)
Выводы АЦП Arduino UNO R4 WiFi
Аналоговые входные выводы UNO R4 WiFi считывают непрерывные аналоговые сигналы от датчиков. Arduino использует встроенный АЦП для преобразования аналогового напряжения в цифровое число.
UNO R4 WiFi имеет шесть аналоговых входных выводов: A0 — A5.
Для считывания используйте analogRead(pin). По умолчанию — 10-битное разрешение (0-1023). Можно увеличить до 12 или 14 бит. При 14-битном разрешении шаг составляет примерно 0,3 мВ.
analogReadResolution(10); //(default)
analogReadResolution(12);
analogReadResolution(14);
Выводы A0 — A5 также могут работать как обычные цифровые выводы.
Изменение аналогового опорного напряжения
По умолчанию диапазон 0-5V. Можно изменить с помощью вывода AREF и analogReference(type).
analogReference(AR_DEFAULT); //Uses the default analog reference of 5V.
analogReference(AR_INTERNAL); //Uses an internal reference voltage of 1.5V.
analogReference(AR_EXTERNAL); //Uses an external reference voltage applied to the AREF pin.
Вывод DAC Arduino UNO R4 WiFi
UNO R4 WiFi включает встроенный DAC. DAC преобразует цифровое значение в гладкое аналоговое напряжение. DAC доступен на аналоговом выводе A0.
Используется та же функция analogWrite(pin, value). По умолчанию — 8-битное разрешение (0-255). Можно увеличить до 12 бит (0-4095).
analogWrite(pin, value);
analogWriteResolution(12);
При использовании A0 как выхода DAC его нельзя одновременно использовать как аналоговый вход.
Выводы операционного усилителя Arduino UNO R4 WiFi
R4 WiFi включает встроенный операционный усилитель (ОУ). На аналоговом разъёме доступен один из четырёх внутренних ОУ: A1 — положительный вход, A2 — отрицательный вход, A3 — выход.
Для использования подключите библиотеку OPAMP.h и инициализируйте функцией OPAMP.begin(speed).
#include <OPAMP.h>
void setup () {
OPAMP.begin(OPAMP_SPEED_HIGHSPEED);
}
void loop() {
}
Примеры применения
ОУ можно использовать как повторитель напряжения (буфер), соединив A2 с A3. Как усилитель напряжения — подключив резисторы 10 кОм. Как компаратор — для сравнения двух напряжений.
Конечно, эти примеры — лишь начало возможностей встроенного ОУ.
Выводы ёмкостного сенсора Arduino UNO R4 WiFi
UNO R4 WiFi имеет 11 ёмкостных сенсорных GPIO: D0, D1, D2, D3, D8, D9, D11, D13, A1, A2 и LOVE_BUTTON (контактная площадка в форме сердца на обратной стороне платы).
Эти выводы обнаруживают приближение проводящего предмета, например пальца, измеряя изменение ёмкости. Можно прикрепить к выводам проводящий материал (алюминиевую фольгу, проводящую ткань) для создания сенсорных площадок.
Для использования установите библиотеку Arduino_CapacitiveTouch.
#include "Arduino_CapacitiveTouch.h"
CapacitiveTouch touchButton = CapacitiveTouch(D0);
void setup() {
touchButton.begin();
touchButton.setThreshold(2000);
}
void loop() {
int sensorValue = touchButton.read();
bool isTouched = touchButton.isTouched();
}
Выводы I2C Arduino UNO R4 WiFi
Одно из важнейших конструктивных улучшений UNO R4 WiFi — наличие двух отдельных шин I2C. Это решает давнюю проблему совместимости 5V и 3,3V.
Традиционная шина 5V
Первая шина I2C — традиционная шина 5V. Выводы SDA и SCL подключены к аналоговым выводам A4 (SDA) и A5 (SCL). Также доступны рядом с выводом AREF. Эта шина сохранена для совместимости со старыми шилдами и модулями 5V.
UNO R4 WiFi не включает встроенных подтягивающих резисторов на линиях I2C по умолчанию, но на плате есть контактные площадки для пайки.
Для использования шины 5V подключите библиотеку Wire:
#include <Wire.h>
void setup() {
Wire.begin();
Wire.beginTransmission(1); //begin transmit to device 1
Wire.write(byte(0x00)); //send instruction byte
Wire.write(val); //send a value
Wire.endTransmission(); //stop transmit
}
void loop() {
}
Шина Qwiic / STEMMA QT
UNO R4 WiFi также включает вторую шину I2C, подключённую к разъёму Qwiic/STEMMA QT. Этот разъём предназначен для простого подключения современных датчиков 3,3V от SparkFun и Adafruit.
Поскольку эта шина отделена от шины 5V, она защищает устройства 3,3V от воздействия сигналов 5V. Это позволяет безопасно использовать устройства обоих напряжений одновременно.
Для использования разъёма Qwiic/STEMMA QT используйте Wire1 вместо Wire:
#include <Wire.h>
void setup() {
Wire1.begin(); //join the second I2C bus
Wire1.beginTransmission(1); //begin transmit to device 1
Wire1.write(byte(0x00)); //send instruction byte
Wire1.write(val); //send a value
Wire1.endTransmission(); //stop transmit
}
void loop() {
}
Выводы SPI Arduino UNO R4 WiFi
UNO R4 WiFi поддерживает SPI (Serial Peripheral Interface) — быстрый тип последовательной связи.
Примечание:
UNO R4 WiFi использует современную терминологию Controller/Peripheral вместо Master/Slave.
Вывод 11 — COPI (ранее MOSI), вывод 12 — CIPO (ранее MISO), вывод 13 — SCK, вывод 10 — CS. Также доступен разъём ICSP.
#include <SPI.h>
const int CS = 10;
void setup() {
pinMode(CS, OUTPUT); // Set CS pin as output
SPI.begin(); // Initialize SPI bus
digitalWrite(CS, LOW); // Pull CS low to start communication with the device
SPI.transfer(0x00); // Send a single byte (0x00) over SPI
digitalWrite(CS, HIGH); // Pull CS high to end communication
}
void loop() {
}
Выводы UART Arduino UNO R4 WiFi
UNO R4 WiFi имеет два отдельных аппаратных UART:
Один через USB-C, а
Другой через выводы RX/TX.
На старом UNO R3 USB и выводы 0/1 были на одном интерфейсе. R4 WiFi разделяет их: USB-C доступен как Serial, а выводы 0/1 — как Serial1.
Serial1.begin(9600);
while (Serial1.available()) {
delay(2);
char c = Serial1.read();
incoming += c;
}
Serial1.write("Hello world!");
Выводы CAN Arduino UNO R4 WiFi
UNO R4 WiFi поддерживает CAN-связь. CAN-сигналы доступны на D4 (CAN TX) и D5 (CAN RX).
Важно: плата включает только CAN-контроллер, но не трансивер. Необходим внешний модуль (MCP2551 или TJA1050).
#include <Arduino_CAN.h>
CAN.begin(CanBitRate::BR_125k); //sets the bit rate to 125 kbps
CAN.begin(CanBitRate::BR_250k); //sets the bit rate to 250 kbps
CAN.begin(CanBitRate::BR_500k); //sets the bit rate to 500 kbps
CAN.begin(CanBitRate::BR_1000k); //sets the bit rate to 1 Mbps
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);
if (CAN.available()) {
CanMsg const msg = CAN.read();
Serial.println(msg);
}
Разъём ICSP Arduino UNO R4 WiFi
Разъём ICSP сохранён для совместимости с SPI-шилдами. Прошивка загрузчика через него не поддерживается, так как Renesas RA4M1 не поддерживает программирование по SPI.
Разъём ESP Arduino UNO R4 WiFi
UNO R4 WiFi включает небольшой штыревой разъём 2x3 рядом с кнопкой RESET для прямого доступа к модулю ESP32-S3.
Доступные выводы:
GPIO42 — отладка MTMS
GPIO41 — отладка MTDI
GPIO43 (TXD0) — последовательная передача (UART)
GPIO0 — Boot
GPIO44 (RXD0) — последовательный приём (UART)
GND — земля
Будьте очень осторожны: все сигналы работают при 3,3V. ESP32-S3 не толерантен к 5V. Подключение к сигналу 5V может необратимо повредить чип ESP32-S3.
Светодиодная матрица Arduino UNO R4 WiFi
Одна из самых заметных функций UNO R4 WiFi — встроенная светодиодная матрица 12x8. Она содержит 96 маленьких красных светодиодов, расположенных в 12 столбцах и 8 строках. Вы можете программировать этот дисплей для отображения паттернов, иконок, бегущего текста, анимаций и даже простых игр.
Все 96 светодиодов подключены с помощью технологии Charlieplexing, позволяющей управлять многими светодиодами с меньшим числом выводов микроконтроллера.
Для использования подключите библиотеку Arduino_LED_Matrix:
#include "Arduino_LED_Matrix.h"
ArduinoLEDMatrix matrix;
byte heart[8][12] = {
{ 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0 },
{ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },
{ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
{ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
void setup() {
Serial.begin(115200);
matrix.begin();
}
void loop() {
matrix.renderBitmap(heart, 8, 12);
}
Выводы питания Arduino UNO R4 WiFi
UNO R4 WiFi предоставляет несколько выводов питания.
Упрощённая блок-схема дерева питания:
VIN — питание от внешнего источника (6V-24V). Стабилизируется до 5V преобразователем ISL854102FRZ. Также подключён к разъёму DC.
5V — стабилизированный выход 5V. До 1,2 А при питании через VIN/DC; до 2 А при питании через USB-C. Для мощных компонентов (сервоприводы) используйте отдельный источник питания.
Примечание: при питании через USB напряжение на выводе 5V составляет около 4,7V из-за защитного диода Шоттки.
3.3V — стабилизированный выход 3,3V от регулятора SGM2205 LDO. Питает ESP32-S3, разъём Qwiic и датчики 3,3V. Не перегружайте этот вывод: ESP32-S3 потребляет импульсный ток при передаче Wi-Fi. Избыточная нагрузка может вызвать brownout ESP32.
Выводы OFF и VRTC Arduino UNO R4 WiFi
UNO R4 WiFi вводит два вывода, отсутствовавших на ранних платах UNO: OFF и VRTC. Они обеспечивают дополнительный контроль над питанием и хронометражем.
Вывод OFF
OFF — это управляющий вывод отключения, активный при LOW. При подключении к GND встроенный понижающий преобразователь 5V выключается и плата отключается.
Эта функция полезна в проектах с низким энергопотреблением, например в системах дистанционного мониторинга окружающей среды на батареях. Например, маломощная схема таймера может подтянуть вывод OFF к LOW для полного выключения платы на несколько часов, а затем отпустить вывод, разбудив систему для снятия показаний, отправки данных по Wi-Fi и повторного выключения. Такой метод может продлить срок службы батареи с нескольких дней до нескольких месяцев.
Важно помнить, что вывод OFF работает только при питании через VIN или разъём DC. При питании через USB-C линия 5V поступает непосредственно от USB, минуя преобразователь. В этом случае вывод OFF не имеет эффекта.
Вывод VRTC
Вывод VRTC связан со встроенными часами реального времени (RTC). UNO R4 WiFi включает внутренний RTC для отслеживания текущего времени без необходимости подключения внешнего модуля RTC, такого как DS3231. Пока основное питание (USB или VIN) подключено, RTC работает нормально. Однако при отключении основного питания RTC обычно останавливается. Для предотвращения этого плата предоставляет вывод VRTC рядом с разъёмом DC. Подключив небольшой резервный источник питания, такой как батарейка CR2032 или суперконденсатор, к выводу VRTC, можно поддерживать работу RTC даже при отключении основного питания. Вывод VRTC принимает напряжение от 1,6 до 3,6 вольт.