lundi 19 janvier 2015

HANTEK36B, piles et développement durable : épisode II (suite)

Et pour commencer ce petit compte rendu sur les tests de piles, équipé du multimètre USB HANTEK36B, un :

...concernant le logiciel de contrôle du multimètre!

A l'utilisation, celui-ci s'avère peu pratique et 'plante' joyeusement de façon systématique au bout d'un 'certain temps' lors d'actions sur les boutons de configuration. Tout se passe sur la seule fenêtre de l'application :

Unique fenêtre de l'application.

Après un certain temps de fonctionnement, temps qui peut être très rapide, voire instantané, tout appui sur un bouton de changement de type de mesure ou de mode, automatique ou manuel, plante la communication entre le logiciel et le multimètre. J'ai utilisé ce système sur un windows 7 pro en version 32 bits. Ce problème nécessite non seulement le redémarrage du logiciel, mais aussi celui du multimètre. Dans ce cas, l'appareil doit être débranché de son port USB, puis rebranché. Il est aussi arrivé que le système cesse de fonctionner en pleine période de mesure, sans qu'aucune intervention n'ai été effectuée.

Et pourtant, toutes les précautions nécessaires ont été prises. Le portable Dell D430 utilisé, était configuré pour ne jamais se mettre en veille, et le multimètre est connecté sur un hub USB à alimentation externe pour palier toute faiblesse éventuelle des ports du portable, suite à la constatation des premiers problèmes : rien n'y fait, le système n'est pas fiable.

Le système de test.

Au 19 janvier 2014, la version de l'application windows disponible sur le site de Hantek est la même que celle fournie avec le CDROM d'installation. Donc, inutile d'attendre des améliorations de ce côté.

De plus, l'ergonomie de l'application est discutable. Le plus gênant :

  • Impossibilité de configurer l'affichage du graphique, ne serait-ce qu'en ce qui concerne les échelles de temps et de valeurs. Mesurer une variation de 1,5V se visualise sur la courbe en une ligne pratiquement droite entre 1,5V et 1,2V puis une chute à 0V (je rappelle que la mesure concerne des piles de 1,5V). Donc, il est inutile de vouloir se servir de cette indication pour en faire 'vite fait' une copie écran à glisser dans un rapport.
  • Tout changement de périodicité efface sans vergogne toute la liste des mesures présentes dans la partie droite de la fenêtre. Ce qui signifie une perte irrémédiable des données. Du fait du manque de fiabilité de l'application, c'est systématiquement ce bouton qui est utilisé en dernier pour passer la périodicité de mesure à 10s (0.3s par défaut). Si, au retour sur la machine après 24h de mesures, le 'focus' est toujours sur ce bouton, le moindre appui sur n'importe quelle touche du clavier effacera TOUTES les donnée. Ceci n'est pas un fonctionnement acceptable.
  • Enfin, le format du fichier de type 'txt' résultant de la sauvegarde des mesures n'est absolument pas pratique puisque d'un format totalement propriétaire, ingérable par quelque tableur que ce soit. Bien évidemment sur cet aspect aussi, aucune configuration du logiciel n'est possible. J'ai donc du écrire un petit programme en 'C' pour me fabriquer un fichier au format adéquate. Pour simplifier la chose, le logiciel décide de lui-même les changements de gamme à l'affichage. Sous 600mV, celui-ci passe de la gamme 6V à la gamme 600mV, ce qui demande évidemment un traitement approprié sur les chaînes de caractère pour standardiser la valeur.

En un mot donc, le matériel semble fonctionner correctement, le logiciel, lui est une vraie 'piece of shit'!!!

Information : inutile d'espérer adapter un autre logiciel à ce multimètre, la connexion USB n'est absolument pas vue comme un port série. Et aucune API n'est fournie avec l'ensemble pour en permettre une utilisation personnelle. Cela peut se comprendre en ce sens que la partie communication du multimètre est gérée par un processeur de chez ST. J'imagine qu'Hantek à choisi cette solution pour pouvoir y implémenter un protocole de commande particulier en mesure de configurer le multimètre (les relais internes). cette configuration se faisant 'directement sur l'appareil' dans le cas d'un multimètre standard à sortie série!

Cependant, une fois considéré le comportement parfois 'hiératique' du système, et donc étant en mesure d'éviter toutes les situations susceptibles de provoquer un dysfonctionnement du logiciel, il est possible de créer un graphique sous un tableur quelconque, à l'aide du fichier de mesures élaboré à partir de celui fourni par l'application Hantek :

Mesures de 3 piles AA 1,5V standard.
Trois piles provenant du même blister ont été mesurées. En 'Y', on retrouve la mesure des tensions, et en 'X', le temps de décharge.

