Les mini cartes XIAO

Cet été, j’ai acheté quelques cartes XIAO (suite à un article de François Mocq sur son blog Framboise314). Mais j’ai eu une désagréable surprise au moment de la livraison. Le livreur de Chronopost m’a réclamé 13,00 € supplémentaires (de TVA et de frais calculés au pifomètre).

Malheureusement, c’est de plus en plus fréquent, quand on achète en Chine et on ne peut jamais savoir combien ce sera. Normalement, la TVA est à 20% en France. Mais là le montant est complètement aléatoire parce qu’on ne se base pas sur le prix de l’objet et que le transporteur en profite pour prélever des frais exorbitants (avec bien sûr de la TVA sur ces frais, puisqu’il nous rend un « service »).

Que peut choisir le client ?

Le ravisseur transporteur lui annonce qu’il détient un colis (qu’il a déjà payé une fois), mais qu’il pourra le récupérer seulement s’il accepte de payer la rançon demandée. Bien sûr, sinon, l’objet sera exécuté détruit (inutile de prévenir la Police puisque l’état est complice).

Porte monnaie avec des Euros

Heureusement, Seeed Studio propose maintenant une livraison gratuite (à partir de 3 articles) depuis un nouvel entrepôt situé en Allemagne.

L’entreprise m’a contacté pour que je vous parle de cette nouvelle option de livraison et que je vous présente toute la gamme de cartes de développement Xiao. L’article est donc sponsorisé mais je ne touche aucune autre rémunération (que quelques cartes Xiao gratuites). Je précise aussi que je n’ai pas encore testé cette fameuse livraison depuis l’Allemagne et que je conserve évidement une totale liberté de parole pour vous dire tout ce que je pense de ces produits.

Les cartes Xiao

Les cartes de la gamme Xiao possèdent toutes 2 x 7 = 14 connecteurs, mais il en existe plusieurs modèles (équipées de différents microcontrôleurs).

Les cartes de développement de la gamme Xiao de Seeed Studio

Attention, ces cartes utilisent une tension de 3,3 V pour communiquer, alors n’envoyez jamais un signal de 5V sur une des entrées (seule l’alimentation peut être en 5V).

Les cartes possèdent une prise USB-C (pour les programmer et éventuellement les alimenter).

Prise USB-C

A vous de choisir le type de connecteur à souder sur la carte (et la couleur de l’autocollant pour la version SAMD21).

Connectecteurs à souder sur la carte Xiao de Seeed Studio

Seeed Studio propose également 2 cartes d’extension compatibles avec les toutes cartes Xiao (j’en reparle un peu plus loin).

Cartes d'extension compatibles avec les cartes Xiao de Seeed Studio

XIAO SAMD21

C’est la carte de base, elle est équipée d’un microcontrôleur basse consommation (le même que celui de l’Arduino Zero).

MicrocontrôleurARM Cortex-M0+ CPU (SAMD21G18) running at up to 48MHz
Mémoire flash256 Ko
SRAM32 Ko
Broches d’E/S numériques11 (de 0 à 10)
Broches d’E/S analogiques11 (de 0 à 10)
Interface I2C1
Interface SPI1
Entrées tactiles7 (A0,A1,A6,A7,A8,A9,A10)
Interface UART (série)1
Prise USBType-C
Alimentation3.3V/5V DC
Dimensions20×17.5×3.5mm
XIAO SAMD21 de Seeed Studio

Pour programmer la carte avec l’IDE Arduino, il faut ajouter les paramètres du microcontrôleur. Pour cela, allez dans Fichier – Préférences et copiez la ligne suivante dans le champ URL de gestionnaire de cartes supplémentaires :

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

S’il y a déjà d’autres URL, vous pouvez ajouter celle là, à la suite (en la séparant d’une virgule).

Ajout de cartes supplémentaires

Allez ensuite dans Outils – Type de carte – Gestionnaire de carte, tapez simplement « xiao» dans le champ de recherche, sélectionnez les cartes Seeed SAMD Boards et cliquez sur le bouton Installer.

