Arduino : Qu'est-ce que c'est ?
Définition
Arduino est une plateforme de prototypage électronique open source basée sur des microcontrôleurs (ATmega, SAMD, ESP32), offrant une programmation simple en C/C++ et une connectivité directe avec des capteurs et actuateurs. Complémentaire au Raspberry Pi, Arduino excelle dans l'acquisition de données temps réel et les applications basse consommation.Qu'est-ce qu'Arduino ?
Arduino est une plateforme de développement électronique open source comprenant des cartes matérielles basées sur des microcontrôleurs et un environnement de développement intégré (IDE) simplifié. Créé en 2005 en Italie par Massimo Banzi et son équipe pour rendre l'électronique accessible aux non-ingénieurs, Arduino est devenu l'outil de référence mondial pour le prototypage électronique et les projets IoT embarqués. La plateforme englobe une famille de cartes (Arduino Uno, Nano, Mega, MKR) ainsi qu'un écosystème de shields (cartes d'extension) et de bibliothèques logicielles.
Contrairement au Raspberry Pi qui est un micro-ordinateur exécutant un système d'exploitation complet, Arduino est un microcontrôleur qui exécute un seul programme (sketch) en boucle continue, sans OS. Cette architecture minimaliste offre des avantages spécifiques : démarrage instantané (pas de boot OS), temps de réponse déterministe (pas de multitâche préemptif), consommation électrique extrêmement faible (microampères en veille), et interaction directe avec le matériel sans couche d'abstraction.
La programmation Arduino utilise un dialecte simplifié du C/C++ avec des fonctions prédéfinies (digitalRead(), analogWrite(), Serial.println()) qui masquent la complexité des registres du microcontrôleur. Cette accessibilité, combinée avec un prix d'entrée très bas (à partir de 3 euros pour un clone Arduino Nano) et une communauté de millions d'utilisateurs, fait d'Arduino le point d'entrée idéal pour l'électronique embarquée et les capteurs connectés.
Pourquoi Arduino est important
Arduino a transformé le paysage de l'électronique embarquée et de l'IoT en rendant le développement matériel accessible à tous les développeurs, pas seulement aux ingénieurs en électronique.
- Temps réel déterministe : sans système d'exploitation, Arduino réagit aux événements capteurs en microsecondes, essentiel pour les applications critiques de mesure, de contrôle industriel et de sécurité.
- Ultra basse consommation : un Arduino en mode deep sleep consomme quelques microampères, permettant des déploiements sur batterie pendant des mois, voire des années, sans maintenance.
- Coût minimal : une carte Arduino Nano avec capteur de température coûte moins de 10 euros, rendant les déploiements à grande échelle (centaines de points de mesure) économiquement viables.
- Prototypage rapide : de l'idée au prototype fonctionnel en quelques heures grâce à l'IDE simplifié, les bibliothèques prêtes à l'emploi et les shields enfichables.
- Complémentarité Raspberry Pi : Arduino gère l'acquisition capteurs temps réel et la basse consommation, tandis que le Raspberry Pi gère le traitement complexe, le réseau et la logique métier. Les deux communiquent via série, I2C ou SPI.
Comment ça fonctionne
Un programme Arduino (sketch) suit une structure simple : la fonction setup() s'exécute une fois au démarrage pour initialiser les broches et les périphériques, puis la fonction loop() s'exécute en boucle infinie pour lire les capteurs, traiter les données et contrôler les actuateurs. Le code est compilé par l'IDE Arduino en instructions machine pour le microcontrôleur cible, puis téléversé via USB.
Les broches d'entrée/sortie de l'Arduino se divisent en broches digitales (HIGH/LOW, 5V ou 3,3V selon le modèle) pour les capteurs tout-ou-rien (bouton, détecteur de mouvement, relais) et broches analogiques (convertisseur ADC 10 bits, 0-1023) pour les capteurs à signal continu (photorésistance, capteur de distance, potentiomètre). Les protocoles de communication série (UART), I2C et SPI permettent de connecter des capteurs numériques complexes (BME280 pour température/humidité/pression, GPS, accéléromètre) et des modules de communication (Wi-Fi ESP8266, LoRa SX1276, Bluetooth).
Dans une architecture IoT complète, Arduino agit comme noeud de collecte. Il lit les capteurs et transmet les données vers un Raspberry Pi (via série ou I2C) ou directement vers un broker MQTT (avec un shield Wi-Fi ou un module ESP8266/ESP32). Le Raspberry Pi ou le serveur Django reçoit ces données, les stocke et les visualise. Pour les projets nécessitant à la fois Wi-Fi et microcontrôleur, les cartes Arduino MKR WiFi 1010 ou les modules ESP32 (compatibles Arduino IDE) offrent une solution intégrée.
Exemple concret
Chez Kern-IT, nous utilisons Arduino dans les cas où la basse consommation et le temps réel sont prioritaires. Pour un projet de monitoring environnemental dans le secteur du tourisme, nous avons déployé des noeuds Arduino Nano connectés à des capteurs de qualité de l'air (PM2.5, CO2, température, humidité) dans des zones naturelles protégées. Chaque noeud, alimenté par un panneau solaire miniature et une batterie LiPo, consomme moins de 5 mA en fonctionnement et passe en deep sleep entre les mesures (toutes les 15 minutes).
Les données sont transmises via un module LoRa connecté en SPI vers une passerelle Raspberry Pi située à plusieurs kilomètres. Le Raspberry Pi publie les données sur MQTT vers notre backend Django, et les résultats sont cartographiés sur KERN MAP pour offrir une vue géospatiale de la qualité de l'air sur le territoire. L'autonomie du noeud Arduino atteint 6 mois grâce à l'optimisation de la consommation, là où un Raspberry Pi aurait nécessité une alimentation permanente.
Mise en oeuvre
- Choisir la carte : Arduino Nano pour les projets compacts basse consommation, Arduino Uno pour le prototypage, ESP32 (compatible Arduino IDE) pour les projets nécessitant Wi-Fi/Bluetooth intégrés.
- Installer l'IDE Arduino : téléchargez l'IDE depuis arduino.cc, installez les board packages nécessaires et les bibliothèques pour vos capteurs (via le Library Manager).
- Câbler les capteurs : connectez les capteurs aux broches appropriées (analogiques pour les signaux continus, I2C pour les capteurs numériques). Respectez les niveaux de tension et ajoutez des résistances de pull-up si nécessaire.
- Développer le sketch : programmez la lecture des capteurs dans
loop(), le formatage des données en JSON et la transmission via série ou module de communication. - Connecter au Raspberry Pi : reliez l'Arduino au Raspberry Pi via USB série ou I2C. Le Raspberry Pi exécute un script Python qui lit les données et les publie sur MQTT.
- Optimiser la consommation : utilisez les modes de veille du microcontrôleur (sleep_mode, watchdog timer) pour maximiser l'autonomie dans les déploiements sur batterie.
Technologies et outils associés
- Arduino IDE / PlatformIO : environnements de développement pour programmer les cartes Arduino et les microcontrôleurs compatibles.
- ESP32 / ESP8266 : microcontrôleurs Wi-Fi/Bluetooth compatibles Arduino IDE, idéaux pour les projets IoT nécessitant une connectivité sans fil.
- Raspberry Pi : utilisé comme passerelle entre les noeuds Arduino et le backend cloud, gérant le réseau et le traitement complexe.
- MQTT (PubSubClient) : bibliothèque Arduino pour publier et recevoir des messages MQTT directement depuis un microcontrôleur avec module réseau.
- Adafruit / SparkFun : fabricants de shields et de breakout boards avec bibliothèques Arduino de qualité pour des centaines de capteurs.
- Fritzing : outil de conception de circuits et de documentation de câblage, compatible avec les composants Arduino.
Conclusion
Arduino reste la plateforme de référence pour le prototypage électronique et les noeuds IoT basse consommation. Sa simplicité de programmation, son coût minimal et sa complémentarité avec le Raspberry Pi en font un outil indispensable dans la boîte à outils IoT. Chez Kern-IT, nous combinons Arduino et Raspberry Pi pour créer des solutions de capteurs connectés optimales : Arduino pour l'acquisition temps réel et l'autonomie sur batterie, Raspberry Pi pour le traitement local et la connectivité réseau, le tout relié à notre backend Django et visualisé sur KERN MAP pour une intelligence opérationnelle complète.
Pour les projets IoT nécessitant Wi-Fi, préférez l'ESP32 (programmable avec l'IDE Arduino) au combo Arduino + shield Wi-Fi. L'ESP32 intègre Wi-Fi, Bluetooth, plus de mémoire et un double coeur, le tout pour moins de 5 euros en module. C'est le meilleur rapport fonctionnalités/prix de l'écosystème Arduino.