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

Вот пример одного из способов управления платами и микроконтроллерами Arduino с помощью оболочки языка Python.

Самым эффективным и простым в изучении языком программирования в современном мире является python. Благодаря миллионам приложений и максимально удобному интерфейсу мы можем делать с ним практически все.

В этой статье я попытался объединить среду Arduino с оболочкой Python.

Из компонентов нам понадобится только Arduino Uno (Genuino Uno) и Arduino IDE.

Установка Python

Для начала работы с платой необходимо загрузить на компьютер программу python.

Следуйте шагам, которые я привел ниже.

Перечисленные ниже шаги применимы только к пользователям Windows, работающим под управлением 32- или 64-разрядной операционной системы. Процедура установки для MAC и Linux отличается.

Нам нужно загрузить среду с официального сайта Python отсюда.

    Нажмите на 32-битный Python-2.7.9, который установит 32-битный Python IDLE на ваш компьютер.

Импорт Pyserial

Теперь вам нужно импортировать модуль Pyserial в IDLE.

PySerial — это модуль Python API, который используется для чтения и записи последовательных данных в Arduino или другой микроконтроллер.

Нажмите на Pyserial Windows (ссылка), чтобы загрузить PySerial. В результате вы получите исполняемый exe-файл, который можно установить напрямую. Не изменяйте никаких настроек во время установки. Оставьте его в каталоге по умолчанию и с настройками по умолчанию.

Теперь давайте проверим, что PySerial установлен правильно. Для этого снова откройте оболочку Python Shell и введите:

последовательный импорт

Если библиотека была установлена успешно, вы не должны получить никаких сообщений об ошибках.

Внутри функции setup мы инициализируем последовательную связь на 9600 бод и объявляем, что будем использовать встроенный светодиод в качестве вывода и установим его на минимум при запуске программы.

Коды проекта

Вы можете скопировать коды для проекта ниже.

Код Python :

Код Arduino №1:

Код Arduino #2:

Мы также отправляем приветственное сообщение в python, используя последовательный вывод, как показано в коде Python #2:

Внутри функции цикла мы последовательно считываем все входящие данные и присваиваем значение переменной ‘data’. Теперь, основываясь на значении этой переменной (‘data’), мы переключим встроенный светодиод, как показано в коде Python #1.

Приведенные выше фрагменты кода будут написаны в Arduino IDE. Приведенный выше код должен быть написан на языке Python в режиме ожидания для Windows. Затем просто загрузите код Arduino (см. выше) в оболочку python для управления встроенным светодиодом на вашем Arduino.

Что такое Arduino

Если называть вещи своими именами, то Arduino — это строительный набор для людей, которые устали создавать бесполезные изображения и хотят дать им немного жизни. Проще говоря, Arduino — это печатная плата с контроллером, кристаллическим осциллятором, АЦП/ЦАП, несколькими разъемами, диодами и кнопками. Остальное зависит от владельца: создать робота по своему желанию, создать аппаратно-программную платформу для умного дома или забыть о практичности и играть.

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

Arduino является довольно ограниченной платформой с точки зрения возможностей программирования, особенно по сравнению с Raspberry Pi. Поскольку порог вхождения неприлично низок (базовый учебник занимает 3 листа А4), вы не можете рассчитывать на богатство языков без подключения дополнительных модулей. Он основан на C/C++, но, используя различные IDE и библиотеки, вы получите доступ к Python, C#, Go и другим детским программам, таким как Snap! или ArduBlock. Мы поговорим о том, как, когда и кого использовать в следующий раз.

Основной язык платформы Arduino, который с некоторыми доработками и упрощениями используется в стандартной оболочке программирования. Все доступные команды «для начинающих» можно найти здесь, но никто не утруждает себя использованием оригинального языка C++, никаких дополнений не требуется. Если вы хотите поиграть с чистым C, то WinAVR — это, как следует из названия, программа, предназначенная для взаимодействия между Windows и AVR MCU, используемыми в Arduino. Более подробное руководство вы можете прочитать здесь.

