Utiliser des cartes Breakout d'Arduino pour évaluer rapidement des capteurs et des périphériques

Par Clive "Max" Maxfield

Avec la contribution de Rédacteurs nord-américains de DigiKey

L'essor de l'Internet des objets (IoT) a inspiré de nombreuses start-up cherchant à connecter le prochain objet incontournable. Cependant, beaucoup de ces start-up ont des équipes de conception réduites, alors qu'elles doivent tout de même faire face à des délais de commercialisation toujours plus serrés. Par conséquent, les concepteurs individuels doivent s'intéresser à plusieurs domaines et tâches d'ingénierie, notamment aux réseaux analogiques, numériques, radiofréquences (RF) et sans fil/filaires. Naturellement, ils cherchent constamment à accélérer l'évaluation des circuits intégrés, des capteurs et des périphériques, et à réduire le coût de cette évaluation.

Ils ont la possibilité d'utiliser les kits d'évaluation et de développement proposés par les fournisseurs de circuits intégrés pour mettre au point leurs solutions. Si ces kits offrent une bonne prise en charge de leur solution, cette approche est tout à fait adaptée. Toutefois, les concepteurs peuvent également se pencher sur l'écosystème Arduino. Cet écosystème, qui était au départ un terrain de jeu pour les amateurs, est devenu un écosystème accompli de conception et de support.

Cet article présente la manière dont les concepteurs peuvent utiliser Arduino pour commencer à évaluer des circuits intégrés, des périphériques et des capteurs dès les premières étapes de leur cycle de conception grâce à du matériel open-source sous forme de cartes Breakout (BOB) de capteur et de périphérique, en combinaison avec des outils logiciels open-source sous forme de bibliothèques et de programmes d'exemple. Des horloges temps réel (RTC) de Maxim Integrated et des cartes Breakout d'Adafruit Industries sont utilisées ici comme exemples.

L'essor de l'IoT

L'un des premiers exemples concrets associés à l'IoT remonte au début des années 80 lorsqu'une machine Coca-Cola de l'Université Carnegie-Mellon a été raccordée pour permettre aux programmeurs d'utiliser Internet afin de vérifier que les boissons étaient disponibles et fraîches avant de se rendre sur place. L'IoT en tant que concept n'a été nommé officiellement qu'à partir de 1999.

La date exacte de l'apparition de l'IoT reste un sujet de débat. La meilleure définition de l'IoT tel que nous le connaissons est peut-être la suivante : le moment où Internet s'est vu connecté à plus de « choses » ou d'« objets » que de personnes. Selon ce principe, la naissance de l'IoT se situerait entre 2008 et 2009, avec un rapport objets/personnes passant de 0,08 en 2003 à 1,84 en 2010.

L'essor d'Arduino

Le développement de l'IoT coïncide avec le Maker Movement du début des années 2000. Le premier déploiement international d'Arduino a eu lieu en 2005, année de lancement du magazine Make et année précédant la première exposition Maker Faire.

Depuis ses débuts, Arduino développe des écosystèmes matériels et logiciels open-source sophistiqués. Il était nécessaire de pouvoir utiliser les écosystèmes bien établis d'Arduino dans les environnements des concepteurs professionnels pour simplifier leur travail et accélérer la mise sur le marché.

En fait, la solution est venue naturellement. L'immense écosystème qui s'est développé autour d'Arduino a généré un effet secondaire non anticipé : l'utilisation d'Arduino par les ingénieurs professionnels pour évaluer des capteurs et des périphériques avant de les déployer dans leurs propres conceptions. Il existe actuellement de nombreux exemples, comme les horloges temps réel.

Exemple d'évaluation de périphérique avec une horloge temps réel

Quasiment tous les microcontrôleurs 32 bits modernes sont fournis avec une horloge temps réel intégrée. C'est également le cas de nombreux microcontrôleurs 16 bits et même 8 bits. Même si cela réduit l'espace carte disponible, la nomenclature et le coût du produit final, l'utilisation d'une horloge temps réel interne présente quelques inconvénients.

