Premiers pas avec l’Arduino RP2040

 

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 :

  1. Utiliser les outils existants de Nordic, mais pas open-source
  2. Réécrire tout le système en se basant sur … rien
  3. 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.

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 :

  1. Outils
  2. Type de carte :
  3. 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

  1. Outils
  2. Port
  3. 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 :

  1. Fichiers
  2. Exemples
  3. Basics
  4. 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/

  1. Choisissez le français (ou une autre langue)
  2. 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

Leave a Reply

Your email address will not be published. Required fields are marked *