Firmata — это базовый протокол, который предоставляет возможность для коммуникации между микроконтроллером и ПО, работающим на компьютере. Любое программное обеспечение на любом компьютере, которое совместимо с Serial-соединением может обмениваться данными с микроконтроллером, используя Firmata. Firmata дает полный доступ к Arduino прямо из ПО и исключает процессы модификации и загрузки скетчей Arduino.
Используя протокол Firmata, разработчик может загрузить скетч, который поддерживает протокол с клиентом Arduino. После этого, появляется возможность писать собственное ПО на управляющем компьютере и выполнять сложные задачи. Это ПО передает команды через последовательный порт в плату Arduino, по протоколу Firmata, что позволяет изменять логику работы программы на управляющем компьютере, не сбрасывая Arduino.
Более подробно узнать о протоколе Firmata и его последней версии и скачать тестовое ПО можно на официальном сайте.
Загрузка скетча Firmata в плату Arduino
Лучшим способом начать тестировать протокол Firmata является загрузка стандартной программы Firmata в плату Arduino и использование тестового ПО на управляющем компьютере.
Реализация протокола Firmata требует последней версии прошивки Firmata и вам не нужно беспокоится по поводу ее написания. Arduino IDE уже имеет стандартную версию прошивки Firmata.
Для загрузки программы в плату Arduino:
- В Arduino IDE открываем меню Файл → Образцы → Firmata → StandardFirmata
- Компилируем и загружаем его в свою плату Arduino
Тестирование протокола Firmata
Существует множество способов для коммуникации платы Arduino с управляющим компьютером, используя протокол Firmata. Например, можно написать собственную программу на Python, используя библиотеку, поддерживающую этот протокол или же воспользоваться уже готовой тестовой программой. Пока пойдем самым простым путем: используем готовое тестовое ПО, загрузив его с официального сайта Firmata.
На главной страничке сайта Firmata находим раздел Firmata Test Program и загружаем инструмент под названием firmata_test для своей операционной системы.
Подключаем свою плату Arduino и запускаем приложение firmata_test. В открывшемся окошке в меню Port выбираем тот порт, к которому подключена Arduino.
Как только вы выберете соответствующий порт Arduino, на экране появится окошко со множеством кнопок и меню выбора с названиями пинов.
Я использую Arduino Mega 2560, поэтому доступных пинов у меня достаточно много. Это цифровые пины с Pin 2 по Pin 53 и аналоговые пины с Pin 54 по Pin 69.
В первом столбце указан номер пина вашей платы Arduino, во втором столбце напротив названия каждого пина можно выбрать режим его работы: Input, Output, Analog, PWM, Servo (доступный режим зависит от конкретного вывода). В третьей колонке можно задать состояние этого пина.
Для проверки найдем пин под номером 13 (к нему подключен встроенный в плату светодиод) и зададим ему состояние High. Светодиод должен загореться. Теперь вернув состояние этого пина в Low можно вновь выключить светодиод. Аналогично можно изменять состояние любых пинов.
Итак, нам удалось изменять состояние любого пина в реальном времени, используя эту простенькую тестовую программу. В реальных приложениях нам необходимо использовать методы Firmata в собственном коде, который в дополнение к изменению состояния выводов также включает некоторую логику и алгоритмы, взаимодействие с другими компонентами и так далее. Я собираюсь использовать язык программирования Python для этих приложений. Но это будет другая история.
Следите за новостями. Продолжение уже скоро!
[add_ratings]