Управление Arduino с помощью Raspberry Pi и pyFirmata


Хотя Raspberry Pi и Arduino являются, по своей сути, разными аппаратными платформами по своей структуре, тем не менее, в современном мире они являются конкурирующими платформами с открытым исходным кодом. Обе эти платформы имеют достаточно большое сообщество во всем мире и хорошую поддержку. В этой статье мы постараемся показать как можно совместно использовать преимущества обеих этих платформ – мы будем с помощью платы Raspberry Pi и языка программирования Python управлять платой Arduino.

Управление Arduino с помощью Raspberry Pi и pyFirmata

Мы будем использовать программное обеспечение PyFirmata чтобы передавать команды плате Arduino с помощью платы Raspberry Pi и скрипта на python. PyFirmata представляет собой пакет библиотек на языке python, который можно установить в Arduino чтобы осуществлять последовательную связь между скриптом на python на любом компьютере и платой Arduino. С помощью этого пакета библиотек можно считывать и записывать информацию на любые контакты платы Arduino. В данном случае мы будем запускать программу на python в Arduino используя Raspberry Pi.

Необходимые компоненты

  1. Плата Arduino Uno (или любая другая) (купить на AliExpress).
  2. Плата Raspberry Pi с установленной операционной системой Raspbian OS.
  3. USB кабель для Arduino.
  4. Светодиод.

В этом проекте мы использовали внешний монитор с HDMI кабелем чтобы соединиться с Raspberry Pi. Если у вас нет лишнего монитора для этих целей вы можете использовать SSH client (Putty) или VNC server чтобы соединиться с Raspberry Pi используя компьютер.

Установка PyFirmata в Arduino используя Raspberry Pi

Чтобы загрузить программное обеспечение PyFirmata в Arduino мы сначала должны установить Arduino IDE в Raspberry Pi. Необходимо выполнить следующую последовательность шагов:

Шаг 1. Соедините Raspberry Pi с сетью интернет. Откройте терминал команд, напечатайте в нем следующую команду и нажмите ввод (enter):

Подождите несколько минут, это займет некоторое время. Приведенная команда установит Arduino IDE на вашу Raspberry Pi.

Шаг 2. Теперь мы должны установить файлы pyFirmata с сервиса github:

Затем необходимо выполнить следующие команды:

Шаг 3. Мы установили все требуемые файлы. Теперь соедините плату Arduino с Raspberry Pi с помощью USB кабеля и запустите Arduino IDE напечатав "arduino" в окне терминала.

Arduino IDE в операционной системе Raspberry Pi

Шаг 4. Затем напечатайте команду "lsusb" чтобы проверить действительно ли Arduino соединена с Raspberry Pi. В Arduino IDE идите в инструменты (tools) и выберите там вашу плату и последовательный порт, к которому она подсоединена.

Шаг 5. Загрузите программное обеспечение PyFirmata в Arduino выбрав пункт меню File -> Examples -> Firmata -> Standard Firmata и затем нажмите кнопку загрузки программы (upload).

Выбор пункта меню для установки PyFirmata в Arduino IDE

Теперь мы успешно установили программное обеспечение PyFirmata в плату Arduino. Теперь мы можем управлять платой Arduino с помощью Raspberry Pi.

Для демонстрации возможности подобного управления мы будем мигать светодиодом в плате Arduino при помощи команд на языке python в Raspberry Pi.

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

Для лучшего понимания работы этого проекта желательно прочитать документацию на программное обеспечение pyFirmata, которое можно найти по этой ссылке.

Откройте ваш текстовый редактор в Raspberry Pi и импортируйте библиотеку pyFirmata.

Определим контакт Arduino к которому будет подключен светодиод.

Теперь мы должны записать имя последовательного порта, к которому будет подключена плата Arduino с использованием функции pyfirmata.Arduino() и инициализируем этот порт на конкретную переменную.

В цикле while мы будем поочередно устанавливать на контакте, к которому подключен светодиод, напряжение высокого (HIGH) и низкого (low) уровня с использованием функции board.digital[].write() и использованием задержки с помощью функции board.pass_time().

Наш код готов, теперь сохраните его в файл с расширением .py.

Откройте терминал команд и напечатайте в нем blink.py (наш сохраненный файл) чтобы запустить выполнение этого файла в плате Arduino. Убедитесь в том, что плата Arduino соединена с платой Raspberry Pi с помощью USB кабеля.

После этого вы сможете увидеть мигание светодиода на плате Arduino. Полный код программы приведен в конце статьи.

Постепенное угасание яркости свечения светодиода на Arduino с помощью pyFirmata

Чтобы лучше познакомиться с функциями программного обеспечения pyFirmata напишем программу для постепенного угасания яркости свечения светодиода (Fading LED). В этом случае мы в программе будем использовать два цикла – один для увеличения яркости свечения светодиода, а другой – для уменьшения яркости свечения светодиода.

В этой программе мы инициализируем контакты с помощью команды вида led = board.get_pin('d:9:p'), где d обозначает цифровой контакт. Более подробно об этой функции можно прочитать в документации на pyFirmata.

Полный код программы для постепенного угасания яркости свечения светодиода приведен в конце данной статьи.

Надеюсь, если у вас получится все, что написано в данной статье, вы в дальнейшем сможете реализовать еще более "крутые" проекты на основе совместного использования плат Arduino и Raspberry pi. Также на нашем сайте вы можете прочитать статью про взаимодействие Arduino и Raspberry Pi с помощью последовательной связи.

Исходный код программы

Код на Python для мигания светодиодом

Код на Python для постепенного угасания яркости свечения светодиода

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
1 367 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован.