Библиотека последовательного программного обеспечения в Arduino

Biblioteka Posledovatel Nogo Programmnogo Obespecenia V Arduino



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

В этой статье мы углубимся в библиотеку SoftwareSerial и узнаем, как она работает.







Введение в библиотеку SoftwareSerial

Программное обеспечениеСерийная библиотека — это стандартная библиотека Arduino, которая обеспечивает последовательную связь на цифровых контактах, отличных от TX и RX. Библиотека позволяет создать программный последовательный порт, который можно использовать для связи с другими устройствами, такими как другие микроконтроллеры, компьютеры или даже модули Bluetooth. Библиотека SoftwareSerial входит в состав Arduino IDE и может использоваться с любой платой Arduino.



Примечание: В целом, Техас и RX контакты используются для последовательной связи, но с помощью этой библиотеки мы можем позволить плате Arduino использовать любые цифровые контакты для замены контактов TX и RX.



Понимание функций библиотеки SoftwareSerial

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





Программное обеспечениеСерийный()

Эта функция создает новый экземпляр ПОСерийный сорт. Эта функция имеет два аргумента: вывод RX и вывод TX. Например, если вы хотите создать программный последовательный порт на контактах 2 и 3, вы должны использовать следующий код:

Программное обеспечениеСерийный номер mySerial ( 2 , 3 ) ; // РС, Техас



Программное обеспечениеСерийный() метод используется для создания нового экземпляра ПОСерийный объект. Это позволяет создавать несколько экземпляров, однако одновременно может быть активен только один.

Синтаксис

Синтаксис для Программное обеспечениеСерийный() метод заключается в следующем:

ПОСерийный ( rxPin, txPin, обратная_логика )

Параметры

Параметры для Программное обеспечениеСерийный() являются

rxPin: Этот параметр указывает контакт, который будет использоваться для получения последовательных данных.

txPin: Этот параметр указывает вывод, который будет использоваться для передачи последовательных данных.

обратная_логика: Этот параметр является необязательным и инвертирует смысл входящих битов. Значение по умолчанию — false, что означает, что НИЗКИЙ уровень на выводе RX интерпретируется как 0-бит, а ВЫСОКИЙ — как 1-битный. Если установлено значение true, LOW на выводе RX теперь будет принимать 1 бит, а HIGH — 0 бит.

Возвращаться

Программное обеспечениеСерийный() ничего не возвращает.

Функции библиотеки Arduino SoftwareSerial()

Ардуино Программное обеспечениеСерийный() имеет список функций для последовательной связи между устройствами. Некоторые из основных функций обсуждаются здесь:

начинать()

начинать() Функция инициализирует программный последовательный порт со скоростью передачи данных. Скорость передачи — это скорость передачи данных через последовательный порт. Например, чтобы установить 9600 в качестве скорости передачи данных для последовательной связи, вы должны использовать следующий код:

mySerial.begin ( 9600 ) ;

доступный()

доступно () f unction возвращает байты, доступные для чтения через последовательный порт программного обеспечения. Например, чтобы проверить, доступны ли какие-либо данные для чтения, вы должны использовать следующий код:

если ( мойСерийный.доступный ( ) > 0 ) {
// читать входные данные
char incomingByte = mySerial.read ( ) ;
}

читать()

читать() Функция считывает следующий байт данных из последовательного порта программного обеспечения. Например, чтобы прочитать байт данных и вывести его на последовательный монитор, вы должны использовать следующий код:

char incomingByte = mySerial.read ( ) ;
Серийный.println ( входящий байт ) ;

писать()

писать() Функция записывает байт данных в программный последовательный порт. Например, отправить письмо «А» через последовательный порт программного обеспечения вы должны использовать следующий код:

mySerial.write ( «А» ) ;

Пример кода библиотеки Arduino SoftwareSerial()

Теперь мы будем обмениваться данными между двумя платами Arduino через последовательную связь, используя эту библиотеку. Возьмите две платы Arduino и соедините их, как показано на изображении ниже.

Соединять Д2 платы Master Arduino с Д3 платы Slave Arduino, аналогично подключите Д3 Мастер Ардуино с Д2 Ведомого Ардуино.

