Cet article avait déjà été publié en octobre 2023 dans la BibliothÚque Numérique des éditions ENI.

Mais il Ă©tait rĂ©servĂ© aux abonĂ©s. Alors, aprĂšs avoir laissĂ© l’exclusivitĂ© aux Editions ENI pendant 2 mois, je peux dĂ©sormais le republier sur mon blog (disons donc que c’est votre cadeau de NoĂ«l).

Uno R3, l’actuel roi Arduino
Depuis sa sortie en 2011, l’Arduino Uno (R3) est devenu la rĂ©fĂ©rence dans le monde des cartes de dĂ©veloppement. Non seulement la fondation Arduino a rĂ©ussi Ă en vendre 10 millions d’exemplaire, mais si l’on ajoute les innombrables clones et contrefaçons (vendus parfois Ă des prix trĂšs attractifs), il faut certainement multiplier ce chiffre par 3, 4 (ou mĂȘme peut ĂȘtre beaucoup plusâŠ).

Une telle longĂ©vitĂ© est extrĂȘmement rare dans le milieu de la tech oĂč d’habitude les objets sont rapidement obsolĂštes. Mais, aprĂšs 13 ans l’Arduino se vend encore trĂšs bien. Pourtant la fondation Arduino ne cesse pas dâinnover :
- L’Arduino Leonardo possĂšde le mĂȘme format. Il est commercialisĂ© (Ă peu prĂšs au mĂȘme prix) depuis 2012 et en plus il peut ĂȘtre reconnu par l’ordinateur comme un pĂ©riphĂ©rique USB (ce qui permet par exemple imiter un clavier et/ou une souris).
- D’autres dĂ©clinaisons de l’Arduino Uno (Ă©galement au mĂȘme format) se sont succĂ©dĂ© avec de nouvelles fonctions (WiFi, Ethernet) ou des microcontrĂŽleurs plus puissants.
- L’Arduino Mega surpasse l’Arduino Uno (R3) dans tout les domaines (microcontrĂŽleurs plus puissants, plus de connecteurs), tout en restant assez compact et en conservant une compatibilitĂ© avec les cartes dâextensions (shield) de son petit frĂšre.
- Il existe Ă©galement des cartes plus compactes (Arduino Mini, Nano, Micro, MKRâŠ), parfois plus puissantes et offrant de nouvelles fonctions (Wifi, GSMâŠ).
- Et de nombreuses cartes rĂ©pondant Ă des besoins plus spĂ©cifiques (Arduino Robot, Esplora, LilyPadâŠ). Je n’en parlerai pas cette fois-ci mais elles mĂ©riteraient certainement un jour que je leur consacre un articleâŠ

Alors comment expliquer qu’en 2023, l’Arduino Uno (R3) reste toujours (et de trĂšs loin) le modĂšle le plus utilisĂ© ?
- Il est fiable et robuste (en cas d’utilisation « normale », il est trĂšs rare qu’un Arduino tombe en panne).
- Bien sûr, il existe des modÚles mieux équipés ou plus puissant, mais il reste suffisant pour réaliser de nombreux projet.
- Il est modulable, en cas de besoin, il est trĂšs facile d’ajouter de nouvelle fonctions (LED, Buzzer, moteurs, WiFi…).
- Son prix est raisonnable (pour un produit fabriquĂ© en Europe). Une vingtaine d’Euros, c’est le prix d’un repas dans une pizzeria.
- Avec plusieurs dizaines de millions d’utilisateurs, sa communautĂ© a atteint un masse critique, lâimmense majoritĂ© de la documentation disponible lui est consacrĂ©e. Les dĂ©butants nâosent pas sâaventurer en terrain inconnu et ceux qui l’utilisent dĂ©jĂ n’Ă©prouvent pas le besoin de le remplacer puisqu’il en sont satisfait.
Mais depuis quelques annĂ©es, les concurrents ne se contentent plus de fabriquer de simples clones de l’Arduino. Ils innovent en proposant des cartes de dĂ©veloppement plus performantes et beaucoup moins chĂšres (notamment avec les microcontrĂŽleurs ESP8266, ESP32 ou RP2040).
La fondation Arduino devait donc rĂ©agir et c’est ce qu’elle a fait en proposant, non pas un mais deux successeurs pour l’Arduino Uno R3. L’Arduino Uno R4 Minima et L’Arduino Uno R4 Wifi.

Arduino Uno R4 Minima
Le modĂšle de base semble plutĂŽt proche de l’Arduino Uno R3. Tout a Ă©tĂ© fait pour que la transition entre l’ancien et le nouveau modĂšle soit la plus douce possible. L’Arduino Uno R4 Minima possĂšde la mĂȘme taille, les mĂȘmes connecteurs (situĂ©s exactement au mĂȘme endroit).

Il fonctionne mĂȘme sous 5V, alors que la plupart des microcontrĂŽleurs rĂ©cent sont passĂ©s au 3,3V. Vous ne devriez donc rencontrer pas rencontrer de problĂšmes (au niveau matĂ©riel) en insĂ©rant une carte d’extension (shield) conçue Ă la base pour l’Arduino Uno R3.

