Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
utilisateurs:bendia:tutos:platformio-l-arduino-sans-arduino [17/12/2017 18:39] bendia [Utilisation] |
utilisateurs:bendia:tutos:platformio-l-arduino-sans-arduino [20/12/2017 14:10] bendia [platformIO, l'Arduino sans Arduino] |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
* Objet : Installation et utilisation de [[http://platformio.org/|PlatformIO]], un IDE pour développer l'embarqué | * Objet : Installation et utilisation de [[http://platformio.org/|PlatformIO]], un IDE pour développer l'embarqué | ||
* Niveau requis : {{tag>débutant}} | * Niveau requis : {{tag>débutant}} | ||
- | * Commentaires : Avec ça, on peu plus où moins choisir son éditeur de texte pour programmer l'Arduino | + | * Commentaires : Avec ça, on peu plus où moins choisir son éditeur de texte pour programmer l'Arduino. Il n'est plus nécessaire((a priori)) d'installer l'IDE Arduino, qui commence à dater sous Debian pour des histoires de licences. |
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | //platerformIO// est un IDE (//Environnement de Développement Intégré//) qui permet de programmer de nombreuses cartes à microcontrôleurs et autres bêtes à poils raz. | + | //platerformIO// est un IDE((//Environnement de Développement Intégré//)) qui permet de programmer de nombreuses cartes à microcontrôleurs et autres bêtes à poils raz. |
On peut simplement installer le //coeur// du système //platformIOCore//, qui fournit des outils en ligne de commande pour simplifier les transferts et autres opérations vers les microcontôleurs. | On peut simplement installer le //coeur// du système //platformIOCore//, qui fournit des outils en ligne de commande pour simplifier les transferts et autres opérations vers les microcontôleurs. | ||
Ligne 14: | Ligne 14: | ||
C'est un programme en Python 2.7, non packagé pour Debian. Comme il utilise quelques modules dans des versions différentes de celles de Debian Stretch, on va utiliser un //Environnement virtuel// pour bien séparer tout ça, et l'installer via ''pip''. | C'est un programme en Python 2.7, non packagé pour Debian. Comme il utilise quelques modules dans des versions différentes de celles de Debian Stretch, on va utiliser un //Environnement virtuel// pour bien séparer tout ça, et l'installer via ''pip''. | ||
- | On verra ensuite pour l'intégration dans ce script dans un éditeur de texte, [[doc:editeurs:vim:vim|vim]] par exemple, puisque il fait parti de ceux supportés. | + | On verra ensuite((Si j'y arrive un jour)) pour l'intégration dans ce script dans un éditeur de texte, [[doc:editeurs:vim:vim|vim]] par exemple, puisque il fait parti de ceux supportés. |
===== Installation ===== | ===== Installation ===== | ||
Ligne 46: | Ligne 46: | ||
<code user>pip-install platformio</code> | <code user>pip-install platformio</code> | ||
+ | |||
+ | ==== Mettre en place les règles UDEV ==== | ||
+ | |||
+ | Afin que le système sache quoi faire avec les cartes lorsqu'elles sont branchées en USB, il faut installer des règles UDEV. Pour ce faire, il suffit de télécharger ce fichier | ||
+ | |||
+ | <code - /etc/udev/rules.d/99-platformio-udev.rules> | ||
+ | # Copyright (c) 2014-present PlatformIO <contact@platformio.org> | ||
+ | # | ||
+ | # Licensed under the Apache License, Version 2.0 (the "License"); | ||
+ | # you may not use this file except in compliance with the License. | ||
+ | # You may obtain a copy of the License at | ||
+ | # | ||
+ | # http://www.apache.org/licenses/LICENSE-2.0 | ||
+ | # | ||
+ | # Unless required by applicable law or agreed to in writing, software | ||
+ | # distributed under the License is distributed on an "AS IS" BASIS, | ||
+ | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
+ | # See the License for the specific language governing permissions and | ||
+ | # limitations under the License. | ||
+ | |||
+ | # | ||
+ | # INSTALLATION | ||
+ | # | ||
+ | |||
+ | # UDEV Rules for PlatformIO supported boards, http://platformio.org/boards | ||
+ | # | ||
+ | # The latest version of this file may be found at: | ||
+ | # https://github.com/platformio/platformio-core/blob/develop/scripts/99-platformio-udev.rules | ||
+ | # | ||
+ | # This file must be placed at: | ||
+ | # /etc/udev/rules.d/99-platformio-udev.rules (preferred location) | ||
+ | # or | ||
+ | # /lib/udev/rules.d/99-platformio-udev.rules (req'd on some broken systems) | ||
+ | # | ||
+ | # To install, type this command in a terminal: | ||
+ | # sudo cp 99-platformio-udev.rules /etc/udev/rules.d/99-platformio-udev.rules | ||
+ | # | ||
+ | # Restart "udev" management tool: | ||
+ | # sudo service udev restart | ||
+ | # or | ||
+ | # sudo udevadm control --reload-rules | ||
+ | # sudo udevadm trigger | ||
+ | # | ||
+ | # Ubuntu/Debian users may need to add own “username” to the “dialout” group if | ||
+ | # they are not “root”, doing this issuing a | ||
+ | # sudo usermod -a -G dialout $USER | ||
+ | # sudo usermod -a -G plugdev $USER | ||
+ | # | ||
+ | # After this file is installed, physically unplug and reconnect your board. | ||
+ | |||
+ | # CP210X USB UART | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666" | ||
+ | |||
+ | # FT232R USB UART | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE:="0666" | ||
+ | |||
+ | # Prolific Technology, Inc. PL2303 Serial Port | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", MODE:="0666" | ||
+ | |||
+ | # QinHeng Electronics HL-340 USB-Serial adapter | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666" | ||
+ | |||
+ | # Arduino boards | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="[08][02]*", MODE:="0666" | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="[08][02]*", MODE:="0666" | ||
+ | |||
+ | # Arduino SAM-BA | ||
+ | ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", ENV{ID_MM_DEVICE_IGNORE}="1" | ||
+ | ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", ENV{MTP_NO_PROBE}="1" | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", MODE:="0666" | ||
+ | KERNEL=="ttyACM*", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", MODE:="0666" | ||
+ | |||
+ | # Digistump boards | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666" | ||
+ | KERNEL=="ttyACM*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1" | ||
+ | |||
+ | # STM32 discovery boards, with onboard st/linkv2 | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374?", MODE:="0666" | ||
+ | |||
+ | # USBtiny | ||
+ | SUBSYSTEMS=="usb", ATTRS{idProduct}=="0c9f", ATTRS{idVendor}=="1781", MODE="0666" | ||
+ | |||
+ | # USBasp V2.0 | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", MODE:="0666" | ||
+ | |||
+ | # Teensy boards | ||
+ | ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", ENV{ID_MM_DEVICE_IGNORE}="1" | ||
+ | ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", ENV{MTP_NO_PROBE}="1" | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", MODE:="0666" | ||
+ | KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", MODE:="0666" | ||
+ | |||
+ | #TI Stellaris Launchpad | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", MODE="0666" | ||
+ | |||
+ | #TI MSP430 Launchpad | ||
+ | SUBSYSTEMS=="usb", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0666" | ||
+ | |||
+ | # CMSIS-DAP compatible adapters | ||
+ | ATTRS{product}=="*CMSIS-DAP*", MODE="664", GROUP="plugdev" | ||
+ | |||
+ | # Black Magic Probe | ||
+ | SUBSYSTEM=="tty", ATTRS{interface}=="Black Magic GDB Server" | ||
+ | SUBSYSTEM=="tty", ATTRS{interface}=="Black Magic UART Port" | ||
+ | </code> | ||
+ | |||
+ | Recharger ensuite les règles | ||
+ | <code root>service udev restart | ||
+ | # ou | ||
+ | udevadm control --reload-rules | ||
+ | udevadm trigger</code> | ||
+ | |||
+ | ==== Ajouter son utilisateur au groupe ''dialout'' ==== | ||
+ | |||
+ | Pour qu'il soit possible d'utiliser les ports série sans être //root//. | ||
+ | |||
+ | <code root>adduser $USER dialout</code> | ||
===== Utilisation ===== | ===== Utilisation ===== | ||
- | FIXME | + | On peut faire beaucoup de chose avec ce programme. On va prendre un simple petit exemple : charger l'exemple ''blink'' sur un //Arduino Uno// (c'est largement inspiré de [[http://docs.platformio.org/en/latest/quickstart.html|la doc officielle]] ;-) ) |
+ | |||
+ | Dans notre cas, il va toujours falloir se trouver dans notre //environnement virtuel//. Un petit rappel pour l'activer | ||
+ | |||
+ | <code user>source ~/prog/arduino/platformio/bin/activate</code> | ||
+ | |||
+ | ==== Créer un projet ==== | ||
+ | |||
+ | Commençons par créer un dossier qui va accueillir notre projet | ||
+ | |||
+ | <code user>mkdir -p ~/prog/arduino/platformio/blink | ||
+ | cd blink</code> | ||
+ | |||
+ | On lance ensuite une commande qui va créer la structure du projet | ||
+ | <code user>platformio init --board uno</code> | ||
+ | |||
+ | Copions simplement l'exemple ''blink'' qui va faire clignoter la LED intégrée raccordée au pin 13 dans le dossier ''src'' créé par la commande précédente | ||
+ | |||
+ | <code - src/blink.ino> | ||
+ | void setup() { | ||
+ | // initialize digital pin LED_BUILTIN as an output. | ||
+ | pinMode(LED_BUILTIN, OUTPUT); | ||
+ | } | ||
+ | |||
+ | // the loop function runs over and over again forever | ||
+ | void loop() { | ||
+ | digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) | ||
+ | delay(1000); // wait for a second | ||
+ | digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW | ||
+ | delay(1000); // wait for a second | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | <code user>cd src</code> | ||
+ | |||
+ | ==== Téléverser le projet ==== | ||
+ | |||
+ | |||
+ | Il ne reste plus qu'a compiler et téléverser dans l'Arduino raccordé en USB | ||
+ | |||
+ | <code user>platformio run --target upload</code> | ||
+ | |||
+ | Lors de la première utilisation, ''platformio'' télécharge les différents outils nécessaire (''avrdude'' par exemple). Cela ne sera plus le cas ensuite. | ||
+ | |||
+ | Et voilà, vous pouvez utiliser un Arduino sans l'IDE Arduino :-) |