пятница, 3 августа 2018 г.

Visual Studio Code на Linux. Программирование на Python для Lego EV3


На сегодняшний день редактор Visual Studio Code (или просто VS Code) — самый удобный способ написания и запуска скриптов для EV3-блока с прошивкой ev3dev. Не путайте его с Visual Studio. Это не одно и тоже!

Совсем недавно, в июле 2018, dlech — один из авторов прошивки ev3dev — опубликовал плагин Visual Studio Code для программирования ev3dev. Он позволяет быстро копировать файлы на EV3, запускать их и даже делать снимки экрана EV3. Спасибо ему за это!

Настроим VS Code с этим плагином на своём Linux.

Ранее уже рассматривался вариант с использованием IDE Eclipse, также заслуживает внимание простой Python-редактор Thonny с великолепной системой отладки (ссылка1, ссылка2 и ссылка3).

Но сегодня мы настроим очень удобный и универсальный редактор от компании MicrosoftVisual Studio Code.

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

Приступим к установке.

Для EV3. Подготовка SD-карты с прошивкой ev3dev


Для того чтобы напрямую загружать файлы из VS Code в EV3-блок, нужно использовать прошивку ev3dev на основе Debian 9 Stretch, созданную 24.10.2017 или более позднюю.

1. По умолчанию на официальном сайте ev3dev предлагается прошивка на основе Debian 8 Jessie. Чтобы скачать ev3dev-stretch либо найдите на этой же странице ссылку 
либо сразу перейдите на страницу загрузки

и скачайте последнюю версию прошивки из списка.
2. Далее подготовьте SD-карту объёмом 2 или более Гб (но менее 32 Гб, т. к. они не поддерживаются EV3-блоком) и картридер.

3. Следуйте официальной инструкции по записи прошивки на SD-карту с помощью программы etcher

4. Карта готова! Переходим к настройке компьютера.

Для Linux-компьютера. Установка и настройка VS Code


1. Обновляем информацию о пакетах в репозиториях
sudo apt update

2. Устанавливаем VS Code из репозитория
sudo apt install code

3. Дополнительно устанавливаем графическую библиотеку tkinter
sudo apt install python3-tk

(python3 у вас должен быть установлен по умолчанию)

4. Обновляем pip3 — менеджер пакетов, написанных на Python3
sudo pip3 install --upgrade pip

(pip3 должен быть установлен по умолчанию)

5. Устанавливаем пакет python-ev3dev (чтобы VS Code узнавал специфические команды ev3dev и не подчеркивал их красными волнистыми линиями, см. пример на скрине).
Введите в терминале команду
sudo pip3 install python-ev3dev

6. Запускаем VS Code (ярлык в Меню из группы Программирование или из терминала командой code)
7. Слева от окна Welcome в ряд располагаются кнопки Меню
Установим два плагина.

8. Нажмите на Extensions (Расширения)
9. Введите в поиске Python и найдите расширение от Microsoft
10. Нажмите кнопку Install для установки.

11. После установки Python введите в окне поиска название второго расширения — ev3dev-browser
12. Нажмите кнопку Install для установки ev3dev-browser

13. Нажмите кнопку Reload, чтобы активировать установленные расширения
14. После перезапуска VS Code вы увидите список установленных расширений.

15. Любой проект удобно хранить в отдельной папке. Во-первых, потому что проект может состоять из нескольких файлов и нежелательно чтобы они перемешивались с другими. Во-вторых, на EV3-блок загружается не только открытый файл со скриптом, а все файлы из папки проекта. Поэтому создадим папку проекта.

16. Нажмите кнопку Explorer

17. Выберите Open Folder

Ранее я создал папку ev3dev-python в домашней директории для всех проектов EV3. Рекомендую в дальнейшем сделать также.

18. Перейдите в место хранения папок проектов (у меня папка ev3dev-python) и создайте папку для нового проекта, нажав Create Folder.

19. Напишите новое название, например, python_VS и нажмите Enter
20. Далее откроется созданная папка. Нажмите OK

21. Нажмите на кнопку New File, чтобы создать новый файл в папке проекта

22. Введите название нового проекта, например, test_project.py (обязательно нужно использовать расширение .py — чтобы VS Code определил скрипт как файл Python, обратите внимание на появившийся значок перед введённым названием)
23. Справа открылась вкладка созданного файла

24. Одновременно справа внизу может появится сообщение, что Linter pylint is not installed, т. е. что не установлен pylint для анализа кода. Но по умолчанию в строке состояния можно заметить, что используется Python2.7, т. е. второй версии. Нам же подходит для программирования EV3 только Python3, т. е. третьей версии. Поэтому сейчас не нужно устанавливать pylint!

25. Нажмите на синей полосе по надписи с версией Python (у меня Python2.7.12 64-bit) и выберите версию соответствующую Python3 (у меня это предпоследняя запись в списке)

26. Далее нажмите на кнопку Install, чтобы установить pylint для Python3.

27. Если установка прошла неудачно попробуйте установить вручную, дав команду в терминале
pip3 install pylint

28. Настройка VS Code завершена! Переходим к тестированию.

Тестирование без EV3


1. Скопируйте и вставьте в test_project.py следующий скрипт
from time import sleep
import turtle
t = turtle.Pen()
for n in range(4): # четыре раза
   t.forward(100) # идём вперёд и
   t.left(90) # поворачиваем налево на 90 градусов
sleep(4) # в конце четыре секунды показываем экран
2. Не будем вдаваться в описание кода. Скажем лишь, что это, так называемая, черепашья графика, где движущийся объект оставляет оставляет за собой линию.

3. Запустите скрипт, выбрав меню DebugStart Without Debugging или нажав клавиши Ctrl + F5 (либо просто F5).
4. В появившемся на четыре секунды окне должен нарисоваться контур квадрата

5. Если окно не появилось, внимательно изучите ошибки в консоли. Возможно у вас был пропущен шаг установки tkinter.
6. Сохраните файл. Для этого выберите в меню FileSave либо нажмите комбинацию Ctrl + S

Тестирование с EV3


1. Создайте новый файл, назовите его, например, ev3_project.py.

2. Скопируйте и вставьте следующее содержимое в новый файл
#!/usr/bin/env python3
from ev3dev.ev3 import *
import os
os.system('setfont Lat15-TerminusBold14') # настраиваем крупный шрифт
mL = LargeMotor('outB'); mL.stop_action = 'hold'
mR = LargeMotor('outC'); mR.stop_action = 'hold'
print('Hello, my name is EV3!') # печатаем на экране фразу 
Sound.speak('Hello, my name is EV3!').wait() # говорим и запускаем моторы
mL.run_to_rel_pos(position_sp= 840, speed_sp = 250)
mR.run_to_rel_pos(position_sp=-840, speed_sp = 250)
mL.wait_while('running')
mR.wait_while('running')
Обратите внимание на подчёркивание зелёной волнистой линией from. Это не ошибка. При наведении на него указателя мыши pylint сообщит нам, что мы не используем множество команд, которые добавляем в этой строке.
3. Возьмите EV3-блок с прошивкой ev3dev-stretch.

4. Подключите к нему два мотора, к портам B и С.

5. Включите его.

6. Подключите EV3-блок к компьютеру, например, с помощью USB-провода. Если у вас возникли проблемы с подключением по USB перейдите по этой ссылке.

7. Соедините EV3-блок с VS Code. Для этого откройте Explorer и в EV3DEV DEVICE BROWSER выберите Click here to connect to a device

8. В появившемся списке устройств выберите ваш EV3
9. Перед названием подключенного устройства должен появиться зелёный кружок.
10. Загрузим текущий скрипт на EV3. Для этого наведите указатель мыши на название панели EV3DEV DEVICE BROWSER и щёлкните по появившейся кнопке Send project to device
11. Проверим загрузку. Нажав на стрелку перед кружком и так далее развернём дерево папок и заметим, что также был скопирован первый проект, т. е. копируются все файлы находящиеся в папке проекта.

12. Помимо запуска проекта непосредственно с блока EV3, запустить проект можно удаленно. Для этого щёлкните по файлу правой кнопкой мыши и выберите Run.

Этот способ особенно удобен для тестирования с соединением по Wi-Fi.

13. Запустите проект. На экране должна появиться надпись Hello, my name is EV3!, далее она должна быть прочитана мужским голосом и после должны вращаться двигатели.

14. Чтобы удалить файл или папку из памяти EV3, нужно выбрать команду Delete (см. предыдущий скрин)

15. Теперь вы можете самостоятельно программировать EV3 с помощью VS Code.

Автодополнение и всплывающие подсказки


1. Создайте файл с расширением .py, теперь VS Code будет выдавать описание используемых команд Python. Задайте вначале файла путь к интерпретатору 
#!/usr/bin/env python3
2. Например, мы хотим узнать больше о команде print. Напечатайте print и во всплывшей подсказке нажмите на значок информации (буква i в синем кружке).

3. Появилось подробное описание команды print

4. Тоже будет работать и для специфических команд ev3dev. Удалите print. Чтобы VS Code знал команды для EV3 на второй строке напечатайте
from ev3dev.ev3 import *
Далее на третьей строке начните набирать
Sound
Появится подсказка к этому классу

5. Далее поставьте точку. Появится подсказка с выбором методов и атрибутов класса. Клавишами-стрелками Вверх-Вниз выберите speak, посмотрите описание и нажмите Enter. Метод добавится автоматически
6. Далее в круглых скобках напишите любую фразу по английски в одинарных кавычках. Напечатайте точку и добавьте метод wait и скобки ()

7. Получилась команда
Sound.speak('Hello, my name is EV3!').wait()
8. Скрипт готов!

Теперь его можно загрузить и запустить на EV3 с помощью панели ev3dev browser, как это мы уже делали, но ниже предлагается способ упрощения загрузки и запуска.

Удалённый запуск программ на EV3 клавишей F5


Как вы помните самый первый проект (без EV3), в котором рисовался квадрат, мы запускали клавишей F5. Это было удобно. Сделаем удалённый запуск проектов на EV3 этой же клавишей.

Запуск скрипта клавишей F5 (аналогично команде, меню DebugStart Debugging), на самом деле включает режим отладки, но так как точек прерывания нет, то скрипт выполняеся целиком. Настройки отладки хранятся внутри папки проекта в папке .vscode. Сейчас мы создадим и отредактируем эти настройки.

1. Откройте отладку, нажав Debug

2. Раскройте список и выберите Add configuration (Добавить конфигурацию)

3. В появившемся списке выберите Python
4. Откроется вкладка Launch.json. Чтобы отредактировать файл, нажмите на синюю кнопку Add Configuration… (Добавить конфигурацию …).

5. В появившемся меню выберите Download and Run

6. Вставится код. В нём выделено название проекта myprogram. Здесь нужно написать название вашего проекта.

Вы можете написать название вашего скрипта (например, ev3_project.py). Но в этом случае, даже если у вас в папке с проектом много скриптов, запускаться по нажатию клавиши F5 будет только указанный здесь скрипт (тот же ev3_project.py).

Поэтому, если вы хотите, чтобы запускался скрипт, который вы видите на вкладке VS Code, воспользуйтесь, так называемой,  предопределённой переменной ${fileBasename}. Она автоматически определит название текущего файла.

Просто сотрите myprogram и напечатайте ${fileBasename}.

7. Сохраните изменения в файле Launch.json (Ctrl + S)

8. Выберите конфигурацию Download and Run

9. Перейдите на вкладку со скриптом для EV3.

10. Подключите EV3-блок к компьютеру и установите связь с ним в VS Code.

11. Запустите отладку клавишей F5. Файл должен загрузится и запуститься на на EV3-блоке. Настройка завершена!

Полезные ссылки


1. Прошивка ev3dev на основе Debian 9 Stretch https://oss.jfrog.org/list/oss-snapshot-local/org/ev3dev/brickstrap/

2. Прошивка ev3dev на основе Debian 8 Jessie https://www.ev3dev.org/downloads/

4. ev3dev-browser — плагин для VS Code https://marketplace.visualstudio.com/items?itemName=dlech.ev3dev-browser

5. Подробнее про расширение ev3dev-browser https://marketplace.visualstudio.com/items?itemName=dlech.ev3dev-browser

6. The VS Code workflow for EV3 Python programming (англ.) https://www.youtube.com/watch?v=cqtRqsI6xMc

1 комментарий:

  1. Здравствуйте. Помогите соединить EV3 с VS CODE на Windows. Не могу найти материалы((

    ОтветитьУдалить