Недавно я вошел в удивительный мир IOT — Интернета вещей (какое модное слово) — благодаря хорошему подарку, который друг сделал мне на Рождество: Arduino комплект. Я играл с ним пару часов, пытаясь сделать мигающие огни из кода C++.

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

Поэтому я провел несколько раз в поисках альтернатив. Большинство из них являются плагинами, и это не то, что я хотел (позже я объясню, почему я не думаю, что этот подход является самым эффективным). Как абсолютный поклонник JetBrains, я хотел использовать WebStorm. Но, конечно, для него нет готовой интеграции.

Подождите, вы говорите, что нет прямой интеграции с большинством существующих IDE… Но есть ли элегантная альтернатива?

А вот и PlatformIO.

Прежде чем идти дальше, обратите внимание, что если вы используете WebStorm, как и я, для него ЕСТЬ подключаемый модуль, позволяющий передавать код на микроконтроллер. В некоторых случаях это может сработать, но, как я уже сказал, мне нужно более гибкое решение. Поэтому я не буду говорить об этом более подробно. Но вы можете попробовать: Мониторинг последовательного порта.

PlatformIO — это замечательная небольшая утилита командной строки, которая позволяет создать проект для определенного типа платы и, что наиболее важно, развернуть на ней код. Почему я предпочитаю это плагину? По двум простым причинам:

  • Это утилита командной строки. Это означает, что разработчикам, работающим над проектом, не нужно работать с определенной IDE, чтобы иметь возможность просто загружать код на доску (есть даже некоторые редакторы с подключаемыми модулями для PlatformIO. Вы можете найти полный список здесь).
  • Непрерывная интеграция. Вы можете запустить его через Travis CI или любую систему CI. (Проект PlatformIO по умолчанию поставляется с конфигурацией для Travis).

Установка

Прежде чем вы сможете использовать этот инструмент, вам нужно установить его (Боже мой! Какая инновационная технология). Он работает на Python 2.7 и может быть установлен с помощью PIP, диспетчера пакетов Python. PIP поставляется с Python, начиная с версии 2.7.9. Если вы работаете на Mac и еще не установили его, я настоятельно рекомендую вам установить его с помощью Homebrew:

brew update && brew install python

Для остальных, кто использует Windows или Linux, вот документация.

Если у вас есть эти два требования в вашей системе, установите PlatformIO с помощью PIP. Обратите внимание, что вам может понадобиться выполнить команду sudo.

pip install -U platformio

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

Получив эту информацию, создайте новую папку и дайте ей имя вашего проекта. Затем, используя командную строку, cd внутри него и создайте новый проект PlatformIO, выполнив:

#just in case... replace BOARD_TYPE_ID by your board’s type ID
platformio init --board=BOARD_TYPE_ID

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

После того, как вы нажали Enter и подтвердили, что хотите создать новый проект, вы должны увидеть что-то вроде этого в консоли:

Проект успешно инициализирован!

Что внутри

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

project
│   .gitignore
│   .platformio.ini
│   .travis.yml
│   src/
│
└───lib
    │   readme.txt

Это связано с тем, что основная цель этого инструмента — сосредоточиться на загрузке/развертывании кода в микроконтроллер. И это все, что нам нужно сделать.

Запустить программу

Чтобы запустить и собрать программу на плате, вам просто нужно запустить:

platformio run --target upload

На данный момент вы можете кодировать и запускать проект из любого редактора кода, который вам нужен. Обратите внимание: если вы хотите включить автоматическую загрузку (через platformio.ini), вам не нужен аргумент «target».

Вот в принципе!

Но у меня есть еще два совета, которые могут быть действительно полезными.

Бонус №1: Автоматизация с помощью npm

Мы увидели команду отправить ваш код на микроконтроллер. Эта строка слишком длинная, и необходимость запускать ее несколько раз не очень эффективна. Да, он автономный и работает везде, но… тем не менее…

Что касается каждого современного проекта JavaScript, я использую npm. Это позволяет нам управлять нашими зависимостями, и мы можем автоматизировать некоторые задачи, такие как создание проекта. Почему бы не использовать его для сборки, загрузки и запуска кода на микроконтроллере? Для этого нам просто нужно добавить предыдущую команду в файл package.json:

"scripts": {
    "build": "platformio run --target upload"
}

На этом этапе вы можете проверить, все ли работает нормально, добавив файл в папку «src» и запустив скрипт «build». Затем вы должны увидеть сообщение об успешном выполнении в консоли, и микроконтроллер начнет выполнение нового кода.

Бонус №2: быстрый запуск из WebStorm или другого продукта JetBrains!

Круто, у меня есть npm-скрипт для сборки и загрузки файлов на доску. Но это не то, что я называю интеграцией с IDE…

Да, и вы правы, скрипты npm хороши, но их нельзя назвать идеальной альтернативой встроенным плагинам. Но что, если бы мы могли запускать их внутри IDE, как и любой другой плагин? Если ваше программное обеспечение получено от JetBrains, то, хорошие новости, вы можете это сделать! Добро пожаловать в мир конфигураций Запуск/Отладка!

Эта функция — одна из моих любимых, когда речь идет о программном обеспечении JetBrains (но вы, вероятно, найдете ее и в других IDE). Это позволяет интегрировать множество вещей. И это то, что мы собираемся сделать.

Используя приведенную выше конфигурацию, вы сможете создавать, загружать и запускать содержимое папки «src» на своем микроконтроллере.

МЫ СДЕЛАЛИ ЭТО!

Это все люди!

Вот как настроить среду разработки для IoT с помощью повседневных инструментов. Надеюсь, это будет полезно для других.

Еще раз вы можете найти список редакторов кода, предоставляющих плагины для PlatformIO, перейдя по этой ссылке: https://docs.platformio.org/en/latest/ide.html