La périodicité de mesure étant de 10s, on peut en déduire que la valeur 6000  correspond à 16,67h de mesures. D'autre part, chaque pile débitait sur une résistance de 9,7Ohms, soit un courant de 154mA en début de décharge et 110mA en moyenne sur la partie 'linéaire' de la droite de décharge. Il est donc possible d'en déduire que ces piles ont une capacité comprise entre 1,6 et 1,8Ah. C'est une première indication. Deuxième information, la tension limite en dessous de laquelle il n'est plus envisageable d'exploiter l'énergie d'une pile se situe aux environs de 0,8V. Enfin, l'utilisation optimale de l'énergie d'une pile par un appareil devrait se situer à minima jusqu'à 1V, au  mieux 0,9V.

[21 janvier 2015] Mesures de 6 piles AA 1,5V standard
 Conclusion provisoire : le système de mesure fonctionne mais ne doit pas être envisagé pour une utilisation sérieuse. Les premières mesures de piles fournissent une indication sur leur comportement. Informations qu'il est facile de corroborer avec d'autres résultats de ce type disponibles sur le Net. Enfin se pose une question intéressante à savoir la façon dont les appareils exploitent le potentiel énergétique des piles. Il s'agit la aussi d'un aspect pour le moins très obscur des caractéristiques des appareils disponibles dans le commerce. Quelque chose me dit qu'il y a, la aussi, de quoi expérimenter!

21 janvier 2015 : La méthodologie des mesures est maintenant bien calée. L'image ci-dessus donne le résultat sur 6 piles du même type. Les résultats sont cohérentes. Une des piles semble s'être déchargée un peu moins rapidement, mais sous une intensité très faible. Cela n'apporte donc rien à sa capacité exploitable.

Accessoirement : plutôt que d'utiliser ce que je considère être une usine à gaz, c'est à dire les outils microsoft, pour créer l'application en mode 'dos' permettant de convertir le fichier texte natif en fichier compréhensible facilement par un tableur, j'ai utilisé la suite lcc-win32. Cette suite est très légère, possède un éditeur intégré, et est de prise en main immédiate. Un débogueur est disponible, je ne l'ai pas essayé. Pour écrire un programme en 'C' standard 'à la va vite', c'est l'idéal!

lcc-win32 en action...

A suivre...

mardi 13 janvier 2015

HANTEK36B, piles et développement durable : episode II

Dans un précédent billet, j'ai eu l'occasion de relater quelques problèmes récurrents au sujet des piles dont notamment le manque chronique d'informations sur les différents produits proposés à la vente. J'ai déjà eu l'occasion de 'dénoncer' le manque de fiabilité de plus en plus évident des boîtier des piles 1,5V type AA, devenant même une 'maladie' chronique pour certains fabricants.
Source : piles-et-plus.fr

S'agissant du développement durable, il paraît évident que la légèreté avec laquelle sont traités ces éléments toxiques depuis leur fabrication jusqu'à leur destruction pose question! La première d'entre elles concerne les caractéristiques intrinsèques des éléments. Outre le fait qu'il est préférable aujourd'hui d'utiliser les piles 1,5V pour des appareils à consommation lente mais continue, il serait quand même intéressant de connaître la capacité à laquelle on peut s'attendre lors d'un achat dont le montant peut varier 0,25€ à plus d'un Euro l'élément, ne serait-ce que pour les utiliser à bon escient.
Site ou existent des tests de piles : http://www.batteryshowdown.com

Après quelques tests effectués en mode enregistreur du multimètre Fluke 289 dont je dispose, j'en suis arrivé à la conclusion que pour des questions de temps de décharge et de quantité d'informations enregistrées, j'allais faire débiter les piles que je soumettrai à mes tests sous un courant de 150mA.
J'ai en effet pu constater qu'une pile 'ordinaire' de 1,5V de type AA mettait environ 120 heures pour se décharger complètement sous un débit de 20mA. Cela ne donne pas un potentiel de 120x0.2 soit 2,4A parce que sur sa fin de vie, la pile n'est de toute façon plus en mesure de débiter ce courant sous 1,5V. Mais cela donne une première idée. Sous 150mA, un cycle complet de décharge, et donc de test d'une pile AA devrait être effectué en quelques heures. Sous un courant de 200mA, le site http://www.batteryshowdown.com/ donne environ 3h pour un voltage final de 0,8V.

Publicité gratuite pour Fluke ;-)

L'appareil de mesure Fluke 289 fonctionne grâce à 6 piles AA de 1,5V. Inutile de préciser qu'à la fin de la période de mesure, soit 6 jours en fonctionnement continu, ces 6 piles étaient elles aussi en fin de vie. D'autre part, ne possédant pas le cordon de transmission vers un PC, j'ai donc décidé d'acquérir un matériel un peu plus adapté pour réaliser mes futurs tests :

