Введение
Добро пожаловать в очередной урок Velxio! Сегодня мы создаем тест Serial Echo для Raspberry Pi Pico (RP2040). Этот проект идеально подходит для начинающих, желающих понять, как работает последовательная связь на микроконтроллерах. Вы узнаете, как отправлять и получать данные через UART, добавить визуальный индикатор с помощью светодиода и реализовать простой таймер heartbeat.

Обзор схемы
Схема удивительно проста. Нам понадобятся всего два компонента:
- Raspberry Pi Pico (мозг)
- Желтый светодиод (визуальный индикатор активности последовательного порта)
Подключение
- Подключите анод (A) желтого светодиода к выводу TX Pico. Вывод TX используется для передачи данных, поэтому каждый раз, когда Pico отправляет данные, светодиод будет мигать.
- Подключите катод (C) светодиода к GND (любому выводу земли на Pico).
Вот и всё! Светодиод включен последовательно с линией TX, поэтому он загорается при передаче данных Pico. Это дает визуальное подтверждение того, что данные передаются.

Разбор кода
Давайте разберем код. Откройте редактор Velxio, и вы увидите следующий скетч:
// Raspberry Pi Pico — Serial Echo Test
// Echoes received characters and prints a heartbeat every 2 seconds
void setup() {
Serial.begin(115200);
delay(500);
Serial.println("=== Pico Serial Echo ===");
Serial.println("Type something and press Enter.");
Serial.println();
}
unsigned long lastHeartbeat = 0;
void loop() {
// Echo any incoming characters
while (Serial.available()) {
char c = Serial.read();
Serial.print("Echo: ");
Serial.println(c);
}
// Heartbeat every 2 seconds
if (millis() - lastHeartbeat >= 2000) {
lastHeartbeat = millis();
Serial.print("[Heartbeat] Uptime: ");
Serial.print(millis() / 1000);
Serial.println("s");
}
}
Как это работает
setup(): Инициализирует последовательную связь на скорости 115200 бод. После короткой задержки выводит приветственное сообщение.loop(): Две основные задачи:- Эхо: Проверяет, есть ли доступные данные на последовательном порту. Если да, читает один символ и выводит его обратно с префиксом “Echo:”.
- Heartbeat: Каждые 2000 миллисекунд (2 секунды) выводит сообщение heartbeat, показывающее время работы системы в секундах.
Переменная lastHeartbeat отслеживает время последнего вывода heartbeat, используя millis() для неблокирующей синхронизации.
Ключевые концепции
Последовательная связь (UART)
UART (Универсальный асинхронный приемопередатчик) — это простой последовательный протокол. Вывод TX Pico отправляет данные, а вывод RX принимает данные. В этом примере мы используем только TX для вывода, но функция эха также использует RX (через Serial Monitor).
Неблокирующая синхронизация с millis()
Вместо использования delay(), который приостанавливает всю программу, мы используем millis() для проверки прошедшего времени. Это позволяет циклу эха работать непрерывно, одновременно выводя сообщение heartbeat через регулярные интервалы.
Светодиод как визуальный индикатор
Подключив светодиод к выводу TX, мы получаем визуальное отображение активности последовательного порта в реальном времени. Каждый раз, когда Pico отправляет символ, светодиод кратковременно мигает.
Частые ошибки и советы по отладке
- Несоответствие скорости передачи: Убедитесь, что Serial Monitor настроен на 115200 бод. Если вы видите мусорные символы, проверьте скорость передачи.
- Светодиод не мигает: Проверьте полярность светодиода (анод к TX, катод к GND). Также убедитесь, что Pico действительно передает данные (например, введите что-нибудь в Serial Monitor).
- Нет эха: Убедитесь, что вы отправляете данные на вывод RX Pico. В Velxio Serial Monitor делает это автоматически.
- Heartbeat не выводится: Проверьте, что
lastHeartbeatобъявлена какunsigned longи что логика сравнения верна.

Предлагаемые расширения
После того как базовое эхо заработает, попробуйте следующие улучшения:
- Добавьте светодиод на RX: Подключите еще один светодиод к выводу RX, чтобы показывать, когда данные принимаются.
- Разбор команд: Вместо простого эха интерпретируйте команды, такие как “LED ON” или “LED OFF”, для управления внешним светодиодом.
- Несколько скоростей передачи: Позвольте пользователю изменять скорость передачи через последовательную команду.
- Логирование в консоль: Сохраняйте полученные данные в буфер и выводите их по запросу.

Призыв к действию
Готовы попробовать сами? Откройте живой пример на Velxio и начинайте экспериментировать: Pico Serial Echo на Velxio. Вы можете изменить код, поменять цвет светодиода или добавить новые компоненты. Удачного хакерства!