Примечание: Для последовательной связи используется Техас контакт всегда подключен к RX контакт противоположного Arduino и RX вывод Мастера всегда подключен к Техас контакт другого Arduino.

Ниже приведено аппаратное обеспечение обеих плат Arduino.

Вот пример кода Arduino, который демонстрирует, как использовать Программное обеспечениеСерийная библиотека для установления связи между двумя платами Arduino:

Код платы отправителя

Приведенный ниже код предназначен для отправляющей платы Arduino, которая запишет строку на принимающую плату Arduino.

#include

// Настроить серийный объект программного обеспечения
Программное обеспечениеСерийный номер mySerial ( 2 , 3 ) ;

недействительная установка ( ) {
// Начать последовательную связь
Серийный.начало ( 9600 ) ;
пока ( ! Серийный ) {
; // ждать для последовательный порт для подключения
}

// Запустите последовательную связь программного обеспечения
mySerial.begin ( 9600 ) ;
}

пустая петля ( ) {
// Отправить сообщение через последовательное соединение программного обеспечения
mySerial.println ( 'Здравствуй, приемная плата!' ) ;
задерживать ( 1000 ) ;
}

Код платы приемника

Приведенный ниже код предназначен для платы приемника. Используя этот код, Arduino получит строку с другой платы через последовательную связь, установленную между двумя платами Arduino.

#include

// Настроить серийный объект программного обеспечения
Программное обеспечениеСерийный номер mySerial ( 2 , 3 ) ;

недействительная установка ( ) {
// Начать последовательную связь
Серийный.начало ( 9600 ) ;
пока ( ! Серийный ) {
; // ждать для последовательный порт для подключения
}

// Запустите последовательную связь программного обеспечения
mySerial.begin ( 9600 ) ;
}

пустая петля ( ) {
// Проверять если данные доступны через последовательное соединение программного обеспечения
если ( мойСерийный.доступный ( ) ) {
// Прочитайте данные и распечатайте их на последовательном мониторе
Серийный.println ( mySerial.readString ( ) ) ;
}
}

В этом примере мы сначала включаем Программное обеспечениеСерийная библиотека в начале кода. Затем мы создаем ПОСерийный объект под названием « мой сериал ” с контактами 2 и 3, указанными как контакты RX и TX соответственно.

в настраивать() функции, мы запускаем аппаратную и программную последовательную связь со скоростью 9600 бод. петля() функции платы отправителя, мы отправляем сообщение через последовательное соединение программного обеспечения, используя метод mySerial.println(), и ждем секунду перед отправкой следующего сообщения.

В функции loop() платы приемника код будет проверять доступность последовательных данных в программном последовательном соединении, используя мойСерийный.доступный() метод. Если данные доступны, мы считываем их с помощью метода mySerial.readString() и печатаем их на последовательном мониторе с помощью метода Serial.println().

Ограничения библиотеки SoftwareSerial()

Программное обеспечениеСерийная библиотека имеет несколько различных преимуществ, но также имеет некоторые ограничения, о которых должны знать пользователи. Эти ограничения включают

  • Невозможность передачи и приема данных одновременно.
  • При использовании нескольких программных последовательных портов только один порт может получать данные одновременно.
  • Программные последовательные порты, созданные с использованием этой библиотеки, работают с меньшей скоростью передачи данных и не так надежны, как аппаратные последовательные порты.
  • Некоторые контакты на платах Mega и Mega 2560 не поддерживают прерывания изменения для RX, что ограничивает количество используемых контактов.
  • Точно так же на платах Leonardo и Micro только определенные контакты могут использоваться для RX из-за отсутствия прерываний изменения.
  • Максимальная скорость приема на платах Arduino или Genuino 101 составляет 57600 бит/с.
  • RX не работает на цифровом выводе 13 плат Arduino или Genuino 101.
Доска Приемные контакты
Мега и Мега 2560 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, А8 (62), А9 (63), А10 (64), А11 (65), А12 (66), А13 (67), А14 (68), А15 (69).

Леонардо и Мик 8, 9, 10, 11, 14 (МИСО), 15 (СКК), 16 (МОСИ).

Заключение

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