Publicité gratuite pour Hantek ;-)
Il s'agit d'un multimètre connecté à un ordinateur. L'avantage est que le logiciel qui l'accompagne permet un enregistrement à intervalle régulier de la mesure relevée ainsi que l'enregistrement sur disque de ces valeurs pour traitement ultérieur. Il se connecte par le port USB sur un PC fonctionnant sous Windows. Bien évidemment, ce multimètre n'est pas censé proposer les même précisions qu'un multimètre professionnel. Il n'en a pas les caractéristiques ni le prix.

Afin de ne pas m'aventurer en terrain inconnu, je n'ai pu résister à l'envie de démonter ce multimètre pour en évaluer le mode de construction ainsi que la qualité de fabrication. Une seule carte électronique se trouve à l'intérieur du boîtier. C'est une double face avec des composants de chaque côté. La qualité de réalisation, bien que pas exceptionnelle, n'en demeure pas moins de bonne facture. Le côté face :


Ce multimètre se décline en plusieurs versions. J'ai acquis la 'presque' plus simple puisque seule la fonctionnalité True RMS est présente.

Voici ce que l'on trouve sur cette face :
  • 1 - L'étage de commutation des entrées suivant le mode opératoire de l'appareil, ainsi qu'une partie de l'étage d'entrée analogique.
  • 2 - Le processeur de mesure. Il s'agit d'un circuit multimètre désigné FS9922_DMM4 de chez ic-fortune. C'est un composant multimètre 6000 points équipé d'un port série. 
  • 3 - Alimentation isolée à destination de l'étage multimètre. La partie mesure se trouve donc isolée électriquement du reste de l'appareil, et donc de la liaison USB.
  • 4 - Alimentation de la partie USB assurée par un circuit de la famille TPS de chez Texas Instruments.
  • 5 - Emplacement pour module Bluetooth en option.
  • 6 - Emplacement pour batterie avec à la droite du cadre, l'emplacement des composants de gestion de la charge de cette batterie. En option.  

Et ce que l'on trouve sur l'autre face :


  • 1 - Traitement analogique des entrées (conditionnement des signaux, du processeur de mesure etc...).
  • 2 - Registres à décalage de type 74HC595, utilisés pour la configuration du processeur de mesure.
  • 3 - Optocoupleurs utilisés pour l'isolation électrique.
  • 4 - Interface USB réalisée à partir d'un processeur ST32 de STmicroelectronics.
  • 5 - Interface 'TRUE RMS' réalisée par un composant de la famille Analog Device.
Rien de bien compliqué donc, même si d'autres informations pourraient être connues à l'aide du schéma électrique de l'appareil. Je n'ai pas cherché à en savoir plus, cette petite introspection me permet de constater une réalisation bien pensée et une implantation rationnelle des sous-ensembles. Pour environ 90€ sur eBay en décembre 2014, cet appareil devrait bien remplir son rôle si toutefois une 'relative précision' est au rendez-vous :

Test réalisé tard dans la nuit!
Avec un signal continu de 5V, j'obtiens une erreur d'environ 1,4% en valeur absolu par rapport au Fluke de référence. Ce qui est un bon résultat sachant que j'ai mesuré une tension effective de 4,003V avec un multimètre de table à 6 digits 1/2 'Keithley 2015' :

A noter que si la précision des valeurs absolues des tensions mesurées est intéressante, cela n'est pas le plus important puisqu'il s'agira de comparer des mesures entre-elles. L'important est donc que l'imprécision soit constante dans le temps. Une vérification périodique de ce point sera donc à ne pas oublier.

Côté logiciel : Il n'y a eu aucune difficulté à faire reconnaître l'appareil sur le bus USB d'un PC portable fonctionnant sous Windows 7 PRO. Le CDROM fourni comporte les drivers nécessaires ainsi que le logiciel de capture. Le format d'enregistrement des données ne semble cependant pas très pratique puisqu'il ne s'agit que d'un fichier texte sans délimiteur. L'usage permettra de déterminer si un traitement spécifique s'avère nécessaire sur ce fichier de mesures.

Ne reste plus maintenant qu'à procéder aux premières essais...

vendredi 9 janvier 2015

A quick review of the Micromite MK II

After a little more than six months, Geoff Graham have released the version of the Micromite that I have talked about in my previous post, by the new Micromite MK II. This new version add many new features "such as the ability to insert compiled C or assembler subroutines into a BASIC program", cool! But one of the more interesting news is that this MK II version is supposed to run nearly 50% faster than the original MK I. Let's go and see...

First, we have to program a new PIC32MX170F256 chip of Microchip Technology. With 256K of flash and 64K of RAM, it offer now 80KB of non volatile flash memory for the program and 52KB of RAM for the variables : very confortable.

As usual, for the programming we need a little piece of hardware and the right software. A contactless breadboard is sufficient to do the job and, in my case, the Pickit3 programmer. We also have to respect the different connections like that is described in the document provided by Geoff Graham :

I uses the 28 DIP package.
In my case,  here is what it looks like :


The new version (V4.6) of the Micromite Mk II Firmware is available here.
The most simplest way to program a PIC32 with the Pickit3 is to use the MPLAB® Integrated Programming Environment (IPE) available here. This software is very friendly and do the job without risks :

