Dans cet article, nous allons comparer l’Arduino et le Pico Elecrow Starter Kit pour l’éducation STEM. Les deux kits de démarrage offrent de nombreux capteurs différents (lumière, son, distance, …) et quelques actionneurs (servo, LED, relais, buzzer, …) qui peuvent être programmés via l’Arduino IDE.
La principale différence est qu’un kit utilise l’Arduino (ATmega328P) comme microcontrôleur, tandis que l’autre contient la puce Pico 2 (RP2350). Il existe également des différences au niveau des capteurs intégrés, des actionneurs et de l’affichage, que nous aborderons également.
Pièces requises
Vous trouverez ci-dessous les liens vers les deux kits de démarrage. Comme vous pouvez le voir, ils se présentent sous la forme de petites valises (195*170*46mm) avec les capteurs et actionneurs facilement accessibles sur un panneau avant :

Starter Kit avec Arduino

Starter Kit avec Pico 2
Dans les deux sections suivantes, nous examinerons d’abord de plus près le kit basé sur Arduino, puis nous discuterons du Starter Kit avec le Pico 2.
Starter Kit avec Arduino
Le Starter Kit basé sur Arduino est équipé de capteurs intégrés pour la lumière, la température, l’humidité, le son, la distance, l’accélération, le mouvement et la lumière IR, ainsi qu’un capteur d’humidité supplémentaire pouvant être connecté via une interface Crowtail. Il y a six de ces interfaces Crowtail, qui fournissent deux E/S analogiques, une E/S numérique, deux interfaces I2C et une interface UART.
En plus des capteurs, il y a un écran LCD, un bouton, un relais, un buzzer, un servo et un potentiomètre linéaire comme actionneurs. La photo ci-dessous montre le panneau avant du kit avec les capteurs et actionneurs étiquetés.

Le kit est livré avec Demo Cod, un Tutorial/User Manual et le Schematics du matériel. Le tableau suivant liste les broches GPIO ou adresses I2C (source) pour les différents capteurs et actionneurs :
| Capteur | Broche GPIO | I2C |
|---|---|---|
| I2C | A5/SCLA4/SDA | |
| UART | D0/RXD1/TX | |
| Entrée analogique | A3 | |
| Entrée analogique | A6 | |
| E/S numérique | D11 | |
| Capteur de lumière | A5/SCLA4/SDA | 0X5C |
| LED | D10 | |
| Bouton | D7 | |
| Servo | D9 | |
| PIR | A2 | |
| MPU-6050 | A5/SCLA4/SDA | 0x68 |
| Buzzer | D3 | |
| Potentiomètre linéaire | A0 | |
| Relais | D4 | |
| Capteur de son | A1 | |
| Capteur IR à distance | D2 | |
| Température & Humidité | A5/SCLA4/SDA | 0X38 |
| Capteur ultrasonique | D5_US_ECHOD6_US_TRIG | |
| LCD | A5/SCLA4/SDA | 0X21 |
Programmation du Starter Kit Arduino
La programmation du Starter Kit basé sur Arduino fonctionne de la même manière que pour un Arduino UNO. D’abord Install the Arduino IDE sur votre PC comme d’habitude. Connectez le kit via USB à votre PC. Ensuite, ouvrez le Board Manager et sélectionnez la carte « Arduino Uno » comme montré ci-dessous.

