Другие модели Arduino имеют иное количество и схему подключения последовательных портов, как показано в табл. 10.1. Обратите внимание на то, что Due является единственной моделью Arduino, в которой последовательные порты работают с уровнями сигналов 3,3 В, а не 5 В.
Последовательный интерфейс ТТЛ способен поддерживать связь лишь по относительно коротким линиям (в пределах нескольких метров), и чем выше скорость обмена, тем короче должна быть линия. Для передачи данных на большие расстояния был разработан электрический стандарт RS232. Персональные компьютеры, выпускавшиеся до недавнего прошлого, часто снабжались последовательными портами RS232. Стандарт RS232 изменил уровни сигналов, чтобы обеспечить передачу данных на большие расстояния, чем позволяет последовательный интерфейс ТТЛ.
Таблица 10.1. Последовательные интерфейсы УАПП в разных моделях Arduino
Модель | Число последовательных портов | Подробности |
---|---|---|
Uno | 1 | Линия Rx подключена к контакту D0, а линия Tx — к контакту D1. Этот порт используется также интерфейсом USB |
Leonardo | 2 | Отдельный порт для интерфейса USB. Линия Rx подключена к контакту D0, а линия Tx — к контакту D1 |
Mega2560 | 4 | Интерфейс USB подключен к контактам D0 и D1. Три других порта: Serial1 — к контактам 19 (Rx) и 18 (Tx), Serial2 — к контактам 17 (Rx) и 16 (Tx), Serial3 — к контактам 15 (Rx) и 14 (Tx) |
Due | 4 | Отдельный порт для интерфейса USB. Последовательный порт 0 использует контакты D0 (Rx) и D1 (Tx). Три других порта: Serial1 — к контактам 19 (Rx) и 18 (Tx), Serial2 — к контактам 17 (Rx) и 16 (Tx), Serial3 — к контактам 15 (Rx) и 14 (Tx) |
Протокол последовательного интерфейса
Протокол последовательного интерфейса и большая часть терминологии появились еще на заре развития компьютерных сетей. Отправитель и получатель должны были договориться о скорости обмена данными. Эта скорость, измеряемая в
Скорость в бодах выбиралась из числа предопределенных стандартом значений. Увидеть эти значения можно в раскрывающемся списке в окне монитора последовательного порта. Программное обеспечение Arduino поддерживает следующие скорости: 300, 1200, 4800, 9600, 14 400, 19 200, 28 800, 38 400, 57 600 и 115 200 бод.
Чаще всего для связи с Arduino используется скорость 9600 бод, которая выбирается по умолчанию. Этот выбор не обусловлен какими-то серьезными причинами, так как связь с платами Arduino действует вполне надежно даже на скорости 115 200 бод. Эту скорость можно использовать в проектах, где требуется высокая скорость передачи. Также часто используется скорость 2400 бод. Некоторые периферийные устройства, такие как адаптеры Bluetooth и аппаратура GPS, работают на этой скорости.
Другой довольно запутанный параметр настройки последовательного интерфейса, который может вам встретиться, — это строка вида 8N1. В данном случае она означает: размер пакета 8 бит, отсутствие контроля четности и 1 стоповый бит. Несмотря на возможность других комбинаций, практически все устройства, которые вам попадутся, будут использовать параметр 8N1.
Команды последовательного порта
Команды последовательного порта включены в стандартную библиотеку Arduino, поэтому нет необходимости использовать в скетчах команду include.
Запуск взаимодействий по последовательному порту осуществляется командой Serial.begin, которая принимает параметр со скоростью в бодах:
Serial.begin(9600);
Обычно она вызывается только один раз, в функции setup.
Если используется плата, имеющая несколько последовательных портов, и вы собираетесь организовать обмен через порт по умолчанию (порт 0), достаточно вызвать простую команду Serial.begin. Но для других портов нужно указать в команде номер порта после слова Serial. Например, чтобы запустить взаимодействия по последовательному порту 3 на плате Arduino Due, скетч должен выполнить следующую команду:
Serial3.begin(9600);