The PIC32 is programmed!
Ok. Now let us try the first connection :

Easy!
And the best for the end of this little review, a quick test of performances!
To do this test, I wrote this 'terrific' program :

A = 0;
DO WHILE A < 100000
A = A + 1
LOOP

Edited with the MK II integrated editor.

It is what I used before with the MK I version to test the performance compared to my Tandy PC-2. The previous results was 23 secondes for the Micromite MK I and... 3 000 secondes for my PC-2!

And now, the same test gives us 11 secondes compared to the 23 secondes previously obtained with the MK I version. Very good, but this test is not 'really' representative of the reality because I just used a very common ressources of this Basic. Others complex instructions may be not as efficient like this. But as said Geoff Graham, the "40% faster" of the previous version must be obtained without doubt.

Conclusion : Micromite II is an even more powerfull system than the MK I version : fantastic!!!

mercredi 7 janvier 2015

Soutien à Jipihorn!

La pratique de l'électronique que ce soit en amateur, amateur éclairé ou professionnel, impose le butinage quotidien du web à la recherche de ressources techniques, d'avis ou de témoignages, dans le but d'améliorer ses connaissances techniques certes, mais aussi de se tenir informé des tendances, bonnes, et surtout potentiellement problématiques.

De fait, cette pratique peut s'avérer très consommatrice en temps, tellement les ressources du web sur le sujet semblent infinies. Et nous voilà, seuls, embarqués sur une mer de ressources, ne sachant vers ou aller, n'ayant aucune connaissances des dangers potentiels : rochers, hauts fonds, courants contraires etc etc...

Les cartes? Difficiles à établir dans cet environnement où précisément, et contrairement aux océans, les rochers, hauts fonds et courants contraires, non content d'être par eux-même de redoutables écueils, semblent apparaître et disparaître de façon plus ou moins aléatoire.

Ne reste plus alors que les amers. Ces 'points remarquables' disséminés sur les côtes, tels les phares nous indiquant la passe à prendre, ou celle à contourner. Il en va de même pour la navigation 'hauturière' sur le web. Petit à petit, des sites se sont créés, balisant nos routes incertaines.

Le site de Jipi en est un, parmi les autres, mais de ceux que l'on regarde de temps en temps à l'affût du 'truc' qui démontre ou qui dénonce. Telle la diversité des phares peuplant les côtes de notre planète, il se visite et se découvre comme l'on visiterait un monument placé là pour de très bonnes raisons. Au fil des mois, il est devenu familier dans notre environnement :

http://jipihorn.wordpress.com/
Oui Jipi, Lattice, ça n'est pas le pied. J'ai laissé tomber ce fondeur depuis longtemps. Et pourtant, c'est avec lui que je me suis initié à la logique programmable. Oui encore, cela 'patouille' peut-être en ce moment chez Microchip, mais il faut espérer que cela passera, ce n'est pas le pire des fabricants de processeurs. Oui encore, tout cela ne serait qu'incidents insignifiants si les déboires causés par ces systèmes ne prenaient pas 100% d'un temps résumé à quelques heures quotidiennes, le reste du temps de 'vie' devant être passé à la gagner de façon plus ou moins intelligente : je connais aussi !

Mais il y a tout le reste. Pour moi qui ai passé un bon nombre d'années à travailler dans l'audio numérique, il est plaisant de suivre quelqu'un parlant le même langage, on se sent indéniablement moins seul, au milieu de l'océan. Et que dire de la démystification des absurdités 'audiophiles', alors que j'hésitais à passer tous mes beaux signaux numériques devenus analogiques dans de vulgaires NE5532!!! Et Devialet, que oui cela va jeter l'opprobe sur les 'artisans' du son, quel dommage! Mais en même temps, Devialet s'intéresse à une clientèle bien particulière, laissons-la lui! La 'richesse' financière n'est pas synonyme d'intelligence, bien au contraire...

2015 vient juste de commencer, le débat se situe ailleurs, en Chine, qui aujourd'hui devient le moteur de l'innovation, laissant l'Europe dans la pétole pour un bon bout de temps. Cela créera des opportunités, même pour 'certains' Européens, à condition de bien revoir nos paradigmes : passer d'un environnement technologique bien balisé par notre société pantouflarde et nos sociétés héritières, au foisonnement du 'Far Est'.

Du travail et des opportunités en perspective Jipi! Alors comme le dit si bien notre Georges national : bonne route, et bon vent!

mercredi 24 décembre 2014

ATmega168pb, le 8 bits à la fête! Aperçu du kit Atmel ATmega168 X PLAINED.

And now for something completely different…

Après avoir posté quelques billets sur différents micro-contrôleurs, notamment ceux de la famille Z8F de Zilog, les circuits 32 bits de chez Microchip dans une application bien pensée que sont les produits Maximite et Micromite, ou encore les circuits compatibles ARM0 de NXP, aujourd'hui je propose un très petit aperçu des composants 8 bits de chez Atmel. En l’occurrence le processeur ATmega168pb, nouvellement présenté et dont la découverte est facilitée par un kit d'évaluation nommé 'ATmega168 X PLAINED Mini'.


Ce qui est intéressant avec ce nouveau micro-contrôleur, bien que ce soit un processeur 8 bits, c'est qu'il propose une architecture RISC rapide, un prix très réduit malgré la présence d'un nombre assez important de périphériques embarqués, et la mise à disposition de la part d'Atmel d'un logiciel de développement/programmation intégré de bonne facture. En un mot, Ce circuit se présente un peu de la même façon que les Z8F de Zilog.

En résumé, voici ce que nous propose un ATmega168pb (extrait de la documentation Atmel):

  • Up to 20 MIPS Throughput at 20MHz
  • On-chip 2-cycle Multiplier
  • 16KBytes of In-System Self-Programmable Flash program memory
  • 512Bytes EEPROM
  • 1KBytes Internal SRAM
  • Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
  • 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode
  • Real Time Counter with Separate Oscillator
  • Six PWM Channels
  • 8-channel 10-bit ADC with Temperature Measurement
  • Programmable Serial USART with Start of Frame Detection
  • Master/Slave SPI Serial Interface
  • Byte-oriented 2-wire Serial Interface (Phillips I 2 C compatible)
  • Programmable Watchdog Timer with Separate On-chip Oscillator
  • On-chip Analog Comparator
  • Interrupt and Wake-up on Pin Change
  • Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby, and Extended Standby
  • 27 Programmable I/O Lines

...pour les caractéristiques essentielles, ce qui présente tout de même un certain potentiel de flexibilité dans un très petit circuit. Il pourrait se placer entre les micros de chez Zilog avec plus de rapidité d'exécution et plus de périphériques embarqués, et les 32 bits de chez Microchip en présentant certes moins de puissance de calcul, mais aussi une bien plus grande facilité dans la gestion du placement des périphériques sur les pattes de sorties.

La page du site d'Atmel ou il est possible de commander le kit d'évaluation :

http://store.atmel.com/PartDetail.aspx?q=p:10500404#tc:description
Avant toute tentative d'utilisation de ce kit, il convient de télécharger le logiciel de développement Atmel Studio 6. Et de constater que le package d'installation constitue un joli pavé de près de 700Moctets de données, auxquelles il conviendra de rajouter 200Moctets de mises à jours diverses et variées à la date de ce billet. Bien plus que ce que Propose Zilog avec son logiciel de développement. Point intéressant : l'application de programmation en Flash du micro-contrôleur fait parti du logiciel de développement. Inutile donc de chercher sur la toile, une solution tierce 'gratuite' susceptible de ne pas fonctionner correctement, comme ce qui aurait pu être mon cas avec le logiciel FlashMagic si les développeurs de cet utilitaire n'avaient pas réagi très rapidement à ma demande de correction pour son bon fonctionnement avec le processeur NXP LPC810.

Une fois Studio 6 installé et la carte d'évaluation connectée dans un port USB libre de la machine de développement, le premier lancement de Studio 6 fait apparaître l'environnement de développement ainsi qu'un onglet affichant le matériel compatible Studio découvert :

http://synthelectro-fr.blogspot.com
Rapidement, l'envie d'en savoir un peu plus sur le fonctionnement de l'environnement de développement et sur le micro-contrôleur pousse à tenter une première programmation. Sur le site d'Atmel, se trouve un programme d'exemple appelé 'Morse' censé présenter par le clignotement de la LED utilisateur présente sur la carte d'évaluation, le code Morse correspondant à ce que l'on aura fournit au processeur par l'intermédiaire de son port Série. C'est d'ailleurs cette application qui est programmée dans le kit d'évaluation permettant, à défaut de savoir dans un premier temps de quoi il s'agit, de constater qu'il y a de la vie lorsque l'on connecte la carte au PC. C'est déjà ça.

Une constatation intéressante concernant le mode de programmation de la Flash du micro-contrôleur, concerne le fait que celui-ci s'effectue par le port SPI du circuit. Laissant ainsi libre le port série pour tout type d'expérimentations. Cela peut peut-être paraître anodin, mais il m'est arrivé quelques mésaventures avec un circuit LPC1114 répondant 'synchronized' à une suite d'octets envoyés sur son port série, alors qu'il n'était nullement en mode programmation, le système de détection automatique de 'baud rate' du LPC1114 se déclenchant à 'l’insu de mon plein gré' !!!

Plutôt que de compiler de nouveau cette application et de la re-programmer dans le processeur, j'ai préféré partir de zéro et écrire un programme simple envoyant quelques caractères par le port série.

Et voici le 'programme du siècle', ou plus simplement un 'Hello World' un peu plus évolué que l'habituel clignotement d'une LED :
/*
 * TestCom.c
 *
 * Created: 23/12/2014 10:34:39
 *  Author: eric
 */ 

#include <avr/io.h>

#define F_CPU                   16000000UL  // Oscillateur interne à 16MHz
#define LED_ON                  PORTB |=  (1<<PORTB5)
#define LED_OFF                 PORTB &= ~(1<<PORTB5)
#define USART_BAUDRATE          9600
#define BAUD_PRESCALE           (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)

void InitSystem(void);

int main(void)
{
unsigned long Temp;
 
 InitSystem();
 
    while(1)
    {
     //TODO:: Please write your application code 
        while (!(UCSR0A & (1<<UDRE0)));
        UDR0 = 'D';
        for (Temp = 10000000; Temp; Temp--);
        while (!(UCSR0A & (1<<UDRE0)));
        UDR0 = 'F';
    }
}

void InitSystem(void)
{
 DDRB |= (1<<PORTB5);                   // PB5 en sortie (LED0)
 PORTB |= (1<<PORTB5);                  // PB5 pullUp
 LED_OFF;                               // start with the LED off

 UCSR0B = (1 << RXEN0)  | (1 << TXEN0); // Autorisation RX/TX
 UCSR0C = (1 << UCSZ00) | (1 << UCSZ01);// Mode 8 bits

 UBRR0H = (BAUD_PRESCALE >> 8);         // Baud rate LSB du registre UBRR
 UBRR0L = BAUD_PRESCALE;                // Baud rate MSB du registre UBRR
}
Rien de bien compliqué en somme si ce n'est qu'en guise de clignotement de LED, le caractère 'D' est envoyé par le port série puis, après une boucle vide comptant jusqu'à 10.000.000, le caractère 'F' est envoyé à la console, le tout, dans une boucle sans fin. Ce simple programme m'a permis de constater que la boucle de comptage s'effectue en 6 secondes.

Une fois ce programme compilé, un simple démarrage de session de débogage permet de lancer la programmation de la flash du composant puis de démarrer le programme interne. Il est tout à fait plaisant de constater que dès lors, toutes les opérations permettant l'évolution en pas à pas du programme ainsi que la visualisation des variables et des mémoires internes au processeur sont accessibles simplement, et en temps réel, ainsi que la gestion des points d'arrêts. Je retrouve ici tout ce qui fait l'efficacité de la solution Zilog.

Session typique de débogage sous Studio 6. 
Un petit mot sur le processeur lui-même : il s'agit, donc, d'un processeur 8 bits. De ce fait, il ne présente pas la complexité d'un circuit même 'simple' de type ARM comme le LPC1114FN28 de NXP. Les mnémoniques assembleur utilisées sont très simples ainsi que l'architecture des registres. Lors de l'élaboration du programme ci-dessus, je n'ai absolument pas utilisé quelque librairie Atmel que ce soit. J'ai programmé directement les registres concernés par mon 'application', tout simplement. Je retrouve avec ce système, comme je l'ai rappelé précédemment, toute la facilité et la rapidité de développement que propose les circuits Zilog, tout en offrant un peu plus de puissance et de périphériques embarqués, notamment l'EEPROM, totalement absente des circuits Z8F.

Et puisque j'évoque la 'puissance' de ce processeur, j'ai comparé le résultat de ce programme avec ceux obtenus lors d'un test précédent sur des machines fonctionnant sous interpréteur Basic. En 'force brute', l'ATmega168pb exécute un simple comptage à une vitesse supérieure à 350 fois le même type de test effectué sur un processeur PIC32 à 50MHz sous interpréteur Basic, le Micromite. Le Micromite étant lui-même 130 fois plus rapide que le bon vieux Tandy PC-2. L'ATmega168pb est donc près de 50 000 fois plus rapide que le PC-2. Évidement, cette comparaison est 'tendancieuse', les environnements de ces trois processeurs étant très différents les uns des autres.

Cependant, si l'on considère les outils disponibles aujourd'hui pour une personne désireuse de se lancer dans la réalisation de matériels embarqués, force est de constater qu'il y a vraiment de quoi faire petit, économe en énergie, tout en étant vraiment très performant. Le tout pour un budget minimal puisqu'à considérer que la phase la plus lente dans tout le processus d'élaboration est celle du chargement du logiciel Studio 6, il est tout à fait possible d'imaginer utiliser cette chaîne de développement sur un portable équipé d'un simple processeur Core 2 Duo. C'est mon cas, avec un Core 2 à 2.10 MHz. Ce type de Portable se trouve aujourd'hui en occasion à moins de 200€, à comparer aux 3500 Francs nécessaires pour acquérir un Sharp PC 1500 (TRS80-PC2) à l'époque de sa sortie. Les outils de développement sont fournis gracieusement par Atmel.

Le tout pour moins de 200€ ?....
Conclusion : je me suis laissé tenter par une publicité Atmel,vantant tous les avantages du circuit ATmega168pb, proposé sur une carte de développement minimale mais pratique au prix de de 8,88$ hors frais de port (24/12/2014). Je pensais être en présence d'un circuit minimaliste, il n'en est rien. Bien qu'en version 8 bits, et sous réserve que le besoin en calculs intensifs ne soit pas l'objectif, ce circuit est très flexible, puissant et pratique à programmer/debugger avec les outils Atmel. Au delà de la découverte, il serait dommage de ne pas l'utiliser dans une application concrète…

mardi 9 décembre 2014

ZigBee ou la chronique d'une mort annoncée?...

Ah, ZigBee !... Et la révolution révolutionnaire qui allait tout révolutionner dans la façon de contrôler l'habitat. Enfin, tout allait devenir simple et efficace, c'était le début de l'Internet Of Things, l'IoT d'aujourd'hui !

Un des premiers modèles de modules type ZigBee disponibles pour le grand public.

Puisque je m'intéresse entre autres sujets, à l’automatisation des bâtiments, je viens de découvrir un article sur le site de Batirama intitulé : "ZigBee 3.0 : fin de la cacophonie en 2015". Je serais tenté de traduire ce titre d'article en 'ZigBee : fin du sketch' !

Mais reprenons depuis le début... Je ne sais plus exactement en quelle année fût annoncée la 'révolution' ZigBee, mais il me semble que c'était vers 2007, Peu importe. Intéressé par les possibilités présentées, j'acquis un kit de démonstration chez Radiocrafts à un prix pas spécialement donné. Les deux cartes contenues dans la boîte semblaient tout droit sorties d'un atelier de bricolage, avec 'bouts de fils' soudés à même le circuit imprimé, destinés à configurer les quelques 'bornes' de configuration des modules ZigBee. Les deux cartes étaient équipées d'une antenne extérieur et non pas d'une antenne intégrée, soit par un composant, soit directement gravé sur le circuit imprimé.

Origine : Radiocrafts.
A noter que j'ai récupéré l'image ci-dessus le 09 décembre 2014 et que je ne sais pas si elle correspond toujours au kit que j'ai reçu à l'époque. Je ne possède plus ce kit, l'ayant fait passé depuis longtemps par la case déchèterie rubrique 'produits électroniques'!

Très rapidement, la déception : J'effectue les premiers tests de liaison, point à point. Inutile de préciser que la configuration des modules par commande de type 'AT' n'était pas spécialement des plus conviviale, le module renvoyant juste un 'OK' laconique en guide de confirmation. En configurant les deux modules en puissance maximale, j'obtins une distance de communication d' à peine 10 mètres en vis à vis, seulement 'obturé' par la fenêtre double vitrage de mon bureau.

Après d'énormes recherches sur Internet, je ne parvins jamais à être en mesure de me faire une idée précise sur les distances atteignables avec le protocol ZigBee. Je me souviens avoir vu quelques réalisations ou les exemples de distances de liaison obtenues étaient toujours réalisées en extérieur, par exemple une vidéo présenté par Texas Instruments montrant une 'certaine distance' obtenue avec ce type de circuit, dans un espace vert. Je ne sais plus si l'exemple Texas était présenté avec des modules ZigBee ou avec leur solution maison, mais peu importe, il s'agissait de la même bande de fréquence et de la même puissance de transmission. Quelle plaisanteries toutes ces démonstrations.

Parce qu'il faut être clair : ça ne fonctionne absolument pas en intérieur. Les raisons principales sont très simples et sont au nombre de trois : 

1- La puissance d'émission est RIDICULE. 
2- La bande de fréquence utilisée traverse très difficilement les obstacles. 
3- La bande de fréquence utilisée étant la même que celle du WiFi, le spectre radio est tellement bruité que même la haute sensibilité des récepteurs ZigBee ne parvient pas à palier le faible ratio S/B de la liaison.

Exemple de module ZigBee.

Vous pourriez me dire que c'est facile de critiquer, suite à un simple essai de modules peut-être pas optimaux et que etc etc etc...

Sauf que, suite à ces essais très peu convaincants, j'ai décidé d'attaquer le problème à la base et de créer des appareils de meilleur qualité. Je ne rentre pas dans les détails, mais un module ZigBee est constitué d'un frontal radio fréquence (RF) et d'un processeur faisant le lien avec l'extérieur et gérant la pile ZigBee. Inutile de préciser que chaque constructeur de module ZigBee incorpore le type de processeur qui l'intéresse dans sa solution. Se faisant, un programme développé pour un type de module d'un constructeur ne pourra certainement pas être implémenté dans un module d'un autre constructeur. Il convient donc de faire attention à la solution matérielle adoptée. Je passerai aussi sur la compatibilité des piles ZigBee implémentées ainsi que sur le choix de la chaîne de développement plus ou moins complète, plus ou moins finie, plus ou moins installable avec laquelle il m'a fallu me battre pour réussir à programmer les modules choisis : des modules Jennic, qui me semblaient à l'époque les moins pires ! 
 
Un module Jennic.
J'ai donc réalisé trois prototypes de capteurs de température et d'hygrométrie. Dans l'ordre de l'image ci-dessous, deux prototypes équipés de modules avec antenne extérieur, et un avec une antenne directement gravée sur le module.

Réalisation personnelle...

Après de longues heures de découverte, et de programmation, je réussis à configurer un prototype équipé d'une antenne extérieur en module maître, et les deux autres en modules esclaves. Ce qui m'a permis d'effectuer des tests de distances. Et je n'ai pas été déçus !!! Avec le prototype équipé d'une antenne gravée sur le module Zigbee, j'ai obtenu 1,5m et une paroi BA13 traversée. Sinon, c'était 2m. Oui, vous avez bien lu : 2m max en vis à vis. Les tests ont été effectués dans un appartement situé dans un immeuble, noyé dans les transmissions WiFi. Il y avait plus de 10 réseaux visibles à différentes puissances. Avec deux prototypes équipés d'antennes extérieur, la situation s'améliorait quelque peu puisque j'ai pu obtenir 12m (mesurés au mètre à ruban), toujours en traversant une paroi de BA13 plus un voile extérieur de 15cm, j'étais en fait sur le balcon. En un mot, dans un appartement de 75m² ayant une topologie carrée, et même en intérieur, le simple fait de devoir passer plus de deux cloisons BA13 ne me permettait pas de ponter la diagonale !!!

Je n'ai pas poussé plus avant les expérimentations sur le sujet. A titre d'exemple, des tests effectués avec de simples émetteurs récepteurs travaillant dans la bande des 433Mhz sous 10mW d'émission m'ont permis le transfert de fichiers à 2400 bauds jusque dans le sous-sol du bâtiment, l'appartement se situant au 2ième étage. J'ai même du arrêter rapidement les tests puisque je perturbais l'ouverture du portail d'entrée de la résidence.

Modules 433MHz APC220 utilisés pour les expérimentations.
Que dire de plus ?
Il est possible aujourd'hui que l’interopérabilité des modules ZigBee s'améliore. Je doute que la raison en soit uniquement la version 3.0 du protocole. Mais plutôt au fait que durant ces sept dernières années, le nombre de constructeurs ayant jeté l'éponge sur ce sujet fait que les derniers restant sur la place semblent arriver à proposer des solutions compatibles avec... eux-même !

A titre d'exemple : 
- Les modules MaxStream ont été repris par Digi.
- Les modules MeshMetics ne sont plus disponibles.
- Les modules Jennic ont été repris par NXP.
Et tant d'autres....

Mais les fondamentaux restent présents :

- Le partage du spectre de fréquence avec le WiFi ne permet pas de bonnes liaisons.
- Le spectre utilisé est très vite arrêté par les obstacles, même fins.
- Pour ponter des distances 'utilisables', il faut impérativement installer des 'répéteurs' de réseau, avec toute la complexité de configuration de ce type de réseau tant au niveau logiciel, que logistique.
- Que dire de l'autonomie électrique des appareils dans le cas d'un réseau de ce type puisqu'à minima ils doivent être constamment en réception : quelques mois ?
- Miser sur le bon fournisseur de modules parce qu'il n'y a aucune garantie sur la pérennité de l'approvisionnement. Mais heureusement, le marché semble s'être assaini, il reste de moins en moins de constructeurs de modules ZigBee, voire bientôt... plus du tout !!! 
- Considérer la difficulté de développement autour des modules choisis...

Quoi faire alors ?

Hum, je dirais que la vraie vie est ailleurs. Il existe aujourd'hui des constructeurs capables de proposer des solutions de type WiFi, très bon marché et compatibles avec le protocole de commande série de type 'AT'. 

Photo provenant du site HACKADAY, du module ESP8266 .
Je n'ai pas encore effectué de tests de distance avec ces modules Wifi mais au moins cela reste du réseau 'standard' accessible depuis n'importe quel portable équipé d'une carte de réception WiFi, c'est à dire tous maintenant, et cela ne coûte que deux à trois Euros sur eBay ! 
De plus, le processeur embarqué 'semble' programmable, bien qu'il 'semblerait' que la chaîne de compilation ne soit pas triviale à installer et que la documentation disponible soit plus que légère pour l'instant. Mais une importante communauté de développeurs se fédère autour de cette solution, permettant d'envisager une meilleur intégration de ce type de solutions dans les mois à venir. Un bon point de départ sur ce module pourrait être celui-ci : Limpkin's.

Alors plutôt que tenter une aventure professionnelle autour du ZigBee, mieux vaut passer quelques heures de loisir à expérimenter autour de ce type de solution WiFi !

Moi, ce que j'en dis....