La carte devrait être reconnue comme connectée à un des ports COM. Dans l’exemple ci-dessus, c’est COM5, mais dans votre cas, cela peut être un autre port.
Si cela fonctionne, vous pouvez commencer à écrire et téléverser du code. Malheureusement, le Demo Code et le Tutorial pour le Starter Kit contiennent pas mal d’erreurs et, à mon avis, ne sont pas faciles à comprendre. J’ai donc implémenté quelques exemples de code moi-même, que vous trouverez ci-dessous.
Exemple de code : Clignotement de LED
Le code suivant est l’exemple classique Blink. Il allume la LED rouge pendant une seconde, puis l’éteint pendant une seconde, et répète ce cycle indéfiniment :
const int ledPin = 10;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
Exemple de code : Bouton & LED
Dans cet exemple, nous utilisons le bouton pour allumer ou éteindre la LED rouge. Tant que le bouton est pressé, la LED reste allumée :
const int buttonPin = 7;
const int ledPin = 10;
void setup() {
pinMode(buttonPin , INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
if (!digitalRead(buttonPin)) {
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
}
}
Si vous voulez en savoir plus sur les boutons, consultez le tutoriel How To Use A Push Button With Arduino.
Exemple de code : Capteur de mouvement & LED
Cet exemple montre comment contrôler la LED avec le capteur de mouvement. Chaque fois qu’un mouvement est détecté par le capteur PIR, la LED rouge s’allume pendant une seconde.
const int pirPin = A2;
const int ledPin = 10;
void setup() {
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
if (digitalRead(pirPin)) {
digitalWrite(ledPin, HIGH);
delay(1000);
}
digitalWrite(ledPin, LOW);
delay(10);
}
Si vous souhaitez en savoir plus sur les capteurs infrarouges passifs (PIR) pour la détection de mouvement, consultez le tutoriel How to use HC-SR501 PIR Motion Sensor with Arduino.
Exemple de code : Capteur de son & Relais
Dans l’exemple suivant, nous activons le relais si le microphone détecte un son dont le volume dépasse le seuil défini à 50. Vous pouvez modifier ce seuil pour rendre la détection sonore plus ou moins sensible.
const int soundPin = A1;
const int relayPin = 4;
const int threshold = 50;
void setup() {
pinMode(soundPin, INPUT);
pinMode(relayPin, OUTPUT);
}
void loop() {
if (analogRead(soundPin) > threshold) {
digitalWrite(relayPin, HIGH);
delay(1000);
digitalWrite(relayPin, LOW);
delay(100);
}
}
Pour plus d’informations sur les relais, consultez le tutoriel How To Use A Relay With Arduino.
Exemple de code : Capteur de distance ultrasonique & Buzzer
L’exemple ci-dessous utilise le capteur ultrasonique pour mesurer les distances et, si la distance est inférieure à 30 centimètres, le buzzer est activé pour émettre un son d’alerte :
#include "HCSR04.h"
const int triggerPin = 6;
const int echoPin = 5;
const int buzzerPin = 3;
UltraSonicDistanceSensor sensor(triggerPin, echoPin);
void setup() {
}
void loop() {
float dist = sensor.measureDistanceCm();
if (dist > 0 && dist < 30) {
tone(buzzerPin, 2000);
delay(100);
noTone(buzzerPin);
}
}
Si vous avez besoin de plus d’informations sur les buzzers, consultez le tutoriel Use A Piezo Buzzer With Arduino. Et si vous souhaitez en savoir plus sur le capteur de distance ultrasonique, vous pouvez lire notre tutoriel How to use an HC-SR04 Ultrasonic Distance Sensor with Arduino.
Exemple de code : Capteur de distance ultrasonique & Servo
Cet exemple utilise à nouveau le capteur ultrasonique, mais cette fois pour contrôler le servo. Plus un objet s’approche du capteur, plus le servo tourne.
#include "HCSR04.h"
#include "Servo.h"
const int triggerPin = 6;
const int echoPin = 5;
const int servoPin = 9;
Servo servo;
UltraSonicDistanceSensor sensor(triggerPin, echoPin);
void setup() {
servo.attach(servoPin, 600, 2520);
}
void loop() {
float dist = sensor.measureDistanceCm();
if (dist > 0 && dist < 30) {
int pos = map(dist, 0, 30, 0, 180);
servo.write(pos);
delay(50);
}
}
Pour plus d’informations sur les servos, consultez notre tutoriel How to control servo motors with Arduino. Et si vous souhaitez contrôler le servo via une télécommande IR en utilisant le capteur IR intégré, lisez le tutoriel How to Control a Servo with an IR Remote.
Exemple de code : Capteur de température & humidité & LCD
Enfin, nous mesurons la température et l’humidité avec le capteur DHT20 et affichons les valeurs mesurées sur l’écran LCD :
#include "DHT20.h"
#include "Adafruit_LiquidCrystal.h"
DHT20 dht(&Wire);
Adafruit_LiquidCrystal lcd(0x21);
void setup() {
lcd.begin(16, 2);
Wire.begin();
dht.begin();
}
void loop() {
dht.read();
lcd.setCursor(2, 0);
lcd.print("Tem: ");
lcd.print(dht.getTemperature());
lcd.print(" C");
lcd.setCursor(2, 1);
lcd.print("Hum: ");
lcd.print(dht.getHumidity());
lcd.print(" %");
delay(500);
}
Si vous avez besoin d’aide supplémentaire sur les LCD, consultez les tutoriels Interfacing 128 x 64 Graphical LCD With Arduino et How to use a 16×2 character LCD with Arduino.
Starter Kit avec Pico 2
Le Starter Kit basé sur le microcontrôleur Raspberry Pico 2 est équipé de capteurs pour le toucher, la lumière, les champs magnétiques, les gaz, le son, la température, l’humidité et un capteur de distance ultrasonique.
Pour les actionneurs et autres dispositifs de sortie, il y a un buzzer, un servo-moteur, un moteur vibrant, un relais, un potentiomètre, plusieurs boutons, trois LEDs, deux bandes de LEDs RGB et un écran TFT. La photo ci-dessous montre le panneau avant du kit avec ses capteurs et actionneurs.

Ce kit est également livré avec Demo Cod, un Tutorial/Manual, un Wiki et le Schematics pour les circuits matériels.
Programmation du Starter Kit Pico
Avant de pouvoir programmer le Pico 2 avec l’Arduino IDE, vous devez installer le core RP2350. Allez dans File -> Preferences dans l’Arduino IDE et ouvrez la boîte de dialogue des préférences.

Dans la boîte de dialogue des préférences, allez à l’onglet Settings. En bas, vous verrez « Additional boards manager URLs : ». Cliquez sur le bouton à droite (marqué en jaune) pour ouvrir l’éditeur d’URL.

Dans l’éditeur d’URL, ajoutez l’URL suivante à la liste (marquée en jaune ci-dessous) :
« https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json »

Malgré son nom, le package_rp2040_index supporte les puces RP2040 et RP2350, utilisée dans le Starter Kit Pico.
Comme vous pouvez le voir, j’ai aussi installé les cores ESP8266 et ESP32, mais vous n’avez besoin que du core RP2350 pour le Starter Kit basé sur Pico.
Installation des cartes RP2350
Ensuite, nous devons installer les cartes RP2350. Allez dans Tools -> Board -> Board Manager et cherchez RP2350 avec la barre de recherche. Installez les cartes Raspberry Pi Pico/RP2040/RP2350 par Earle F. Philhower. Après installation, cela devrait ressembler à ceci.

Sélectionner la carte Raspberry Pi Pico 2
Une fois l’installation du core RP2350 terminée, connectez le Starter Kit Pico au port USB de votre ordinateur. Ensuite, allez dans le Board Manager et sélectionnez la carte « Raspberry Pi Pico 2 » comme montré ci-dessous :

La carte devrait être reconnue par l’Arduino IDE et vous devriez la voir connectée à un port COM via USB (voir capture d’écran ci-dessus).
Nous sommes maintenant prêts à programmer. Pour plus de commodité, voici un tableau avec certaines broches GPIO et les capteurs ou actionneurs auxquels elles sont connectées (source) :
| Broche GPIO | Fonction |
|---|---|
| GP0_LED_BK | LED_BK |
| GP1_PSRAM_CS | Sélection puce PSRAM |
| GP4/I2C0_SDA | Toucher écran TFT |
| GP5/I2C0_SCL | |
| GP2/I2C1_SDA | Température & Humidité DHT20 (0X38) MPU-6050 (0x68) CAPTEUR DE LUMIÈRE (0x5C) |
| GP3/I2C1_SCL | |
| GP6_SPI0_CLK_TFT | Affichage écran TFT |
| GP7_SPI0_MOSI_TFT | |
| GP16_RS_TFT | |
| GP17_SPI0_CS_TFT | |
| GPIO24_TP_RST | |
| GPIO25_TP_INT | |
| GP26_A0_GAS | Capteur de fumée |
| GP27_A1_KEY | 4 boutons |
| GP28_A2_POT | Potentiomètres coulissants |
| GP29_A3_SOUND | Module capteur de son |
| QSPI_SD3 | Mémoire W25Q64 NORFlash & APS6404L PSRAM |
| QSPI_SCLK | |
| QSPI_SD0 | |
| QSPI_SD2 | |
| QSPI_SD1 | |
| QSPI_SS | |
| GPIO8_US_ECHO | Module ultrasonique |
| GPIO9_US_TRIG | |
| GPIO10_BUZZER | Module buzzer |
| GPIO11_IR | Module IR |
| GPIO12_RELAY | Module relais |
| GPIO13_SERVO | Module servo |
| GPIO14_TOUCH | Module tactile |
| GPIO15_VIB | Module moteur vibrant |
| GPIO18_LED_RED | LED |
| GPIO19_LED_GREEN | LED |
| GPIO20_LED_YELLOW | LED |
| GPIO21_HALL | Modules capteur Hall |
| GPIO22_RGB | LED RGB*20 |
| GPIO23_RGB_EN |
Le Starter Kit Pico est livré avec quelques Demo Code et un Tutorial mais le code est un gros bloc unique et n’est pas très adapté pour apprendre à utiliser les différents capteurs du kit. J’ai donc implémenté quelques exemples simples pour vous aider à démarrer facilement.
Exemple de code : Clignotement de trois LEDs
Ce premier exemple fait simplement clignoter les trois LEDs (rouge, verte, jaune) une par une :
// red, green, yellow LEDS
const int leds[] = { 18, 19, 20 };
void setup() {
for (int i = 0; i < 3; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < 3; i++) {
digitalWrite(leds[i], HIGH);
delay(500);
digitalWrite(leds[i], LOW);
}
}
Exemple de code : Capteur de gaz & Moniteur série
Dans l’exemple suivant, nous lisons la valeur du capteur de gaz et l’affichons dans le moniteur série :
void setup() {
Serial.begin(115200);
}
void loop() {
int sensorValue = analogRead(A0);
Serial.print("Gas:");
Serial.println(sensorValue);
delay(1000);
}
Si vous souhaitez en savoir plus sur le capteur de gaz MQ-2 et comment interpréter ces valeurs, consultez notre tutoriel How to use the MQ-2 Gas Sensor with Arduino.
Exemple de code : Capteur tactile & Buzzer
Le code suivant lit le capteur tactile et émet un son sur le buzzer si un contact est détecté :
const int touchPin = 14;
const int buzzerPin = 10;
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(touchPin, INPUT);
}
void loop() {
delay(50);
if (digitalRead(touchPin)) {
tone(buzzerPin, 2000);
} else {
noTone(buzzerPin);
}
}
Pour plus d’informations sur les buzzers, consultez le tutoriel Use A Piezo Buzzer With Arduino.
Exemple de code : Capteur de son & LED
L’exemple suivant utilise le microphone pour détecter le son et, si le volume sonore dépasse un certain seuil, la LED rouge s’allume.
const int ledPin = 18;
const int soundPin = 29;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(soundPin, INPUT);
}
void loop() {
if (analogRead(soundPin) > 50) {
digitalWrite(ledPin, HIGH);
delay(100);
} else {
digitalWrite(ledPin, LOW);
}
}
Exemple de code : Servo & Potentiomètre
Avec cet exemple, vous pouvez utiliser le potentiomètre linéaire pour contrôler la position du bras du servo :
#include "Servo.h"
const int servoPin = 13;
Servo servo;
void setup() {
servo.attach(servoPin, 600, 2520);
}
void loop() {
int pot = analogRead(A2);
int pos = map(pot, 0, 1024, 0, 180);
servo.write(pos);
delay(10);
}
Pour plus d’informations sur les servos, consultez les tutoriels How to control servo motors with Arduino et Positional versus Continuous Servos. Si vous souhaitez contrôler le servo via une télécommande IR en utilisant le capteur IR intégré du kit, le tutoriel How to Control a Servo with an IR Remote vous sera utile.
Exemple de code : Capteur de distance ultrasonique & Relais
Dans l’exemple de code suivant, nous activons le relais (et la LED rouge) si la distance mesurée par le capteur ultrasonique devient inférieure à 10 cm :
#include "HCSR04.h"
const int triggerPin = 9;
const int echoPin = 8;
const int relayPin = 12;
const int ledPin = 18;
UltraSonicDistanceSensor sensor(triggerPin, echoPin);
void setup() {
pinMode(relayPin, OUTPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
float dist = sensor.measureDistanceCm();
if (dist > 0 && dist < 10) {
digitalWrite(relayPin, HIGH);
digitalWrite(ledPin, HIGH);
delay(1000);
}
digitalWrite(relayPin, LOW);
digitalWrite(ledPin, LOW);
}
Si vous souhaitez en savoir plus sur le capteur de distance ultrasonique, vous pouvez lire notre tutoriel How to use an HC-SR04 Ultrasonic Distance Sensor with Arduino. Et pour plus d’informations sur les relais, consultez le tutoriel How To Use A Relay With Arduino.
Exemple de code : Écran TFT
Le Starter Kit Pico contient un écran TFT et voici un exemple simple d’utilisation de cet écran avec le Adafruit-ST7735-Library. Le code écrit simplement le texte « Makerguides » sur l’affichage.
#include "Adafruit_GFX.h"
#include "Adafruit_ST7789.h"
#include "SPI.h"
#define TFT_CS 17
#define TFT_RST -1
#define TFT_DC 16
#define TFT_MOSI 7
#define TFT_SCLK 6
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
const int tftBacklight = 0;
void setup() {
pinMode(tftBacklight, OUTPUT);
digitalWrite(tftBacklight, HIGH);
tft.init(240, 320);
tft.fillScreen(ST77XX_BLACK);
tft.setRotation(3);
tft.setCursor(60, 100);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(3);
tft.print("Makerguides");
}
void loop() {}
Si vous voulez faire plus que simplement écrire du texte, consultez le Adafruit GFX Graphics Library documentation. En plus du texte, vous pouvez afficher toutes sortes de graphiques (lignes, rectangles, …) et de couleurs.
D’autres informations pertinentes sont également disponibles dans les tutoriels Interface TFT ST7789 Display with ESP32 et Interfacing 1.8-inch TFT Color Display With Arduino.
Exemple de code : Écran TFT & Capteur de température & humidité
Cet exemple final montre comment lire les données du capteur de température et d’humidité, et comment afficher les valeurs mesurées sur l’écran TFT :
#include "Adafruit_GFX.h"
#include "Adafruit_ST7789.h"
#include "SPI.h"
#include "DHT20.h"
const int tftBacklight = 0;
// CS, DC, MOSI, SCLK, RST
Adafruit_ST7789 tft = Adafruit_ST7789(17, 16, 7, 6, -1);
DHT20 dht(&Wire1);
void setup() {
pinMode(tftBacklight, OUTPUT);
digitalWrite(tftBacklight, HIGH);
tft.init(240, 320);
tft.fillScreen(ST77XX_BLACK);
tft.setRotation(3);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(3);
Wire1.setSDA(2);
Wire1.setSCL(3);
Wire1.begin();
dht.begin();
}
void loop() {
dht.read();
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(30, 50);
tft.printf("Tmp: %.2f C", dht.getTemperature());
tft.setCursor(30, 100);
tft.printf("Hum: %.2f %%", (double)dht.getHumidity());
delay(1000);
}
Vous remarquerez que l’affichage scintille à chaque mise à jour des valeurs affichées. Il faut effacer l’écran entre chaque mise à jour, car le texte est écrit avec un transparent background et s’écraserait donc lui-même. Vous pouvez éviter cela en écrivant d’abord sur un canevas, puis en mettant à jour l’affichage. Consultez le Adafruit GFX Graphics Library documentation si vous souhaitez faire cela.
Comparaison des Starter Kits
La principale différence entre les deux Starter Kits est le microcontrôleur. L’un utilise un Arduino (ATmega328P), tandis que l’autre utilise le Pico 2 (RP2350). Le Pico est beaucoup plus puissant mais plus récent, donc il bénéficie de moins de support en termes de bibliothèques, d’informations et d’aide générale.
De plus, le Starter Kit basé sur Pico est équipé d’un écran TFT avec une résolution beaucoup plus élevée (et en couleur), comparé à l’écran LCD du kit Arduino. Cependant, il est un peu plus facile d’écrire du code pour l’écran LCD.
Le kit Pico possède plus de LEDs, y compris des LEDs RGB, et plus de capteurs comme le capteur de gaz, le capteur Hall et un capteur tactile. Il y a aussi un moteur vibrant que le kit Arduino n’a pas. Et le kit Pico a quatre boutons, tandis que le kit Arduino n’en a qu’un.
En revanche, le kit Pico ne dispose pas d’interfaces Crowtail ni d’autres broches GPIO exposées pouvant être utilisées pour connecter des capteurs externes, comme le capteur d’humidité fourni avec le kit Arduino.
Les deux kits ont des broches GPIO et des adresses I2C pour les capteurs et actionneurs étiquetés sur la sérigraphie (panneau), ce qui est très pratique pour écrire le code de contrôle.
À part l’écran TFT du kit Pico, vous pouvez écrire un code très similaire et réaliser de nombreux projets similaires avec les deux kits, car les capteurs sont en grande partie les mêmes et peuvent être programmés de la même manière.
Conclusions
Les deux kits sont excellents si vous voulez apprendre à écrire du code Arduino pour lire des données de capteurs et contrôler des actionneurs. Cependant, les tutoriels et exemples de code fournis pourraient être améliorés. En particulier, le code exemple pour le kit basé sur Pico est un gros bloc unique et n’est pas divisé en tutoriels individuels pour chaque capteur.
L’objectif des deux Starter Kits est clairement de fournir une plateforme matérielle facile pour l’éducation STEM, et sur ce point, ils réussissent. Ils sont fantastiques si vous voulez rapidement tester et jouer avec différents capteurs ou actionneurs. Le format valise est très pratique, et vous n’avez pas à vous soucier de perdre des câbles ou des capteurs.
En revanche, vous n’apprendrez pas à construire un circuit vous-même. Les circuits internes des kits sont plus complexes (plus robustes) que ce que l’on construirait pour des fins éducatives, et ne sont donc pas des exemples adaptés aux débutants. Cependant, disposer des schémas des deux kits est très utile.
Si vous cherchez une plateforme matérielle pour l’éducation STEM, je choisirais le kit basé sur Arduino, car l’Arduino (ATmega328P) est mieux supporté que le Pico et l’écran LCD est plus facile à utiliser.
Cependant, si l’accent est davantage mis sur les effets lumineux ou le développement de jeux, le kit basé sur Pico est un meilleur choix grâce aux bandes LED RGB, à l’écran TFT et aux quatre boutons qui peuvent servir pour le contrôle de jeux. De plus, si vous préférez MicroPython, le Pico avec sa puissance de calcul et sa mémoire supérieures est ce qu’il vous faut.
Bon bricolage ; )