Niveau logiciel, ça dĂ©pend. Les bibliothĂšques officielles de la fondation Arduino sont dĂ©jĂ compatible et les plus courantes devrait l’ĂȘtre rapidement. Mais si vous utilisez une bibliothĂšque propriĂ©taire ou qui n’est pas souvent mise Ă jour, il est possible qu’elle ne fonctionne plus avec l’Arduino Uno R4. Vous trouverez Ă l’adresse suivante la liste (non exhaustive) des cartes shields compatible : https://docs.arduino.cc/tutorials/uno-r4-minima/shield-compatibility
L’IDE Arduino vĂ©rifie automatiquement que vous utilisez bien la derniĂšre version des bibliothĂšques et des cartes, alors s’il vous demande de les mettre Ă jour, prenez le temps de le faire.
Prix et disponibilités
Depuis le 26 juin 2023, vous pouvez commander les versions Minima et WiFi sur le site officiel de la fondation. Les autres boutiques ont Ă©tĂ© approvisionnĂ©es plus tard (J’ai dĂ» attendre un mois de plus pour recevoir mes cartes prĂ©commandĂ©es chez MC Hobby).
Comme vous pouvez le constater, l’Arduino Uno R4 Minima coĂ»te beaucoup moins cher que l’Arduino Un R3.

Les prix ci dessus ne tiennent pas compte de la TVA et des frais de port (comptez environ 10 ⏠de plus).
PremiĂšres constatations
En comparant visuellement les 2 cartes, nous remarquons déjà quelques différences.

Contrairement Ă l’Arduino Uno R3 qui laisse encore le choix entre la version DIP (microcontrĂŽleur grand format et amovible) et la version SMD (microcontrĂŽleur plus petit et soudĂ© Ă la surface de la carte), l’Arduino Uno R4 existe seulement en version SMD. Cela explique peut ĂȘtre la diffĂ©rence de prix entre les 2 versions (puisque cela coĂ»te moins cher Ă fabriquer).
Apparemment, le microcontrĂŽleur RA4M1 n’existe pas en version DIP. Ce qui est bien dommage pour les plus bricoleurs. Dans certains cas, il peut ĂȘtre intĂ©ressant d’enlever le microcontrĂŽleur pour le reprogrammer ou construire un clone d’Arduino Uno en utilisant un autre Arduino (sans microcontrĂŽleur) comme contrĂŽleur USB.
J’explique cela dans mon livre sur l’Arduino : Arduino, apprivoisez l’Ă©lectronique et le codage (3e Ă©dition) – Chapitre 10 Autres cartes Arduino – Construire un clone de l’Arduino Uno
Bonne nouvelle, le vieillissant port USB (de type B) a enfin été remplacé par un port USB C. Une prise plus compacte, plus pratique à utiliser et maintenant beaucoup plus courante.
Il y a encore beaucoup de surface disponible sur le dessus de l’Arduino Uno R4 Minima. Le quadrillage dessinĂ© permet de l’habiller en Ă©voquant subtilement le milieu scolaire (qui sera certainement l’un des principaux dĂ©bouchĂ© de cette carte). Bien sĂ»r, j’aurais prĂ©fĂ©rĂ© un peu plus de fantaisie, mais la sobriĂ©tĂ© Ă aussi son charme et elle est quand mĂȘme trĂšs belle.
Par contre je suis un peu déçu par le retour au bleu cobalt (une couleur un peu trop classique). La fondation Arduino nous avait habitué à sa couleur, le bleu canard (ou bleu Arduino) qui permettait de distinguer facilement les cartes officielles des clones. Alors pourquoi changer ce qui faisait pourtant sa spécificité ?
Caractéristiques techniques
Comme vous pouvez le voir sur ce tableau comparatif, le nouveau microcontrĂŽleur de l’Arduino est beaucoup plus performant. Il fonctionnement plus rapidement et dispose de plus de mĂ©moire. La gestion Ă©lectrique de la carte a Ă©galement Ă©tĂ© amĂ©liorĂ©e puisqu’elle accepte dĂ©sormais une alimentation pouvant aller jusqu’Ă 24 V.
Cependant, le microcontrĂŽleur Renesas RA4M1 semble un peu moins robuste que l’ATmega328P puisque le courant maximum utilisable sur une des sorties baisse de 20 mA Ă seulement 8 mA.
Attention, le dĂ©passement de cette limite risquerait d’endommager l’Arduino, alors, pour alimenter une LED, je vous conseille vivement de remplacer la rĂ©sistance habituelle (220 Ω) par une plus grosse (par exemple 470 ou 1000 Ω).
Arduino | Uno R3 | Uno R4 Minima |
| MicrocontrĂŽleur | ATmega328P | Renesas RA4M1 |
| Connecteur USB | USB-B | USB-C |
| Tension dâentrĂ©e (alimentation) | 7 V Ă 12 V | 6 V Ă 24 V |
| Tension de fonctionnement | 5 V | 5 V |
| Fréquence | 16 MHz | 48 MHz |
| Entrées analogiques | 6 | 6 |
| Sorties analogiques virtuelles (PWM) | 6 | 6 |
| Sortie analogique (DAC) | 0 | 1 |
| Entrées/sorties numériques | 14 | 14 |
| Courant maximum d’une sortie | 20 mA | 8 mA |
| EEPROM ou Data Flash | 1 Ko | 8 Ko |
| SRAM | 2 Ko | 32 Ko |
| FLASH | 32 Ko | 256 Ko |
| Horloge RTC | non | oui |
Blink, le premier programme
Rien de tel qu’un programme aussi simple pour vĂ©rifier que la communication entre l’IDE et l’Arduino se dĂ©roule parfaitement (vous trouverez plus de dĂ©tails sur le programme Blink dans mon livre).

Le sketch Blink se contente de faire clignoter la LED interne de l’Arduino. Pour l’ouvrir, allez dans Fichier – Exemples – 01.Basics – Blink