Installation des cartes  Seeed SAMD Boards

Vous pouvez maintenant aller dans Outils – Type de Carte – Seeed SAMD (32-bits ARM Cortex-M0+ and Cortex-M4) Boards et sélectionner la carte Seeeduino XIAO.

Sélection de la carte

Reliez la carte XIAO à l’ordinateur et sélectionnez le bon port COM.

Sélection du port COM

Vous pouvez tester rapidement la programmation de la carte avec le code suivant (modifiez la vitesse de clignotement en jouant sur la durée de la fonction delay).

int LEDINTERNE = 13;
void setup() {
  pinMode(LEDINTERNE, OUTPUT);
}
void loop() {
  digitalWrite(LEDINTERNE, HIGH);
  delay(1000);
  digitalWrite(LEDINTERNE, LOW);
  delay(1000);
}

Si tout s’est bien passé, vous disposez maintenant d’un mini-Arduino.

Blink avec la carte XIAO SAMD21

XIAO nRF52840 (Sense)

La carte conserve le même format, mais elle bénéficie d’un microcontrôleur plus puissant, de plus de mémoire, d’une connexion Bluetooth, d’une LED RGB. Il existe une version normale (sans capteurs) et une version Sense avec quelques capteurs en plus (accéléromètre, gyroscope, microphone).

MicrocontrôleurnRF52840 M4F@64MHz
Connectivité sans filBluetooth 5.0/BLE/NFC
Mémoire flash2 Mo
SRAM256 Ko
Broches d’E/S numériques11 (de 0 à 10)
Broches d’E/S analogiques6 (de 0 à 5)
Interface I2C1
Interface SPI1
Interface UART (série)1
LED embarquéesLED RGB
Capteurs (version Sense)IMU 6 degrés de liberté (LSM6DS3TR-C), microphone PDM
Prise USBType-C
Alimentation3.3V/5V DC
Dimensions20×17.5×3.5mm
XIAO nRF52840 (Sense)

Pour ajouter les paramètres du microcontrôleur, allez dans Fichier – Préférences et copiez la ligne suivante dans le champ URL de gestionnaire de cartes supplémentaires :

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

Evidement, si vous avez déjà fait ça pour utiliser la XIAO SAMD21, inutile de refaire cette étape. Dans ce cas, passez directement à la suivante.

Ajout de cartes supplémentaires

Allez ensuite dans Outils – Type de carte – Gestionnaire de carte, tapez simplement « xiao» dans le champ de recherche. Il existe 2 bibliothèques pour la carte. En fonction de vos besoins vous pouvez en installer une seule mais le plus simple est certainement d’installer les 2. Sélectionnez-les et cliquez sur le bouton Installer.

Installation des cartes Seeed Xiao  nRF52840

Vous pouvez maintenant aller dans Outils – Type de Carte… et sélectionner la carte Seeed XIA BLE Sense – nRF52840.

Sélection de la carte

Reliez la carte XIAO à l’ordinateur et sélectionnez le port COM correspondant à la carte.

Sélection du port COM

Je vous propose maintenant de tester l’accéléromètre, le gyroscope et le capteur de temperature. Pour cela, je me suis simplement inspiré des instructions fournies dans la documentation officielle.

Allez dans Outils – Gérer les bibliothèques, tapez « LSM6DS3 » dans le champ de recherche, sélectionnez la bibliothèque Seeed Arduino LSM6DS3 et cliquez sur Installer.

Ajout de la bibliothèque LSM6DS3

Allez ensuite dans Fichier – Exemples – Seeed Arduino LSM6DS3 – HighLevelExample et ouvrez le sketch d’exemple.

Ouverture du fichier d'exemple de la bibliothèque LSM6DS3

Téléversez le programme, ouvrez le moniteur série et observez comment les données changent lorsque la carte bouge.

Test de l'accéléromètre, du gyroscope et du capteur de temperature

XIAO RP2040

Cette carte utilise le même microcontrôleur que le Raspberry Pi Pico. Vous pouvez donc la programmer avec l’IDE Arduino, mais aussi en MicroPython, en CircuitPython et même en Rust (voir les liens utiles à la fin de l’article).

