[PYTHON] Développement Arduino en ligne de commande: vim + platformio

arduino_platformio.png

introduction

Dernière fois C'était une compilation et un téléchargement depuis la ligne de commande en utilisant ʻino, mais cette fois j'ai noté la méthode en utilisant platformio`.

À propos de Platformio

Comme ʻino, platformio` est introduit sur la page officielle d'arduino. Actuellement, j'utilise principalement ceci.

L'avantage de platformio est que vous n'avez pas besoin d'un IDE. ʻIno nécessitait un IDE séparé, mais platformio` ne l'est pas. Il sera téléchargé automatiquement sous forme de package. Mieux encore, il prend en charge une variété de cartes intégrées. Il semble que les lieux célèbres soient parfaitement supprimés, et les cartes récentes telles que STM32 Nucleo sont également supportées. (http://platformio.org/#!/boards)

Comme ʻino, il est écrit en python et n'a pas de dépendances majeures, il est donc facile à installer. Je pense que c'est plus facile que ʻino car il n'y a pas d'IDE installé.

Introduction de platformio

Paramètres udev (Ubuntu uniquement)

platformio a également une fonction de moniteur série. Cependant, dans le cas d'ubuntu, il est nécessaire d'ajouter un fichier à la règle ʻudev` en raison de l'autorité. (http://docs.platformio.org/en/latest/platforms/atmelavr.html)

Linux Users: Don’t forget to install “udev” rules file 99-platformio-udev.rules (an instruction is located in the file).

[Fichier de règles ʻUdev](https://github.com/platformio/platformio/blob/develop/scripts/99-platformio-udev.rules) est bien, mais il existe des exemples de projets pour différentes cartes, donc githubTéléchargez l'unité principale depuis.

#Projet DL platformio
$ git clone https://github.com/platformio/platformio.git

Copiez 99-platformio-udev.rules dans le projet

#Copiez le fichier de règles udev dans votre dossier de règles
$ sudo cp ./platformio/script/99-platformio-udev.rules /etc/udev/rules.d/

Installez platformio

Installez sous l'environnement virtuel de virtualenv. (La construction de l'environnement virtualenv est indiquée dans ici, veuillez donc jeter un coup d'œil si vous êtes intéressé.)

#Créer virtualenv
$ mkvirtualenv --no-site-package platformio
(platformio)$ pip install platformio
(platformio)$ pip install --egg scons   #Un outil de construction qui remplace make. Je pense que c'est également nécessaire.

Construire et télécharger

Recherchez le nom du tableau

Si vous spécifiez une carte dans l'option d'initialisation (--board = <nom de la carte>), divers réglages seront effectués. Si vous ne connaissez pas le nom de votre forum, vous pouvez voir la liste, ou vous pouvez la rechercher sur Site.

(platformio) $ platformio boards
    Platform: atmelavr
    ---------------------------------------------------------------------------
    Type                  MCU            Frequency  Flash   RAM    Name
    ---------------------------------------------------------------------------
    flora8                atmega32u4     8Mhz      28Kb    2Kb    Adafruit Flora
    protrinket3ftdi       atmega328p     16Mhz     28Kb    2Kb    Adafruit Pro Trinket 3V/12MHz (FTDI)
    protrinket3           atmega328p     12Mhz     28Kb    2Kb    Adafruit Pro Trinket 3V/12MHz (USB)
        #Omis ci-dessous

Vous pouvez le presser avec grep, ou vous pouvez le presser avec des options supplémentaires. Je suis «uno», donc je vais chercher ici.

(platformio) $ platformio boards | grep uno
    uno                   atmega328p     16Mhz     31Kb    2Kb    Arduino Uno

Un autre exemple est nano.

(platformio) $ platformio boards | grep nano
    nanoatmega168         atmega168      16Mhz     14Kb    1Kb    Arduino Nano ATmega168
    nanoatmega328         atmega328p     16Mhz     30Kb    2Kb    Arduino Nano ATmega328

Vous pouvez spécifier l'élément type qui apparaît dans la recherche avec l'option tableau.

Créer un projet: platformio init

Créer un projet est simple. platformio init --board = <nom de la carte> générera un sous-dossier vide et un fichier projet (platformio.ini). Le format de platformio.ini est fichier INI, et il existe diverses options pour les paramètres détaillés. (http://docs.platformio.org/en/latest/projectconf.html)

Créez un dossier vide pour votre projet

(platformio) $ mkdir uno; cd ./uno

Création d'un projet arduino (cette fois généré avec une carte uno générale)

(platformio) $ platformio init --board=uno
    #Demandez si vous souhaitez activer les téléchargements automatiques.
    #plus tard`platformio.ini`Vous pouvez également éditer et changer le fichier
    Would you like to enable firmware auto-uploading when project is successfully built using `platformio run` command?
    Dont forget that you can upload firmware manually using `platformio run --target upload` command. [y/N]: y

    #Conseils que vous pouvez modifier le répertoire du projet
    The current working directory /home/hoge/uno will be used for the new project.
    You can specify another project directory via
    `platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.

    #Où créer un fichier confi`/home/hoge/uno`Mais est-ce que ça va? Question.
    #N'hésitez pas`y`
    The next files/directories will be created in /home/hoge/uno
    platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
    src - Put your source code here
    lib - Put here project specific or 3-rd party libraries
    Do you want to continue? [y/N]: y

    #Succès
    Project has been successfully initialized!
    Useful commands:
    `platformio run` - process/build project from the current directory
    `platformio run --target upload` or `platformio run -t upload` - upload firmware to embedded board
    `platformio run --target clean` - clean project (remove compiled files)

Recherchez les noms des ports série: liste des ports série platformio

Le micrologiciel intégré est téléchargé via le port série. La valeur par défaut est / dev / ttyUSB0, donc si vous connectez Arudino, la mise à jour échouera si elle est laissée telle quelle car le nom du port est différent. Par conséquent, il est nécessaire de vérifier le nom du port série et de le spécifier dans platformio.ini. Il existe de nombreuses façons de le savoir, mais essayez d'utiliser la commande platformio.

La commande platformio serialports list affiche une liste d'informations série. Vous devez savoir à partir de l'élément Description s'il s'agit d'un port Arduino. Principalement / dev / ttyACM0 pour Ubuntu et tty.usbserial- * pour Mac.

(platformio)$ platformio serialports list
    :   #réduction
    /dev/ttyACM0
    ----------
    Hardware ID: USB VID:PID=1a86:7523
    Description: QinHeng Electronics USB2.0-Serial

Ajoutez le nom du port série d'Arduino à platformio.ini. Le nom de l'option est upload_port.

(platformio)$ echo -e "\nupload_port = /dev/ttyACM0" >> platformio.ini

Ecrire la source

Le clignotement habituel de la LED et l'affichage en série. Mettez la source dans . / Src.


(platformio)$ vim ./src/sketch.ino
    #define LED_PIN 13
    void setup() {
        pinMode(LED_PIN, OUTPUT);
        Serial.begin(9600);
    }
    void loop() {
        Serial.println("Hello Arduino");
        digitalWrite(LED_PIN, HIGH); delay(100);
        digitalWrite(LED_PIN, LOW);  delay(900);
    }

Essayez de construire: platformio run

S'il n'y a pas de package de plate-forme cible de construction, un message de téléchargement sera affiché, alors entrez y pour l'obtenir. La destination du téléchargement est ~ / .platformio / packages.


(platformio)$ platformio run
    If you like PlatformIO, please:
    - follow us on Twitter to stay up-to-date on the latest project news > https://twitter.com/PlatformIO_Org
    - give us a star on GitHub > https://github.com/platformio/platformio
    Thanks a lot!

    [Wed May  6 13:06:53 2015] Processing autogen_uno (targets: upload, platform: atmelavr, board: uno, framework: arduino)
    ---------------------------------------------------------------------------------------------------------
    The platform 'atmelavr' has not been installed yet. Would you like to install it now? [y/N]: y

    Installing toolchain-atmelavr package:
    Downloading  [####################################]  100%
    Unpacking  [####################################]  100%
    Installing tool-avrdude package:
    Downloading  [####################################]  100%
    Unpacking  [####################################]  100%
    Installing framework-arduinoavr package:
    Downloading  [####################################]  100%
    Unpacking  [####################################]  100%
    Installing tool-micronucleus package:
    Downloading  [####################################]  100%
    Unpacking  [####################################]  100%
    The platform 'atmelavr' has been successfully installed!

Une fois le téléchargement terminé, il sera construit et téléchargé tel quel. Lorsque vous regardez le corps principal, la LED doit clignoter.

        : #réduction
    Reading | ################################################## | 100% 0.13s

    avrdude: verifying ...
    avrdude: 998 bytes of flash verified

    avrdude: safemode: lfuse reads as 0
    avrdude: safemode: hfuse reads as 0
    avrdude: safemode: efuse reads as 0
    avrdude: safemode: Fuses OK (H:00, E:00, L:00)

    avrdude done.  Thank you.

    =================================== [SUCCESS] Took 64.38 seconds ===================================

Essayez d'utiliser un moniteur série: platformio serialports monitor

platformio a également une fonction de surveillance série en standard. Vous n'avez pas besoin d'installer un autre minicom ou picocom, mais je pense que c'est là que vous avez des goûts différents.

(platformio)$ platformio serialports monitor -p /dev/ttyACM0 -b 9600
    #début du moniteur
    #Ctrl pour quitter+ ]
    --- Miniterm on /dev/ttyACM0: 9600,8,N,1 ---
    --- Quit: Ctrl+]  |  Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
    Hello Arduino
    Hello Arduino
    Hello Arduino
    Hello Arduino

Autres caractéristiques

Vous pouvez facilement télécharger des packages et mettre à niveau l'unité principale à partir des commandes.

--platformio upgrade: mise à jour de platformio

(platformio)$ platformio upgrade
    You're up-to-date!
    PlatformIO 1.4.0 is currently the newest version available.

--platformio update: mise à jour du package

(platformio)$ platformio update
    Platform atmelavr
    --------
    Updating toolchain-atmelavr package:
    Versions: Current=2, Latest=2 	 [Up-to-date]
    Updating tool-avrdude package:
    Versions: Current=3, Latest=3 	 [Up-to-date]
    Updating framework-arduinoavr package:
    Versions: Current=16, Latest=16 	 [Up-to-date]
    Updating tool-micronucleus package:
    Versions: Current=1, Latest=1 	 [Up-to-date]

De plus, les bibliothèques externes peuvent être facilement installées et il existe diverses fonctions. Pour plus d'informations, veuillez lire le Document officiel.

Résumé

Voici quelques commandes de base à jouer tout de suite.

command Description
platformio boards Affichage de la liste des cartes
platformio init --board=<Nom du conseil> Création de projet
platformio run Construire(Téléchargement automatique en fonction des paramètres)
platformio run --target=upload Construire et télécharger
platformio run --target=clean nettoyer
platformio serialports list Affichage de la liste des ports série
platformio serialports monitor -p <dispositif> -b <débit en bauds> Moniteur série

La fin

À l'avenir, j'aimerais importer des bibliothèques externes et essayer des cartes d'autres plates-formes. Dans tous les cas, je suis heureux de pouvoir développer facilement diverses cartes embarquées avec une seule ligne de commande.

Recommended Posts

Développement Arduino en ligne de commande: vim + platformio
Continuez à recevoir RSS sur la ligne de commande
Vous recherchez commandlinefu sur la ligne de commande
Afficher rapidement le code QR sur la ligne de commande
Mise en évidence de la syntaxe sur la ligne de commande à l'aide de Pygments
Développement Arduino: vim + ino
Convertir XLSX en CSV sur la ligne de commande
Exécutez Route53 sur la ligne de commande à l'aide de l'AWS-CLI.
Pensez aux interfaces sélectives sur la ligne de commande
Rechercher des fichiers volumineux sous Linux à partir de la ligne de commande
Module standard Python utilisable en ligne de commande
Obtenez, testez et soumettez des cas de test dans le concours AtCoder à partir de la ligne de commande
commande vim
Recherchez le nom du réseau Wi-Fi (SSID) de votre Mac sur la ligne de commande
Mémo de correspondance lorsque la touche de direction ne peut pas être utilisée dans la ligne de commande python
Notes fréquemment utilisées (personnellement) pour la commande tar
L'histoire de la mauvaise lecture de la ligne d'échange de la commande supérieure
Mes réflexions sur le modèle d'application de ligne de commande python2.6
Comment passer des arguments lors de l'appel d'un script python depuis Blender sur la ligne de commande
Instructions d'utilisation de l'interface de ligne de commande AWS (Python / awscli) sous Mac OS X
Comment créer un article à partir de la ligne de commande
Ouvrez la version Chrome de LINE à partir de la ligne de commande [Linux]
Exécuter une commande sur le serveur Web et afficher le résultat
Multiplier PDF par OCR en ligne de commande sous Linux (Ubuntu)
(Rappelez-vous rapidement) Comment utiliser la ligne de commande LINUX