Назад

Последовательное эхо с Arduino: изучаем USART-связь

Введение

Последовательная связь — один из самых фундаментальных навыков во встраиваемой электронике. Отлаживаете ли вы датчик, общаетесь с GPS-модулем или отправляете данные на ПК — скромный USART (универсальный синхронный/асинхронный приёмопередатчик) будет вашим незаменимым инструментом. В этом руководстве мы создадим простой проект последовательного эха с использованием Arduino Uno в симуляторе Velxio. Каждый символ, который вы вводите в мониторе последовательного порта, возвращается обратно с его ASCII-значением и счётчиком. Это «Hello, World!» последовательной связи.

Схема подключения для serial-echo на холсте симулятора Velxio

Обзор схемы

Этот проект удивительно прост — он использует только саму плату Arduino Uno. Никаких внешних компонентов не требуется, так как последовательная связь осуществляется через встроенный в Uno преобразователь USB-в-последовательный порт. В Velxio монитор последовательного порта встроен в панель инструментов редактора, поэтому вы можете сразу взаимодействовать с кодом.

Компоненты

КомпонентКоличествоПримечания
Arduino Uno (wokwi-arduino-uno)1Мозг операции

Вот и всё! Вывод TX (пин 1) и вход RX (пин 0) Arduino Uno внутренне подключены к интерфейсу USB, который Velxio идеально эмулирует. Никаких соединений не требуется.

Панель инструментов редактора Velxio с кнопками компиляции и запуска

Разбор кода

Давайте погрузимся в код. Откройте редактор Velxio, и вы увидите следующий скетч:

// Serial Echo — USART Protocol Test
// Open the Serial Monitor to send and receive data.
// Everything you type is echoed back with extra info.

void setup() {
  Serial.begin(9600);
  Serial.println("=============================");
  Serial.println("  Serial Echo Test (USART)");
  Serial.println("=============================");
  Serial.println("Type something and press Send.");
  Serial.println();

  // Print system info
  Serial.print("CPU Clock: ");
  Serial.print(F_CPU / 1000000);
  Serial.println(" MHz");
  Serial.print("Baud rate: 9600");
  Serial.println();
  Serial.println();
}

unsigned long charCount = 0;

void loop() {
  if (Serial.available() > 0) {
    char c = Serial.read();
    charCount++;

    Serial.print("[");
    Serial.print(charCount);
    Serial.print("] Received: '");
    Serial.print(c);
    Serial.print("' (ASCII ");
    Serial.print((int)c);
    Serial.println(")");
  }

  // Periodic heartbeat
  static unsigned long lastBeat = 0;
  if (millis() - lastBeat >= 5000) {
    lastBeat = millis();
    Serial.print("Uptime: ");
    Serial.print(millis() / 1000);
    Serial.print("s | Chars received: ");
    Serial.println(charCount);
  }
}

Исходный код serial-echo в редакторе Monaco от Velxio

Как это работает

  1. Setup: Мы инициализируем последовательную связь на скорости 9600 бод с помощью Serial.begin(9600). Затем выводим заголовок и системную информацию: тактовую частоту CPU (F_CPU / 1000000 даёт МГц) и скорость передачи.

  2. Глобальная переменная: unsigned long charCount = 0; отслеживает количество полученных символов.

  3. Loop:

    • if (Serial.available() > 0) проверяет, есть ли данные в буфере приёма.
    • char c = Serial.read(); считывает один символ.
    • Мы увеличиваем charCount и выводим форматированное сообщение: [count] Received: 'c' (ASCII 99).
    • Каждые 5 секунд выводится «сердцебиение» с временем работы и общим количеством полученных символов.

Ключевые понятия для студентов

Частые ошибки и советы по отладке

Предлагаемые расширения

Когда вы освоите базовое эхо, попробуйте эти улучшения:

  1. Эхо целых строк: Вместо вывода каждого символа накапливайте символы до символа новой строки, затем выводите всю строку.
  2. Парсер команд: Интерпретируйте специальные команды, например «LED ON», чтобы включить светодиод (добавьте светодиод в схему).
  3. Двоичный вывод: Выводите полученный символ в двоичном формате.
  4. Несколько скоростей передачи: Позвольте пользователю менять скорость передачи с помощью команды.
  5. Запись в виртуальную EEPROM: Сохраняйте полученные данные в симулированной EEPROM.

Заключение

Вы только что создали свой первый проект последовательной связи! Последовательное эхо — это простая, но мощная демонстрация того, как микроконтроллеры общаются с внешним миром. С Velxio вы можете экспериментировать без какого-либо оборудования — просто откройте симулятор, пишите код и тестируйте мгновенно.

Готовы попробовать сами? Откройте живой пример в Velxio и начните вводить текст: Serial Echo на Velxio. Удачного кодирования!


Поделиться:
David Montero

Автор

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

Похожие статьи


Предыдущая статья
Последовательное управление светодиодом с помощью Arduino: отправка команд для мигания
Следующая статья
LCD 20x4 с Arduino: Hello World в Velxio