Exemple d'inconvénient : le microcontrôleur doit activer et désactiver son horloge temps réel interne en passant par un logiciel. Cela signifie que si un événement se produit, comme un problème d'alimentation, et que le microcontrôleur se verrouille ou que son code est modifié, l'horloge temps réel peut être désactivée par inadvertance. À l'inverse, une horloge temps réel externe est considérée comme une solution plus robuste, car elle dispose d'un rail d'alimentation et d'un quartz distincts. Elle est également moins sujette à une désactivation accidentelle par le code exécuté sur le microcontrôleur. De plus, l'horloge temps réel externe est généralement implémentée grâce à un plus grand nœud de processus de fabrication de puce que le microcontrôleur, et sa plus grande empreinte silicium la rend moins vulnérable aux changements de bit, c'est-à-dire aux perturbations par une particule isolée (SEU) provoquées par des rayonnements (comme les rayons cosmiques).

Exemples de circuits intégrés à horloge temps réel : les circuits DS1307 et DS3231 de Maxim Integrated

Les circuits DS1307 et DS3231 de Maxim Integrated sont deux circuits intégrés à horloge temps réel très populaires. Ces deux dispositifs enregistrent des informations relatives aux secondes, minutes, heures, jours, dates, mois et années. Ils ajustent automatiquement les mois de moins de 31 jours, prennent en compte les années bissextiles et prennent en charge les modes 12 et 24 heures. De plus, ces deux dispositifs communiquent avec le microcontrôleur hôte à l'aide d'un bus I2C série, et incluent un circuit de détection qui détecte les pannes d'alimentation et active automatiquement l'alimentation de secours (généralement une batterie), afin de maintenir les opérations de suivi temporel (Figure 1).

Schéma de l'horloge temps réel externe DS1307 de Maxim IntegratedFigure 1 : Le dispositif DS1307 est un bon exemple d'horloge temps réel externe. Cette horloge présente l'avantage d'intégrer un quartz et un rail d'alimentation locaux qui lui sont propres, et de ne pas être sujette aux incidents liés au code. Elle communique avec le microcontrôleur hôte via une interface I2C. (Source de l'image : Maxim Integrated)

Bien évidemment, il est important de vérifier les fiches techniques pour connaître les différences entre ces dispositifs. Par exemple, le DS1307 nécessite une alimentation de 5 V ainsi qu'un quartz externe. En comparaison, le DS3231 plus précis peut fonctionner avec une alimentation de 2,3 V à 5,5 V et est doté d'un oscillateur à quartz compensé en température (TCXO) et d'un quartz intégrés.

Parfois, les différences entre ces composants ne sont pas évidentes à première vue. Par exemple, ces deux dispositifs fournissent une sortie en signaux carrés (SQW) qui, si elle est activée via un logiciel, nécessite une résistance d'excursion haute externe. Cependant, dans le cas du DS1307, la sortie en signaux carrés peut être programmée pour générer un signal de 1 hertz (Hz), 4,096 kilohertz (kHz), 8,192 kHz ou 32,768 kHz. En comparaison, dans le cas du DS3231, cette sortie peut être programmée pour générer un signal de 1 Hz, 1,024 kHz, 4,096 kHz ou 8,192 kHz.

Dans le cas du DS1307, la précision de l'horloge dépend de la précision du quartz et de la précision de la correspondance entre la charge capacitive du circuit de l'oscillateur et la charge capacitive pour laquelle le quartz a été ajusté. De son côté, le DS3231 compensé en température offre une précision plus nette de ±2 minutes par an pour un fonctionnement entre -40°C et +85°C (Figure 2).

Schéma de l'oscillateur à quartz compensé en température DS3231 de Maxim IntegratedFigure 2 : Le DS3231 est un oscillateur à quartz compensé en température avec une précision de ±2 minutes par an pour une plage de températures de -40°C à +85°C. (Source de l'image : Maxim Integrated)

Donc, en supposant que rien dans la fiche technique n'entraîne l'exclusion pure et simple de l'un de ces deux dispositifs, comment procéderaient les concepteurs pour les évaluer dans le monde réel ? Une solution consisterait à concevoir et à fabriquer des cartes Breakout personnalisées, et à développer entièrement le code permettant de les commander. Une autre solution plus rapide et plus rentable consisterait à utiliser les cartes Breakout et le code prêts à l'emploi développés dans le cadre des écosystèmes matériels et logiciels d'Arduino.

Exemples de cartes Breakout à horloge temps réel : ChronoDot et DS1307 d'Adafruit

La carte Breakout à horloge temps réel 3296 DS1307 (Figure 3) et la carte Breakout V2.1 à horloge temps réel ultraprécise ChronoDot 255 (Figure 4) d'Adafruit sont populaires pour une utilisation avec les circuits intégrés DS1307 et DS3231.

Image de la carte Breakout à horloge temps réel DS1307 d'AdafruitFigure 3 : Carte Breakout à horloge temps réel DS1307 d'Adafruit. (Source de l'image : Adafruit Industries)

Image de la carte Breakout v2.1 à horloge temps réel ultraprécise ChronoDotFigure 4 : Carte Breakout v2.1 à horloge temps réel ultraprécise ChronoDot. (Source de l'image : Adafruit Industries)

En les associant à une carte de développement de microcontrôleur appropriée, comme la carte Arduino Uno R3, et aux bibliothèques open-source et au code d'exemple pouvant être téléchargés sur Internet, les concepteurs professionnels de systèmes embarqués et de dispositifs IoT pourront immédiatement se mettre au travail.

Une fois que les concepteurs ont terminé leurs évaluations, ils peuvent utiliser des portions appropriées des conceptions matérielles open-source pour les cartes Breakout et les intégrer directement à leurs propres conceptions. De même, ils peuvent se servir de bibliothèques open-source et du code qu'ils ont développé à partir des exemples open-source afin de les réutiliser pour leurs produits.

Conseils et astuces concernant le matériel pour les développeurs logiciels

Comme cela a été précédemment indiqué, les horloges temps réel DS1307 et DS3231 communiquent avec le microcontrôleur hôte via un bus I2C série. L'un des « pièges » que les développeurs logiciels doivent éviter, c'est que les deux signaux formant ce bus (appelés SCL et SDA) nécessitent des résistances d'excursion haute.

Ni la carte Breakout DS1307 ni la carte Breakout DS3231 (ChronoDot) d'Adafruit n'incluent ces résistances, même si la carte ChronoDot inclut des plots annotés R1 et R2 destinés à l'ajout de ces résistances.

Ces résistances d'excursion haute ne sont pas incluses, car plusieurs dispositifs (circuits intégrés ou cartes Breakout) peuvent être reliés à un bus I2C. Le bus I2C utilise une adresse 7 bits, où 27 = 128. Cependant, l'adresse 0000000 est une adresse d'appel générale utilisée pour communiquer avec tous les dispositifs reliés au bus. En théorie, le bus peut alors prendre en charge 127 dispositifs discrets. En pratique, le nombre réel de dispositifs pouvant être pris en charge est imposé par la capacité du bus, notamment la capacité des pistes et des charges, qui est limitée à 400 picofarads (pF) au total.

Il existe une formule que les concepteurs matériels utilisent pour calculer la valeur équivalente de plusieurs résistances connectées en parallèle. Pour illustrer ces propos, prenons un exemple simple. Si deux dispositifs sont équipés de résistances d'excursion haute de même valeur, la résistance qui en résulte correspond à la moitié de cette valeur. Si quatre dispositifs sont équipés de résistances d'excursion haute de même valeur, la résistance qui en résulte correspond à un quart de cette valeur.

Si le bus est déjà équipé d'un dispositif I2C avec des résistances d'excursion haute, alors aucune autre action n'est nécessaire. S'il n'y a aucune résistance d'excursion haute et que le concepteur est absolument certain qu'il n'ajoutera pas de carte Breakout avec des résistances d'excursion haute intégrées, alors il vaut mieux utiliser une paire de résistances d'excursion haute de 4,7 kilo-ohms (kΩ). Cependant, s'il est possible qu'une carte Breakout avec des résistances d'excursion haute intégrées soit ajoutée plus tard, alors il faut ajouter immédiatement une paire de résistances de 10 kΩ, car elles fonctionneront aussi bien avant qu'après l'ajout de l'autre carte Breakout au bus.

Conseils et astuces concernant les logiciels pour les développeurs matériels

La bibliothèque « wire » est une bibliothèque de communications qui facilite les communications à deux fils avec des dispositifs I2C. Dans le cas d'Arduino, cette bibliothèque est fournie avec l'environnement de développement intégré (IDE), et le concepteur n'a plus qu'à ajouter l'instruction #include <Wire.h> au début du programme.

La véritable astuce consiste à trouver une bibliothèque adéquate pour l'horloge temps réel. La bibliothèque RTClib d'Adafruit, téléchargeable depuis Github, est parfaitement adaptée. Il suffit ensuite d'ajouter l'instruction #include "RTClib.h" au début du programme.

Plus tard, généralement lorsque toutes les valeurs constantes ont été définies, il convient d'instancier (créer une instance de) l'horloge temps réel à l'aide de l'instruction RTC_ DS1307 RTC; ou RTC_DS3231 RTC; selon la carte Breakout utilisée.

Plus tard encore, lorsqu'ils définissent l'ensemble de leur programme (dans le cadre de la fonction setup() avec Arduino), les concepteurs doivent ajouter les instructions Wire.begin(); et RTC.begin(); pour initialiser les communications I2C et le sous-système de l'horloge temps réel.

Les exemples fournis sur la page Github mentionnée précédemment permettront au concepteur d'accéder à la date et à l'heure pour ajuster ces valeurs, afin de pouvoir être rapidement opérationnel. L'accès à la sortie en signaux carrés est moins évident. Par défaut, cette sortie est inactive pour économiser de l'énergie. Pour pouvoir utiliser cette broche, il est possible de l'activer et de la définir sur 1 Hz, par exemple, puis d'utiliser ce signal pour déclencher une interruption au niveau du microcontrôleur hôte.

Un développeur logiciel n'aura aucune difficulté à reconnaître tous ces éléments dans le code de la bibliothèque. Cependant, parcourir ce code peut être plus problématique pour un ingénieur de conception matérielle. Voici donc un récapitulatif :

Dans le cas du dispositif DS1307, il suffit d'ajouter une ou plusieurs instructions du type RTC.Ds1307SqwPinMode(<option>); où les options prises en charge sont ON, OFF, SquareWave1HZ, SquareWave4kHz, SquareWave8kHz et SquareWave32kHz.

De même, dans le cas du dispositif DS3231, il faut ajouter une ou plusieurs instructions du type RTC.Ds3231SqwPinMode(<option>); où les options prises en charge sont ON, OFF, DS3231_SquareWave1Hz, DS3231_SquareWave1kHz, DS3231_SquareWave4kHz et DS3231_SquareWave8kHz.

Conclusion

Avec des équipes réduites et des délais de mise sur le marché plus serrés, les concepteurs doivent s'intéresser à plusieurs domaines et tâches d'ingénierie, et doivent constamment être à l'affût de moyens permettant d'accélérer l'évaluation des circuits intégrés, des capteurs et des périphériques, et de réduire le coût de cette évaluation. Comme indiqué ici, ils peuvent utiliser Arduino avec du matériel open-source comme des cartes Breakout pour capteurs et périphériques, en combinaison avec des logiciels open-source qui se présentent sous forme de bibliothèques et de programmes d'exemple.

 
DigiKey logo

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

À propos de l'auteur

Image of Max Maxfield

Clive "Max" Maxfield

Clive "Max" Maxfield a obtenu sa licence en ingénierie de contrôle en 1980 à l'université de Sheffield Hallam, en Angleterre, et a commencé sa carrière en tant que concepteur de processeurs (CPU) pour ordinateurs centraux. Au fil des ans, Max a tout conçu, de puces en silicium aux cartes à circuit imprimé, en passant par les amplificateurs d'ondes cérébrales et les moteurs de prédiction steampunk (ne posez pas de questions !). Il a également été à la pointe de l'automatisation de la conception électronique (EDA) pendant plus de 30 ans.

Max est l'auteur et/ou le co-auteur d'un certain nombre d'ouvrages, dont Designus Maximus Unleashed (interdit en Alabama), Bebop to the Boolean Boogie (un guide non conventionnel de l'électronique), EDA: Where Electronics Begins, FPGAs: Instant Access, et How Computers Do Math. Consultez son blog « Max's Cool Beans ».

À propos de l'éditeur

Rédacteurs nord-américains de DigiKey