Avec l’IDE Arduino 1.8
Avant d’utiliser votre Arduino Uno R4 (Minima ou WiFi), vous devez ajouter ses paramĂštres dans l’IDE. Pour cela, allez dans Outils â Type de carte â Gestionnaire de carte, tapez simplement « r4 » dans le champ de recherche, sĂ©lectionnez Arduino UNO R4 Boards et cliquez sur le bouton Installer.

Allez ensuite dans Outils â Type de Carte â Arduino Renesas UNO R4 Boards et sĂ©lectionner la carte Arduino UNO R4 Minima.

Puis, reliez l’Arduino Ă lâordinateur et sĂ©lectionnez le bon port COM (COM46 dans cet exemple).

Maintenant, vous pouvez lancer le tĂ©lĂ©versement, n’hĂ©sitez pas Ă modifier la valeur de la fonction delay pour faire clignoter plus ou moins vite la LED.

Avec l’IDE Arduino 2.1
Pour ajouter les paramĂštres de l’Arduino Uno R4 Minima ou WiFi, allez dans Outils -Carte – Gestionnaire de carte, (ou cliquez simplement sur lâicĂŽne correspondante dans la barre latĂ©rale), tapez « r4 » dans le champ de recherche, sĂ©lectionnez Arduino UNO R4 Boards et cliquez sur le bouton Installer.

Reliez l’Arduino Ă lâordinateur, cliquez sur Selectionner une carte, le modĂšle d’Arduino (avec son port COM) est automatiquement reconnu, il suffit simplement de le sĂ©lectionner.

Modifiez éventuellement la valeur de la fonction delay (pour faire clignoter plus ou moins vite la LED) et lancer le téléversement.

La résolution des entrées analogiques
Par dĂ©faut, les entrĂ©es analogiques de l’Arduino Uno R4 renvoient une valeur comprise entre 0 et 1023 (dĂ©finie sur 10 bits). Mais il est possible d’augmenter la rĂ©solution pour passer Ă 12 ou 14 bits. Pour tester cette possibilitĂ©, je vous propose de reproduire le branchement suivant (ou d’utiliser un module Grove) pour relier le potentiomĂštre Ă l’entrĂ©e A0 de l’Arduino.

TĂ©lĂ©verser le code suivant dans l’Arduino et ouvrez le moniteur sĂ©rie.
// R4_entree_analogique_10_bits
const int POTENTIOMETRE = A0;
void setup() {
// Déclaration des entrées et des sorties
pinMode(POTENTIOMETRE, INPUT);
// Moniteur série
Serial.begin(9600);
}
void loop() {
// Affichage de la valeur mesurée
Serial.println(analogRead(POTENTIOMETRE));
// Pause d'une seconde
delay(1000);
}
Lorsque vous manipulez le potentiomĂštre la valeur change de 0 et 1023 (10 bits).

Pour augmenter la rĂ©solution, ajoutez simplement l’instruction :
analogReadResolution(12); // Résolution à 12 Bits (0-4096)
ou
analogReadResolution(14); // Résolution à 14 Bits (0-16383)
dans la fonction setup(). Voilà par exemple le code complet pour obtenir une résolution de 14 bits :
// R4_entree_analogique_14_bits
const int POTENTIOMETRE = A0;
void setup() {
// Déclaration des entrées et des sorties
pinMode(POTENTIOMETRE, INPUT);
// Résolution à 14 Bits (0-16383)
analogReadResolution(14);
// Moniteur série
Serial.begin(9600);
}
void loop() {
// Affichage de la valeur mesurée
Serial.println(analogRead(POTENTIOMETRE));
// Pause d'une seconde
delay(1000);
}
Maintenant, la valeur est comprise entre 0 et 16383 (14 bits).

