Рубрики
Схемы на Arduino

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

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

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

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

  1. Плата Arduino Uno (или любая другая) (купить на AliExpress).
  2. Плата Raspberry Pi с установленной операционной системой (купить на AliExpress).
  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» в окне терминала.

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

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

Теперь мы успешно установили программное обеспечение 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 для постепенного угасания яркости свечения светодиода

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *