Serial
Serial — встроенный UART-интерфейс Arduino для обмена данными с компьютером и внешними устройствами через Serial Monitor, терминал или внешние модули.
Полная статья
Описание
Serial — это основной способ обмена данными между платой Arduino и компьютером или внешними устройствами. В основе лежит протокол UART (он же USART) — асинхронная последовательная связь, знакомая каждому, кто выводил отладочные сообщения через Serial Monitor. Все платы Arduino поддерживают как минимум один такой порт, а более мощные модели — сразу несколько.
| Плата | Пины Serial | Пины Serial1 | Пины Serial2 | Пины Serial3 | Пины Serial4 |
|---|---|---|---|---|---|
| UNO R3, UNO R3 SMD Mini | 0(RX), 1(TX) | ||||
| Nano (classic) | 0(RX), 1(TX) | ||||
| UNO R4 Minima, UNO R4 WiFi | 0(RX0), 1(TX0) | ||||
| Leonardo, Micro, Yún Rev2 | 0(RX), 1(TX) | ||||
| UNO WiFi Rev2 | 0(RX), 1(TX) | ||||
| MKR boards | 13(RX), 14(TX) | ||||
| Zero | 0(RX), 1(TX) | ||||
| GIGA R1 WiFi | 0(RX), 1(TX) | 19(RX1), 18(TX1) | 17(RX2), 16(TX2) | 15(RX3), 14(TX3) | |
| Due | 0(RX), 1(TX) | 19(RX1), 18(TX1) | 17(RX2), 16(TX2) | 15(RX3), 14(TX3) | |
| Mega 2560 Rev3 | 0(RX), 1(TX) | 19(RX1), 18(TX1) | 17(RX2), 16(TX2) | 15(RX3), 14(TX3) | |
| Nano 33 IoT | 0(RX0), 1(TX0) | ||||
| Nano RP2040 Connect | 0(RX0), 1(TX0) | ||||
| Nano 33 BLE / Nano 33 BLE Sense | 0(RX0), 1(TX0) |
Плата Nano ESP32 стоит особняком: она построена на ядре ESP32. На этой плате Serial0 соответствует портам RX0 и TX0, а Serial1 и Serial2 — дополнительные порты, которые можно назначить на любые свободные выводы GPIO.
| Плата | Пины Serial0 | Пины Serial1 | Пины Serial2 | Пины Serial3 | Пины Serial4 |
|---|---|---|---|---|---|
| Nano ESP32 | 0(RX0), 1(TX0) | Любой свободный GPIO | Любой свободный GPIO |
Подробнее о настройке дополнительных последовательных портов Nano ESP32 читайте в этой статье.
Важно для старых плат
На платах Uno, Nano, Mini и Mega выводы 0 и 1 (RX/TX) задействованы для связи с компьютером через USB. Если подключить к ним что-либо постороннее, это может нарушить передачу данных и даже заблокировать загрузку скетча. Отключайте всё лишнее от этих выводов перед прошивкой.
Serial Monitor
Для общения с платой Arduino прямо из среды разработки откройте встроенный Serial Monitor Arduino. Главное условие: скорость передачи данных в мониторе должна совпадать со значением, которое вы указали в begin() — иначе в терминале будет каша из символов.
Уровни сигналов и совместимость
Выводы TX/RX работают с логическими уровнями TTL: 5 В или 3,3 В в зависимости от платы. Это принципиально отличается от стандарта RS232, где напряжения достигают ±12 В. Прямое подключение к порту RS232 компьютера или промышленного оборудования гарантированно повредит плату Arduino — для такого сопряжения нужен специальный преобразователь уровней.
Дополнительные порты на Mega
Если вы используете Serial1, Serial2 или Serial3 на Mega для связи с компьютером, понадобится внешний адаптер USB-to-serial, поскольку встроенный адаптер обслуживает только основной порт. При подключении к другому TTL-устройству соедините TX платы с RX устройства, RX платы — с TX устройства, и обязательно объедините земли обоих устройств.
Где применяется
- Отладка скетча — вывод значений переменных, состояния датчиков и сообщений об ошибках в Serial Monitor.
- Управление платой с компьютера — приём команд из терминала или Python-скрипта и выполнение действий на их основе.
- Связь с внешними модулями — GPS-приёмники, Bluetooth-модули, дисплеи и другие устройства с UART-интерфейсом.
- Передача данных между платами — когда одна Arduino отправляет показания датчиков, а другая их принимает и обрабатывает.
Практические замечания
- Всегда вызывайте
begin()вsetup()до любых операций чтения или записи — без инициализации порт не работает. - Скорость передачи данных (baud rate) должна совпадать на обоих концах соединения. Наиболее распространённые значения: 9600 и 115200.
Serialна большинстве плат блокирующий: функции записи ждут, пока буфер не освободится. Учитывайте это в чувствительных ко времени скетчах.- Если в Serial Monitor отображаются случайные символы — первым делом проверьте совпадение скорости передачи.
- Буфер приёма ограничен (обычно 64 байта). Если данные поступают быстрее, чем скетч их читает, часть байт будет потеряна.