Ардуино плюс Python

Урок 9. Что такое Firmata?

В предыдущем уроке нашего курса вы загрузили эскиз "Blink" на свою плату Arduino. Эскизы Arduino написаны на языке, аналогичном C++, и компилируются и записываются во флэш-память микроконтроллера при нажатии кнопки Upload (рус. - загрузить).

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

Тем не менее, есть несколько подходов, которые вы можете использовать для использования Arduino с Python или другими языками. Одна из идей - запустить основную программу на ПК и использовать последовательное соединение для связи с Arduino через USB-кабель.

Эскиз будет отвечать за чтение входных данных, отправку информации на ПК и получение обновлений с ПК для обновления выходов Arduino.

Чтобы управлять Arduino с ПК, вам необходимо разработать протокол для связи между ПК и Arduino. Например, вы можете рассмотреть протокол с такими сообщениями:

  • VALUE OF PIN 13 IS HIGH: используется для информирования ПК о состоянии выводов цифрового входа;
  • SET PIN 11 LOW: используется, чтобы указать Arduino установить состояния выходных контактов.

С определенным протоколом вы можете написать скетч Arduino для отправки сообщений на ПК и обновления состояний контактов в соответствии с протоколом. На ПК вы можете написать программу для управления Arduino через последовательное соединение на основе разработанного вами протокола. Для этого вы можете использовать любой язык и библиотеки, которые вы предпочитаете, такие как Python и библиотека PySerial.

К счастью, для этого есть стандартные протоколы. Firmata является одним из них.

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

Arduino IDE включает в себя готовые скетчи, которые позволят работать Arduino через Python с протоколом Firmata. Со стороны ПК есть реализации протокола на нескольких языках, включая Python.

Чтобы начать работать с Firmata и понять как всё работает, далее будем использовать его для реализации классической программы «Привет, мир!».