Руководства · 12 мин чтения

Arduino Uno R4 WiFi и Minima: отличия от R3 и первый проект

Что нового в Arduino Uno R4 Minima и WiFi по сравнению с R3? 32-битный RA4M1, 12-битный ЦАП, лимит 8 mA на пин, совместимость библиотек и проект с Wi-Fi на светодиодной матрице.

Arduino Uno R4 — четвёртая ревизия Uno, самой популярной в мире отладочной платы, и первая Uno с 32-битным процессором вместо 8-битного AVR. Есть две модели: простая и более дешёвая Uno R4 Minima и Uno R4 WiFi с Wi-Fi, Bluetooth и светодиодной матрицей 12x8. Обе сохраняют размер R3, расположение пинов и рабочее напряжение 5 V, поэтому большинство шилдов и схем подключаются как есть. При этом памяти программ в 8 раз больше, процессор в 3 раза быстрее, а ещё добавились настоящий аналоговый выход (ЦАП), шина CAN, встроенные часы (RTC) и поддержка USB-клавиатуры и мыши.

В этом руководстве разберём, чем именно R4 отличается от R3, как выбрать между Minima и WiFi, какие старые скетчи и библиотеки работают без проблем, а какие не компилируются, и почему важно соблюдать лимит 8 mA на пин. В конце соберём твой первый проект: светодиодная матрица и Wi-Fi платы R4 WiFi вместе, с управлением с телефона.

Отладочная плата Arduino Uno
Размер платы и расположение пинов семейства Uno сохранились в R4: R4 Minima и R4 WiFi принимают шилды для R3 на те же разъёмы.

Что такое Arduino Uno R4? Модели Minima и WiFi

В основе обеих моделей — микроконтроллер Renesas RA4M1 (R7FA4M1AB3CFM): ядро Arm Cortex-M4 на 48 MHz с блоком вычислений с плавающей точкой (FPU). В отличие от большинства 32-битных плат, эта микросхема работает от 5 V, и именно поэтому Arduino выбрала RA4M1 для R4. На Minima стоит только эта микросхема. В модели WiFi есть ещё модуль ESP32-S3-MINI-1: он даёт Wi-Fi и Bluetooth, а заодно служит мостом, который общается с компьютером по USB. ESP32-S3 работает от 3,3 V, поэтому между двумя микросхемами стоит преобразователь уровней.

ХарактеристикаUno R4 MinimaUno R4 WiFi
Основной процессорRA4M1, 32 бит, 48 MHzRA4M1, 32 бит, 48 MHz
Wi-Fi и BluetoothНетESP32-S3: Wi-Fi 4 (2,4 GHz) и Bluetooth 5 LE
Светодиодная матрицаНет12x8, 96 красных светодиодов
Разъём QwiicНетЕсть (Wire1, только 3,3 V)
Подключение по USBСобственный USB у RA4M1Через мост на ESP32-S3
Пины CAND4 (TX), D5 (RX)D10 (TX), D13 (RX)
Отладочный разъёмРазъём SWDРазъём ESP32-S3 (3,3 V)
Дополнительные пиныНетOFF (выключение платы) и VRTC (батарейка часов)
Пин 3,3 VОт встроенного USB-стабилизатора RA4M1, малый токОтдельный стабилизатор 3,3 V

Отличия Uno R3 от Uno R4

ХарактеристикаUno R3Uno R4 (Minima и WiFi)
ПроцессорATmega328P, 8 бит, 16 MHzRA4M1 Cortex-M4, 32 бит, 48 MHz, FPU
Флеш (память программ)32 КБ256 КБ
SRAM2 КБ32 КБ
EEPROM1 КБ8 КБ (флеш для данных)
Рабочее напряжение5 V5 V
Ток на пин20 mA рекомендуется, 40 mA абсолютный максимум8 mA
Аналоговый вход (АЦП)6 каналов, 10 бит6 каналов, до 14 бит (по умолчанию 10 бит)
Аналоговый выход (ЦАП)Нет1 канал, 12 бит (A0)
ОУНетВстроенный (A1, A2, A3)
Шина CANНетЕсть (нужен внешний трансивер)
Часы реального времени (RTC)НетВстроенные
USBUSB-B, мост на ATmega16U2USB-C, поддержка клавиатуры и мыши (HID)
Входное напряжение VIN7–12 V рекомендуется6–24 V
Последовательный портSerial: USB и D0/D1 общиеSerial: USB, Serial1: D0/D1

