- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Программируем Arduino. Основы работы со скетчами - Монк Саймон
Шрифт:
Интервал:
Закладка:
Последовательный интерфейс вам должен быть хорошо знаком. Он используется для программирования платы Arduino, а также для взаимодействий с монитором последовательного порта, посредством которого можно организовать обмен данными между платой и компьютером. Это можно делать через адаптер, связывающий порт USB с последовательным портом на плате Arduino, или непосредственно через адаптер последовательного порта. Адаптер последовательного порта часто называют последовательным портом ТТЛ или просто последовательным портом. Аббревиатура ТТЛ означает «транзистор-транзисторная логика» — это редко используемая в настоящее время технология, основанная на 5-вольтовой логике.
Последовательный интерфейс этого вида не является шиной. Он поддерживает взаимодействия вида «точка–точка», в которые вовлечены только два устройства — обычно сама плата Arduino и периферийное устройство.
Последовательный интерфейс ТТЛ вместо I2C или SPI обычно поддерживают большие периферийные устройства или устройства, разработанные довольно давно и традиционно использующие последовательный интерфейс ТТЛ. К их числу относятся также устройства, изначально предназначенные для подключения к последовательному порту персонального компьютера. Примерами могут служить модули GPS, мультиметры с возможностью передачи данных, а также устройства чтения штрихкодов и радиометок.
Аппаратная часть последовательного интерфейса
На рис. 10.1 изображена схема последовательного интерфейса на плате Arduino Uno.

Рис. 10.1. Последовательный интерфейс на плате Arduino Uno
Микроконтроллер ATmega328 на плате Arduino Uno имеет два контакта: Rx и Tx (прием и передача соответственно). Они дополнительно выводятся на контакты D0 и D1, но, если вы решите использовать их как обычные входы/выходы, имейте в виду, что не сможете запрограммировать Arduino, пока к ним подключены внешние устройства.
Контакты Rx и Tx составляют последовательный интерфейс аппаратного универсального асинхронного приемопередатчика (УАПП) (Universal Asynchronous Receiver Transmitter, UART) в ATmega328. Этот компонент микроконтроллера отвечает за передачу байтов данных в микроконтроллер и их прием из него.
Модель Uno имеет отдельный процессор, действующий как адаптер между портом USB и последовательным портом. Помимо различий в уровнях сигналов, шина USB имеет также более сложный протокол, чем последовательный порт, поэтому за кулисами выполняется масса преобразований разного рода, чтобы создавалось ощущение, что последовательный порт микроконтроллера ATmega328 взаимодействует с компьютером напрямую.
Модель Arduino Leonardo не имеет отдельной микросхемы интерфейса USB, вместо этого в ней используется микроконтроллер ATmega, включающий два кристалла УАПП и один интерфейс USB (рис. 10.2).

Рис. 10.2. Аппаратная поддержка последовательного интерфейса на плате Arduino Leonardo
Один из приемопередатчиков УАПП обслуживает интерфейс USB, а другой соединен с контактами Rx и Tx (D0 и D1). Это позволяет подключать внешние устройства к контактам Tx и Rx и сохранить возможность программирования платы Arduino и обмена данными с монитором последовательного порта.
Другие модели 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)
Протокол последовательного интерфейса
Протокол последовательного интерфейса и большая часть терминологии появились еще на заре развития компьютерных сетей. Отправитель и получатель должны были договориться о скорости обмена данными. Эта скорость, измеряемая в бодах, устанавливалась на обоих концах соединения перед началом обмена. Скорость в бодах определяет частоту переходов между уровнями сигнала. Она совпадала бы с количеством бит в секунду, если бы байт данных имел стартовый бит, стоповый бит и бит четности. То есть, чтобы получить грубую оценку скорости передачи в байтах в секунду, нужно скорость в бодах разделить на 10.
Скорость в бодах выбиралась из числа предопределенных стандартом значений. Увидеть эти значения можно в раскрывающемся списке в окне монитора последовательного порта. Программное обеспечение 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);
После вызова команды Serial.begin приемопередатчик УАПП переходит в режим приема входящих данных и автоматически сохраняет их в буфере, поэтому, даже если процессор занят в это время чем-то другим, данные не будут теряться, пока буфер не переполнится.