Использование C/C++ рекомендуется людям, которые уже разбираются в программировании и изучали несколько языков в школе, но хотят построить что-то большее, чем простая светодиодная мигалка или простой автомобиль с помощью Arduino.

Ardublock

Давайте ненадолго отвлечемся от языков для взрослых в пользу Scratch — точнее, его адаптации — Ardublock, языка, который нравится детям. Здесь вы найдете все то же самое, но адаптированное для вашей платформы: разноцветные блоки, строительные блоки, русские названия, простая логика. Этот вариант отлично подходит для тех, кто совсем не знаком с программированием. Как в Лого можно перемещать виртуальную черепашку по виртуальной плоскости, так и здесь с помощью нескольких простых операций можно заинтересовать ребенка реальной интерпретацией его программистской деятельности.

Да, кстати, для использования плагина необходимо установить его на стандартную Arduino IDE. Лучше не брать последние версии, они довольно сложные, для начала достаточно той, что была выпущена в конце 2013 года. Для установки переименуйте скачанный файл в «ardublock-all» и поместите его в папку «Мои документы/Arduino/tools/ArduBlockTool/tool». Если его не существует, создайте его. Если вам что-то непонятно, вот более подробная информация.

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

Чтобы использовать этот язык, вам нужно перейти на сайт snap4arduino.org и загрузить необходимые компоненты для вашей операционной системы. Здесь вы также найдете инструкции по установке, использованию и видеопримеры.

Рекомендуется для младшей возрастной группы, тех, кто изучал программирование так давно, что уже ничего не помнит, и тех, кто хочет приобщить своего ребенка к информатике через Scratch и Snap!

Python

Технически вы можете программировать в Arduino, используя Piet, просто потому, что вы можете скомпилировать все в машинный код, если вы достаточно настойчивы. Но поскольку Python — один из самых популярных языков с почти идеальным балансом сложности и возможностей, было бы обидно игнорировать его использование в Arduino. Вы можете начать изучение Python с нашего бесплатного интенсивного курса «Основы Python».

Затем вам понадобится библиотека PySerial (возможно, вы уже использовали ее для связи с портами компьютера) и vPython. О том, как правильно его настроить и заставить работать в конечном итоге, вы можете прочитать здесь и здесь соответственно.

Go и другие языки.

Подобно тому, как Arduino взаимодействует с Python с помощью библиотеки PySerial, он также может взаимодействовать с Go, Java, HTML и всем остальным, что вы захотите. Arduino является настолько популярной платформой, что такой тривиальный вопрос, как выбор языка, не остановит следующего исследователя. Все, что требуется от владельца этой маленькой доски, — придумать что-то невероятно интересное, и удобный инструмент неизбежно найдется.

Начать работать в сфере ИТ может быть непросто, не в последнюю очередь потому, что, глядя на окружающие нас технологии, невозможно провести различие между интересом к аппаратному и программному обеспечению. С одной стороны, есть желание создать устройство с совершенным дизайном, множеством датчиков и неограниченными возможностями, а с другой — таинство обработки данных и стремление максимизировать производительность, не пренебрегая функциональностью. Arduino — это первый шаг к великим изобретениям, не требующий ни глубоких знаний схем, ни опыта программирования.

Что такое Arduino

Если говорить прямо, Arduino — это устройство для тех, кому надоело создавать бесполезные изображения и кто хочет дать им жизнь. Проще говоря, Arduino — это печатная плата, на которой размещены контроллер, кристаллический генератор, АЦП/ЦАП, некоторые разъемы, диоды и кнопки. Остальное зависит от владельца: создать робота по своему желанию, построить аппаратно-программную платформу для умного дома или забыть о практичности и играть.

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