Самые важные строки таблицы — память и скорость. 2 КБ SRAM у R3 забиваются несколькими переменными String и буфером дисплея; в проектах с OLED-дисплеем, длинными массивами или разбором JSON плата начинает случайно зависать или перезагружаться. 32 КБ у R4 почти полностью снимают эту проблему. Благодаря FPU вычисления с float (калибровка датчиков, PID, тригонометрия) выполняются аппаратно и в разы быстрее, чем на R3. Сильно изменилось и питание: линейный стабилизатор R3 греется на 12 V, а в R4 стоит импульсный понижающий преобразователь, поэтому плата принимает до 24 V и греется намного меньше.

Новое железо в R4

  • 12-битный ЦАП (A0): в отличие от ШИМ, выдаёт настоящее аналоговое напряжение; подходит для звука, синусоиды и простого генератора сигналов. Библиотека analogWave из пакета платы генерирует синус, меандр и пилу одной строкой.
  • 14-битный АЦП: с analogReadResolution(14) читаются значения от 0 до 16383; при опорном напряжении 5 V один шаг — примерно 0,3 mV, а на R3 — 4,9 mV. Чтобы старые скетчи не сломались, разрешение по умолчанию по-прежнему 10 бит.
  • Встроенный ОУ: на пинах A1 (+), A2 (–) и A3 (выход); слабые сигналы датчиков можно усилить без дополнительной микросхемы. Основы — в статье Что такое операционный усилитель?
  • Шина CAN: надёжная шина связи, которую используют в автомобилях и промышленности; работает с модулем-трансивером вроде SN65HVD230 или TJA1050 и библиотекой Arduino_CAN из пакета платы.
  • RTC: хранит дату и время без дополнительного модуля (библиотека RTC.h). Если на R4 WiFi подключить к пину VRTC батарейку на 1,6–3,6 V, часы продолжат идти даже при отключении питания платы.
  • USB HID: плата может определяться на компьютере как клавиатура или мышь; раньше для этого нужна была Leonardo (USB-клавиатура на Arduino Leonardo).
  • Ёмкостное касание: некоторые пины могут работать как сенсорные кнопки без дополнительного модуля, с библиотекой Arduino_CapacitiveTouch.

Две из этих возможностей можно попробовать прямо сейчас. Скетч ниже выдаёт с ЦАП постепенно растущие напряжения и считывает то же напряжение обратно 14-битным АЦП. Достаточно соединить пины A0 и A1 перемычкой и открыть монитор порта на скорости 115200 бод:

C++ (Arduino IDE)
1// A0 (DAC) ile A1'i bir jumper kabloyla bağla / connect A0 (DAC) to A1 with a jumper wire
2
3void setup() {
4  Serial.begin(115200);
5  while (!Serial) {}            // USB seri port açılana kadar bekle / wait for the USB serial port
6  analogWriteResolution(12);    // DAC: 0–4095
7  analogReadResolution(14);     // ADC: 0–16383
8}
9
10void loop() {
11  for (int value = 0; value < 4096; value += 512) {
12    analogWrite(DAC, value);              // A0'dan gerçek analog gerilim / true analog voltage on A0
13    delay(10);
14    int raw = analogRead(A1);             // 14 bit okuma / 14-bit reading
15    float volts = raw * 5.0 / 16383.0;    // 5 V referans / 5 V reference
16    Serial.print("DAC: ");
17    Serial.print(value);
18    Serial.print("  ADC: ");
19    Serial.print(raw);
20    Serial.print("  V: ");
21    Serial.println(volts, 3);
22    delay(500);
23  }
24}

В выводе видно, что каждый раз, когда значение ЦАП растёт на 512, показание растёт примерно на 2048: один шаг 12-битного выхода равен 4 шагам 14-битного входа. В расчёте в коде взято значение 5.0, но при питании от USB линия 5 V из-за защитного диода проседает примерно до 4,7 V. Если нужны точные измерения, измерь напряжение на пине 5V мультиметром и подставь это значение в формулу вместо 5.0. Строка while (!Serial) не даёт потеряться первым строкам до открытия монитора порта; если плата будет работать без компьютера, удали эту строку, иначе программа будет ждать на ней вечно. Основы аналогового чтения — в статье АЦП и аналого-цифровое преобразование.

