DiyПрограммирование

Как программировать и управлять Arduino с помощью Python

Как программировать и управлять Arduino с помощью Python

Python взял штурмом мир кодирования. Наряду с появлением этого нового языка, сцена электроники DIY также процветала. Макетные платы и одноплатные компьютеры от таких компаний, как Arduino и Raspberry Pi изменили способ создания домашней электроники. Разве это не было бы здорово, если бы вы могли программировать Arduino с Python?

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

Эта статья расскажет вам, как настроить Arduino UNO (хотя любая плата, совместимая с плату здесь), которое будет программироваться и управляться из командной строки с помощью программ Python. Этот учебник написан для Windows 10, но также работает для Mac и Linux. Вы даже можете использовать этот рабочий процесс для управления Arduino напрямую из Raspberry Pi с об окончательном опыте «сделай сам».

Настройка вашего Arduino для Python

Для сегодняшнего проекта мы будем использовать Arduino Uno вместе с интерфейсом pyFirmata для Python. Для этого вы можете использовать практически любую Arduino-совместимую плату, хотя на момент написания интерфейса PyFfirmata поддерживались только Arduino Uno, Mega, Due и Nano. Если вы уже являетесь гуру Python, вы можете добавить свою собственную поддержку плат в pyFirmata — обязательно обновите GitHub, если вы это сделаете!

программирование и управление arduino с питоном

Если вы этого еще не сделали, установите Arduino IDE. Если вы совершенно новичок в мире микроконтроллеров, наше руководство для начинающих по Arduino руководство для поможет вам все на месте.

Подключите плату Arduino и откройте IDE. Убедитесь, что в меню « Инструменты» выбраны правильные плата и порт. Загрузите пример эскиза StandardFirmata и загрузите его на доску. Это позволит вам напрямую управлять Arduino, если он подключен к компьютеру через USB. Если эскиз загружен на вашу доску без ошибок, вы готовы двигаться дальше.

Python и управление из командной строки

Мы будем использовать Python 3.4 для управления нашим Arduino, поскольку модуль, который вы будете устанавливать, определяет его как последнюю совместимую версию. Любая версия до этого должна работать нормально, и сообщалось, что более поздние версии будут работать. Вы можете скачать Python 3.4 для Windows 10 с сайта Python Software Foundation . Если вы хотите запустить несколько версий Python, наше руководство по виртуальным средам Python сможет вам помочь.

После того, как вы установили Python, мы хотим добавить его в переменную PATH вашей системы. Это позволит нам запускать код Python непосредственно из командной строки без необходимости находиться в каталоге, в котором он был установлен. Это можно сделать, открыв Панель управления , выполнив поиск Среды и нажав Изменить системные переменные среды . В нижней части окна выберите Переменные среды . Это вызовет это окно:

программирование и управление arduino с питоном

Если вы уже видите PATH в списке, нажмите «Изменить» и добавьте каталог Python и Python / Scripts . Если у вас нет переменной PATH, нажмите new и добавьте ее. Обратите внимание, что Python был установлен прямо в C: \ здесь. Если вы установили его в другом месте, вам нужно изменить его, чтобы отразить это. Нажмите OK, чтобы вернуться в цепочку окон, и вы почти готовы управлять своим Arduino с помощью Python!

Волшебная смазка

Вам понадобится один последний кусочек головоломки, чтобы Python хорошо говорил с нашим Arduino. Это происходит в форме интерфейса Python, называемого pyFirmata . Этот интерфейс, созданный Tino de Bruijn, доступен для загрузки с github, хотя вы можете установить его прямо из командной строки, набрав:

pip install pyfirmata 

Все хорошо, он должен установить и выглядеть так:

программа и управление arduino с питоном

Если это не удается, перейдите к добавлению Python в раздел Переменная среды и убедитесь, что вы указали правильный путь к каталогу Python.

Как это случилось

Теперь все настроено, и вы можете создать программу на Python для своего Arduino, чтобы протестировать ее. Откройте IDE по вашему выбору. Мы будем использовать Eclipse сегодня, но вы также можете легко использовать любой текстовый редактор или даже IDE в облаке.

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

Во-первых, вы захотите импортировать то, что вам нужно, из модуля pyFirmata вместе со стандартным модулем Python Time .

 from pyfirmata import Arduino, util import time 

Теперь вы хотите настроить плату Arduino. В этой статье предполагается, что вы используете плату Arduino Uno , хотя поддерживаются несколько других плат Arduino. Обратитесь к pyFirmata github за подробной информацией о поддержке платы.

Проверьте, какой COM-порт вы используете в Arduino IDE, и введите его в свой код в качестве переменной платы .

 board = Arduino("COM3") 

Теперь вы настроите приглашение пользователя. Те, кто знаком с Python, узнают все здесь. Вы выводите вопрос на экран с помощью функции ввода и сохраняете ответ как переменную. После того, как пользователь предоставил номер, программа сообщает, сколько раз будет мигать светодиод.

 loopTimes = input('How many times would you like the LED to blink: ') print("Blinking " + loopTimes + " times.") 

Чтобы светодиод мигал соответствующее количество раз, используйте цикл for . Если вы новичок в Python , будьте осторожны с отступом, так как в отличие от других языков пробелы являются частью синтаксиса. Обратите внимание, что контакт 13 является встроенным светодиодом для Arduino Uno, вам нужно будет изменить его, если ваша плата отличается.

 for x in range(int(loopTimes)): board.digital[13].write(1) time.sleep(0.2) board.digital[13].write(0) time.sleep(0.2) 

Здесь вы преобразуете переменную loopTimes в целое число, так как ввод от пользователя будет автоматически сохранен в виде строки. В этой простой демонстрации мы предполагаем, что пользователь введет числовое значение. Любая другая запись, например, «восьмерка», выдаст ошибку.

Сохраните сценарий и откройте командную строку .

Мигающие огни и другие откровения

Все готово к работе, все, что вам нужно сделать, это перейти туда, где находится скрипт, и запустить его. Для этого введите cd [путь к каталогу скрипта], а затем введите python blink.py .

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

Вывод программы должен выглядеть так:

программа и управление arduino с питоном

Как только вы нажмете Enter после выбранного количества миганий, Arduino выполнит ваши заказы.

программа и управление arduino с питоном

Маленькие Начало

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

Если вы используете сервер Linux дома, этот метод связи с платами Arduino может превратить этот сервер в полноценную систему домашней автоматизации DIY. Комбинируя скрипты Python, управляющие микроконтроллером, со схемой автоматизации «Сделай сам , ваш ящик для хранения NAS может взять на себя целый ряд новых полезных функций.

Чтобы сделать его незабываемым, почему бы не создать свой собственный NAS- и использовать его для управления своими приборами? Представьте, как здорово было бы нажать кнопку воспроизведения на Plex. сервера и имейте света выключите автоматически!

Вы уже управляете Arduino с помощью Python? Есть ли удивительные обходные пути, о которых мы просто еще не знаем? Дайте нам знать в разделе комментариев ниже!

Похожие посты
Программирование

Что такое канал RSS? (И где его взять)

Программирование

7 причин, почему изображения не загружаются на ваш сайт

Программирование

Запустите агент SQL Server: настройте SQL Server 2012

Программирование

15 лучших бесплатных обоев дня Святого Патрика