Распиновка Arduino Uno WiFi: Rev2 на ATmega4809 и старая R3 с ESP8266
Под именем «Arduino Uno WiFi» продаются минимум три разные платы, и у каждой своя распиновка, своя библиотека WiFi и свои грабли. Мы заказывали плату по одной фотографии и получили связку ATmega328P и ESP8266, на которой половина примеров с официального сайта не работала.
Разбираем обе заводские версии. Uno WiFi Rev2 (артикул ABX00021) это форм-фактор классической Uno с чипом ATmega4809, 48 КБ флеш и модулем u-blox NINA-W102, внутри которого прячется ESP32. Старая Arduino Uno WiFi образца 2016 года и её китайские клоны «UNO R3 WiFi» держат WiFi на ESP8266, который общается с ATmega328P по UART через переключатель на плате.
Ниже сравнительные таблицы по обеим версиям, таблица соответствия пинов с классической Uno из распиновки Uno, скетч проверки WiFi-модуля и список отличий, чтобы не перепутать платы при покупке. Пока плата едет, сетевые скетчи можно прогнать в симуляторе, там WiFi эмулируется вплоть до IP-адреса.
Отдельные разделы ниже отвечают на вопросы, которые возникают после распаковки: как за десять секунд определить версию платы, почему модуль не отвечает, какую библиотеку ставить и стоит ли вообще брать такую плату сегодня.
Три платы под одним именем
Старая Arduino Uno WiFi вышла в 2016 году и давно снята с производства: ATmega328P плюс ESP8266 в роли WiFi-моста, общение по UART, переключатель выбирает, куда смотрит USB-конвертер. В 2018-м вышла Uno WiFi Rev2 (ABX00021) с 8-битным ATmega4809 на 16 МГц и модулем u-blox NINA-W102, который общается с основным чипом по SPI. Третья разновидность это клоны с маркировкой «UNO R3 WiFi ATmega328P+ESP8266»: старая схема в новом исполнении, часто со своей разводкой и тем же переключателем UART.
Проверка за десять секунд: посмотрите на крупный чип, ATmega4809 и ATmega328P различимы по маркировке, а тумблер или переключатель на плате почти всегда указывает на связку с ESP8266. Ещё надёжнее артикул: ABX00021 это та самая Rev2. База форм-фактора с расшифровкой каждого вывода в распиновке классической Uno.
Uno WiFi Rev2: ATmega4809 и модуль NINA-W102
| Параметр | Классическая Uno R3 | Uno WiFi Rev2 |
|---|---|---|
| Процессор | ATmega328P, 8 бит, 16 МГц | ATmega4809, 8 бит, 16 МГц (сам чип умеет 20) |
| Flash | 32 КБ | 48 КБ |
| SRAM | 2 КБ | 6 КБ (6144 байта) |
| EEPROM | 1 КБ | 256 байт |
| ШИМ | 6 пинов: D3, D5, D6, D9, D10, D11 | 5 пинов: D3, D5, D6, D9, D10, ядро megaavr как у Nano Every |
| Радиомодуль | Нет | u-blox NINA-W102 (внутри ESP32): WiFi b/g/n 2.4 ГГц и BLE |
| IMU | Нет | LSM6DS3 на борту: акселерометр и гироскоп |
| Логика | 5 В | 5 В |
NINA-W102 это модуль u-blox со встроенным чипом ESP32: он держит WiFi b/g/n в диапазоне 2.4 ГГц и BLE, работая под фирменной прошивкой Arduino. Библиотека для скетчей WiFiNINA, обновление прошивки модуля через Tools → WiFi101/WiFiNINA Firmware Updater. Обмен с NINA идёт по SPI, поэтому UART на D0 и D1 остаётся свободным, в отличие от старой версии, где ESP8266 съедал его целиком. Бонусом на плате стоит IMU LSM6DS3: акселерометр и гироскоп, которых у классической Uno никогда не было.
Распиновка повторяет Uno с парой сюрпризов
Физически Rev2 это та же Uno: D0–D13, A0–A5, силовые колодки, 5-вольтовая логика, шилды и макетные схемы садятся без переделок. По нумерации ядра A0–A5 дублируют цифровые 14–19: analogRead(A0) и digitalRead(14) бьют в одну ногу. Отличия прячутся в деталях: ШИМ-пинов пять (D3, D5, D6, D9, D10, а D11 остался без ШИМ, как и у Nano Every на том же 4809), а I2C по-прежнему на A4 и A5.
| Пин | Классическая Uno | Uno WiFi Rev2 |
|---|---|---|
| D0, D1 | UART, занят обменом с USB-чипом | Serial1 свободен для внешних модулей: NINA общается по SPI |
| D3, D5, D6, D9, D10 | ШИМ | ШИМ, те же пины |
| D11 | ШИМ | Без ШИМ: обычный цифровой |
| D13 | Встроенный светодиод | Встроенный светодиод |
| A0–A5 | Аналоговые входы; I2C на A4/A5 | Те же входы и та же I2C на A4/A5 |
| VIN, 5V, 3V3, GND | Питание платы и внешних цепей | Те же функции |
| RESET, AREF | Сброс и опора АЦП | Те же функции |
Скетч: проверяем модуль и сканируем сети
Первым делом после покупки мы запускаем скан эфира: он за минуту отвечает сразу на все вопросы, видна ли плата в IDE, отвечает ли NINA, какая у неё прошивка и что вообще слышно вокруг.
#include <SPI.h>#include <WiFiNINA.h> void setup() { Serial.begin(9600); while (!Serial) { } // ждём открытия монитора порта if (WiFi.status() == WL_NO_MODULE) { Serial.println("NINA не отвечает"); while (true) { } } Serial.print("прошивка NINA: "); Serial.println(WiFi.firmwareVersion()); int n = WiFi.scanNetworks(); if (n == -1) { Serial.println("скан не прошёл"); } else { for (int i = 0; i < n; i++) { Serial.print(i + 1); Serial.print(": "); Serial.println(WiFi.SSID(i)); } }} void loop() { }Старая Uno WiFi R3 ATmega328P+ESP8266: как с ней обращаться
Главный орган на плате это переключатель UART. В одном положении USB-мост ведёт на ATmega328P: заливаете скетч как на обычную Uno. В другом на ESP8266: так обновляется его прошивка. Между собой чипы всегда общаются по Serial на D0 и D1, а WiFi закрывается AT-командами через библиотеки вроде WiFiEsp. Помните про скорости: ESP8266 на клонах обычно сидит на 115200 бод, а SoftwareSerial на таких скоростях уже плавится, держите мост на аппаратном UART и не вешайте на D0 и D1 ничего лишнего.
- Надпись «UNO WiFi Rev2» и артикул ABX00021: заводская плата на ATmega4809 с NINA-W102
- Переключатель UART или надпись ESP8266 на плате: старая связка 328P и ESP8266, заводная или клон
- «UNO R3 WiFi ATmega328P+ESP8266» в названии товара: клон старой схемы со своей разводкой
- В IDE плата на 4809 выбирается как Arduino Uno WiFi Rev2, а 328P из любой версии прошивается как обычная Uno
- Библиотека WiFi определяется чипом радиомодуля: WiFiNINA для NINA, AT-команды для ESP8266
Если сравнивать платы по цифрам, распиновка чипа ATmega328 покажет устройство старой версии, Nano Every того же 4809 в макетном формате, а распиновка Nano соседа по колодке. Про питание плат гайд по питанию, а подключение любой ESP32-платы к сети построчно разобрано в уроке WiFi.begin.
Тупик: плата в IDE есть, а сети не видно
Симптом, который мы встречали на обеих версиях: плата прошивается, в мониторе порта идёт текст, а WiFi.status() возвращает WL_NO_MODULE или скан не находит ни одной сети. Мы проверяли антенну, расстояние до роутера и пароль, хотя дело было в другом.
У Rev2 причина обычно в прошивке модуля: первые партии NINA шли с бета-версией, которую библиотека WiFiNINA не признаёт, и плата физически не видела свой радиомодуль. Обновление через Firmware Updater решает это за пару минут. На старой версии с ESP8266 причина другая: переключатель UART остался в положении «смотреть на ESP8266», и тогда заливался не тот чип. Ещё один случай, общий для обеих версий: в Tools → Board выбрана обычная Uno, и IDE шлёт прошивку, а модуль на плате молчит, потому что для Uno WiFi Rev2 нужен свой пункт в списке плат. Мы завели порядок: сначала версия платы, потом версия прошивки модуля, потом выбранная плата в IDE, и только потом всё остальное.
Личный опыт: чего стоит эта связка WiFi и Arduino
Мы использовали Rev2 в проекте, где Arduino раздаёт данные в сеть, а сама логика остаётся на микроконтроллере. Приятный сюрприз: обмен с радиомодулем идёт по SPI, поэтому D0 и D1 остались свободными, и к ним без проблем подключился внешний модуль по обычному Serial, без программного эмулятора.
Второй сюрприз касался загрузки. WiFiNINA в среде Arduino ощущается тяжеловатой: библиотека тянет за собой несколько файлов, и первый скетч заметно дольше компилируется, чем привычный. Отдельно мы оценили обновление прошивки модуля: Firmware Updater подключает плату одним кабелем и делает всю работу сам, но прошивка NINA хранится в её собственном флеше, и после обновления она переживает перезагрузку платы, а вот полную перепрошивку Arduino сбросит. И третье: встроенный IMU на плате мы так и не задействовали, он оказался удобен скорее как маркер того, что перед вами именно Rev2.
Авторская позиция: стоит ли брать такую плату
Мы советуем смотреть в сторону ESP32, и вот почему. Uno WiFi Rev2 это компромисс: радиомодуль закрывает задачу сети, но добавляет второй чип, вторую прошивку, отдельную библиотеку и лишние 20–30 долларов к цене платы. Плата Rev2 давно снята с производства, и купить её можно только у сторонних продавцов или с рук.
ESP32 даёт то же самое и даже больше: WiFi и Bluetooth прямо на основном чипе, десятки свободных выводов, мегабайты флеша вместо килобайтов, а форм-фактор Nano и Uno с теми же шилдами и макетками. Минус один, и он честный: у ESP32 логика 3,3 В, и пятивольтовые модули вроде HC-SR04 приходится либо питать отдельно, либо согласовывать уровни делителем. Но ради этого и нужен гайд по ESP32: там расписаны и шины, и питание, и типичные грабли. Если же Rev2 уже лежит на руках, ничего страшного, она вполне рабочая, просто библиотеку и прошивку модуля нужно обновить сразу.