lundi 7 novembre 2016

Utilisation de la carte µLogic16 en mode entrée/sortie

Il y a quelques semaines, je vous parlais de la carte µLogic16, conçue en France par BS Electronics. À cette occasion, nous avions exploré le mode logique, qui a la particularité de permettre le contrôle de la carte au moyen d'un schéma de circuit logique (logiciel Logicontrol).

Aujourd'hui, nous allons explorer une autre façon de piloter la carte µLogic16:  il s'agit du mode entrée/sortie, qui permet de contrôler les sorties et de connaître l'état des entrées au moyen de commandes envoyées à partir d'un ordinateur.

Branchement de la carte à l'ordinateur

Il faut d'abord brancher la carte µLogic16 à un port USB de l'ordinateur.  S'il s'agit de votre première utilisation de la carte sur cet ordinateur, les pilotes seront automatiquement installés.



Choix d'un logiciel pour la communication

Pour communiquer avec la carte au moyen d'un ordinateur, n'importe quel logiciel permettant la communication série fera l'affaire: logiControl, putty, TeraTerm, le moniteur série de l'IDE Arduino, etc.

LogiControl

Un avantage d'utiliser logiControl, c'est qu'il a été spécialement conçu pour la carte µLogic16.  Par conséquent, vous n'avez pratiquement aucun réglage à effectuer.

Vous cliquez d'abord sur le bouton "Connect" afin de créer un lien avec la carte.

Vous écrivez ensuite vos commandes dans le champ "Cmd" situé dans le coin inférieur droit de la fenêtre, et vous cliquez sur le bouton "Send" pour les envoyer.

Putty

Si vous préférez utiliser Putty, vous devez choisir "Serial" dans le dialogue de démarrage, en plus de choisir le port série correspondant à la carte (c'était COM13 dans mon cas, mais j'ai dû aller fouiner dans le gestionnaire de périphériques pour le savoir) et une vitesse de 115200 bauds.


Cliquez ensuite  sur "Serial" dans la liste de gauche.  Les informations qui apparaissent dans cette fenêtre doivent être Data Bits:  8, Stop Bits:  1, Parity:  None et Flow control:  None.




Moniteur série Arduino

Si vous êtes déjà familier avec la programmation d'Arduino, nul besoin d'installer un nouveau logiciel:  le moniteur série de l'IDE Arduino fera parfaitement l'affaire.

Après avoir démarré le logiciel, il faut sélectionner le port série qui correspond à la carte µLogic16.


On affiche ensuite le moniteur série, puis on règle la vitesse de communication à 115200 bauds, et on sélectionne l'option "Retour de chariot".



Envoi de commandes à la carte

Dans un premier temps, nous sélectionnons le mode "entrée/sortie" en envoyant la commande "MODE IO"
(La carte répond "OK")




Pour vérifier rapidement que tout fonctionne correctement, allumons la LED "user" intégrée à la carte:  il s'agit d'envoyer le message "LEDON" (si tout va bien, la carte répond "OK" et la LED s'allume).  On peut éteindre la LED à nouveau en envoyant la commande "LEDOFF".



Réglons les 8 pins du port A pour qu'elles soient des entrées.  La commande à envoyer est "PORTA IN".   (La carte devrait encore répondre "OK").

Pour lire l'état de l'entrée 0 du port A, on écrit "READ PA0".  La carte répond "1" si l'entrée est à 5 V, et "0" si l'entrée est à 0 V.  Nous pouvons évidemment lire de la même façon l'état des entrées PA1, PA2, etc.




Réglons maintenant les 8 pins du port B pour qu'elles soient des sorties, en écrivant la commande "PORTB OUT".   (La carte répond "OK")

Pour régler la sortie 0 du port B à 5 volts, on écrit "SET PB0".   Pour la régler à 0 volt, on écrit "CLR PB0".



Pour la liste complète des commandes, veuillez vous référer au manuel d'instruction de la carte µLogic16.

Yves Pelletier   (TwitterFacebook)

lundi 31 octobre 2016

Utilisation du "Data Logging Shield" (Arduino)


Je me souviens d'une époque (pas si lointaine) où je n'achetais pratiquement jamais de shield pour Arduino, parce que les prix me semblaient inutilement élevés.  Ainsi, lors de la réalisation d'un montage destiné à compiler des mesures de températures et de luminosité, j'avais utilisé, en plus des capteurs nécessaires,  un module RTC (horloge temps réel), un lecteur de carte SD, un convertisseur de niveau logique (requis par le lecteur de carte SD), etc.

J'avais alors fait remarquer qu'un shield tout fait était vendu par Adafruit, mais au prix de 14 USD, ça me semblait un luxe inutile.

Les temps ont bien changé.  De nos jours, vous pouvez facilement trouver sur eBay des clones du Data Logging Shield conçu par Adafruit pour aussi peu que 3 USD (frais de port inclus).

Résultat:  de nos jours, même pour un radin comme moi, il n'y a aucune raison de se priver d'un data logging shield prêt à l'utilisation.

Le shield comporte un lecteur de carte SD, une horloge temps réel et un convertisseur de niveau logique, en plus de deux LEDs que vous pouvez, au besoin, lier à la pin Arduino de votre choix.  Il ne reste donc plus qu'à brancher les capteurs.

L'horloge

Pour que l'horloge temps réel DS1307 fonctionne correctement, il faut insérer une pile CR1220 (qui n'était pas fournie avec le shield que j'ai acheté).  Cette horloge utilise le protocole i2c.

Pour utiliser l'horloge, vous devez installer la bibliothèque RTClib de Jeetlabs qui n'est généralement pas incluse avec l'IDE Arduino.  Le sketch d'exemple "ds1307" fourni avec la bibliothèque vous permettra de vérifier que votre horloge fonctionne correctement (si elle n'affiche pas l'heure et la date correcte, exécutez l'exemple "ds1307" après avoir décommenté la ligne "RTC.adjust(DateTime(__DATE__, __TIME__));"





Le lecteur de cartes SD

Le lecteur de carte SD utilise quant à lui le protocole SPI.  La bibliothèque SD est déjà installée par défaut avec l'IDE Arduino.  Pour vous assurer que le lecteur fonctionne correctement, vous pouvez exécuter le sketch "CardInfo" fourni avec la bibliothèque SD...


...mais attention:  dans ce sketch, vous devez modifier la constante "chipSelect" et lui assigner la valeur "10".


Les LEDs indicatrices

Le shield comporte également deux LEDs (L1 et L2) qui peuvent être connectées à n'importe quelle sortie de l'Arduino.  Grâce à deux petits bouts de fil conducteur, j'ai relié la LED "L1" à la sortie 5 de l'Arduino, et la LED "L2" à la sortie 4 (un fer à souder est requis ici).

Ces LEDs peuvent être utilisées pour vous permettre de savoir si votre data logger fonctionne correctement lorsqu'il n'est pas connecté à un ordinateur (une LED peut s'allumer ou clignoter pendant que les mesures sont prises, une autre peut indiquer la fin de la prise de mesure, etc.).

Un exemple de sketch

Pour cet exemple de sketch, j'ai supposé la présence de deux capteurs analogiques branchés respectivement aux entrées A0 et A1 du shield.  Il ne vous restera qu'à adapter le code pour qu'il gère les capteurs qui vous conviennent, peu importe qu'ils soient analogiques ou numériques.

Des mesures sont prises toutes les 10 secondes:  il est facile de modifier cette fréquence, stockée dans la constante "DELAI_MESURES".

Chaque fois qu'une mesure est prise, elle est affichée dans le moniteur série, si ce dernier est actif (ce qui sera surtout utile pour vérifier le fonctionnement correct du dispositif).  De plus (et surtout), elle est enregistrée dans un fichier "csv" ("comma separated values") qui pourra facilement être ouvert et traité avec un tableur comme, par exemple,  Excel.  Notez que j'utilise la convention qui permettra aux fichiers d'être correctement interprétée par la version française d'Excel:  les données sont séparées par des points virgules plutôt que par des virgules.

La LED "L1" clignote pour indiquer que le data logger est en fonctionnement (si vous oubliez d'insérer une carte SD lors du démarrage du sketch, la LED ne s'allumera pas).

La LED "L2" s'allume temporairement chaque fois que le data logger effectue des mesures et les enregistre sur la carte SD.



Voici ce qu'affiche le moniteur série pendant la prise de mesures:


Et voici le fichier "RAPPOR00.CSV" qui a été enregistré sur la carte SD, après ouverture dans Excel:


Les données peuvent ensuite être présentées sous forme de graphiques.



Yves Pelletier   (TwitterFacebook)

dimanche 23 octobre 2016

Une première exploration de la carte µLogic16


µLogic16 est une carte d'interface mise au point en France par BS Electronics. Particularité intéressante: elle est accompagnée d'un logiciel (LogiControl) qui permet  de la piloter au moyens de représentations schématiques de circuits logiques.

Son concepteur m'en ayant gentiment expédié un exemplaire, je partage aujourd'hui mes premières expérimentations avec cette carte.

La carte µLogic16

Basée sur le microcontrôleur STM32F33, la carte mesure 4 cm X 5 cm (un peu plus que la moitié d'une carte Arduino).  Elle comporte deux ports qui peuvent être configurés en entrée ou en sortie (8 entrées/sorties par port).   Les connecteurs sont de robustes borniers à vis.

Lorsque vous branchez la carte à un ordinateur pour la première fois (par son connecteur mini usb), les pilotes nécessaires sont automatiquement installés.



Le logiciel Logicontrol

On peut télécharger le logiciel sur la page de BS Electronics.  Il s'agit ensuite d'exécuter l'application "LogiControl.exe" (Windows seulement).

Une fois dans l'application, un clic sur le bouton "Connect" crée un lien entre l'application Logicontrol et la carte µLogic 16.



Premier projet:  faire clignoter une LED

Puisque la carte comporte une LED verte qui peut être contrôlée par l'utilisateur, notre premier essai consistera à faire clignoter cette LED.

Nous allons donc créer un nouveau fichier (Menu File / New)...


On choisit une destination et un nom pour le fichier, on règle "Device" à "µLogic16", puis on clique sur le bouton "Create".


Ici, les choses deviennent intéressantes:  les entrées/sorties des deux ports apparaissent à l'écran, ainsi que la LED intégrée à la carte.  De plus, de nouveaux menus nous permettent d'ajouter des composants sur le schéma.


Dans le menu "Special", on trouve un article intitulé "Clock":


...ce menu permet de faire apparaître une horloge réglée par défaut à une fréquence de 1 Hz (cliquez là où vous voulez placer l'horloge).
En cliquant sur les deux terminaux (19 et 18), on peut relier l'horloge à la LED:

Ce schéma devrait être suffisant pour faire clignoter la LED à une fréquence de 1 Hz (si cette fréquence ne vous convient pas, un clic droit sur le schéma de l'horloge vous permettra de la modifier).

Il nous reste à transmettre l'information à la carte µLogic 16.  Pour ce faire, vous cliquez d'abord sur le bouton "Import", et vous choisissez "From Schematic":


Puis, vous cliquez sur le bouton "Program Device".

Mission accomplie:  la LED verte intégrée sur la carte se met à clignoter.

Deuxième projet:  des boutons, des LEDs et des portes logiques

Dans un deuxième temps, j'ai voulu ajouter un peu d'interactivité tout en testant les entrées et sorties de la carte.  Le but, cette fois, est de contrôler deux LEDs au moyen d'un même bouton poussoir:  une première LED qui est habituellement éteinte mais qui s'allume lorsqu'on appuie sur le bouton, et une deuxième LED qui est habituellement allumée mais qui s'éteint lorsqu'on appuie sur le bouton.

Le circuit réel construit sur breadboard consiste en un bouton poussoir qui permettra de contrôler l'entrée 0 du port A de la carte, et de deux LEDs qui seront contrôlées respectivement par les sorties 0 et 3 du port B.



Construisons maintenant le circuit virtuel, dans Logicontrol, qui déterminera le comportement de la carte µLogic16.

Après avoir créé un nouveau fichier (menu File / New)...



...je fais un clic droit sur la représentation du port B, afin de le configurer en mode "sortie" (output):


Un second clic droit sur le port B me permet de le déplacer face au port A (après avoir cliqué sur le bouton "move":


Pour que la sortie B0 prenne systématiquement le même état logique que l'entrée A0, je clique sur le connecteur de A0, et ensuite sur le connecteur de B0:



Dans le menu "Gate", je sélectionne une porte NON (Not):


... que je déplace entre A3 et B3.


Je clique entre la sortie de la porte NON et la sortie B3, afin de les relier entre elles.  Je clique également sur l'entrée de la porte NON et le câble qui relie déjà A0 et B0:


De cette façon, la sortie B3 de la carte sera systématiquement dans l'état logique contraire à celui de l'entrée A0.

Il ne reste plus qu'à essayer notre circuit:  on clique sur le bouton "Import", puis sur "From Schematic", et finalement sur "Program Device".

Résultat, tel que prévu:  une des LEDs installées sur la breadboard s'allume quand on appuie sur le bouton et s'éteint lorsqu'on relâche le bouton.  L'autre LED est allumée quand le bouton est relâchée, et éteinte quand on appuie sur le bouton.

Troisième projet:  un compteur binaire 8 bits


Dans cette troisième expérience exploratoire, j'ai utilisé le compteur binaire 8 bits offert dans le logiciel Logicontrol.


Cette fois, le circuit réel sur breadboard est constitué de 8 LEDs, chacune d'entre elle étant contrôlée par une des sorties du port B de la carte µLogic16.




Pour la construction du circuit virtuel dans le logiciel Logicontrol, il faut choisir un compteur (Counter) dans le menu "Component".


On ajoute ensuite une horloge ("Clock", dans le menu "Special") qu'on relie à l'entrée "CK" du compteur, et on relie chaque sortie du compteur à une pin du port B (qui a préalablement été configuré en sortie):


Comme c'était le cas dans les projets précédents,  on clique sur le bouton "Import", puis sur "From Schematic", et finalement sur "Program Device".

Sur la breaboard, les 8 LEDs s'allument en alternance de façon à présenter les nombres binaires de 0 jusqu'à 255.

Pour pous d'informations:  BS Electronics


Yves Pelletier   (TwitterFacebook)