[PYTHON] Arduino-Entwicklung über die Kommandozeile: vim + platformio

arduino_platformio.png

Einführung

Letztes Mal Es war ein Build und Upload von der Befehlszeile mit ino, aber dieses Mal habe ich die Methode mit platformio notiert.

Über Platformio

Wie ino wird platformio auf der offiziellen Seite von arduino eingeführt. Derzeit benutze ich dies hauptsächlich.

Das Tolle an platformio ist, dass Sie keine IDE benötigen. Für "ino" ist eine separate IDE erforderlich, für "platformio" jedoch nicht. Es wird automatisch als Paket heruntergeladen. Noch besser, es unterstützt eine Vielzahl von eingebauten Boards. Es scheint, dass die berühmten Orte perfekt unterdrückt werden und aktuelle Boards wie STM32 Nucleo ebenfalls unterstützt werden. (http://platformio.org/#!/boards)

Wie ino ist es in python geschrieben und hat keine größeren Abhängigkeiten, so dass es einfach zu installieren ist. Ich denke, es ist einfacher als "ino", weil keine IDE installiert ist.

Einführung von platformio

udev Einstellungen (nur Ubuntu)

platformio hat auch eine serielle Monitorfunktion. Im Fall von Ubuntu ist es jedoch aufgrund der Berechtigung erforderlich, der "udev" -Regel eine Datei hinzuzufügen. (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).

udev Regeldatei ist in Ordnung, aber es gibt Beispielprojekte für verschiedene Boards, also github Laden Sie das Hauptgerät von `herunter.

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

Kopieren Sie 99-platformio-udev.rules in das Projekt

#Kopieren Sie die udev-Regeldatei in Ihren Regelordner
$ sudo cp ./platformio/script/99-platformio-udev.rules /etc/udev/rules.d/

Installieren Sie platformio

Installieren Sie unter der virtuellen Umgebung von "virtualenv". (Die Konstruktion der "virtualenv" -Umgebung ist in hier vermerkt. Schauen Sie also bitte vorbei, wenn Sie interessiert sind.)

#Erstellen Sie virtualenv
$ mkvirtualenv --no-site-package platformio
(platformio)$ pip install platformio
(platformio)$ pip install --egg scons   #Ein Build-Tool, das make ersetzt. Ich denke das ist auch notwendig.

Erstellen und hochladen

Schlagen Sie den Namen des Boards nach

Wenn Sie in der Initialisierungsoption eine Karte angeben (--board = <Kartenname>), werden verschiedene Einstellungen vorgenommen. Wenn Sie Ihren Boardnamen nicht kennen, können Sie die Liste anzeigen oder unter Site nachschlagen.

(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)
        #Unten weggelassen

Sie können es mit "grep" oder mit zusätzlichen Optionen drücken. Ich bin "uno", also werde ich hier suchen.

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

Ein weiteres Beispiel ist nano.

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

Sie können das Element "Typ", das bei der Suche angezeigt wird, mit der Option "Karte" angeben.

Erstellen Sie ein Projekt: platformio init

Das Erstellen eines Projekts ist einfach. platformio init --board = <Boardname> generiert einen leeren Unterordner und eine Projektdatei (platformio.ini). Das Format von "platformio.ini" ist INI-Datei, und es gibt verschiedene Optionen für detaillierte Einstellungen. (http://docs.platformio.org/en/latest/projectconf.html)

Erstellen Sie einen leeren Ordner für Ihr Projekt

(platformio) $ mkdir uno; cd ./uno

Erstellen eines Arduino-Projekts (diesmal generiert mit einem allgemeinen Uno-Board)

(platformio) $ platformio init --board=uno
    #Fragen Sie, ob Sie automatische Uploads aktivieren möchten.
    #später`platformio.ini`Sie können die Datei auch bearbeiten und ändern
    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

    #Anleitung, wie Sie das Projektverzeichnis ändern können
    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.

    #Wo mache ich eine Confi-Datei?`/home/hoge/uno`Aber ist es okay? Frage.
    #Zögern Sie nicht`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

    #Erfolg
    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)

Suchen Sie nach den Namen der Serienports: platformio serialports list

Die erstellte Firmware wird über die serielle Schnittstelle hochgeladen. Der Standardwert ist "/ dev / ttyUSB0". Wenn Sie also eine Verbindung zu Arudino herstellen, schlägt das Update fehl, wenn es unverändert bleibt, da der Portname unterschiedlich ist. Daher ist es notwendig, den Namen der seriellen Schnittstelle zu überprüfen und in "platformio.ini" anzugeben. Es gibt viele Möglichkeiten, dies herauszufinden, aber versuchen Sie es mit dem Befehl platformio.