Лимит тока пина: почему на R4 всего 8 mA?

Это отличие при переходе на R4 упускают чаще всего. ATmega328P на R3 спокойно отдаёт 20 mA на пин (абсолютный максимум 40 mA), поэтому в большинстве примеров в интернете светодиод подключают прямо к пину через резистор 220 Ω. Для R4 же Arduino советует брать с пина не больше 8 mA. Посчитаем по закону Ома: красный светодиод (около 2 V) от пина 5 V через 220 Ω даёт (5 − 2) / 220 ≈ 13,6 mA, почти вдвое больше лимита R4. Светодиод, скорее всего, загорится, но пин со временем может повредиться, и такие повреждения обычно накапливаются незаметно.

Токоограничивающий резистор для светодиода
Резистор побольше защищает пины R4: с 470 Ω ток падает примерно до 6,4 mA и остаётся ниже лимита 8 mA.
Резистор светодиодаТок (красный светодиод, 5 V)Uno R3Uno R4
220 Ω≈ 13,6 mAПодходитВыше лимита
330 Ω≈ 9,1 mAПодходитНемного выше лимита
470 Ω≈ 6,4 mAПодходитПодходит
1 kΩ≈ 3 mAПодходитПодходит, светодиод по-прежнему хорошо виден
На R4 ставь для светодиодов не меньше 470 Ω; точное значение подскажет калькулятор резистора для светодиода. Никогда не подключай напрямую к пину нагрузки, которым нужен больший ток: катушку реле, мотор, зуммер или много светодиодов; ставь между ними транзистор или MOSFET (об использовании MOSFET с Arduino). Сервоприводы тоже питай от отдельного источника, а не от пина 5V платы.

Работают ли старые скетчи и библиотеки на R4?

Короткий ответ: в большинстве случаев да. Скетчи на стандартных командах Arduino, таких как digitalWrite, analogRead, millis, Serial, Wire (I2C), SPI, EEPROM, Servo и tone, компилируются на R4 без изменений. Проблемы возникают в коде, который обращается напрямую к железу ATmega328P: быстрые операции с пинами через регистры вроде PORTB и DDRD, настройки Timer1, заголовочные файлы, начинающиеся с avr/, и библиотеки, которые их используют, на R4 не компилируются. Например, скетч с PORTB выдаёт ошибку 'PORTB' was not declared in this scope (PORTB не объявлен).

Библиотека или кодСтатус на R4Примечание
Servo, Wire, SPI, EEPROM, SoftwareSerialРаботаетОфициальная поддержка R4
Adafruit NeoPixel, FastLEDРаботаетУстанови последние версии
Библиотека DHT sensor libraryРаботаетБиблиотека Adafruit
IRremoteРаботает частичноВерсии 4.x на R4 читают ИК-приёмник; по документации библиотеки, на R4 WiFi отправка не работает
LiquidCrystal I2C, MFRC522Работает, но с предупреждениемПредупреждение об архитектуре безвредно
TimerOneНе компилируетсяВместо неё используй класс FspTimer из пакета платы
Регистры PORTB, DDRD, PINDНе компилируетсяИспользуй digitalWrite и digitalRead
serialEvent()Не вызываетсяПроверяй Serial.available() внутри loop

При компиляции может появиться предупреждение вроде WARNING: library LiquidCrystal I2C claims to run on avr architecture(s) and may be incompatible with your current board which runs on renesas_uno architecture(s) (библиотека заявляет поддержку только архитектуры AVR и может быть несовместима с платой на архитектуре renesas_uno). Это не ошибка: автор библиотеки просто указал в списке поддерживаемых архитектур только AVR. Если скетч загружается и работает, всё в порядке. Если появляется настоящая ошибка, сначала установи последнюю версию библиотеки (как добавить библиотеку в Arduino); если не помогает, поищи альтернативу с поддержкой R4.

Есть ещё одно отличие, за которым стоит следить: у R3 один последовательный порт, подключённый и к USB, и к пинам D0/D1. На R4 Serial — это только USB, а пины D0 и D1 работают отдельно как Serial1. Старый скетч, который читает через Serial модуль вроде Bluetooth HC-05 или GPS на D0/D1, на R4 не получит ничего. Скетч-мост ниже передаёт данные от модуля в монитор порта, а то, что набрано в мониторе порта, — в модуль:

C++ (Arduino IDE)
1// R4'te Serial = USB, Serial1 = D0 (RX) ve D1 (TX) / on the R4, Serial = USB, Serial1 = D0 (RX) and D1 (TX)
2
3void setup() {
4  Serial.begin(115200);   // bilgisayar (Seri Monitör) / computer (Serial Monitor)
5  Serial1.begin(9600);    // D0/D1'e bağlı modül, örn. HC-05 / module on D0/D1, e.g. HC-05
6}
7
8void loop() {
9  if (Serial1.available()) {
10    Serial.write(Serial1.read());   // modülden bilgisayara / module to computer
11  }
12  if (Serial.available()) {
13    Serial1.write(Serial.read());   // bilgisayardan modüle / computer to module
14  }
15}
Хорошая новость: на R4 можно загружать скетчи и пользоваться монитором порта, не отключая модуль от D0/D1, так что ритуал R3 «отключи модуль, загрузи, подключи обратно» уходит в прошлое. На R3 этот скетч не скомпилируется, потому что у Uno R3 нет Serial1. Подробнее о подключении модуля — в статье Bluetooth-модуль HC-05.

Настройка Uno R4 в Arduino IDE

  1. Установи или обнови Arduino IDE 2 (установка Arduino IDE).
  2. Открой слева «Менеджер плат» (Boards Manager), введи UNO R4 и установи пакет Arduino UNO R4 Boards. Это официальный пакет, поэтому дополнительную ссылку добавлять не нужно.
  3. Подключи плату кабелем USB-C с передачей данных и выбери Arduino UNO R4 Minima или Arduino UNO R4 WiFi в «Инструменты › Плата» (Tools › Board).
  4. Выбери порт платы в «Инструменты › Порт», открой «Файл › Примеры › 01.Basics › Blink» и загрузи скетч. Встроенный светодиод на D13 начнёт мигать.
  5. Если порт не появляется или загрузка обрывается на середине, быстро нажми кнопку RESET два раза: плата перейдёт в режим загрузчика (bootloader), и порт снова появится. Все проблемы с загрузкой разобраны в руководстве Ошибки загрузки кода в Arduino.

Uno R4 WiFi: ESP32-S3 и светодиодная матрица 12x8

По умолчанию ESP32-S3 на R4 WiFi работает с прошивкой от Arduino, которая превращает команды от RA4M1 в операции Wi-Fi и Bluetooth. Скетч ты по-прежнему пишешь для RA4M1: для Wi-Fi используется библиотека WiFiS3 из пакета платы, для Bluetooth — библиотека ArduinoBLE. Есть два важных ограничения: модуль подключается только к сетям 2,4 GHz, а поскольку Wi-Fi и Bluetooth делят одну антенну, одновременно их использовать нельзя. Некоторым новым функциям нужна свежая прошивка ESP32-S3; обновить её можно в IDE через «Инструменты › Firmware Updater» (обновление прошивки).

Матрица на лицевой стороне платы — это 96 красных светодиодов в 8 строках и 12 столбцах. Когда плату впервые достают из коробки, на ней играет анимация «Тетриса». Светодиоды подключены к 11 внутренним пинам RA4M1 по схеме чарлиплексинга; эти пины не выведены на разъёмы, так что матрица не занимает ни одного из D0–D13 или A0–A5. Библиотека Arduino_LED_Matrix из пакета платы принимает кадр (frame) в двух форматах: байтовый массив 8x12 или три 32-битных числа. Массив читать проще, потому что фигура из единиц видна прямо в коде:

C++ (Arduino IDE)
1#include "Arduino_LED_Matrix.h"   // kart paketiyle gelir / ships with the board package
2
3ArduinoLEDMatrix matrix;
4
5// 8 satır x 12 sütun: 1 = LED yanar / 8 rows x 12 columns: 1 = LED on
6uint8_t kalp[8][12] = {
7  { 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
8  { 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0 },
9  { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },
10  { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
11  { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 },
12  { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 },
13  { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
14  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
15};
16
17void setup() {
18  matrix.begin();
19}
20
21void loop() {
22  matrix.renderBitmap(kalp, 8, 12);          // kendi çizimin / your own drawing
23  delay(1000);
24  matrix.loadFrame(LEDMATRIX_EMOJI_HAPPY);   // kütüphanedeki hazır kare / ready-made frame from the library
25  delay(1000);
26  kalp[7][11] = 1;                           // tek bir LED'i yak: satır 7, sütun 11 / turn on one LED: row 7, column 11
27}

renderBitmap() показывает нарисованный тобой массив, а loadFrame() загружает готовые кадры из библиотеки: LEDMATRIX_HEART_BIG, LEDMATRIX_EMOJI_HAPPY, LEDMATRIX_EMOJI_SAD и LEDMATRIX_DANGER — лишь некоторые из них. С loadSequence() и play() можно запускать готовые анимации вроде LEDMATRIX_ANIMATION_TETRIS или LEDMATRIX_ANIMATION_WIFI_SEARCH. Чтобы выводить на матрицу текст и прокручивать его, нужно установить библиотеку ArduinoGraphics через «Менеджер библиотек» (Library Manager). Если нужен дисплей побольше, загляни в статьи Светодиодная матрица MAX7219 и WS2812B NeoPixel.

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

Теперь объединим обе возможности. Пока плата подключается к домашней сети, на матрице идёт анимация поиска Wi-Fi; после подключения она показывает IP-адрес бегущей строкой. Если открыть этот адрес в браузере телефона в той же сети, появятся кнопки: с их помощью можно показать на матрице сердце, весёлое или грустное лицо, снова прокрутить IP-адрес или выключить матрицу. Кроме платы, никаких деталей не нужно.

  1. Установи библиотеку ArduinoGraphics через «Менеджер библиотек»; WiFiS3 и Arduino_LED_Matrix входят в пакет платы.
  2. Замени имя сети и пароль в скетче на свои; следи за регистром букв.
  3. Выбери плату Arduino UNO R4 WiFi, загрузи скетч и открой монитор порта на скорости 115200 бод.
  4. Введи в браузере телефона IP-адрес, который бежит по матрице или выведен в мониторе порта.
  5. Нажимай кнопки на странице: матрица меняется мгновенно.
C++ (Arduino IDE)
1#include "ArduinoGraphics.h"      // Arduino_LED_Matrix'ten ÖNCE eklenmeli / must come BEFORE Arduino_LED_Matrix
2#include "Arduino_LED_Matrix.h"
3#include "WiFiS3.h"
4
5char ssid[] = "AgAdi";            // Wi-Fi adın / your Wi-Fi name
6char pass[] = "Sifre123";         // Wi-Fi şifren / your Wi-Fi password
7
8ArduinoLEDMatrix matrix;
9WiFiServer server(80);
10
11void scrollText(String text) {
12  matrix.beginDraw();
13  matrix.stroke(0xFFFFFFFF);
14  matrix.textScrollSpeed(60);             // her adım 60 ms / 60 ms per step
15  matrix.textFont(Font_5x7);
16  matrix.beginText(0, 1, 0xFFFFFF);
17  matrix.print("   " + text + "   ");
18  matrix.endText(SCROLL_LEFT);            // yazıyı sola kaydır / scroll the text to the left
19  matrix.endDraw();
20}
21
22void sendPage(WiFiClient &client) {
23  client.println("HTTP/1.1 200 OK");
24  client.println("Content-Type: text/html; charset=utf-8");
25  client.println("Connection: close");
26  client.println();
27  client.println("<!DOCTYPE html><html><head><meta name='viewport' content='width=device-width'></head><body>");
28  client.println("<h2>UNO R4 WiFi</h2>");
29  client.println("<p><a href='/kalp'><button>Kalp / Heart</button></a></p>");
30  client.println("<p><a href='/mutlu'><button>Mutlu / Happy</button></a></p>");
31  client.println("<p><a href='/uzgun'><button>Uzgun / Sad</button></a></p>");
32  client.println("<p><a href='/ip'><button>IP</button></a></p>");
33  client.println("<p><a href='/kapat'><button>Kapat / Off</button></a></p>");
34  client.println("</body></html>");
35}
36
37void setup() {
38  Serial.begin(115200);
39  matrix.begin();
40
41  if (WiFi.status() == WL_NO_MODULE) {               // ESP32-S3 yanıt vermiyor / ESP32-S3 not responding
42    Serial.println("WiFi modulu bulunamadi / WiFi module not found");
43    matrix.loadFrame(LEDMATRIX_DANGER);
44    while (true) {}
45  }
46
47  matrix.loadSequence(LEDMATRIX_ANIMATION_WIFI_SEARCH);   // bağlanırken animasyon / animation while connecting
48  matrix.play(true);
49
50  while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
51    Serial.println("Baglaniyor / connecting...");
52    delay(5000);
53  }
54  while (WiFi.localIP() == IPAddress(0, 0, 0, 0)) {   // DHCP adresini bekle / wait for the DHCP address
55    delay(100);
56  }
57
58  server.begin();
59  Serial.print("IP: ");
60  Serial.println(WiFi.localIP());
61  scrollText(WiFi.localIP().toString());     // IP adresini matriste göster / show the IP on the matrix
62  matrix.loadFrame(LEDMATRIX_EMOJI_HAPPY);
63}
64
65void loop() {
66  WiFiClient client = server.available();
67  if (!client) {
68    return;
69  }
70
71  String request = client.readStringUntil('\n');   // ör. "GET /kalp HTTP/1.1" / e.g. "GET /kalp HTTP/1.1"
72  while (client.available()) {
73    client.read();                                 // kalan başlıkları at / discard the remaining headers
74  }
75
76  bool showIp = false;
77  if (request.indexOf("GET /kalp") >= 0) {
78    matrix.loadFrame(LEDMATRIX_HEART_BIG);
79  } else if (request.indexOf("GET /mutlu") >= 0) {
80    matrix.loadFrame(LEDMATRIX_EMOJI_HAPPY);
81  } else if (request.indexOf("GET /uzgun") >= 0) {
82    matrix.loadFrame(LEDMATRIX_EMOJI_SAD);
83  } else if (request.indexOf("GET /kapat") >= 0) {
84    matrix.clear();
85  } else if (request.indexOf("GET /ip") >= 0) {
86    showIp = true;
87  }
88
89  sendPage(client);
90  delay(10);
91  client.stop();                                   // bağlantıyı kapat / close the connection
92
93  if (showIp) {
94    scrollText(WiFi.localIP().toString());         // sayfa gittikten sonra kaydır / scroll after the page is sent
95  }
96}

Логика простая: WiFi.begin() повторяется, пока не установится соединение, затем скетч ждёт, пока DHCP выдаст IP-адрес, и запускает веб-сервер на порту 80. Он читает первую строку запроса от телефона (например, «GET /kalp HTTP/1.1»), с помощью indexOf() определяет, какая кнопка нажата, и загружает на матрицу нужный кадр. endText(SCROLL_LEFT) блокирует программу, пока текст прокручивается, поэтому IP-адрес снова прокручивается только после отправки страницы и закрытия соединения. Если матрица показывает знак опасности и замирает, ESP32-S3 не отвечает; отключи и снова подключи USB-кабель платы и обнови прошивку. Если соединение так и не устанавливается, проверки 2,4 GHz и пароля из статьи ESP32 не подключается к Wi-Fi работают и здесь.

Питание: пины VIN, 5V и 3,3 V

R4 принимает 6–24 V на гнездо питания (DC) или пин VIN; встроенный понижающий преобразователь снижает это напряжение до 5 V. По документации Arduino к R4 WiFi, при питании от VIN с пина 5V можно взять около 1,2 A; при питании от USB сама плата выдерживает до 2 A, но реальный предел задаёт USB-порт компьютера. Этот ток рассчитан на датчики и небольшие модули, а не на моторы и сервоприводы. Пин 3,3 V на Minima питается от встроенного стабилизатора RA4M1, поэтому его хватает только на небольшие датчики; не питай от него модули с большим потреблением, например ESP-01 или nRF24L01 с антенной PA+LNA. На R4 WiFi есть ещё пин OFF (если соединить его с GND, питание платы 5 V отключается) и пин VRTC для батарейки RTC. Все варианты питания разобраны в статье Как питать Arduino.

Идеи проектов на Uno R4

  • Метеостанция с Wi-Fi: показывай температуру, измеренную DHT11, и бегущей строкой на матрице, и на странице, которая открывается на телефоне.
  • Игры на матрице: змейка, «Тетрис» или прыгающий мяч на матрице 12x8; больше идей — в статье Игровые проекты на Arduino.
  • Часы из интернета: получай время из интернета (NTP), записывай его во встроенные RTC и сохраняй при отключении питания с батарейкой на пине VRTC.
  • USB-клавиатура для макросов: собери клавиатуру из четырёх кнопок, которая запускает сочетания клавиш на компьютере; благодаря поддержке HID у R4 Leonardo не нужна.
  • Звук через ЦАП: генерируй синусоиду на A0 с библиотекой analogWave и собери простой синтезатор с усилителем звука и динамиком.
  • Управление лампой с телефона: объедини веб-сервер из этой статьи с модулем реле и включай лампу удалённо.

Частые ошибки и их решение

СимптомПричинаРешение
'PORTB' was not declared in this scope (PORTB не объявлен)Код напрямую использует регистры AVRПерепиши его на digitalWrite и digitalRead
'class TimerOne' has no member named 'initialize' (нет метода initialize)TimerOne знает только таймеры AVRИспользуй класс FspTimer из пакета платы
'class ArduinoLEDMatrix' has no member named 'beginDraw' (нет метода beginDraw)Нет ArduinoGraphics или она подключена после библиотеки матрицыУстанови ArduinoGraphics и подключи её до Arduino_LED_Matrix
Ошибки вида 'D24' was not declared в файлах WiFiS3В качестве платы выбрана R4 MinimaВыбери R4 WiFi в «Инструменты › Плата»
Нет данных от модуля на D0/D1На R4 Serial — это только USBИспользуй Serial1 вместо Serial
Нет порта, или загрузка обрывается на серединеРаботающий скетч заблокировал USB, или кабель только для зарядкиНажми RESET дважды и используй кабель с передачей данных
Пин перестал работатьПин нагрузили сверх лимита 8 mAСтавь для светодиодов 470 Ω–1 kΩ, а мощными нагрузками управляй через транзистор
Датчик на разъёме Qwiic не находитсяQwiic подключён ко второй шине I2C (Wire1)Используй в коде Wire1 вместо Wire
Надёжнее всего переносить старый проект на R4 по частям: сначала Blink, потом датчик, потом дисплей. Если появляется ошибка компиляции, запиши название библиотеки из строки с ошибкой и пройди шаги из руководства Ошибки компиляции Arduino. Как и на R3, пины A4 и A5 на R4 связаны с шиной I2C; не используй их как аналоговые входы, пока работает I2C.

Что купить: R3, R4 Minima или R4 WiFi?

  • Uno R4 WiFi: лучший выбор, если проекты будут подключаться к интернету, телефону или по Bluetooth и хочется иметь готовый индикатор прямо на плате. Новичкам тоже интересно: работу своего кода сразу видно на матрице.
  • Uno R4 Minima: подходит, если беспроводная связь не нужна, а нужны больше памяти, скорость, ЦАП и USB-C. Благодаря разъёму SWD это ещё и хороший вариант, если хочется подключить внешний отладчик и выполнять код по шагам.
  • Uno R3 или совместимый клон: по-прежнему имеет смысл, если есть старые проекты на библиотеках под AVR, хочется повторять примеры из учебника один в один или нужна минимальная цена; его пины спокойно держат 20 mA.
  • ESP32: если нужен Wi-Fi с большим числом пинов и дешевле, стоит присмотреться и к плате ESP32; только помни, что она работает от 3,3 V (Arduino или ESP32?).

Итак, Uno R4 — это обновление, которое сохраняет привычную простоту Uno и добавляет память, скорость и новое железо; главное — помнить о лимите 8 mA и отличии Serial1. Чтобы подробно разобраться с пинами платы, загляни в статью Распиновка Arduino Uno. В приложении BlueGrays есть проекты со светодиодами, кнопками, датчиками, LCD и светодиодной матрицей для Arduino Uno с пошаговыми схемами подключения и кодом; они написаны на стандартных командах, поэтому работают и на R4, нужно лишь увеличить резисторы светодиодов до 470 Ω.

Частые вопросы

Чем Arduino Uno R4 отличается от R3?

Вместо 8-битного ATmega328P на 16 MHz, как у R3, в Uno R4 стоит 32-битный Renesas RA4M1 на 48 MHz. Флеш-память выросла с 32 КБ до 256 КБ, SRAM — с 2 КБ до 32 КБ, а ещё добавились 12-битный ЦАП, 14-битный АЦП, CAN, RTC, USB-C и поддержка USB-клавиатуры и мыши. Размер платы, расположение пинов и рабочее напряжение 5 V остались прежними.

Работают ли скетчи для Arduino Uno R3 на R4?

Большинство скетчей и библиотек на стандартных командах Arduino работают без изменений. Код, который напрямую обращается к регистрам AVR вроде PORTB, настройкам Timer1 или заголовочным файлам avr/, не скомпилируется. Кроме того, в скетчах, которые читают модули на D0/D1, нужно писать Serial1 вместо Serial.

Что взять: Arduino Uno R4 WiFi или Minima?

Бери R4 WiFi, если проектам нужны Wi-Fi, Bluetooth или управление с телефона; встроенная светодиодная матрица и разъём Qwiic идут бонусом. Если беспроводная связь не нужна, Minima дешевле и даёт ту же производительность на том же процессоре.

Какой ток может дать пин Arduino Uno R4?

Arduino рекомендует брать не больше 8 mA с пина Uno R4, тогда как у R3 это 20 mA. Поэтому для светодиодов ставь не 220 Ω, а минимум 470 Ω, а нагрузками вроде реле, моторов и зуммеров управляй через транзистор или MOSFET.

Подходят ли шилды для Arduino R3 к Uno R4?

Да. У R4 Minima и R4 WiFi тот же размер платы, то же расположение разъёмов и тот же логический уровень 5 V, что и у R3, поэтому большинство шилдов с драйверами моторов, реле и датчиками ставятся напрямую. Обновление программной части может понадобиться, только если библиотека шилда содержит код под AVR.

Поддерживает ли Arduino Uno R4 WiFi Bluetooth?

Да, встроенный модуль ESP32-S3 поддерживает Bluetooth 5 LE и работает с библиотекой ArduinoBLE. Но Wi-Fi и Bluetooth делят одну антенну, поэтому одновременно они не работают. Классическое последовательное Bluetooth-соединение, как у HC-05, не поддерживается; приложение на телефоне должно использовать BLE.

Все проекты
Мигающий светодиод
#1Новичок

Мигающий светодиод

Самое первое «привет» в электронике: включение и выключение одного светодиода. Arduino включает и выключает светодиод через короткие промежутки, поэтому свет быстро мигает. Ты самым простым способом в

4.6(188)
1127
Светофор
#3Новичок

Светофор

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

4.8(131)
397
Управление светодиодом кнопкой (удержание)
#9Новичок

Управление светодиодом кнопкой (удержание)

Как дверной звонок: свет горит, пока ты нажимаешь, и гаснет, когда отпускаешь. Arduino всё время слушает кнопку; пока она нажата, светодиод горит, а как только ты убираешь палец, он гаснет. Эта просте

4.8(113)
229
Измерение расстояния HC-SR04 (вывод в порт)
#27Новичок

Измерение расстояния HC-SR04 (вывод в порт)

Датчик HC-SR04 работает совсем как летучая мышь, которая находит дорогу в темноте: он посылает звук, которого ты не слышишь, слушает эхо и измеряет, насколько далеко предмет перед ним. Arduino каждые

4.6(46)
71
Температура и влажность с DHT11
#55Средний

Температура и влажность с DHT11

Насколько тепло в твоей комнате и влажный ли воздух или сухой? Датчик DHT11 измеряет температуру и влажность, а Arduino выводит значения на двухстрочный LCD-экран и обновляет их каждые пару секунд. Ес

4.7(47)
73
Часы и календарь на матрице (MAX7219, DS1307)
#84Средний
Premium

Часы и календарь на матрице (MAX7219, DS1307)

Светящееся табло для стола или стены, которое показывает время и дату бегущей строкой. На светодиодном дисплее 8x32 крупные цифры часов, а две точки между ними мигают каждую секунду; в начале каждой м

5.0(37)
59
Пиксельная змейка на матрице 8x8
#88Продвинутый
Premium

Пиксельная змейка на матрице 8x8

Собери классическую игру «Змейка» своими руками и сыграй в неё. На цветной светодиодной матрице 8x8 ты джойстиком управляешь зелёной змейкой и ешь красные яблоки; с каждым яблоком змейка растёт, немно

4.7(39)
57
Анимация и текст на 4 матрицах 32x8
#90Средний
Premium

Анимация и текст на 4 матрицах 32x8

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

4.6(40)
66