MicrocontrôleurDual-core ARM Cortex M0+ processor up to 133MHz
Mémoire flash2 Mo
SRAM264 Ko
Broches d’E/S numériques11 (de 0 à 10)
Broches d’E/S analogiques4 (de 0 à 3)
Interface I2C1
Interface SPI1
Interface UART (série)1
LED embarquéesLED RGB
Prise USBType-C
Alimentation3.3V/5V DC
Dimensions20×17.5×3.5mm
XIAO RP2040

Vous pouvez programmer la carte avec Thonny, exactement comme s’il s’agissait d’un Raspberry pi Pico (n’hésitez pas à consulter aussi mes autres articles qui en parlent).

Modifier la couleur de la LED RGB interne

Voilà par exemple comme modifier la couleur de la LED RGB interne. Mais auparavant, téléchargez et installez la bibliothèque ws2812.py

from ws2812 import WS2812
from time import sleep
import machine
import random
power = machine.Pin(11,machine.Pin.OUT)
power.value(1)
 
led = WS2812(12,1)#WS2812(pin_num,led_count)
 
while True:
    rouge = random.randint(0, 25)
    vert = random.randint(0, 25)
    bleu = random.randint(0, 25)
    led.pixels_fill((rouge, vert, bleu))
    led.pixels_show()
    sleep(1)
La LED RGB interne est bleue

XIAO ESP32C3

Cette carte utilise un microcontrôleur très courant qui lui permet de se connecter en WiFi et en Bluetooth. Je ne sais pas si c’est exactement le même, mais il est très proche de celui de la PYBStick ESP32 (dont je vous ai parlé il n’y a pas très longtemps). La documentation officielle de SeeedStudio évoque seulement la programmation avec l’IDE Arduino, mais comme pour la PYBStick, il devrait être également possible de programmer la carte en MicroPython.

MicrocontrôleurESP32-C3 32-bit RISC-V @160MHz
Connectivité sans filWiFi and Bluetooth 5 (LE)
Mémoire flash4 Mo
SRAM400 Ko
Broches d’E/S numériques11 (de 0 à 10)
Broches d’E/S analogiques4 (de 0 à 3)
Interface I2C1
Interface SPI1
Interface UART (série)1
Prise USBType-C
Alimentation3.3V/5V DC
Dimensions20×17.5×3.5mm
XIAO ESP32C3

Pour ajouter les paramètres du microcontrôleur (ESP32-C3) dans l’IDE Arduino, allez dans Fichier – Préférences et copiez la ligne suivante dans le champ URL de gestionnaire de cartes supplémentaires :

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

S’il y a déjà d’autres URL, vous pouvez ajouter celle là, à la suite (en la séparant d’une virgule).

Ajout de cartes supplémentaires

Allez ensuite dans Outils – Type de carte – Gestionnaire de carte, tapez « esp32 » dans le champ de recherche et cliquez sur le bouton Installer.

Installation des cartes ESP32

Vous pouvez maintenant aller dans Outils – Type de Carte – ESP32 Arduino et sélectionner la carte XIAO_ESP32C3.

Sélection de la carte

Reliez la carte XIAO à l’ordinateur et sélectionnez le port COM.

Sélection du port COM

Reliez une LED à la masse et au port D10 (avec une résistance d’environ 220 Ω en série).

Branchement d'une LED au port D10

Copiez le code suivant dans l’IDE Arduino :

// define led according to pin diagram
int led = D10;
 
void setup() {
  // initialize digital pin led as an output
  pinMode(led, OUTPUT);
}
 
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on 
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off
  delay(1000);               // wait for a second
}

Vous pouvez essayer de lancez directement le téléversement, mais vous risquez de rencontrer un message d’erreur de ce type.

Message d'erreur dans l'IDE Arduino

Pour résoudre le problème, appuyez sur le bouton BOOT et laissez le doigt appuyé sur le bouton, appuyez brièvement sur le bouton RESET (en gardant toujours le doigt sur le bouton BOOT).