Arduino является довольно ограниченной платформой с точки зрения возможностей программирования, особенно по сравнению с Raspberry Pi. Поскольку порог вхождения неприлично низок (базовый учебник занимает 3 листа А4), вы не можете рассчитывать на богатство языков без подключения дополнительных модулей. Он основан на C/C++, но, используя различные IDE и библиотеки, вы получите доступ к Python, C#, Go и другим детским программам, таким как Snap! или ArduBlock. Мы поговорим о том, как, когда и кого использовать в следующий раз.

Основной язык платформы Arduino, который с некоторыми доработками и упрощениями используется в стандартной оболочке программирования. Все доступные команды «для начинающих» можно найти здесь, но никто не утруждает себя использованием оригинального языка C++, никаких дополнений не требуется. Если вы хотите поиграть с чистым C, то WinAVR — это, как следует из названия, программа, предназначенная для взаимодействия между Windows и AVR MCU, используемыми в Arduino. Более подробное руководство вы можете прочитать здесь.

Использование C/C++ рекомендуется людям, которые уже разбираются в программировании и изучали несколько языков в школе, но хотят построить что-то большее, чем простая светодиодная мигалка или простой автомобиль с помощью Arduino.

Ardublock

Давайте ненадолго отвлечемся от языков для взрослых в пользу Scratch — точнее, его адаптации — Ardublock, языка, который нравится детям. Здесь вы найдете все то же самое, но адаптированное для вашей платформы: разноцветные блоки, строительные блоки, русские названия, простая логика. Этот вариант отлично подходит для тех, кто совсем не знаком с программированием. Как в Лого можно перемещать виртуальную черепашку по виртуальной плоскости, так и здесь с помощью нескольких простых операций можно заинтересовать ребенка реальной интерпретацией его программистской деятельности.

Да, кстати, для использования плагина необходимо установить его на стандартную Arduino IDE. Лучше не брать последние версии, они довольно сложные, для начала достаточно той, что была выпущена в конце 2013 года. Для установки переименуйте скачанный файл в «ardublock-all» и поместите его в папку «Мои документы/Arduino/tools/ArduBlockTool/tool». Если его не существует, создайте его. Если вам что-то непонятно, вот более подробная информация.

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

Чтобы использовать этот язык, вам нужно перейти на сайт snap4arduino.org и загрузить необходимые компоненты для вашей операционной системы. Здесь вы также найдете инструкции по установке, использованию и видеопримеры.

Рекомендуется для младшей возрастной группы, тех, кто изучал программирование так давно, что уже ничего не помнит, и тех, кто хочет приобщить своего ребенка к информатике через Scratch и Snap!

Python

Технически вы можете программировать в Arduino, используя Piet, просто потому, что вы можете скомпилировать все в машинный код, если вы достаточно настойчивы. Но поскольку Python — один из самых популярных языков с почти идеальным балансом сложности и возможностей, было бы обидно игнорировать его использование в Arduino. Вы можете начать изучение Python с нашего бесплатного интенсивного курса «Основы Python».

Затем вам понадобится библиотека PySerial (возможно, вы уже использовали ее для связи с портами компьютера) и vPython. О том, как правильно его настроить и заставить работать в конечном итоге, вы можете прочитать здесь и здесь соответственно.

Go и другие языки.

Подобно тому, как Arduino взаимодействует с Python с помощью библиотеки PySerial, он также может взаимодействовать с Go, Java, HTML и всем остальным, что вы захотите. Arduino является настолько популярной платформой, что такой тривиальный вопрос, как выбор языка, не остановит следующего исследователя. Все, что требуется от владельца этой маленькой доски, — придумать что-то невероятно интересное, и удобный инструмент неизбежно найдется.

Содержание статьи

С чего все началось?

Все началось с кампании на Kickstarter. Дэмиен Джордж, разработчик из Англии, создал плату микроконтроллера специально для Python. И кампания «взлетела». Первоначальный взнос составлял £15 000, но было собрано в шесть с половиной раз больше этой суммы — £97 803.

А чем эта плата лучше?

Автор проекта назвал ряд преимуществ своей платформы перед Raspberry Pi и Arduino:

Мощность — МП является более мощным по сравнению с микроконтроллером Arduino, используя 32-битные ARM-процессоры, такие как STM32F405 (168 МГц Cortex-M4, 1 Мбайт флэш-памяти, 192 Кбайт оперативной памяти).

Простота использования — MicroPython основан на Python, но немного упрощен, так что команды для управления датчиками и двигателями могут быть написаны всего в несколько строк.

Отсутствие компилятора — для запуска программы на платформе MicroPython нет необходимости устанавливать на компьютер дополнительное программное обеспечение. Плата определяется компьютером как обычный USB-накопитель — просто закиньте на него текстовый файл с кодом, перезагрузитесь, и программа будет немедленно выполнена. Для удобства вы можете установить на свой компьютер эмулятор терминала, который позволит вам вставлять элементы кода с вашего компьютера непосредственно в платформу. Если вы используете его, вам даже не придется перезагружать плату, чтобы проверить программу. Каждая строка кода будет немедленно выполнена микроконтроллером.

Низкая стоимость — по сравнению с Raspberry Pi, платформа PyBoard немного дешевле и поэтому более доступна.

  • Открытая платформа — как и Arduino, PyBoard является открытой платформой, все схемы будут в открытом доступе, что означает, что вы можете самостоятельно разработать и собрать подобную плату в соответствии с вашими потребностями.
  • И что, только официальная плата?

    Нет. При всех своих преимуществах PyBoard (так называется плата разработки MicroPython) довольно дорогая. Однако, благодаря открытой платформе, вы уже можете запускать MicroPython, созданный специально для нее, на многих популярных платах. На данный момент существуют версии:

    • Для BBC micro:bit — британская разработка, позиционируемая как официальный учебник для классов информатики;
    • Circuit Playground Express — разработан известной компанией Adafruit. Это плата, содержащая светодиоды, датчики, контакты и кнопки. По умолчанию он программируется с помощью Microsoft MakeCode for Adafruit. Это основанный на блоках редактор «кода» (подобный Scratch);
    • ESP8266/ESP32 — одна из самых популярных плат для разработки IoT. Его можно программировать на языках Arduino C и Lua. И сегодня мы попробуем установить на него MicroPython.

    Плата ESP8266

    Подготовка к работе

    Прежде чем начать писать программы, необходимо настроить плату, установить на нее прошивку и установить необходимые программы на компьютер.

    Все примеры были проверены и протестированы на следующем оборудовании:

    • Плата NodeMCU ESP8266-12E;
    • Контроллер двигателя L293D;
    • 0,96″ 128 × 64 Дисплей I2C;
    • Adafruit NeoPixel Ring 16.

    Прошивка контроллера

    Чтобы прошить плату, нам понадобится Python. Точнее, даже не сам Python, а инструмент esptool, распространяемый вместе с pip. Если у вас установлен Python (независимо от версии), откройте терминал (командную строку) и введите

    После установки esptool вам необходимо выполнить две вещи. Первый — загрузить версию прошивки для ESP8266 с официального сайта. И второе — определить адрес платы при подключении к компьютеру. Самый простой способ сделать это — подключиться к компьютеру, открыть Arduino IDE и посмотреть адрес в списке портов.

    Для простоты, адрес платы в примере будет /dev/ttyUSB0 , а файл прошивки будет переименован в esp8266.bin и будет лежать на рабочем столе.

    Откройте терминал (командную строку) и перейдите на рабочий стол:

    Отформатируйте флэш-память платы:

    Если при форматировании возникают ошибки, то вручную активируйте режим вспышки. Нажмите кнопки сброса и прошивки на плате. Затем отпустите сброс и, не отпуская вспышку, попробуйте переформатировать снова.

    Затем загрузите прошивку на плату:

    Взаимодействие с платой

    Существует несколько способов взаимодействия с советом директоров:

    • Через последовательный порт;
    • Через онлайн-переводчик.

    При подключении через Serial-port пользователь видит в своем терминале (в командной строке) практически обычный интерпретатор Python.

    Подключение через последовательный порт

    Существуют различные программы для подключения через Serial. Для Windows можно использовать PuTTY или TeraTerm. Для Linux можно использовать picocom или minicom. В качестве кроссплатформенного решения можно использовать монитор портов Arduino IDE. Самое главное — правильно определить порт и указать скорость передачи 115200 бод.

    Кроме того, уже есть несколько программ, созданных и размещенных на GitHub для облегчения разработки, например EsPy. В дополнение к Serial-port, он включает в себя редактор файлов Python с подсветкой синтаксиса и файловый менеджер для загрузки и выгрузки файлов на ESP.

    EsPy IDE

    Но все вышеперечисленные методы хороши только в том случае, если у нас есть возможность напрямую подключиться к устройству через кабель. Но плата может быть интегрирована в какое-то устройство, и разбирать ее только для обновления программного обеспечения как-то неоптимально. WebREPL, вероятно, был создан с учетом таких случаев. Это метод взаимодействия с платой через браузер с любого устройства в локальной сети, если у платы нет статического IP, и с любого компьютера, если он есть. Давайте настроим WebREPL. Для этого, после подключения к доске, введите

    Появится сообщение о состоянии автозапуска WebREPL и вопрос о том, хотите ли вы включить или отключить автозапуск WebREPL.

    После ввода q появится сообщение о необходимости задать пароль для доступа:

    Введите его и затем подтвердите. Теперь мы сможем подключиться к плате через Wi-Fi после перезагрузки.

    Поскольку мы не настроили плату на подключение к сети Wi-Fi, она действует как точка доступа. Имя сети Wi-Fi — MicroPython-******, где я заменил часть MAC-адреса звездочками. Подключитесь к нему (пароль — micropythoN).

    Откройте WebREPL и нажмите кнопку Подключиться. После ввода пароля мы попадаем в тот же интерфейс, что и при прямом подключении. Кроме того, WebREPL имеет интерфейс для загрузки файлов на диск и скачивания файлов на ваш компьютер.

    WebRERL

    Среди файлов, загружаемых на диск, есть стандартные:

    • boot.py — скрипт, который загружается первым при включении платы. Обычно он содержит функции для инициализации модулей, подключения к Wi-Fi и запуска WebREPL;
    • main.py — основной скрипт, который запускается сразу после выполнения boot.py и в него записывается основная программа.

    Начинаем разработку

    Hello world

    Как принято, первой программой, написанной на новом языке программирования, должна быть программа, отображающая Hello world. Давайте не будем отступать от традиции и покажем это сообщение азбукой Морзе.

    И что же происходит? Во-первых, мы объединяем библиотеки: стандартную библиотеку времени выполнения Python и специализированную библиотеку машинного обучения. Эта библиотека отвечает за взаимодействие с GPIO. На втором выводе находится стандартный встроенный светодиод. Мы подключаем его и указываем, что он действует как выход. Если бы у нас был подключен какой-либо датчик, мы бы указали режим IN.

    Следующие две функции отвечают за включение и выключение светодиода на заданный промежуток времени. Вам, наверное, интересно, почему я сначала выключаю светодиод, а затем включаю? Мне также очень интересно, почему сигнал для конкретного светодиода перевернут. Оставим это на совести китайских сборщиков. На самом деле, команда pin.off() включает диод, а pin.on() выключает его.

    А дальше все просто: мы помещаем нашу строку азбуки Морзе в переменную Hello_world и, пробегая по ней, вызываем ту или иную функцию.

    Продолжение доступно только участникам

    Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

    Членство в сообществе на ограниченное время даст вам доступ ко ВСЕМ материалам «Хакера», увеличит вашу персональную накопительную скидку и позволит вам накопить профессиональный рейтинг Xakep Score! Подробнее на

    Оцените статью
    Добавить комментарий