Der Befehl platformio serialports list zeigt eine Liste der seriellen Informationen an. Sie sollten anhand des Beschreibungselements wissen, ob es sich um einen Arduino-Port handelt. Meistens / dev / ttyACM0 für Ubuntu und tty.usbserial- * für Mac.

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

Fügen Sie den Namen der seriellen Schnittstelle von Arduino zu "platformio.ini" hinzu. Der Optionsname lautet upload_port.

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

Quelle schreiben

Die übliche LED blinkt und serielle Anzeige. Geben Sie die Quelle in . / Src ein.


(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);
    }

Versuchen Sie zu erstellen: platformio run

Wenn es kein Build-Zielplattformpaket gibt, wird eine Nachricht zum Herunterladen angezeigt. Geben Sie also "y" ein, um sie abzurufen. Das Download-Ziel ist "~ / .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!

Wenn der Download abgeschlossen ist, wird er so wie er ist erstellt und hochgeladen. Wenn Sie sich den Hauptkörper ansehen, sollte die LED blinken.

        : #Kürzung
    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 ===================================

Versuchen Sie es mit einem seriellen Monitor: platformio serialports monitor

platformio hat standardmäßig auch eine serielle Monitorfunktion. Sie müssen kein weiteres "Minicom" oder "Picocom" installieren, aber ich denke, hier haben Sie unterschiedliche Geschmäcker.

(platformio)$ platformio serialports monitor -p /dev/ttyACM0 -b 9600
    #Monitorstart
    #Strg zum Beenden+ ]
    --- 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

Andere Eigenschaften

Sie können problemlos Pakete hochladen und das Hauptgerät über Befehle aktualisieren.

--platformio upgrade: Update von platformio

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

--platformio update: Paketaktualisierung

(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]

Darüber hinaus können externe Bibliotheken einfach installiert werden und es gibt verschiedene Funktionen. Weitere Informationen finden Sie im Offiziellen Dokument.

Zusammenfassung

Hier sind einige grundlegende Befehle, die Sie sofort spielen können.

command Description
platformio boards Anzeige der Kartenliste
platformio init --board=<Boardname> Projekterstellung
platformio run Bauen(Automatischer Upload abhängig von den Einstellungen)
platformio run --target=upload Erstellen und hochladen
platformio run --target=clean sauber
platformio serialports list Anzeige der Liste der seriellen Anschlüsse
platformio serialports monitor -p <Gerät> -b <Baudrate> Serieller Monitor

Das Ende

In Zukunft möchte ich externe Bibliotheken importieren und Boards von anderen Plattformen ausprobieren. Auf jeden Fall bin ich froh, mit einer Kommandozeile problemlos verschiedene Embedded Boards entwickeln zu können.

Recommended Posts

Arduino-Entwicklung über die Kommandozeile: vim + platformio
Erhalten Sie weiterhin RSS in der Befehlszeile
Sie suchen in der Befehlszeile nach commandlinefu
Zeigen Sie den QR-Code schnell in der Befehlszeile an
Syntaxhervorhebung in der Befehlszeile mithilfe von Pylements
Arduino-Entwicklung: vim + ino
Konvertieren Sie XLSX in CSV in der Befehlszeile
Führen Sie Route53 in der Befehlszeile mit AWS-CLI aus.
Denken Sie an selektive Schnittstellen in der Befehlszeile
Suchen Sie unter Linux über die Befehlszeile nach großen Dateien
Python-Standardmodul, das in der Befehlszeile verwendet werden kann
Abrufen, Testen und Senden von Testfällen im AtCoder-Wettbewerb über die Befehlszeile
vim Befehl
Suchen Sie in der Befehlszeile nach dem Wi-Fi-Netzwerknamen (SSID) Ihres Mac
Korrespondenznotiz, wenn die Richtungstaste nicht in der Python-Befehlszeile verwendet werden kann
Häufig verwendete (persönliche) Notizen für den Befehl tar
Die Geschichte des Fehlinterpretierens der Swap-Zeile des obersten Befehls
Meine Gedanken zur Python2.6-Befehlszeilen-App-Vorlage
Übergeben von Argumenten beim Aufrufen von Python-Skripten über Blender in der Befehlszeile
Anweisungen zur Verwendung der AWS-Befehlszeilenschnittstelle (Python / awscli) unter Mac OS X.
So erstellen Sie einen Artikel über die Befehlszeile
Öffnen Sie die Chrome-Version von LINE über die Befehlszeile [Linux].
Führen Sie einen Befehl auf dem Webserver aus und zeigen Sie das Ergebnis an
Multiplizieren Sie PDF mit OCR in der Befehlszeile unter Linux (Ubuntu).
(Denken Sie schnell daran) Verwendung der LINUX-Befehlszeile