Boutons du XIAO ESP32C3

Maintenant, vous pouvez relâcher le bouton BOOT, lancer le téléchargement et redémarrer la carte en appuyant sur le bouton RESET.

Clignotement de la LED externe

Alors, oui, c’est un peu contraignant parce qu’il faut refaire cette manipulation à chaque fois, mais au moins ça fonctionne…

Grove Shield

Cette carte d’extension possède 8 connecteurs Grove, mais si vous la trouvez trop grande, sachez qu’il est possible de la raccourcir simplement en la cassant en 2 (suivant les pointillés). Evidement, l’opération est irréversible.

Grove Shield

Il existe énormément de modules Grove. Ils sont beaucoup utilisés dans le monde de l’éducation parce qu’il simplifient les branchement (en réduisant les risques de faux contact et de court circuit).

Grove Shield avec un module LED

XIAO Expansion board

Cette carte est un peu plus chère mais elle apporte de nombreuses fonctions supplémentaire (connecteurs Grove, bouton programmable, Buzzer, lecteur de carte SD, horloge en temps réel, écran OLED de 0.96″, prise pour batterie Lipo 3,7V et servomoteur).

XIAO Expansion board

SeeedStudio propose aussi un boitier acrylique transparent (en option), qui protège de façon élégante la carte d’extension. Les possibilités offertes par cette carte sont énormes. Branchez un capteur de température (et d’humidité) au format Grove et vous pourrez fabriquer un thermomètre /hygromètre. Pour le rendre autonome, alimentez la carte avec une batterie (Lipo 3,7V).

Le thermomètre /hygromètre fabriqué avec la carte XIAO Expansion board

Voilà le code utilisé, je compte sur vous pour le personnaliser et/ou l’améliorer…

// XIAO_SAMD21_TemperatureDHT
// Appel des bibliothèques
#include <Arduino.h>
#include <U8x8lib.h>
#include <Wire.h>
#include <DHT.h>
// Constances et variables
const int CAPTEUR_TEMP = 0;
int t, h;

//Ecran OLED
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/* clock=*/ PIN_WIRE_SCL, /* data=*/ PIN_WIRE_SDA, /* reset=*/ U8X8_PIN_NONE);   // OLEDs without Reset of the Display

// Sélectionnez votre capteur
DHT dht(CAPTEUR_TEMP, DHT11);
//DHT dht(CAPTEUR_TEMP, DHT22);

void setup(void) {
  // Capteur température DHT
  dht.begin();
  u8x8.begin();
  u8x8.setFlipMode(1);   // set number from 1 to 3, the screen word will rotary 180
}
 
void loop(void) {
  t = round(dht.readTemperature());
  h = round(dht.readHumidity()); 
  //u8x8.setFont(u8x8_font_chroma48medium8_r);
  u8x8.setFont(u8x8_font_amstrad_cpc_extended_r);
  u8x8.setCursor(4, 0);
  u8x8.print("ARDUIBLOG");
  u8x8.setCursor(0, 3);
  u8x8.print("Temperature : ");
  u8x8.print(t);
  u8x8.setCursor(0, 6);
  u8x8.print("Humidite : ");
  u8x8.print(round(dht.readHumidity()));
  delay(10000);
}

Vous pouvez aussi vous servir de l’horloge temps réel et du lecteur de carte SD pour faire des relevés de températures et d’humidité toutes les heures et récupérer ensuite les données (de la carte SD) pour faire de jolis graphiques. Ou envoyer les données en Wifi avec le XIAO ESP32C3.

Conclusion

Les cartes de la série Xiao sont compactes et leur prix est très bas (entre 5,00 € et 16,00 €, suivant le modèle). Le choix du microcontrôleur, du type de connecteur à souder et la compatibilité avec les nombreux modules Grove leur permet de s’adapter à toutes les utilisations (éducation, domotique, iot etc…).

Les cartes de la gamme Xiao avec les 2 cartes Shield

Sources et liens utiles

Publicité

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s