Описание работы программного обеспечения SelfieBot Firmware Base 1.1

Оглавление

Назначение программы
Описание работы программы
Протокол информационного обмена

Назначение программы

Программное обеспечение предназначено для загрузки в микроконтроллер аппаратного обеспечения SelfieBot Hardware Base, построенного на базе платы Arduino Nano, содержащего микроконтроллер Atmel ATmega168 или ATmega328.

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

Описание работы программы

После запуска выполняет инициализация устройства – выполняются команды функции setup – инициализация пинов, настройка UART интерфейса, установка сервоприводов в начальное положение. В процессе инициализации загорается технологический светодиод (на платах Arduino Nano обычно обозначен буквой L), который гаснет при успешной инициализации спустя 1 секунду.

После инициализации начинает выполнятся функция loop в бесконечном цикле – происходит опрос программного интерфейсного модуля _Interf_UART с передачей результата на программные модули _Control_Servo1 и _Control_Servo2.

Программный модуль _Interf_UART обеспечивает приём команды по UART. В пришедшем потоке по UART происходит поиск и идентификация пакета данных в соответствии с протоколом информационного обмена. В случае обнаружения команды происходит выдача байта управления. Работу с UART обеспечивает внутренняя библиотека Serial.

Так как протокол обмена фиксирован, то, в целях устойчивости от сбоев, модуль принимает каждый новый байт, пришедший по UART, и сравнивает его с ожидаемым, в случае совпадения структуры пакета последний байт считается командой и выдается. Если байт неожидаем, то приём сбрасывается. В случае сбоя обмена, в целом, это обеспечивает корректный приём следующего пакета (следующего за испорченным) без переинициализации схемы приёма по таймауту, определяющему окончание приема данных.

Программные модули Control_Servo1 и _Control_Servo2 обеспечивают установку углов на сервоприводы, используя команды библиотеки Servo. При получении байта управления от интерфейсного модуля происходит идентификаци байта управления и выработка сигналов на разрешение вращения сервопривода в требуемую сторону. По прошествии определенного времени (Time_rotate) вращение останавливается, если не получена любая иная идентифицированная команда.

Протокол информационного обмена

Взаимодействие с внешними устройствами происходит по UART на скорости 9600 бод.

Пакет данных состоит из пяти байт. Первые четыре байта представляют из себя префикс и постоянны в каждом пакете. Пятый байт является байтом команды.

Структура пакета

№ байта 1 2 3 4 5
Символ команды c o m =
Байт команды 0x63 0x6F 0x36 0x3D

 

Таблица 4. Команды управления (пятый байт в пакете)

Символ команды Байт команды Команда
W 0x57 Поворот вертикального сервопривода вверх
S 0x53 Поворот вертикального сервопривода вниз
A 0x41 Поворот горизонтального сервопривода влево
D 0x44 Поворот горизонтального сервопривода вправо
x 0x78 Остановка любого движения
R 0x52 Установка сервоприводов в начальное положение