Si vous le souhaitez, vous pouvez aussi essayer avec une résolution de 12 bits (entre 0 et 4096). Et bien sûr, cela fonctionne également avec les autres entrées analogiques.
Convertisseur numérique-analogique (DAC)
Les pseudo sorties analogiques de l’Arduino Uno R3 (PWM) sont en fait des sorties numĂ©riques qui passent trĂšs rapidement de l’Ă©tat haut (5V) Ă l’Ă©tat bas. Ce qui fait qu’en moyenne la tension de sortie varie entre 0 et 5V (je rĂ©sume rapidement, mais ce principe est expliquĂ© beaucoup plus en dĂ©tail dans mon livre).
Les sorties PWM (Pulse Width Modulation) sont identifiĂ©es par ce symbole ~. Elles sont aussi disponibles sur l’Arduino Uno R4, cependant il possĂšde Ă©galement sur le port A0, un vĂ©ritable convertisseur numĂ©rique-analogique (Digital-to-Analog Converter ou DAC) qui gĂ©nĂšre une onde sinusoĂŻdale.
Pour modifier l’intensitĂ© lumineuse d’une LED ou la vitesse d’un moteur, les sorties PWM fonctionnent trĂšs bien, mais lorsqu’il sâagit de jouer de la musique l’utilisation du DAC devrait ĂȘtre une meilleure solution.
Bien sĂ»r, tout cela c’est plutĂŽt thĂ©orique, alors tentons l’expĂ©rience pour voir comment ça se passe dans la rĂ©alitĂ©. Dans sa documentation officielle (disponible Ă l’adresse https://docs.arduino.cc/tutorials/uno-r4-minima/dac ) la fondation Arduino utilise un buzzer, alors nous allons faire de mĂȘme.
Au clair de la lune avec la sortie PWM
Reproduisez ce schéma (bien sûr, vous pouvez utiliser une autre sortie PWM, mais il faudra en tenir compte dans le programme) :

Et tĂ©lĂ©versez le code suivant dans l’Arduino :
// R4_Buzzer_PWM
// Au clair de la lune (début)
const int BUZZER = 6;
const int TEMPS = 200;
const int SOL3 = 392;
const int LA3 = 440;
const int SI3 = 494;
void setup(){
pinMode(BUZZER, OUTPUT);
}
void loop() {
tone(BUZZER, SOL3, TEMPS); // Noire
delay(TEMPS*2); // Durée de la note + Durée du silence
tone(BUZZER, SOL3, TEMPS); // Noire
delay(TEMPS*2);
tone(BUZZER, SOL3, TEMPS); // Noire
delay(TEMPS*2);
tone(BUZZER, LA3, TEMPS); // Noire
delay(TEMPS*2);
tone(BUZZER, SI3, TEMPS*2); // Blanche
delay(TEMPS*4);
tone(BUZZER, LA3, TEMPS*2); // Blanche
delay(TEMPS*4);
tone(BUZZER, SOL3, TEMPS); // Noire
delay(TEMPS*2);
tone(BUZZER, SI3, TEMPS); // Noire
delay(TEMPS*2);
tone(BUZZER, LA3, TEMPS); // Noire
delay(TEMPS*2);
tone(BUZZER, LA3, TEMPS); // Noire
delay(TEMPS*2);
tone(BUZZER, SOL3, TEMPS*4); // Ronde
delay(TEMPS*8);
}
L’Arduino joue le dĂ©but de la chanson « Au clair de la lune ». Ecoutez plusieurs fois cette musique pour mĂ©moriser le son.
Au clair de la lune avec la sortie DAC
Maintenant, branchez le buzzer sur la fameuse sortie DAC (port A0).

Et bien sĂ»r, tĂ©lĂ©versez le programme correspondant dans l’Arduino :
// R4_Buzzer_DAC
// Au clair de la lune (début)
// Appel de la bibliothĂšque
#include "analogWave.h"
// Création de l'objet "wave"
analogWave wave(DAC);
const int TEMPS = 200;
const int SOL3 = 392;
const int LA3 = 440;
const int SI3 = 494;
void setup(){
// démarrage du générateur d'onde sinusoïdale
wave.sine(10);
}
void loop() {
joueNote(SOL3, TEMPS); // Noire
delay(TEMPS); // Durée du silence
joueNote(SOL3, TEMPS); // Noire
delay(TEMPS);
joueNote(SOL3, TEMPS); // Noire
delay(TEMPS);
joueNote(LA3, TEMPS); // Noire
delay(TEMPS);
joueNote(SI3, TEMPS*2); // Blanche
delay(TEMPS*2);
joueNote(LA3, TEMPS*2); // Blanche
delay(TEMPS*2);
joueNote(SOL3, TEMPS); // Noire
delay(TEMPS);
joueNote(SI3, TEMPS); // Noire
delay(TEMPS);
joueNote(LA3, TEMPS); // Noire
delay(TEMPS);
joueNote(LA3, TEMPS); // Noire
delay(TEMPS);
joueNote(SOL3, TEMPS*4); // Ronde
delay(TEMPS*4);
}
// Fonction personnalisée
void joueNote(int note, int duree) {
wave.freq(note);
delay(duree);
wave.stop();
}
Il faut rapprocher l’oreille parce que sans amplificateur, la musique est beaucoup moins forte et avec le son mĂ©diocre du buzzer, il est vraiment difficile de remarquer une quelconque amĂ©lioration de la qualitĂ© sonore. Je vous conseille donc d’utiliser plutĂŽt un haut parleur (avec un systĂšme d’amplification), comme par exemple ce module Grove.

Il serait intĂ©ressant de brancher un oscilloscope pour voir la diffĂ©rence entre les sorties PWM et DAC (mais je n’en possĂšde pas) ou d’utiliser un amplificateur plus puissant. Alors si cela vous amuse, Ă vous de jouer…
Horloge (RTC)
L’Arduino Uno R4 intĂšgre une horloge en temps rĂ©el ou RTC (Real-Time Clock). Il faut simplement indiquer la date et l’heure dans le programme et ensuite, il est capable de dĂ©compter le temps qui passe.
Contrairement Ă la version WiFi , l’Arduino Uno R4 Minima ne possĂšde pas de connecteurs pour brancher une pile, il ne peut donc pas conserver l’heure lorsqu’il est Ă©teint.
Je vous propose de tester la fonction RTC en fabriquant une pendule qui indique la date et l’heure sur un afficheur Grove LCD.

Installez la bibliothĂšque Grove – LCD RGB Backlight et branchez simplement l’afficheur sur l’un des bus I2C de la carte Shield Grove. TĂ©lĂ©versez ensuite le programme suivant dans l’Arduino.
// R4_Horloge_temps_reel
// Appel des bibliothĂšques
#include <Wire.h>
#include "rgb_lcd.h"
#include "RTC.h"
rgb_lcd lcd;
void setup() {
// Configuration de l'afficheur LCD
lcd.begin(16, 2);
lcd.setRGB(25, 25, 10);
// Démarrage de l'horloge
RTC.begin();
// Indiquez la date et l'heure
RTCTime startTime(31, Month::JULY, 2023, 21, 52, 00, DayOfWeek::MONDAY, SaveLight::SAVING_TIME_ACTIVE);
RTC.setTime(startTime);
}
void loop() {
RTCTime currentTime;
// Récupération de la date et de l'heure
RTC.getTime(currentTime);
lcd.clear();
// Affichage de la date (DD/MM//YYYY)
lcd.setCursor(0, 0);
lcd.print(currentTime.getDayOfMonth());
lcd.print("/");
lcd.print(Month2int(currentTime.getMonth()));
lcd.print("/");
lcd.print(currentTime.getYear());
// Affichage de l'heure (HH/MM/SS)
lcd.setCursor(0, 1);
lcd.print(currentTime.getHour());
lcd.print(":");
lcd.print(currentTime.getMinutes());
lcd.print(":");
lcd.print(currentTime.getSeconds());
delay(1000);
}
Si vous ne possĂ©dez pas ce type d’afficheur LCD, vous pouvez adapter le code Ă votre matĂ©riel (ou utiliser simplement le moniteur sĂ©rie avec le programme disponible Ă l’adresse suivante : https://docs.arduino.cc/tutorials/uno-r4-minima/rtc )
Ămulation Clavier/Souris (HID)
Comme l’Arduino Leonardo et quelques autres (Zero, Due, MKR…), l’Arduino Uno R4 peut ĂȘtre reconnu par l’ordinateur comme un pĂ©riphĂ©rique USB. Vous pouvez donc l’utiliser pour fabriquer un clavier, une manette de jeu, une souris, un dispositif de pointage, etc…
Vous trouverez de nombreux exemples d’utilisation dans mon livre sur l’Arduino, mais pour cet article, je vous en propose un nouveau, il s’agit d’un programme qui empĂȘche l’ordinateur de se mettre en veille en bougeant automatiquement la souris toutes les 5 minutes. Vous pouvez Ă©galement l’utiliser pour faire une petite blague Ă un ami, puisqu’Ă intervalle rĂ©gulier, la souris deviendra « folle ».
Par mesure de sĂ©curitĂ© la souris ne bouge pas avant 10 secondes. En cas d’erreur dans le programme, cela permet de reprogrammer quand mĂȘme l’Arduino (sans ĂȘtre gĂȘnĂ© par les mouvement incontrĂŽlĂ©s de la souris).
TĂ©lĂ©versez le code suivant dans l’Arduino et laissez-le branchĂ© Ă l’ordinateur (n’hĂ©sitez pas Ă adapter Ă vos besoins, le dĂ©lai entre les mouvements de la souris).
// R4_Souris
// Appel de la bibliothĂšque "Mouse"
#include <Mouse.h>
void setup() {
Mouse.begin();
// Délai de 10 secondes (par sécurité)
delay(10000);
}
void loop() {
for (int i=0; i <= 1; i++){
int axeX = random(-10, 10);
int axeY = random(-10, 10);
for (int j=0; j <= 10; j++){
Mouse.move(axeX,axeY);
delay(30);
}
delay(200);
}
// Délai entre les mouvements de souris (5 min)
delay(300000);
}
Arduino Uno R4 WiFi
Puisqu’il possĂšde le mĂȘme microcontrĂŽleur (Renesas RA4M1), l’Arduino Uno R4 WiFi peut faire la mĂȘme chose que l’Arduino Uno R4 Minima (rĂ©solution analogiques, DAC, horloge, Ă©mulation de pĂ©riphĂ©rique USB…).
Mais cette fois-ci, il n’y a plus tellement de place disponible Ă la surface de la carte. Le quadrillage a disparu et le nom de la carte est Ă©crit plus petit. Comme son nom l’indique, ce nouvel Arduino intĂšgre une puce WiFi (ESP32-S3-MINI-1-N8) mais Ă©galement une matrice de 12 x 8 = 96 LED et un connecteur QWIIC.

Prix et disponibilités
Actuellement, l’Arduino Uno R4 WiFi ne coĂ»te qu’un euro de plus que l’Arduino Uno R3.

Ces prix ne tiennent pas compte de la TVA et des frais de port (il faut rajoutez une dizaine d’euros).
Matrice de LED
La matrice est constituĂ©e de 12 X 8 LED rouges. Elle fonctionne parfaitement Ă l’intĂ©rieur, mais dehors (en plein jour), les LED sont trĂšs peu visibles.
Afficher un symbole
A vous de Laisser libre cours Ă votre crĂ©ativitĂ© pour inventer les symboles qui montrent qu’il fait chaud, froid, qu’il est heure de manger, de partir Ă l’Ă©cole, d’aller se coucher, etc…
Il existe plusieurs méthodes pour afficher une image mais la plus simple est de la définir pixel par pixel dans un tableau de ce type (1 le pixel est allumé, 0 le pixel est éteint).
byte coeur[8][12] = {
{ 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 },
{ 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 },
{ 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
VoilĂ un petit exemple d’animation (constituĂ©e de 2 images).
// R4_Coeur
// Appel de la bibliothĂšque
#include "Arduino_LED_Matrix.h"
// Création de l'objet "matrix"
ArduinoLEDMatrix matrix;
void setup() {
// Démarrage de la matrice
matrix.begin();
}
// Définition de l'image n°1
byte coeur1[8][12] = {
{ 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 },
{ 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 },
{ 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
// Définition de l'image n°2
byte coeur2[8][12] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0 },
{ 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0 },
{ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 },
{ 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }
};
void loop(){
// Affichage de l'image "coeur1"
matrix.renderBitmap(coeur1, 8, 12);
delay(500);
// Affichage de l'image "coeur2"
matrix.renderBitmap(coeur2, 8, 12);
delay(1000);
}

Afficher du texte
Il est Ă©galement possible d’afficher un texte (fixe ou dĂ©filant), mais vous devez installer la bibliothĂšque correspondante. Pour cela, allez dans Croquis – Importer une bibliothĂšque – GĂ©rer les bibliothĂšques, (avec l’IDE Arduino 2.1, cliquez simplement sur lâicĂŽne correspondante dans la barre latĂ©rale). Tapez « ArduinoGraphics » dans la barre de recherche, sĂ©lectionnez la bibliothĂšque et cliquez sur Installer

VoilĂ un petit exemple de texte qui dĂ©file avec une variable. Ici c’est un simple compteur, mais je compte sur vous pour trouver d’autres utilisations (date, heure, tempĂ©rature, taux de CO2, adresse IP, etc…)
// R4_Texte_defilant
// Appel des bibliothĂšques
#include "ArduinoGraphics.h"
#include "Arduino_LED_Matrix.h"
// Déclaration des variables
int compteur = 0;
String texteMatrice;
// Création de l'objet "matrix"
ArduinoLEDMatrix matrix;
void setup() {
// Démarrage de la matrice
matrix.begin();
// Taille des caractĂšres
matrix.textFont(Font_5x7);
// Vitesse de défilement
matrix.textScrollSpeed(70);
// Emplacement de départ (et couleur par défaut)
matrix.beginText(0, 1, 0xFFFFFF);
}
void loop() {
// Texte Ă afficher
texteMatrice = " Arduiblog " + String(compteur) + " ";
matrix.println(texteMatrice);
// Sens de défilement
matrix.endText(SCROLL_LEFT);
// Pause d'une seconde
delay(1000);
compteur = compteur + 1;
}
Il est Ă©galement possible d’utiliser des caractĂšres un peu plus petit :
matrix.textFont(Font_4x6);
De faire dĂ©filer le texte dans l’autre sens :
matrix.endText(SCROLL_RIGHT);
Ou d’afficher un texte court sans dĂ©filement :
matrix.endText();
Si cela vous intéresse, vous trouverez un tuto plus détaillé à cette adresse : https://docs.arduino.cc/tutorials/uno-r4-wifi/led-matrix
Wi-Fi
Le microcontrĂŽleur ESP32-S3 qui assure la connexion WiFi de l’Arduino est bien plus performant que le Renesas RA4M1 (le microcontrĂŽleur principal). Il pourrait donc avantageusement le remplacer, c’est le cas, par exemple de l’Arduino Nano ESP32. Mais cela poserait certainement des problĂšmes de compatibilitĂ© puisque les ESP32 fonctionnent sous 3,3 V (au lieu de 5 V).
L’Arduino Uno R4 WiFi est capable de se connecter Ă un rĂ©seau existant ou de crĂ©er un point d’accĂšs. Pour tester cela, je vous propose de fabriquer un thermomĂštre connectĂ© qui crĂ©e une page Web pour afficher la tempĂ©rature.
J’ai choisi le capteur DHT22 au format Grove, parce qu’il est prĂ©cis et trĂšs facile Ă utiliser. En adaptant lĂ©gĂšrement le code, vous pourrez le remplacer par le modĂšle DHT11 (qui est un peu moins performant, mais coĂ»te Ă©galement moins cher).
Pour installer la bibliothĂšque DHT, allez dans Croquis – Importer une bibliothĂšque – GĂ©rer les bibliothĂšques, (avec l’IDE Arduino 2.1, cliquez simplement sur lâicĂŽne correspondante dans la barre latĂ©rale). Tapez « dht grove » dans la barre de recherche, sĂ©lectionnez Grove Temperature And Humidity Sensor et cliquez sur Installer
Acceptez aussi d’installer les dĂ©pendances si l’IDE Arduino vous le propose.

Reliez ensuite le capteur DHT22 (ou DHT11) Ă l’Arduino. Attention, il existe d’autres types de modules, il est donc possible que la bibliothĂšque ou l’ordre des connecteurs soient diffĂ©rents (par exemple, la bibliothĂšque Adafruit ne fonctionne pas correctement avec le capteur Grove). Fiez-vous plutĂŽt Ă la documentation ou aux inscriptions et retenez simplement qu’il faut reliez le port de donnĂ©es au port D12 et l’alimentation du module aux ports GND et 5V de l’Arduino.

Puis, vous pouvez tĂ©lĂ©verser le code suivant dans l’Arduino :
// R4_Temperature_WiFi
// Appel des bibliothĂšques
#include "WiFiS3.h"
#include <DHT.h>
#include "Arduino_LED_Matrix.h"
// Constances et variables
const int CAPTEUR_TEMP = 12;
int t, h;
// Sélectionnez votre capteur
//DHT dht(CAPTEUR_TEMP, DHT11);
DHT dht(CAPTEUR_TEMP, DHT22);
// ParamÚtres du réseau Wifi
const char NOM_DU_RESEAU[] = "ARDUIBLOG";
const char MOT_DE_PASSE[] = "Azerty123";
// Création de l'objet "matrix"
ArduinoLEDMatrix matrix;
// Clé réseau (nécessaire pour WEP)
int keyIndex = 0;
int status = WL_IDLE_STATUS;
// Création de l'objet serveur (port 80)
WiFiServer server(80);
// Définition de l'image wifi
byte wifi[8][12] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 },
{ 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1 },
{ 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }
};
// Matrice vide
byte vide[8][12] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
void setup() {
// Démarrage de la matrice
matrix.begin();
Serial.begin(9600);
delay(500);
// Capteur température DHT
dht.begin();
// Vérifier le module Wi-Fi
if (WiFi.status() == WL_NO_MODULE) {
Serial.println("La communication avec le module WiFi a échoué !");
// Le programme se bloque (boucle infinie)
while (true);
}
// Connexion au réseau
while (status != WL_CONNECTED) {
Serial.print("Tentative de connexion au réseau : ");
Serial.print(NOM_DU_RESEAU);
// Connectez-vous au réseau WPA/WPA2.
// (Modifiez la ligne si vous utilisez un réseau ouvert ou WEP)
status = WiFi.begin(NOM_DU_RESEAU, MOT_DE_PASSE);
// wait 10 seconds for connection:
for (int i=0; i<= 9; i++){
clignotementWiFi();
Serial.print(" .");
}
}
// Démarrage du serveur web (port 80)
server.begin();
// Afficher l'adresse de la page :
IPAddress ip = WiFi.localIP();
Serial.println(" Connexion réussie");
Serial.print("Ouvrez votre navigateur Ă l'adresse http://");
Serial.println(ip);
}
void loop() {
// Attends les clients entrants
WiFiClient client = server.available();
if (client) {
// Une requĂȘte HTTP se termine par une ligne vide
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// Si la requĂȘte HTTP est terminĂ©e, envoi de la rĂ©ponse
if (c == '\n' && currentLineIsBlank) {
// Code HTML de la page
t = round(dht.readTemperature());
h = round(dht.readHumidity());
String codeHTML = "<!DOCTYPE html>";
codeHTML += "<head>";
codeHTML += "<meta http-equiv='refresh' content='30'>";
codeHTML += "<title>Arduino Uno R4 WiFi</title>";
codeHTML += "</head>";
codeHTML += "<body style='background-color: rgb(4, 139, 154);'>";
codeHTML += "<div style='text-align: center;'>";
codeHTML += "<h1 style='font-style: italic; text-decoration: underline;'>";
codeHTML += "Serveur Arduino Uno R4 WiFi</h1><font size='+3'>";
codeHTML += "Température : ";
codeHTML += t;
codeHTML += "°<br>Humidité : ";
codeHTML += h;
codeHTML += " %</span></font></div></body></html>";
client.println(codeHTML);
break;
}
if (c == '\n') {
currentLineIsBlank = true;
} else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
// Laisser au navigateur le temps de recevoir les données
delay(1);
clignotementWiFi();
// Arret de la connexion
client.stop();
}
}
void clignotementWiFi() {
// Clignotement de l'image "wifi"
delay(500);
matrix.renderBitmap(vide, 8, 12);
delay(500);
matrix.renderBitmap(wifi, 8, 12);
}
Au dĂ©marrage de l’Arduino, le symbole WiFi clignote sur la matrice de LED et l’adresse IP est indiquĂ©e dans le moniteur sĂ©rie. Si vous avez ratĂ© le moment oĂč l’adresse est communiquĂ©e, il suffit simplement de redĂ©marrer la carte.

Pour connaĂźtre la tempĂ©rature et le taux d’humiditĂ© (mesurĂ©s par le capteur DHT), ouvrez votre navigateur et rendez-vous l’adresse indiquĂ©e (192.168.1.39 dans cet exemple).

En utilisant une batterie, vous pourrez facilement dĂ©placer l’Arduino dans toute la maison et mĂȘme connaĂźtre la tempĂ©rature extĂ©rieure en le plaçant sur le rebord d’une fenĂȘtre.

Ce programme est inspiré des exemples de connexion WiFi fournis à cette adresse : https://docs.arduino.cc/tutorials/uno-r4-wifi/wifi-examples
Port VRTC
Avec l’Arduino Uno R4 WiFi il est possible de conserver la date et l’heure de l’horloge en temps rĂ©el (mĂȘme s’il est Ă©teint). Il suffit de branchez une pile ou une batterie de 1.6 Ă 3,3 V aux ports VRTC et GND.
Mais, ce n’est pas possible avec la version Minima.

Connecteur QWIIC
L’Arduino Uno R4 WiFi possĂšde aussi un connecteur QWIIC. Il permet d’accĂ©der au bus I2C (seulement en 3,3 V) pour connecter des modules compatibles (mais il existe aussi des adaptateurs pour pouvoir utiliser les capteurs Grove).
Au dĂ©but, j’Ă©tais plutĂŽt intriguĂ© parce que mon Arduino Uno R4 WiFi possĂ©dait une excroissance qui empĂȘche l’utilisation du connecteur QWIIC (contrairement Ă la coque de l’Arduino Uno R4 Minima). Mais finalement c’Ă©tait seulement une bavure qui n’a pas Ă©tĂ© enlevĂ©e…

Vous trouverez plus de dĂ©tails Ă l’adresse suivante : https://docs.arduino.cc/tutorials/uno-r4-wifi/qwiic
Conclusion
Cette nouvelle carte, propose de nombreuses amĂ©liorations Ă un prix plus bas ou Ă©quivalent Ă l’Arduino Uno R3. Apparemment, la fondation Arduino ne souhaite pas seulement proposer une alternative mais bien Ă©liminer le modĂšle qui avait pourtant fait son succĂšs.
Alors faut-il suivre le mouvement et jeter son vieil Arduino ?
A mon avis, il n’y a pas d’urgence, l’Arduino Uno R3 rĂ©ponds toujours Ă la plupart des usages pĂ©dagogiques et s’il vous donne encore satisfaction, il n’y a pas forcement de raisons d’en changer.
Par contre, si vous dĂ©butez et que vous achetez votre 1er Arduino, je vous conseillerais plutĂŽt de choisir l’Arduino Uno R4. Et pour quelques euros de plus, la version WiFi, qui me semble beaucoup plus intĂ©ressante (Ă moins d’ĂȘtre absolument certain de ne jamais utiliser la matrice ou le WiFi).
Le modĂšle Minima conviendrait peut ĂȘtre plus au milieu scolaire. Il est en effet inutile d’acheter des dizaines de cartes avec des fonctions qui ne serviront jamais.
Mais n’enterrons pas trop vite l’Arduino Uno R3. Il est possible que certains utilisateurs refusent l’Ă©volution proposĂ©e par la fondation. Et de toute façon, avec plusieurs dizaines de millions de cartes en circulation, il y aura forcement une certaine inertie. Les versions R3 et R4 cohabiteront donc encore pendant de nombreuses annĂ©es.
Mon livre
Dans cet article, je suis passĂ© trĂšs rapidement sur certains points. Mais si vous n’avez pas tout compris ou si vous voulez en savoir plus sur l’Arduino, sachez que la 3Ăšme Ă©dition de mon livre Arduino – Apprivoisez l’Ă©lectronique et le codage est parue en juillet 2023.
Je me suis d’ailleurs amusĂ© Ă faire une petite vidĂ©o d’unboxing Ă l’occasion du 14 juillet.
Ce livre est disponible sur le site des Editions ENI et bien sûr dans toutes les bonnes boutiques.

Vous y trouverez plus de 600 pages d’explications illustrĂ©es par des exemples concrets (un peu comme dans cet article).

Evidement, je regrette de ne pas avoir pu parler de l’Arduino Uno R4 dans mon livre (qui est paru presque en mĂȘme temps que la carte). C’est une des raisons qui m’ont poussĂ©es Ă Ă©crire cet article. Cependant, rassurez-vous, la majeur partie des exemples prĂ©sentĂ©s dans le livre pour l’Arduino Uno R3 fonctionnent toujours avec l’Arduino Uno R4.
Toutefois, par mesure de prĂ©caution, augmentez avec l’Arduino Uno R4 la valeur des rĂ©sistances utilisĂ©es avec les LED (470 Ă 1000 Ω au lieu de 220).
Je vous souhaite beaucoup de plaisir et d’amusement Ă la dĂ©couverte de l’Arduino.
Sources et liens utiles
- Arduino Uno R4 Minima : https://docs.arduino.cc/hardware/uno-r4-minima
- Aide-mémoire : https://docs.arduino.cc/tutorials/uno-r4-minima/cheat-sheet
- Arduino Uno R4 WiFi : https://docs.arduino.cc/hardware/uno-r4-wifi
- Aide-mémoire : https://docs.arduino.cc/tutorials/uno-r4-wifi/cheat-sheet
- Mon livre sur l’Arduino : https://arduiblog.com/presentation-de-mon-livre/
Bonjour. J’ai achetĂ© votre livre et j’ai Ă©galement tĂ©lĂ©chargĂ© le programme sur ce site censĂ© connecter l’Arduino Uno R4 WiFi en WiFi Ă ma box. Malheureusement la connexion ne se fait pas et je boucle sur l’attente de connexion. Pourtant j’ai repris intĂ©gralement votre programme. J’ai Ă©videmment juste changĂ© les identifiant et mot de passe pour ceux de ma box.
Pourriez-vous m’aider ?
Bien cordialement,
Jacques
JâaimeJâaime
Bonjour Jacques,
Ăa veut dire que l’Arduino n’arrive pas Ă se connecter Ă la box.
Difficile de dire pourquoi, il faudrait voir s’il y a une sĂ©curitĂ© qu’il faut dĂ©sactiver pour connecter un nouveau pĂ©riphĂ©rique en wifi.
Je pense que l’Arduino n’apparait pas dans le tableau de bord de la box.
Vous pouvez aussi essayer de connecter l’Arduino en WiFi Ă un smartphone (en faisant un partage de connexion) Si ça fonctionne vous saurez que le problĂšme vient de la Box.
Bon courage
JC
JâaimeJâaime
Merci beaucoup pour cette réponse rapide. Je vais tester avec le Smartphone.
Bien cordialement Jacques
JâaimeJâaime
Bonjour,
Bravo pour ce bel article.
J’achetĂ© rĂ©cemment un R4 wifi pour le connecter en bluetooth avec une application sous AppInventor.
Cela fait des semaines que je cherche un exemple simple pour échanger du texte dans les 2 sens.
MĂȘme le support Arduino ne sait pas me rĂ©pondre.
Auriez vous des liens Ă me proposer ?
Merci pour votre aide
JâaimeJâaime
Bonjour Christophe,
Je n’ai jamais utilisĂ© AppInventor mais peut ĂȘtre qu’un lecteur du blog pourra t’apporter une rĂ©ponse…
JâaimeJâaime
merci pour cet excellent docuent pédagogique.
je viens d’apprendre qu’il y a un arduino uno r4 avec wifi. Je souhaite savoir si vous comptez rĂ©aliser un complement Ă votre livre initial, pour documenter les fonctions wifi et serveur de cette nouvelle carte.
bien cordialement. Jf giambertone
JâaimeJâaime
Bonjour,
Merci pour ce retour.
Pour l’Arduino R4 WiFi, j’en parle dans la 2Ăšme partie de cet article. Et bien sĂ»r il figurera en bonne place dans la prochaine Ă©dition de mon livre.
Mais elle n’est pas prĂ©vue pour tout de suite…
JâaimeJâaime