Installation de Mbed OS Nano boards
Présentation de Mbed OS
En 2019, Arduino a décidé d’utiliser un nouveau microcontrôleur à la bien plus puissant : le Cortex-M4 fabriqué par Nordic nRF52840.
A l’origine, les microcontrôleurs étaient de la famille d’Atmel AVR (ATmega328, ATmega32u4, ATmega2560), le langage Arduino était écrit pour ces cibles. En passant à des Cortex-M4, forcément la compatibilité était perdue, ou du moins les couches les plus basses, proche du processeur, le compilateur qui devenait différent etc.
La société Arduino avait trois possibilités :
- Utiliser les outils existants de Nordic, mais pas open-source
- Réécrire tout le système en se basant sur … rien
- Utiliser un système existant, open-source
C’est ce troisième choix qui a été retenu : Mbed OS
C’est un excellent choix, puisque ce « système d’exploitation » a beaucoup de qualités :
- Libre
- Un nombre important de bibliothèques
- OS temps réel multitâche préemptif (plus processeurs en parallèle)
- Très utilisé
- …
Installation de la carte Arduino Nano RP2040 connect
Voici les étapes sur Windows 10 :
Branchez votre carte sur un port USB
- Attendez que Windows détecte puis configure la carte :
- Lorsque vous avez l’écran ci-dessous : c’est prêt !!
Installer l’ide Arduino
Dans cette page, nous utiliserons la version 1.8 mais il est possible d’utiliser la nouvelle version 2.0, le principe est le même.
- Si cela n’est pas déjà installé récupérez l’IDE sur https://www.arduino.cc/en/software
Démarrez l’application
- Lancez l’application Arduino IDE
- Si Arduino vous le demande, mettez à jours vos bibliothèques (library en anglais) :
Puis vous obtenez l’affichage classique de l’IDE Arduino avec setup() et loop() :
Sur l’écran précédent, il vous est demandé d’installer le paquet pour l’Arduino RP2040. Le mieux est de suivre les étapes suivantes.
Ensuite choisissez le type de carte :
- Outils
- Type de carte :
- Gestionnaire de carte
- Recherchez Arduino&Nano&RP2040&Connect :
L’installation se poursuit :
- Demande d’installation d’un driver, cliquez sur Installer
- Fin de l’installation : là il semble que tout est bien installé !!! Cliquez sur Fermer
Pour le vérifier, allez dans Outils->Type de carte->Arduino Mbed OS -> Arduino Nano RP2040 Connect
http://www.framboiseetcompagnie.fr/wp-content/uploads/2021/06/word-image-78.png
Sélectionnez le bon port
Vérifiez le bon port USB sur lequel se trouve votre carte
- Outils
- Port
- Choisissez le bon port
Elle est reconnue par l’IDE :
Un exemple : le célèbre blink
Dernière étape pour tester que tout est OK : le célèbre blink :
- Fichiers
- Exemples
- Basics
- Blink !!! Yes
// the setup function runs once when you press reset or power the board 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 }
- Envoyez-le sur la carte :
La compilation se fait :
- Vérifiez sur la carte : la led rouge clignote :
A notez qu’au début du téléversement, un lecteur disque nommé RPI-RP2 apparait:
Mbed
J’utilise souvent le langage le langage mbed avec les cartes SM32 Nucleo. J’ai testé le programme ci-dessous qui compile avec l’IDE Arduino mais impossible de le télécharger sur la carte.
#include "mbed.h" #include "rtos.h" using namespace mbed; using namespace rtos; using namespace std::literals::chrono_literals; mbed::DigitalOut led(13); // the setup function runs once when you press reset or power the board int main() { led.write(1); ThisThread::sleep_for(1000ms); led.write(0); //wait(1);// wait for a second ThisThread::sleep_for(1000ms); }
A SUIVRE ….
Micropython
Installation de CircuitPython
Présentation de CircuitPython
Comme pour la Raspberry Pi Pico, il est possible de programme en Python dans une version adaptée aux microcontrôleurs : micropython
Je préfère, dans un premier temps, utiliser une version dérivée de micropython : circuitpython.
Circuitpython à plusieurs avantages :
- Prise en charge par Adafruit
- Communauté nombreuse et réactive
- Prise en charge de nombres composants et capteurs
Et c’est surtout pour ce dernier point que j’utilise cette version avec l’Arduino RP2040 et ses capteurs intégrés.
Téléchargement de circuitpython
CircuitPython est régulièrement mise à jour. Pour obtenir la dernière version cliquez sur ce bouton : https://circuitpython.org/board/arduino_nano_rp2040_connect/
- Choisissez le français (ou une autre langue)
- Téléchargez sur votre ordinateur
Vous avez récupéré un fichier au format UF2 (USB Flashing Format développé par Microsoft) qui contient le programme a implémenté dans le microcontrôleur.
Installation sur l’Arduino RP2040
Pour déposer et exécuter le programme contenu dans le fichier précédent, il faut mettre la carte Arduino en mode UF2.
- Pour cela, appuyez rapidement deux fois sur le bouton blanc (Bootselect)
Après une petite musique vous devez voir dans vos répertoires, la transformation de votre carte en lecteur nommé RPI-RP2 :
- Déplacez le fichier UF2 téléchargé du site d’Adafruit vers le lecteur RPI-RP2
Et le lecteur se transforme en CIRCUITPY
C’est terminé.
Remarques :
- Je préfère l’installer la version anglaise, pour rechercher les erreurs c’est plus facile sur Internet
- Si le lecteur n’apparait pas en RPI-RP2, essayez plusieurs fois les deux appuis
- Si vous après avoir mis le fichier UF2, le lecteur CIRCUITPY n’apparait toujours pas, ou si vous rencontrez des problèmes par la suite, essayez de télécharger essayez de télécharger un fichier UF2 qui va effacer et remettre à zéro votre carte. Attention : toutes vos données seront définitivement perdues !!!Lien :Fichier UF2 de “vidage”
Installation de l’éditeur Mu-Editor
L’éditeur Mu-Editor est simple à utiliser et permet son utilisation pour différentes cartes. C’est pourquoi il est recommandé.
Suivez ce lien pour suivre l’article concernant son installation : http://www.framboiseetcompagnie.fr/un-seul-editeur-python-pour-toutes-les-cartes-mu-editor/
Premier essai : blink encore et toujours
Explications du code
J’utilise des accents dans les print, donc format utf-8 :
# -*- coding: utf-8 -*-
La fonction sleep permet de mettre en pause le programme, elle se trouve dans time :
from time import sleep
J’ai besoin de la bibliothèque board pour récupérer le port de la led se trouvant sur la carte :
import board DigitalInOut va permettre de créer un objet sur une broche numérique et Direction le sens. from digitalio import DigitalInOut, Direction
Création d’une variable, plus précisément d’un objet qui va représenter la led de la carte. Le sens est entrant. :
# LED qui se trouve sur la carte led = DigitalInOut(board.LED) led.direction = Direction.OUTPUT
Une boucle infinie :
while True:
Pour mettre la broche à l’état haut il faut mettre value à True
led.value = True print("led on : allumé")
Attente d’une seconde :
sleep(1)
Puis on recommence avec éteint :
led.value = False print("led off :: éteinte") sleep(1)
Le programme complet
# -*- coding: utf-8 -*- from time import sleep import board from digitalio import DigitalInOut, Direction # LED qui se trouve sur la carte led = DigitalInOut(board.LED) led.direction = Direction.OUTPUT while True: led.value = True print("led on : allumé") sleep(1) led.value = False print("led off :: éteinte") sleep(1)
Lancement du programme
- Exécutez mu-editor
- Créez un nouveau script avec Nouveau
- Copier-coller le code précédent
- Cliquez sur CIRCUITPY
- Modifiez le nom en code.py
- Enregistrez-le sur le lecteur/Répertoire
Appuyez sur Série :
Et vous devez obtenir cet affichage :
C’est terminé !!!
Modification du code et redémarrage automatique
Essayez de modifier le code, simplement un saut de ligne puis sauvegardez le fichier : le programme redémarre automatiquement