Использование графических возможностей VPython совместно с Arduino

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

Внешний вид конструкции для взаимодействия VPython с Arduino

После прочтения упомянутой статьи у вас может возникнуть резонный вопрос зачем нам нужно взаимодействие с языком программирования Python, если все, что мы можем сделать с ним с помощью платы Arduino, это обмениваться информацией через порт последовательной связи. На самом деле Python представляет собой мощную платформу для разработки, в которой можно реализовать множество интересных проектов, относящихся к машинному обучению, компьютерному зрению и многому другому. В этой статье мы рассмотрим как создать простой графический интерфейс используя язык программирования Python, в котором мы будем задействовать модуль под названием Vpython. Изложенные в данной статье решения применимы только для тех пользователей, которые используют операционную систему Windows, пользователям Mac и Linux необходимо использовать другой подход.

В конце данной статьи мы узнаем как создать простой GUI (графический интерфейс пользователя) используя язык программирования Python. Мы создадим некоторое подобие анимации с помощью ультразвукового датчика, подключенного к плате Arduino. Приложение будет отслеживать объект с помощью ультразвукового датчика и отображать эту информацию в графической форме на экране компьютера используя модуль VPython. Передачу данных от ультразвукового датчика языку программирования Python будет выполнять плата Arduino.

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

Плата Arduino (любая)
Ультразвуковой датчик HC-SR04 (купить)
Соединительные провода
Компьютер с установленным Python
Знания из предыдущей статьи этой тематики

Внешний вид необходимых компонентов для нашего проекта

Установка VPython на ваш компьютер

В предыдущей статье мы уже рассмотрели вопрос с установкой языка программирования Python на ваш компьютер. Здесь же мы установим поверх него модуль Visual Python (VPython) чтобы создавать «продвинутую» графику на основе взаимодействия Python и Arduino. Для установки VPython необходимо выполнить следующие простые шаги:

Шаг 1. Убедитесь в том, что Python уже установлен на вашем компьютере.

Шаг 2. Скачайте установочный (exe) файл VPython. Не устанавливайте его 64-битную версию даже если ваш компьютер поддерживает это.

Шаг 3. Запустите установку VPython и следуйте инструкциям во время установки. Убедитесь в том, что вы выбрали полную установку модуля (“full installation”) и не меняйте каталог установки, который установлен по умолчанию.

Шаг 4. После установки VPython его можно найти среди новых установленных программ под именем “VIDLE(VPython)” как показано на следующем рисунке.

Проверка установки VPython на компьютере

Примечание: VIDLE for VPython отличается от IDLE for python.

Шаг 5. Запустите установленное приложение и вы увидите окно программы, показанное на следующем рисунке.

Запущенное окно программы для VPython

Шаг 6. Это окно, в котором вы будете писать программу для VPython. Но сначала давайте проверим корректно ли работает Vpython на тестовом примере. Для этого выберете пункт меню File->Open->Bounce.

Шаг 7. Должен открыться пример программы. Запустите его на выполнение с помощью выбора пункта меню Run -> Run Module. Если все работает как нужно вы должны получить на экране компьютера следующее изображение:

Запущенный пример с подпрыгивающим мячом в VPython

Вы должны увидеть оболочку программы (слева) и второе окно справа, в котором будет сообщение об успешной компиляции программы. А на переднем плане должно быть окно с результатами выполнения программы – подпрыгивающим мячом.

Шаг 8. Также вы можете попробовать и другие примеры программ чтобы посмотреть на возможности Vpython, например, пример программы под названием “electric-motor”, выполнение которого приведет к следующей картинке на вашем экране.

Запущенный пример с электродвигателем в VPython

Шаг 9. Если пример программы у вас успешно запустился, то вы можете переходить к следующему разделу данной статьи.

Шаг 10. Но если у вас появились ошибки (обычно появляется сообщение о “numpy Error”) не теряйте надежду, возможно, вам их удастся исправить с помощью следующих шагов.

Шаг 11. Откройте My computer -> C drive -> Python 27 -> Scripts -> local.bat. Этот файл запустит окно с командной строкой как показано на следующем рисунке.

Запущенное окно с командной строкой

Шаг 12. Напечатайте в этом окне “pip install —upgrade numpy” и нажмите ввод на клавиатуре. В результате этой команды на ваш компьютер будет установлена новая версия Numpy. Возможно, вам придется подождать некоторое время если у вас медленный интернет.

Шаг 13. Теперь вам нужно вернуться к шагу 4 и попробовать запустить на выполнение указанный в шаге 6 пример программы.

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

Теперь мы начнем программировать в окне VPython. В этой программе мы создадим два 3D прямоугольных объекта, один из которых будет помещен в центре экрана по отношению к стационарно установленному ультразвуковому датчику, а позиция второго объекта будет меняться динамически в зависимости от расстояния между ультразвуковым датчиком и объектом (листом бумаги).

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

Первую вещь, которую мы должны сделать в программе – это импортировать (подключить) библиотеку для работы с графическими объектами (visual Library) чтобы мы могли создавать 3D объекты. Это можно сделать с помощью следующей строки:

Следующие 4 строки вам должны быть знакомы по нашему предыдущему руководству по работе с Python. Они используются для подключения библиотек для работы с последовательном портом связи и организации задержек в программе и последующего установления связи с Arduino на порту COM18 со скоростью 9600 бод/с.

Теперь пришло время создавать графические объекты. Мы создали два 3d объекта с именами obj (объект) и wallL (стена). Объект wall представляет собой стационарную стену голубого (cyan) цвета размещенную в центре экрана, а obj – это передвижной объект белого (white) цвета. Мы также разместили надпись “US sensor” рядом с объектом-стеной.

Параметры в скобках команд – это трехмерные координаты (x,y,z), которые вам должны быть знакомы из курса школьной геометрии.

Трехмерная система координат

Теперь, когда графическая часть программы у нас готова и связь по последовательному порту связи у нас установлена, все, что нам остается делать – считывать данные, поступающие от платы Arduino и передвигать в соответствии с ними объект “obj” (белый прямоугольник) по экрану. Это можно сделать с помощью приведенных ниже строчек кода, в которых команда obj.pos.x управляет положением координаты X объекта.

Подготовка платы Arduino к работе

Для подготовки платы Arduino к работе сначала мы должны подключить к ней ультразвуковой датчик в соответствии с выше приведенной принципиальной схемой. Если до этого вы никогда не работали с ультразвуковым датчиком сначала мы рекомендуем вам ознакомиться со статьей про измерение расстояний с помощью платы Arduino и ультразвукового датчика.

Принципиальная схема проекта взаимодействия VPython и ArduinoПосле этого вы должны загрузить в плату Arduino программу, приведенную в конце данной статьи. К строкам программы имеются комментарии, помогающие понять их смысл. Ультразвуковой датчик вычисляет время между передачей импульса и его возвращением обратно после отражения от объекта. Это время определяется в Arduino с помощью функции PulseIn. В дальнейшем это время преобразуется в значение расстояния с помощью следующей строчки кода:

В этой формуле расстояние вычисляется в миллиметрах (мм).

Работа проекта

Запустите программу на Python и поместите объект (в нашем случае мы использовали лист бумаги) напротив ультразвукового датчика как показано на следующем рисунке.

Помещаем лист бумаги перед экраном

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

Работа проекта на экране компьютера

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

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

Код программы для Python

Код программы для Arduino

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

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

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

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