Vous êtes sur la page 1sur 74

LE SYSTEME DOMOTIQUE DOMOCAN

PAR BIGONOFF

CARTE D’ENTREE – 16 TOUCHES SENSITIVES

Révision 3
2
1. CARACTÉRISTIQUES ................................................................................................................................... 5
1.1 PRÉSENTATION............................................................................................................................................... 5
1.2 CARACTÉRISTIQUES TECHNIQUES PARTIE PIC................................................................................................ 6
1.3 CARACTERISTIQUES TECHNIQUES PARTIE QT60161B.................................................................................... 7
2. RÉALISATION PRATIQUE DE LA CARTE PIC® .................................................................................... 9
2.1 GÉNÉRALITÉS................................................................................................................................................. 9
2.2 SCHÉMA DE LA CARTE .................................................................................................................................... 9
2.3 LE TYPON ..................................................................................................................................................... 10
2.4 L’IMPLANTATION ......................................................................................................................................... 11
2.5 PHOTOS DE LA CARTE TERMINÉE .................................................................................................................. 11
3. RÉALISATION PRATIQUE DE LA CARTE QT ...................................................................................... 13
3.1 GÉNÉRALITÉS............................................................................................................................................... 13
3.2 LISTE DES COMPOSANTS ............................................................................................................................... 13
3.3 LE TYPON ..................................................................................................................................................... 14
3.4 L’IMPLANTATION ......................................................................................................................................... 16
3.5 LES PHOTOS ................................................................................................................................................. 16
4. REALISATION PRATIQUE DES TOUCHES SENSITIVES ................................................................... 19
4.1 GENERALITES............................................................................................................................................... 19
4.2 LES TYPONS ................................................................................................................................................. 19
4.3 PHOTOS DES TOUCHES SENSITIVES ............................................................................................................... 20
4.4 CONNEXION ET IDENTIFICATION DES TOUCHES ............................................................................................ 21
5. CONNEXION DE L’ENSEMBLE ................................................................................................................ 23
5.1 CONNEXION DES TOUCHES ........................................................................................................................... 23
5.2 CONNEXION DES LEDS TEMOINS ................................................................................................................... 24
5.3 CONNEXION ENTRE CARTE PIC® ET CARTE QT ............................................................................................ 26
6. PARAMÉTRAGE DU FICHIER SOURCE................................................................................................. 29
6.1 PARAMÈTRES PAR DÉFAUT ........................................................................................................................... 29
6.2 MODIFICATION DES PARAMÈTRES GÉNÉRAUX .............................................................................................. 29
6.3 PARAMETRAGE DES TOUCHES ET FONCTIONS ............................................................................................... 32
6.4 AUTRES PARAMETRES ET MEMOIRE EEPROM ................................................................................................ 32
7. INSTALLATION SUR SITE ......................................................................................................................... 33
7.1 CONFIGURATION .......................................................................................................................................... 33
7.2 MATERIEL .................................................................................................................................................... 33
7.2 PREPARATION DU BLOCHET.......................................................................................................................... 38
7.3 MONTAGE MECANIQUE DES TOUCHES .......................................................................................................... 40
7.4 LA VITRE ...................................................................................................................................................... 40
7.5 LE CALQUE ................................................................................................................................................... 41
7.6 MONTAGE FINAL .......................................................................................................................................... 42
8. LES COMMUNICATIONS ........................................................................................................................... 45
8.1 LISTES DES COMMANDES GÉRÉES ................................................................................................................. 45
8.2 LES TRAMES INTERCEPTEES ......................................................................................................................... 47
8.3 ERREUR SPECIFIQUE ..................................................................................................................................... 48
8.4 TYPES D’ACTIONS ........................................................................................................................................ 48
8.5 TYPES DE FONCTIONS ................................................................................................................................... 48
8.6 GROUPE DE FONCTIONS ................................................................................................................................ 49
8.7 STATUT DES DIFFÉRENTES FONCTIONS ......................................................................................................... 50
8.7.1 Statut pour les touches sensitives ......................................................................................................... 50
8.7.2 Statut pour les portes logiques ............................................................................................................. 51
8.7.3 Statut pour les timers et décompteurs .................................................................................................. 51
8.8 MODE SUPERVISEUR ET MODE UTILISATEUR ................................................................................................ 52
8.9 DÉTAILS DES COMMANDES SPÉCIFIQUES ...................................................................................................... 53

3
8.9.1 Cmd_WStatF ........................................................................................................................................ 53
8.9.2 Cmd_RStatF ......................................................................................................................................... 55
8.9.3 Cmd_WStatFE...................................................................................................................................... 55
8.9.4 Cmd_RStatFE....................................................................................................................................... 55
8.9.5 Cmd_RunTimer .................................................................................................................................... 56
8.9.6 Cmd_StopTimer.................................................................................................................................... 56
8.9.7 Cmd_RMdTimers ................................................................................................................................. 56
8.9.8 Cmd_LoadTd........................................................................................................................................ 57
8.9.9 Cmd_AddValTD ................................................................................................................................... 57
8.9.10 Cmd_CAct .......................................................................................................................................... 58
8.9.11 Cmd_WAct ......................................................................................................................................... 58
8.9.12 Cmd_RAct .......................................................................................................................................... 59
8.9.13 Cmd_WNameInSens ........................................................................................................................... 59
8.9.14 Cmd_RNameInSens............................................................................................................................ 60
8.9.15 Cmd_WNbBtC .................................................................................................................................... 60
8.9.16 Cmd_WLevel ...................................................................................................................................... 61
8.9.17 Cmd_SendQT ..................................................................................................................................... 61
8.9.18 Cmd_WQtSpeed ................................................................................................................................. 62
8.9.19 Cmd_WLedsVB .................................................................................................................................. 63
8.9.20 Cmd_WLedsT ..................................................................................................................................... 64
8.9.21 Cmd_RLedsT ...................................................................................................................................... 65
8.9.22 Cmd_WRedirIn................................................................................................................................... 65
8.9.23 Cmd_RRedirIn.................................................................................................................................... 67
8.9.24 Cmd_StatF ......................................................................................................................................... 67
8.9.25 Cmd_StatFE ....................................................................................................................................... 68
8.9.26 Cmd_MDTimers................................................................................................................................. 68
8.9.27 Cmd_ActC .......................................................................................................................................... 68
8.9.28 Cmd_Act............................................................................................................................................. 69
8.9.29 Cmd_NameInSens .............................................................................................................................. 69
8.9.30 Cmd_DataQT ..................................................................................................................................... 70
8.9.31 Cmd_RedirIn ...................................................................................................................................... 70
8.9.32 Cmd_LedsT ........................................................................................................................................ 71
8.10 PARTICULARITÉS DE LA COMMANDE CC_CARTE ....................................................................................... 71
9. UTILISATION DU PRESENT DOCUMENT ............................................................................................. 73

4
1. Caractéristiques

1.1 Présentation

La carte que je vous propose va apporter un look « domotique » à votre habitation, et un


confort d’utilisation de vos différentes fonctions.

Cette carte permet en effet d’effectuer toutes les opérations et fonctions de la carte 16
entrées, déjà décrite, mais en utilisant des touches sensitives au lieu de boutons-poussoirs
ordinaires.

Il faudra évidemment placer cette carte à chaque endroit où vous désirez des touches
sensitives, pour ma part, pratiquement tous les « interrupteurs » de mon habitation sont
constitués de touches de ce type.

Chaque carte peut recevoir de 1 à 16 touches sensitives, nous verrons comment utiliser
tout ça.

Ce qui m’a causé le plus de difficultés a été de réaliser le côté « mécanique » du projet,
c’est-à-dire obtenir un résultat fini digne d’une réalisation professionnelle, en évitant le côté
« bricolage » tout en respectant les deux conditions suivantes :

- Etre d’un coût modeste


- Etre reproductible par tout le monde (pas de boîtiers spéciaux à faire sur mesure)

Je pense sincèrement y être arrivé.

Comme je vous le disais, ce projet inclut toutes les fonctions présentes dans la carte 16
entrées (timers, décompteurs, portes logiques etc.), je vous suggère donc de lire le document
relatif à la carte 16 entrées avant celui-ci, car je ne reprendrai ici que les fonctions
supplémentaires inhérentes à la carte à touches sensitives.

La carte est constituée en réalité de 2 cartes montées en sandwich :

- La carte à pic, construite de façon traditionnelle


- La carte pilotant les touches (appelée carte QT), construite en CMS.

Le choix du CMS m’a été imposé, d’une part parce que le microcontrôleur chargé du
pilotage des touches, un QT60161B, n’existe qu’en version CMS, et d’autre part pour
économiser de la place.

Rassurez-vous, vous verrez que sans aucun outillage spécifique, avec un peu de méthode
et de propreté, il ne suffit que d’un bon fer à souder pour s’en sortir.

Avant de lire ce document, vous êtes sensés avoir lu les précédents, principalement le
document « présentation » et celui concernant la carte 16 entrées, sinon vous risquez bien de
ne rien comprendre.

5
Comme les autres cartes Domocan, le bootloader est intégré au logiciel. Concernant le
QT, rassurez-vous il est préprogrammé d’usine en ROM, et donc non effaçable.

1.2 Caractéristiques techniques partie PIC

Type : A microcontrôleur PIC 18F2680 ou 18F2580


Fréquence du quartz : 10Mhz
Fréquence de travail : 40 MHz
Fonction : Communication avec le QT et fonctions internes
Modes de fonctionnement : Décentralisé (par défaut) ou centralisé
Mode de communication QT : Liaison bidirectionnelle asynchrone
Nombre d’entrées max. : de 1 à 16 indépendantes via le QT60161B : paramétrable
Niveaux sur reset : Programmables
Portes logiques : Intégrées logicielles: OR, AND, NOR, NAND à 4 entrées
Nombre de portes logiques : Maximum 16 de chaque type,soit 64 portes
Etats des entrées sur reset : Paramétrables
Timers rapides : Maximum 16/carte, en 1/10ème de seconde de 0 à 12,7 s.
Timers lents : Maximum 16/carte en secondes : de 0 à 127 s.
Décompteurs : Décompte à partir d’une valeur quelconque entre 0 et 127
Nombre de décompteurs : Maximum 16/carte
Nombre max. de cartes : 255 cartes sensitives, soit 4080 touches sensitives par bus
Mémoire de commandes : De 1*24C32 à 1*24C512 selon nombre de groupes
Nombre de fonctions : 16 types possibles, dont 8 utilisées
Types d’actions : In,OR,AND,NOR,NAND,timer lent,rapide,décompteur
Nombre d’actions : 16 différents types d’actions possibles, dont 14 utilisés
Types d’actions sur entrées : Impulsion courte, début de maintien, fin de maintien
Types d’actions sur portes : Passage de 0 à 1, passage de 1 à 0 de chaque sortie
Types d’actions sur timer : Temps écoulé
Types d’actions décompteur : Valeur 0 atteinte
Nombre de trames d’actions : max. 16 trames d’actions programmables par action
Capacité de mémorisation : 16 groupes*16 actions*16 commandes = 4096 commandes
Connexion CAN : Paramétrable compatible Domocan
Trames CAN acceptées : Etendues de type data, conformes à la norme CAN 2.0b
Buffer CAN : 3016 octets, soit 232 trames (18F2680)
Driver physique CAN : MCP2551 ou compatible
Alimentation : +12V non régulée, prise sur le bus DOMOCAN
Signalisations visuelles : 1 Led présence tension
: 1 Led d’activité CAN désactivable
: 16 leds pilotables sur 2 niveaux
Signalisations auditives : clic sur actions et/ou sur commande, désactivable

6
1.3 Caractéristiques techniques partie QT60161B

Contrôleur : QT60161B de la firme Quantum en boîtier TQFP44


Horloge : Intégrée, quartz 12Mhz externe
Nombre de touches : de 1 à 16, paramétrable
Communication : via la liaison UART asynchrone (SPI non utilisé)
Réglage des paramètres : via la carte pic depuis Domogest
Circuit : double face mais gravure en simple face (plan de masse)
Correction des variations : automatique par le QT
Dérives : rattrapage automatique par le QT
Technique de détection : par absorption de charge
Energie fournie : paramétrable
Seuils : paramétrable
Hystérésis : paramétrable
Délais de recalibration : paramétrables
Limites de recalibration : paramétrables
Recalibration : automatique
Sensibilité : paramétrable
Nombre de touches détectées : touche unique, ou touches multiples, paramétrable
Montage des touches : sur matrice X/Y 4 * 4
Synchronisation bruit secteur : au choix, paramétrable

Je vous renvoie au datasheet du QT60161B (joint dans le répertoire fichiers) pour plus de
détails techniques. Je profite de cet exemple pour signaler aux nombreux étudiants qui
m’écrivent, parfois en grandes difficultés pour interfacer un composant avec leur PIC®, que,
dans leur vie professionnelle, voici un exemple type de ce qui va leur arriver :

- Vous avez un microcontrôleur, dont on vous donne le datasheet


- Vous avez un autre composant (ici, un autre microcontrôleur spécialisé) dont on vous
donne également le datasheet.

Le but est de faire communiquer les deux pour une application particulière, et,
éventuellement, d’écrire un logiciel de paramétrage. C’est exactement ce qui est fait pour
cette application. Lisez le datasheet du QT60161B et vous comprendez qu’il est logique de ne
pas toujours y arriver en 5 minutes. Le tout est de prendre point par point, de ne pas avoir peur
de relire, et surtout de ne pas paniquer devant la taille du datasheet.

Ma méthode personnelle (mais je ne prétends pas qu’elle soit la meilleure), c’est de


procéder de la sorte :

1) Je lis plusieurs fois en détails le datasheet, comme un livre de chevet. Une fois fait, j’ai en
tête les fonctions principales du circuit, et sa philosophie.
2) J’étudie ensuite chapitre par chapitre, pour voir si ça colle à ce que j’ai compris, sinon je
relis le tout
3) Je crée le prototype permettant de communiquer
4) Je fais des bouts de codes simples pour voir si ce que j’ai compris est exact
5) Je finalise le projet

7
S’asseoir devant un tel datasheet, puis m’envoyer un mail en me disant «au secours, mon
tpe est pour demain », ça s’appelle tout simplement une mission impossible (ou alors vous
êtes bien plus intelligents que moi, mais dans ce cas, inutile de m’appeler).

8
2. Réalisation pratique de la carte PIC®

2.1 Généralités

Comme vous l’avez compris, la réalisation de ce projet nécessite la construction de deux


cartes distinctes, que j’ai baptisées : « carte PIC » et « carte QT ». Nous allons nous intéresser
d’abord à la première de ces cartes, construite en technologie discrète.

La liaison entre les deux circuits se fera par barrettes de connexion.

Le source est conçu pour pouvoir gérer un nombre de fonctions paramétrable par simple
modification d’une ligne ou par paramétrage à distance via Domogest, soit 1,2,4,8, ou 16
groupes de fonctions. Le nombre maximal de touches gérée par la carte sera comprise entre 1
et la valeur attribuée au groupe. Il y aura autant de portes de chaque type, de timers lents, de
timers rapides, et de décompteurs, qu’il y a de groupes.

La diminution du nombre de groupes, si vous n’avez pas besoin de tant de fonctions,


induira une diminution du temps mis par Domogest pour établir la cartographie, étant entendu
qu’il doit lire l’intégralité de chaque eeprom de chaque carte.

La mémoire eeprom externe nécessaire est fonction du choix du nombre de groupes.

Pour 1 groupe : 1 eeprom de type 24C32 à 24C512


Pour 2 groupes : 1 eeprom de type 24C64 à 24C512
Pour 4 groupes : 1 eeprom de type 24C128 à 24C512
Pour 8 groupes : 1 eeprom de type 24C256 ou 24C512
Pour 16 groupes : 1 eeprom de type 24C512

Par défaut, le source et le fichier « .hex » joints au présent document sont paramétrés pour
gérer 16 groupes et 6 touches. La carte électronique proposée est équipée dans sa version
maximale, avec 1 eeprom 24C512.

Il est inutile de modifier le source, la définition exacte des paramètres choisis s’effectue
aisément à partir du logiciel Domogest.

2.2 Schéma de la carte

Voici le schéma utilisé. Il est très simple et ne prête pas vraiment à discussion. Vous
noterez la présence de l’eeprom externe en bas à gauche. Les deux connecteurs de droite
servent à connecter les leds témoins. Le connecteur à droite en haut est notre connecteur CAN
Domocan, alors que celui à droite au dessous permet de monter la carte QT en sandwich.
Vous y retrouvez tous les signaux utiles, dont l’alimentation et les pins de communication.

Au dessus au centre, vous avez le buzzer, chargé de générer les « bips » de confirmation
des actions, si vous le mettez en service par logiciel.

Notez à droite au centre une pin « SYNC » qui peut, si vous le désirez, recevoir le signal
de la carte de synchronisation secteur (voir carte gradateur), afin de synchroniser les bruits du

9
QT avec les interférences réseau. Chez moi, ça fonctionne très bien sans cette option ,mais
elle est prévue, et gérée par les logiciels.

2.3 Le typon

Comme vous le constatez, rien de bien compliqué, le typon est donné à la bonne taille
dans le répertoire « fichiers » sous forme d’un document pdf.

10
2.4 L’implantation

Tout doit être limpide. Notez le fusible F1 compact en boîtier rond. Le régulateur 7805 est
monté vertical, le connecteur J1 est monté du côté des pistes du circuit imprimé. Les deux
connecteurs sans nom, montés à angle droit, en haut et à droite de C2 sont des barrettes
montées également côté pistes du circuit imprimé. Elles ne servent en fait qu’à la rigidité
mécanique du montage en sandwich, j’en profite évidemment pour leur faire interconnecter
les masses, pour plus d’équipotentialité entre les deux cartes.

2.5 Photos de la carte terminée

Afin de vous faire une idée de l’aspect de la carte terminée, voici une photo côté
composants :

11
Remarquez à gauche les deux connecteurs pour les leds témoins. A droite, notre
connecteur Domocan, et, au dessus du pic, notre connecteur destiné au petit buzzer (si vous le
souhaitez).

La barrette à une pin du dessus à droite du pic est la pin de forçage en mode bootloader.
Cette carte étant destinée à être encastrée dans un blochet, il vous faudra relier cette pin à la
masse si vous voulez forcer votre carte en mode bootloader suite à un problème logiciel
majeur.

La pin juste en dessous est la pin d’arrivée de la synchro. Si vous décidez de l’utiliser,
vous y ferez parvenir le signal en provenance de votre carte de synchronisation secteur, à
charge pour vous d’amplifier suffisamment les signaux pour qu’ils ne soient pas déformés à
cause de la longueur de la ligne.

Pour ma part, je n’ai pas utilisé cette option.

Voici maintenant la photo côté pistes :

On distingue très bien sur cette photo les barrettes qui vont servir au raccordement des
deux cartes ensemble. Selon mon habitude, j’ai étamé la carte à chaud, simplement en
utilisant de la pâte à décaper de plombier (pâte rouge), étalée au pinceau, suivi par le passage
au fer à souder avec une minuscule goutte de soudure. L’étain se répand très bien, grâce à la
présence de la pâte à décaper.

12
3. Réalisation pratique de la carte QT

3.1 Généralités

Cette carte est réalisée en CMS. En effet, le contrôleur QT60161B®, au cœur du système,
est un composant industriel, que vous retrouvez dans les commandes de taques inductions, de
systèmes médicaux, etc. De ce fait, il n’est disponible qu’en boîtier TQFP44, c’est-à-dire 44
pins sur un chip carré de 1cm de côté.

Mais ne paniquez pas, si vous êtes propre, la réalisation se fera sans aucun problème. Le
seul matériel que j’ai utilisé est :

- Un fer à souder (Weller Temptronic) avec pointe très fine


- De la soudure de 0.5mm
- De la pâte à décaper de plombier (boîte bleue contenant une pâte rouge)
- Une pince à épiler coudée fine.

C’est tout, excepté l’outillage pour faire vos circuits imprimés. Puisqu’il nous fallait
utiliser un composant CMS, je me suis dit qu’autant réaliser tout le circuit en CMS, le
montage du QT étant le plus délicat, le reste n’étant qu’un jeu d’enfants.

3.2 Liste des composants

Comme il existe des tonnes de composants CMS, de toutes les tailles, j’ai décidé cette fois
de vous donner la liste détaillée des composants, avec leur référence chez celui qui me les a
fournis : « Farnell® Belgique » : http://be.farnell.com/

Je les salue au passage, car, malgré que je ne sois qu’un minuscule client, j’ai été servi
avec le même professionnalisme et la même gentillesse que si j’avais commandé des
composants pour des dizaines de milliers d’euros. C’est assez rare pour être souligné.

Avec les références, vous pourrez commander directement chez eux. Si vous habitez en
France, les références devraient être identiques chez Farnell® France. Si vous ne disposez pas
de la possibilité d’aller chez Farnell®, une visite sur leur site vous permettra de télécharger
les datasheets des composants utilisés, et ainsi de pouvoir en trouver des équivalences ailleurs.

13
Je vous donne également les prix indicatifs au jour de ma commande :

Descriptif Nbre Référence Prix


Touch sensor QT60161B 1 4269809 5.96 E
Quartz 12Mhz SMD 1 3325301 0.75 E
Condensateur 100nF SMD 0805 6 4227189 0.045 E
Condensateur 1nF SMD 0805 2 317457 0.151 E
Condensateur 22pF SMD 0805 10 753658 0.033 E
Condensateur 4.7nF 2% SMD 0805 4 9694854 0.51 E
Condensateur 100nF 6 3018891 0.171 E
Résistance 1K/1% SMD 0805 3 911859 0.032 E
Résistance 220R/1% SMD 1206 4 513120 0.045 E
Résistances 100R/1% SMD 1206 4 513106 0.045 E
Résistance 180K/1% SMD 0805 4 912128 0.032 E
Transducteur piezo 1 5002928 1.18 E
Barrette in-line 1 359907 3.14 E
Fil nappe 10 fils 1 297288 1.53 E
Fusible pour CI 315mA 1 150986 0.73 E

La taille 0805 utilisée ne devrait vous poser aucun problème, il s’agit de CMS
relativement « gros », si j’ose m’exprimer ainsi.

Comme ça, ça devrait être plus simple pour vous.

3.3 Le typon

Le typon à la bonne échelle se trouve dans le répertoire « fichiers ». Notez l’emplacement


pour le QT tout au centre, et remarquez que les pistes sont assez serrées. Il vous faudra être
propre et soigneux, mais la réalisation est tout à fait possible par l’amateur. La réalisation ne
m’a posé en fait aucun problème.

14
Attention, la réalisation est faite sur du circuit double-face. Non, non, ne paniquez pas, la
seconde face va simplement rester telle quelle, non exposée, de façon à pouvoir l’utiliser
comme plan de masse. Insolez et gravez votre circuit sur une seule face, ne décollez
simplement pas la protection de la seconde face avant d’avoir terminé.

Pour travailler avec des pistes aussi fines, il faut que le calque soit parfaitement pressé
contre le circuit. Pour ma part, je n’utile pas dans ces cas-là la feuille de mousse intégrée aux
insoleuses : je laisse le couvercle ouvert, et je pose sur le circuit imprimé un poids important
(par exemple, des bouteilles d’un litre remplies d’eau serrées les unes contre les autres). De la
sorte, les pistes sont très nettes.

Attention que les composants sont bien entendus placés côté pistes, les seuls trous à forer
sont ceux des connecteurs en barrette femelle et ceux pour faire communiquer les masses avec
le plan de masse.

Pour placer les composants, voici comment j’ai procédé :

- Pour chaque composant, à l’aide d’un pinceau, j’ai placé de la pâte à décaper à
l’emplacement prévu
- J’ai mis une petite goutte de soudure au bout de mon fer
- J’ai placé le composant sur son emplacement, à l’aide d’une pince à épiler coudée, dite
« pince de Bruxelles », après avoir trempé ses deux extrémités dans un soupçon de pâte à
décaper
- J’ai fait toucher la goutte du fer à la jonction entre le composant et l’emplacement voulu
du circuit. Grâce à la pâte à décaper, la soudure s’étale parfaitement
- J’ai soudé ensuite l’autre extrémité à l’aide de ma soudure de 0.5mm.

Pour le Qt, j’ai procédé de façon identique pour la première des pins. Une fois maintenu
par la première soudure, j’ai soudé toutes les pins de façon traditionnelle, en trempant à
chaque fois le bout de ma soudure dans la pâte à décaper (en 0.5mm, il n’y avait pas d’âme
décapante dans cette soudure).

Je n’ai eu strictement aucun problème à la soudure. Si, malgré tout, vous faisiez un pont
entre deux pattes, la tresse à dessouder devrait vous sortir de ce mauvais pas. Une autre
« astuce » est de chauffer un bref instant le pont de soudure, et de taper la tranche de la carte
sur le plan de travail, côté pont vers le bas. La soudure saute par inertie et gravité.

15
3.4 L’implantation

Vous constaterez la petite taille du QT, au centre, en la comparant à la taille du quartz


XT1 qui est pourtant un quartz CMS également.

3.5 Les photos

Voici à quoi devrait resssembler votre circuit une fois tiré et étamé. Comme d’habitude,
j’ai fait l’étamage à chaud avec mon fer à souder, de la pâte à décaper, et de la soudure
ordinaire.

Voyons ce que ça donne une fois les composants en place :

16
Vous voyez que ça ne pose en fait aucun problème. Notez que les connecteurs de montage
en sandwich se trouvent sur la face opposée, photo ci-dessous. Souvenez-vous qu’il s’agit
d’un double-face :

Vous voyez nettement les connecteurs femelles. Les deux seules opérations à faire au
niveau de la face verso sont :

- Enlever à la fraise ou au cutter le cuivre dans la zone où se trouvera le connecteur


supérieur, ceci afin évidemment d’éviter de faire un court-circuit entre toutes les pistes, et
avec la masse.

- Les deux connecteurs du dessous sont reliés à la masse de toutes façons, inutile de faire de
découpe.

- Percez quelques trous, répartis sur la surface à travers le plan de masse à partir du côté
composant (dans une masse, évidemment)

- Insérez de petits bouts de fils dans les trous, et soudez-les deux 2 côtés (ce sont les îlots de
soudure que vous vouyez côté verso.

De la sorte, vous avez réalisé un plan de masse d’une qualité pas mauvaise du tout.

Ne vous inquiétez pas pour les deux bouts de fils que vous voyez partir vers le bas de la
photo. Il s’agit des masses de mes fils de liaison aux touches sensitives, je vais en reparler.

17
Notes :

18
4. Réalisation pratique des touches sensitives

4.1 Généralités

La réalisation des touches sensitives se limite principalement à un circuit imprimé. J’ai


utilisé un circuit imprimé d’épaisseur 0.8mm, utilisé principalement pour la réalisation de
cartes type ISO7816 (cartes à puces). On en trouvait partout à une époque (allez savoir
pourquoi, MDR), mais maintenant c’est devenu une denrée rare. Je n’en ai pas trouvé chez
Farnell®, j’en ai trouvé chez Fissette®, rue Féronstrée, à Liège (Belgique). A vous de vous
décarcasser un peu pour en trouver. Notez qu’on peut utiliser du circuit classique, mais il
faudra adapter la réalisation mécanique en conséquence, ça risque de ne pas être simple si
vous utilisez comme moi des boîtiers Btcino®

Le tracé des pistes répond à des impératifs précis, détaillés dans le datasheet « touches
sensitives » fourni dans le répertoire « Fichiers ».

La principale recommandation est d’utiliser des largeurs de pistes égales à la moitié de


l’épaisseur séparant le doigt de la piste du circuit. J’ai utilisé un carreau de 3mm, un circuit de
0.8mm. Ajoutez l’épaisseur du calque (je vais en parler), et nous arrivons approximativement
à 4mm.

L’organisation des pistes doit également répondre à de strictes impératifs, toujours


expliqués dans la documentation.

J’ai choisi de faire une solution simple et robuste, quitte à devoir utiliser quelques ponts
de connexion, toujours en accord avec les prescriptions.

4.2 Les typons

Voici le typon pour placer 6 touches sensitives, la taille des circuits est évidemment en
relation étroite avec la réalisation mécanique. Je ne le dis plus, les typons se trouvent à la
bonne échelle dans le répertoire « fichiers ».

19
Le typon est organisé pour suivre les prescriptions de conception, c’est pourquoi, par
exemple, certaines touches sont en miroir par rapport à d’autres. En plus, ça permet de relier
directement les bornes « Y » des touches qui doivent l’être.

6 touches, c’est un nombre qui n’est pas choisi au hasard, il est fonction de la réalisation
mécanique. Il en est de même pour la version 14 touches, que j’ai également utilisée. Voyons
le typon :

Dans les 2 typons, le trou au centre de chaque touche sert à forer le trou de passage de la
led témoin. Vous remarquez que les touches sont reliées par 4 au niveau d’une des pistes. Ce
sont des touches matricielles, les liaisons sont les liaisons « Y » de la matrice.

4.3 Photos des touches sensitives

Voici maintenant à quoi ressemble un circuit de 6 touches sensitives (déjà relié à sa carte
QT), côté utilisateur :

20
Remarquez que j’ai peint ce circuit en blanc (attention, pas du côté des pistes,
évidemment). En fait, comme je vous l’expliquerai plus loin, vous le peignez de la même
couleur que le cadre que vous allez utiliser. J’ai utilisé des cadres blancs à l’étage, et
aluminium au rez-de-chaussée. J’ai donc peint les circuits en blanc et en gris. Inutile que ce
soit parfait, la couleur ne se verra qu’au travers d’un calque translucide. Dans cet exemple, il
s’agit d’un circuit destiné à une des chambres.

Attention, évitez les couleurs contenant du métal, comme les teintures argentées.

Remarquez les fils à gauche, qui vont vers la carte QT.

Voyons côté circuit :

4.4 Connexion et identification des touches

Remarquez les fils en nappe qui relient les touches à la carte QT. Si vous regardez
attentivement, vous voyez que le premier et le dernier fil de chaque nappe ne sont pas reliés.
Ils sont reliés en réalité à la masse sur la carte QT, vous en voyez deux sur la photo de la carte

21
QT, côté connecteurs femelles, les deux autres sont reliés côté composants. Ils servent à
améliorer l’immunité en servant d’écran de masse.

Les touches sont câblées en matrice, c’est-à-dire que les touches sont identifiées comme
suit :

Touche 0 : X0 Y0
Touche 1 : X1 Y0
Touche 2 : X2 Y0
Touche 3 : X3 Y0
Touche 4 : X0 Y1
Touche 5 : X1 Y1


Touche 15 : X3 Y3

Les touches sont numérotées, côté utilisateur, selon l’ordre suivant :

TOUCHE0 TOUCHE2 TOUCHE4 TOUCHE6 ETC.


TOUCHE1 TOUCHE3 TOUCHE5 TOUCHE7 ETC.

Remarquez dès lors les pontages en noir entre le « X » de la touche0 (en haut à droite) et
celui de la touche4 (en haut à gauche). C’est logique, elles utilisent toutes les deux « X0 ».
Idem pour le pontage entre la touche1 et la touche5, qui utilisent « X1 ».

Les Y0 des 4 premières touches et les 2 Y1 des 2 dernières sont directement reliés via le
circuit imprimé des touches sensitives.

22
5. Connexion de l’ensemble

5.1 Connexion des touches

Nous venons de voir nos touches sensitives, et les deux câbles en nappe qui partent de
celles-ci. Je vous ai expliqué comment les touches étaient numérotées (vu du côté utilisateur).
Partant de là, vous savez que vous avez un câble pour connecter les « Y » des matrices, et un
autre pour les « X ».

Ca correspond à relier, pour un circuit 6 touches :

X0 : X de la touche 0 + X de la touche 4 (pontage en fil noir sur la photo)


X1 : X de la touche 1 + X de la touche 5 (pontage en fil noir sur la photo)
X2 : X de la touche 2
X3 : X de la touche 3

Y0 : Y du groupe de touches « 0+1+2+3 » (déjà reliés sur le circuit imprimé)


Y1 : Y du groupe de touches « 4+5 » (déjà reliés sur le circuit imprimé).

Evidemment, si vous utilisez plus ou moins de touches, adaptez en conséquence. Par


exemple, pour un circuit 14 touches, X0 sera relié à X de la touche 0 + X de la touche 4 + X
de la touche 8 + X de la touche 12, il vous faudra donc plus de pontages.

Au niveau du QT, les matrices sont repérées en clair sur le circuit imprimé. Il vous suffit
de souder, et d’ajouter un fil de masse de part et d’autre. Pour le câble « Y », j’ai soudé les
masses côté composants, c’était plus simple. Pour les « X », j’ai soudé côté plan de masse.

Voici ce que ça donne :

On voit très bien les deux câbles en nappe. La longueur doit être suffisante pour pouvoir
placer proprement le circuit à touches sensitives devant le circuit QT, à quelques cm de
distance. La photo vous donne une bonne idée de la longueur à utiliser.

Le câble du haut est évidemment le câble des « Y », notez les 2 fils utilisés, et les deux
extrémités soudées à la masse du circuit (d’un seul côté). Celui du bas est forcément celui des
« X ». On aperçoit très bien du reste la mention « X0 » en dessous du fil situé à côté du fil
rouge.

23
De nouveau, les deux fils extrêmes supplémentaires sont reliés à la masse. Dans ce cas-ci,
on distingue fort bien qu’ils vont sous le circuit, ce sont en fait les deux fils que vous voyez
dans la photo du côté plan de masse du QT.

5.2 Connexion des leds témoins

Les leds témoins sont optionnelles. Cependant, n’oubliez pas que lorsque vous entrez dans
une pièce plongée dans le noir, vous cherchez habituellement à tâtons l’emplacement de votre
interrupteur. Avec des touches sensitives, si vous faites ça, vous allez enclenchez toutes sortes
d’actions en effleurant vos touches.

Il faut donc que l’emplacement des touches soient visibles. C’est une des deux fonctions
de nos leds témoins, l’autre étant la signalisation des événements. Pour effectuer cette
distinction, nos leds sont capables de s’allumer sur deux niveaux :

- Un niveau faible luminosité pour indiquer l’emplacement des touches lorsqu’il fait noir
- Un niveau haute luminosité pour indiquer une quelconque fonction en service

Nous verrons tout ça dans l’étude du chapitre correspondant de Domogest. Pour l’instant,
concentrons-nous sur la réalisation pratique.

Les leds seront des 3mm au maximum. Evitez de mettre des leds plus grosses, car elles
perturberaient le fonctionnement des touches sensitives (trop près des pistes). Les essais sur
des leds 3mm m’ont permis de constater qu’il n’y avait pas besoin de mesures de découplages
supplémentaires (condensateurs), comme c’est expliqué dans les différents datasheets.

Les premiers essais que j’avais faits étaient à base de leds rouges rondes, mais à bout plat :
très pratique pour placer « à ras » du circuit à touches sensitives.

C’était compter sans mon épouse, qui m’a affublé d’un « Quoi ? Ce n’est même pas des
lampes bleues ? » dépité. Bref, vous connaissez les femmes, elles ont toujours le dernier mot,
et j’ai donc acheté des leds bleues.

Comme il y en a des tas, j’ai du faire des essais pour évaluer couleur, luminosité, …et
prix. Ma conclusion lors des tests (validés par mon épouse), est que plus la led est belle et
lumineuse, plus elle est chère.

Or, j’avais près d’une vingtaine de cartes à faire, ce qui me donnait près de 120 leds
bleues à acheter. Il a donc fallu faire des compromis.

La plus belle et plus lumineuse des leds bleues à prix abordable que j’ai trouvée est celle
de référence : 3526896 chez Farnell® Belgique. A 1,46 E HTVA le bout, ça m’a coûté tout
de même la coquette somme de 212 euros TVAC pour mes 120 leds. Un budget conséquent
par rapport au reste. Mais bon, apparemment le bleu aide à faire passer la note finale du
budget domotique.

Après avoir testé tout ça, j’ai eu droit cette fois à un commentaire admiratif. Allez
comprendre.

24
L’inconvénient, c’est que ces leds bleues ont un bout arrondi, c’est moins aisé pour les
coller à leur place. J’ai donc commencé par leur construire un petit support. Pour ce faire, j’ai
découpé de petits bouts dans une plaque de plastique épaisse dont je m’étais servi pour isoler
mon armoire électrique (plastique orange anti-feu). J’ai percé dans ces petits carrés des trous
du diamètre des leds.

Ensuite, j’ai collé chaque petit support au pistolet à colle en face des trous prévus pour les
leds sur le circuit des touches sensitives. J’ai aligné en passant chaque fois une queue de
mèche à travers les deux trous (attention de ne pas coller la mèche). Voici ce que ça donne :

Une fois réalisé ceci, il est beaucoup plus facile de maintenir les leds en place, et
parfaitement droites. Je les ai alors également collées au pistolet à colle. Ne reste alors qu’à
souder les fils de liaison. J’ai pour ma part utilisé des connecteurs 4 fils avec les fils fournis
déjà montés, comme ceux que j’avais utilisé pour relier les connecteurs CAN de mes cartes.

Les connecteurs s’inséreront donc directement dans les barrettes « Leds » de la carte Pic.
Côté fils, il suffit de relier les « X » et les « Y » exactement comme pour les touches
sensitives. La led de la touche 0 se connecte à X0 et Y0 des connecteurs leds de la carte pic,
etc. Notez que la pin « 0 » des connecteurs est repérée « 1 » sur le circuit imprimé, désolé.

Les anodes des leds sont les bornes « X », les cathodes sont évidemment dans ce cas les
« Y ». Pour 6 leds, il faut donc relier X0 sur l’anode de la led 0 et de la led 4. Idem pour X1
qui sera connecté à l’anode de la led 1 et de la led 5. Bref, comme pour les touches sensitives.

Les 4 cathodes des leds 0 à 3 seront reliées ensemble, et à la sortie Y0 de la carte pic. Les
cathodes des leds 4 et 5 seront reliées ensemble et à la sortie Y1 de la carte pic. Bref, un
montage en matrice classique. Voici ce que ça donne :

Vous distinguez nettement les leds collées, ainsi que les cathodes reliées ensemble par
pliage des pattes. Notez les couleurs des fils, que vous retrouverez côté carte PIC®. Attention,
il faut que l’épaisseur de l’ensemble soit faible, afin qu’une fois tout en place, les pattes des

25
leds n’entrent pas en court-circuit avec le circuit QT (et surtout le quartz). J’ai donc plié les
pattes à ras des leds.

Soudez ensuite, si vous le souhaitez, le mini-buzzer chargé de faire les « clics » à un


connecteur à 2 fils. Laissez les fils assez long pour pouvoir mettre le buzzer où vous voulez
dans le boîtier.

Ne reste ensuite qu’à brancher les connecteurs des leds et du buzzer côté carte pic. Voici
ce que ça donne :

Au dessus à gauche se trouve le connecteur « X » des leds, avec les 4 fils qui vont aux
anodes. Le fils du dessus sur ce connecteur est la sortie « X0 ». « X3 » est le fil inférieur
(jaune).

En-dessous à gauche, vous avez le connecteur «Y » des leds. « Y0 » se trouve au-dessus.


Notez que j’ai coupé Y2 et Y3, qui sont inutilés dans le cas de l’utilisation de seulement 6
touches sensitives. J’ai également dans ce cas fait l’économie des deux transistors
correspondants, d’où la présence des 6 trous inutiliés sur le circuit imprimé.

Au dessus du pic, vous voyez le connecteur du buzzer, avec le positif à gauche (rouge). A
ce stade, vous avez terminé votre montage électronique. Si vous programmez le pic et que
vous mettez sous tension, vous devrez voir s’allumer les leds en demi-luminosité, car la
fonction « témoin » est en service par défaut.

Pour plus d’essais, il y aura des manipulations à effectuer. Vous devrez lire le mode
d’emploi de Domogest, au chapitre consacré aux touches sensitives pour tester toutes les
fonctions de vos cartes.

5.3 Connexion entre carte Pic® et carte QT

Cette connexion est on ne peut plus simple. Elle consiste à insérer la carte QT dans la
carte Pic® en utilisant les connecteurs à barrettes. Aucune erreur n’est possible, il n’y a
qu’une seule façon de procéder.

Notez que la largeur de la carte Pic® est identique à la longueur de la carte QT. Il vous
faudra ajuster vos circuits au plus près niveau dimensions, pour qu’ils entrent dans le blochet
plus tard.

26
Insérez vos deux cartes ensemble, voici ce que ça donne (les leds ne sont pas reliées) :

Vous voyez très bien sur la photo le montage en sandwich des deux cartes. Les
connecteurs montés en « L » à l’avant-plan permettent un bon montage mécanique.

Il ne vous reste qu’à reconnecter vos leds, et à connecter le buzzer sur le connecteur
prévu, le côté positif sur la pin 1 (vers le côté de la pin 1 du pic).

Utilisez pour le buzzer soit un bout de fil muni d’un connecteur, soit d’un fil soudé
directement sur les barrettes, soit le buzzer soudé directement sur le circuit.

27
Notes :

28
6. Paramétrage du fichier source

6.1 Paramètres par défaut

Si vous utilisez le fichier « .asm» tel que fourni dans le répertoire « fichiers », votre carte
travaillera avec les caractéristiques suivantes :

- Type de pic : 18F2680


- N° de cible de la carte : 254
- Nombre de fonctions gérées : 16
- Nombre d’entrées physiquement présentes : 6
- Durée minimale de prise en compte d’un maintien : 500ms
- Etat des portes OR au démarrage : Au repos : 4 entrées à 0, sortie à 0
- Etat des portes AND au démarrage :
- Etat des portes NAND au démarrage : Au repos : 4 entrées à 0, sortie à 1
- Etat des portes NOR au démarrage : Au repos : 4 entrées à 0, sortie à 1
- Etat des timers lents : Au repos : valeur 0, stoppés
- Etat des timers rapides : Au repos : valeur 0, stoppés
- Etat des décompteurs : Au repos : valeur 0
- Mode de fonctionnement : décentralisé

6.2 Modification des paramètres généraux

Si ces paramètres par défaut ne vous conviennent pas, vous avez la possibilité d’éditer le
fichier source, et de réassembler pour obtenir un nouveau fichier « .hex ». Le source est prévu
pour vous faciliter la vie à ce niveau.

En effet, selon mon habitude, aucune intervention n’est nécessaire dans le programme,
tout se modifie via des déclarations de constantes. Voyons dans l’ordre :

TYPEPIC EQU 0x07 ; type de pic


; 0x05 : 18F2580
; 0x07 : 18F2680

Vous pouvez ici utiliser un pic d’un autre type que le 18F2680 prévu par défaut (voir le
document « présentation »). Les deux modèles proposés sont les deux que j’ai effectivement
pris en compte. Pour d’autres modèles, à vous de faire les vérifications nécessaires.

L’utilisation d’un pic de type 18F2580 a comme unique conséquence la diminution de la


taille du buffer de réception CAN.

DESTI EQU 0x61 ; type de destinataire = touches sensitives


; non modifiable après programmation

Le type de destinataire est fixé à 0x61. Le modifier impose d’effectuer les modifications
sans le source du logiciel Domogest. Evitez cette opération qui ne vous amènerait de toutes
façons aucun bénéfice. Ces valeurs sont en outre étudiées pour permettre la meilleure
répartition des priorités de trames possible.

29
CIBLEDEF EQU .254 ; N° de la carte
; modifiable via Domogest

Le numéro de la carte (cible) est fixé à 254. Vous pouvez le modifier directement ici, ou,
plus aisément, effectuer cette modification via Domogest une fois la carte en place.

Attention, si vous devez placer plusieurs cartes du même type, n’oubliez pas que 2 cartes
d’un même type ne peuvent pas avoir le même numéro de cible. Dans ce cas, mettez les cartes
sous tension une par une et procédez à chaque fois à la modification du numéro de cible via
Domogest, ou chargez dans chaque pic un fichier assemblé avec un numéro de cible différent
à chaque fois. Vous avez le choix de la méthode.

MODEDEF EQU 0x04 ; mode de fonctionnement par défaut


; b0 : mode normal(0) ou mode bootloader(1)
; toujours laisser à 0 (géré en interne)
; b1 : centralisation (0=décentralisé)
; b2 : Fonctionnement de la led CAN (1 = en service)
; b3/b3 : réservés pour utilisation future
; b4/b7 : spécifiques à certaines cartes
; modifiable via Domogest

Ne modifiez éventuellement que les bits autorisés explicitement. Il est plus simple
cependant de modifier le fonctionnement via Domogest, excepté si vous avez de bonnes
raisons de démarrer votre carte la toute première fois dans un mode particulier.

NBGERE EQU .16 ; nombre de groupes gérés par la carte


; indique le nombre d'entrées virtuelles gérées
; ainsi que le nombre de fonctions gérées
; en relation avec la taille de l'eeprom

C’est le nombre maximal de groupes gérés par la carte. Ce nombre induit le type
d’eeprom présente, comme expliqué dans les généralités. Pour chaque groupe, vous disposez
d’une entrée, d’une porte de chaque type, d’un décompteur, et d’un timer de chaque type. Le
nombre de groupe doit au minimum être égal au nombre d’entrées utilisées sur la carte, mais
vous pouvez avoir plus de groupes que d’entrées réelles (ce qui vous permet d’avoir plus de
portes logiques, de timers, et de décompteurs).

NBBP EQU .6 ; nombre de BP physiquement câblés


; non utilisé en interne, ne sert que pour faciliter
; la gestion dans Domogest
; le nombre est renvoyé dans D6 de CC_CARTE
; en interne, il y a autant de NBBP que de NBGERE

Il s’agit ici du nombre de touches sensitives réellement utilisées. Ce nombre doit être
inférieur ou égal au nombre de groupes défini par NBGERE. Ce nombre agit uniquement au
niveau de Domogest, afin d’éviter l’affichage d’entrées inutile sur l’écran de contrôle.

NBBP et NBGERE sont modifiables à partir de Domogest une fois la carte en service.

DURMAINT EQU .25 ; durée min pour détection d'un maintien


; Au dessus de DURMAINT, on détecte
; un maintien.

30
Il s’agit de la durée à partir de laquelle on considère que l’utilisateur a maintenu
volontairement le bouton-poussoir, en multiples de 20ms. La valeur de 25 correspond donc à
500ms.

La durée minimal d’une action valide est fixée par le processus de communication avec le
QT60161B et n’est pas éditable.

Ce paramètre induit le fonctionnement suivant :

Touche détectée durant moins de 500ms, puis OFF : Détection d’une impulsion (Pulse)
Touche pressée depuis plus de 500ms : Détection d’un début de maintien (Maintien ON)
Touche relâchée après un maintien : Détection d’une fin de maintien (Maintien OFF)

Vous constatez dès lors que chaque touche génère 3 types d’actions différentes.

DURLEDV EQU 0 ; durée d'allumage des leds témoins de 0 à 4


; Augmenter la valeur = augmenter luminosité

Ce paramètre permet de régler la luminosité des leds en mode veilleuse. J’ai du ajouter ce
paramètre car les leds bleues en ma possession étaient tellement lumineuses que ça en
devenait génant en mode veilleuse. La valeur 0 implique l’éclairage le plus faible possible
avec les résistances que vous avez choisies.

Vous pouvez augmenter cette valeur, de 0 à 4 inclus. Comme la luminosité en mode


témoins n’est pas modifiée, plus vous augmentez DURELEDV, plus vos leds en mode
veilleuse seront lumineuses, mais plus faible sera l’écart de luminosité avec une led allumée
en mode témoin. A vous de faire des essais.

Si le besoin s’en fait sentir, j’ajouterai une commande CAN pour modifier en temps réel
les luminosités, mais, pour l’instant le choix est figé dans le programme une fois celui-ci
assemblé.

TIMELED EQU .20 ; temps d'allumage led trafic Can

Ce temps influence de façon non précise le temps d’allumage de la led de trafic CAN. Il
me semble inutile de modifier ce paramètre, mais vous pouvez le faire sans problème. Si vous
allongez le temps, la led restera allumée plus longtemps sur chaque trame CAN.

VER1 equ 0x03 ; version software = 3.0.0


VER2 equ 0x00 ; modifiable par bootloader
VER3 equ 0x00

La révision software est indiquée ici. Si vous faites vos propres modifications, évitez
d’utiliser des numéros qui risquent de prêter confusion avec les miens, dans votre propre
intérêt.

Je déconseille fortement la modification d’autres paramètres que ceux que je cite, sauf si
vous êtes certains de ce que vous faites. Et si vous le faites, ne m’appelez pas au secours parce
que ça ne fonctionne plus correctement.

31
6.3 Paramétrage des touches et fonctions

Tous les paramètres utiles sont éditables directement à partir de Domogest. Je vous
déconseille donc, sauf pour des besoins spécifiques, d’effectuer des modifications à ce niveau
dans le fichier source.

Si, néanmoins vous souhaitez le faire, vous trouverez toutes les informations utiles dans le
document joint avec la carte 16 entrées, les paramètres étant identiques.

6.4 Autres paramètres et mémoire eeprom

La carte à touches sensitives est en réalité une carte 16 entrée particulière. Je vous renvoie
donc à la documentation de cette carte pour tous les renseignements non spécifiquement liés
aux fonctions sensitives.

Le contenu de la mémoire externe eeprom est également exactement identique pour les
deux cartes, je ne recommence pas toutes les explications.

32
7. Installation sur site

7.1 Configuration

Une fois votre carte dûment testée et opérationnelle, vous devrez l’installer dans votre
habitation. L’utilisation de touches sensitives de ce type impose deux contraintes au niveau
des communications :

- La liaison entre le QT et les touches sensitives ne peut pas excéder quelques centimètres.
- La liaison entre Domocan et le QT nécessite une liaison SPI ou série asynchrone.

Partant de là, il y avait deux choix pour les communications :

- Placer les pics à côté des QT, et se servir du bus Domocan pour véhiculer les informations
- Placer les pics à distance, et ajouter un second bus pour communiquer entre les QT et les
pics.

La seconde solution était évidemment inadmissible, ce qui explique que j’ai choisi de
placer carte pic et carte QT ensemble, et même montées solidairement.

Ceci implique que ce bloc « sensitif » devra être monté à chaque endroit où il sera utile, il
s’agit donc des cartes délocalisées, et ça implique que le bus Can doit faire le tour de votre
habitation (c’est prévu pour). En réalité, vous aurez une carte sensitive à chaque endroit où,
dans une installation classique, vous auriez un ou plusieurs interrupteurs.

Evidemment, si vous avez des endroits « stratégiques », vous avez intérêt à regrouper des
fonctions au sein d’une même carte, plutôt que d’utiliser deux cartes à quelques centimètres
d’intervalle.

Le nombre de touches peut varier de 1 à 16 par carte. J’ai choisi pour ma part d’utiliser
des cartes à 6 touches partout dans mon habitation, sauf au centre de mon espace salon, où j’ai
utilisé une carte à 14 touches (chez moi, salon, salle-à-manger, et cuisine forment un
ensemble ouvert).

6 touches, ça correspond à 6 interrupteurs. Ca peut sembler beaucoup, mais ce serait


oublier que vous disposez de nombreuses possibilités (pilotage des prises, des éclairages, de
lampes de chevets branchées dans les prises, de mémoires d’ambiance, etc.).

7.2 Matériel

Le grand défit auquel j’ai été confronté pour ce projet n’a pas été, contrairement à ce que
vous pourriez penser, la réalisation électronique et informatique. A ce niveau, je n’avais pas
de craintes, il « suffisait de » travailler en étudiant les datasheets.

Non, le principal défit était en fait l’intégration esthétique au bâtiment. J’ai donc posé mon
cahier des charges. Pour que ce projet puisse être placé dans le bâtiment, il fallait :

- Que l’esthétique soit irréprochable, pour ne pas obtenir un effet « bricolage ».


- Que le coût soit minimal

33
- Que la méthode soit reproductible par tout le monde (je ne pouvais pas vous laisser
tomber en cours de route)

La première contrainte exclut toute fabrication artisanale personnelle du boîtier, et impose


le recours à des ensembles construits par des professionnels

Renseignements pris, construire sur mesure des faces avant et autres boîtiers
d’encastrement est une entreprise très onéreuse.

La troisième contrainte m’a empêcher de demander à un ami professionnel de réaliser


mécaniquement ma propre application, malgré qu’il me l’ait proposé (je te remercie, Roger).
A quoi bon vous proposer une réalisation si je suis le seul à pouvoir la finaliser ?

Bref, de toutes ces contraintes, il m’est apparu comme une évidence que je devais trouver
dans le commerce du matériel destiné à un autre usage, et que je pourrais détourner à mon
profit. J’ai donc commencé par écumer les salons de l’habitation, sans grand succès.

Mon but était de remplacer des interrupteurs classiques encastrés. Mon idée a alors été de
voir si je ne pouvais pas utiliser des boîtiers d’interrupteurs classiques pour les transformer en
touches sensitives.

Le problème, c’est que ces interrupteurs (Legrand, Nikko, etc.) sont constitués de 3
parties :

- Le blochet (ou boîtier d’encastrement) dans lequel arrivent les câbles et sont encastrés les
interrupteurs
- La partie mécanique proprement dite (l’interrupteur)
- Le cache de finition.

Comme je n’avais pas besoin de la partie mécanique, puisque je devais la remplacer par
mes touches sensitives, il me fallait donc utiliser le cache et le blochet. Le gros problème,
c’est que dans toutes ces marques « classiques », le cache tient grâce à la partie mécanique,
les griffes de fixation faisant partie intégrante du mécanisme.

J’ai donc tenté d’imaginer plusieurs systèmes de fixation, mais aucun n’était à la fois
fiable, esthétique, et simple.

J’ai poursuivi mes recherches, et j’ai alors trouvé la solution chez un grand constructeur
d’interrupteurs « design », à savoir « BTCINO ». En effet, chez ce constructeur, le principe
est exactement l’opposé. Chaque interrupteur se compose de plusieurs parties, à savoir :

- Le blochet (spécifique)
- Un cadre de fixation destiné à fixer les interrupteurs
- Les interrupteurs
- Un cache.

L’immense avantage, c’est que le cadre est vissé directement sur le blochet, et le cache est
clipsé sur le cadre. Les interrupteurs sont clipsés sur le cadre, et n’assurent donc aucun rôle de
fixation.

34
Bref, je pouvais remplacer les interrupteurs par des touches sensitives sans perdre la
fixation mécanique de l’ensemble.

Chez ce constructeur, de plus, on trouve plusieurs gammes permettant d’intégrer le look à


ses désirs, du moderne au classique. J’ai choisi pour ma part la gamme :

- Btcino Light (en blanc) pour l’étage


- Btcino Light Tech (en alu véritable) pour le rez de chaussée.

Vous pouvez également utiliser tout modèle qui vous arrange.

Le second avantage, c’est que chez Btcino, tout est disponible en différentes largeurs,
comptés sous forme de « modules ». La largeur d’un interrupteur standard ou d’une prise est
de 2 modules, ce qui permet d’utiliser des interrupteurs de demi-largeur (une visite chez un
vendeur Btcino vous montrera de quoi je parle).

Bref, chaque module faisant +- 2.2cm de large sur 4.4cm de haut, j’ai décidé que par
module j’intégrerai 2 touches sensitives superposées verticalement.

Les tailles disponibles sont les suivantes :

- 2 modules, soit 4 touches sensitives


- 3 modules, soit 6 touches sensitives
- 4 modules, soit 8 touches sensitives
- 7 modules, soit 14 touches sensitives

J’ai choisi d’utiliser principalement des 3 modules, soit 6 touches sensitives. Ceci donne
un look plus moderne que si j’avais utilisé le traditionnel 2 modules « carré ». Mais, je le
répéte, tout est possible, il vous suffit d’adapter.

Je vais maintenant vous montrer à quoi ressemblent ces éléments. Voici un blochet 4
modules :

35
C’est un blochet qui a fondu, ce qui explique son côté « voilé » sur le dessous. Je n’en
avais plus d’autre à vous montrer. Ceci est un 4 modules, on voit nettement qu’il peut contenir
2 interrupteurs classiques. Je vous rappelle que j’ai utilisé des 3 modules.

Notez les deux parties métalliques, de part et d’autre, qui permettent de visser le cadre
directement sur le blochet. Pour fixer votre carte pic sur le blochet, vous mettrez des vis
passées par l’arrière, bloquées chacune avec un écrou. Vous enfilerez la carte sur les vis. Je
vous montrerai plus loin une photo de l’ensemble.

Ensuite, on trouve le cadre proprement dit, voici un 3 modules :

Vous voyez nettement les vis de fixation. En regardant au centre du cadre, vous voyez les
3 encoches au dessus et en dessous destinées à recevoir les 3 modules. Un interrupteur
classique ou une prise occupe 2 encoches (modules), un demi-interrupteur, une prise de
télédistribution, une prise RJ45 etc. occupe 1 module. Ceci vous permet toutes sortes de
combinaisons.

Evidemment, pour ma part, j’ai utilisé du Btcino pour toute mon habitation (prises etc) et
pas seulement pour mes touches sensitives.

Ensuite, nous trouvons le cache de finition. En voici deux exemplaires. Tout d’abord le
light :

36
Qui est, comme je vous l’ai dit, en plastique blanc.

Ensuite, le Light-Tech :

Qui est, lui, en aluminium. Attention, le prix entre les deux versions n’est pas vraiment
identique, c’est le moins qu’on puisse dire. Comptez de l’ordre de 15 euros pour un cache
Light-Tech. Ceci est du reste normal, si vous avez en main cette version, vous comprendez
pourquoi. C’est la raison pour laquelle personnellement je n’ai mis cette version qu’au rez-de-
chaussée. A vous de voir.

Si vous préférez un style plus « classique », regardez le catalogue Btcino, vous y trouverez
votre bonheur.

37
Attention : Très important : Si vous utilisez un cache « Light-tech », il est impératif
de raccorder le cadre à la masse de la carte QT. Dans ce cas, vous verrez 6 fentes au
verso du cache. Introduisez de la pâte à décaper dans l’une d’elles, et soudez un fil à
l’aide d’une fine panne à t° maximale. Reliez ensuite ce fil au plan de masse de la carte
QT.

Si vous ne raccordez pas le cadre version aluminium à la masse, il se comportera comme


une grande touche sensitive, ce qui n’est pas pratique à l’usage.

Si vous avez tout compris, nos touches sensitives vont venir au centre de ce cache,
protégées par un verre.

J’ai fait découper les carreaux dans un Brico. La précision n’est pas toujours parfaite,
faites-en donc découper quelques-uns de plus. Ca m’a coûté 5 euros pour les vitres de
l’ensemble des touches sensitives de mon bâtiment, ce qui est ridicule au regard du travail que
ça nécessite (choisissez un employé compréhensif).

La vitre devra avoir exactement la même taille que la carte des touches sensitives, soit,
dans mon cas, 44mm (fixe) X 66 mm (22mm par module)

7.2 Préparation du blochet

Nous en avons déjà parlé, il vous faut encastrer le blochet. Mais, avant, il faudra prévoir
deux vis fixées dans le fond du blochet, afin de pouvoir par la suite fixer votre carte pic dans
le fond du blochet. Notez que sans ces vis, le cadre maintien le circuit éloigné des touches
sensitives, il n’y a donc pas de réel problème si vous n’en mettez pas. Du reste, j’ai fini par
renoncer à les utiliser.

Ensuite, vous faites transiter votre câble Domocan par chaque blochet.

J’ai choisi pour ma part d’utiliser un câble ethernet 4 * 2 fils torsadés dont je n’utilise
qu’une seule paire. J’ai accompagné ce câble d’un second, un simple côte à côte de
2*0.5mm², qui, lui, sera chargé d’alimenter les cartes.

C’est un peu du luxe, mais bon, on ne fait cette installation qu’une fois, autant faire nickel.
N’oubliez pas de plus que l’alimentation doit être capable d’alimenter les leds de toutes vos
cartes, on est vite à plusieurs centaines de mA.

Par convention, j’ai décidé que j’utiliserai la paire blanc/bleu du câble ethernet pour
véhiculer le signal CAN, de la façon suivante :

- Blanc : CanH
- Bleu : CanL

Les deux autres fils du connecteur étant les fils d’alimentation, ils seront reliés à l’autre
câble.

Dans chaque blochet, sauf le premier et le dernier, vous avez donc :

38
- Un câble ethernet qui arrive du blochet précédent
- Un câble ethernet qui part vers le blochet suivant
- Un câble d’alimentation qui arrive du blochet précédent
- Un câble d’ethernet qui part vers le blochet suivant.

N’oubliez pas que votre câble CAN doit être pourvu d’une résistance de terminaison de
120 ohms, entre CANL et CANH, à chaque extrémité. Dans mon cas, le câble démarre de
mon armoire contenant mes cartes centralisées (gradateurs, horloge, carte d’entrées), et se
termine dans un blochet de carte sensitive.

Si vous utilisez comme moi un câble ethernet faradisé, n’oubliez pas de relier ensemble,
dans chaque blochet, les masses des deux câbles, afin d’éviter une rupture de continuité du
blindage.

Equipez chaque blochet d’un connecteur CAN. Une fois le blochet encastré et le
connecteur monté, ça devrait ressembler à ceci :

Vous distinguez nettement les deux vis destinées à fixer la carte. Le blochet est encastré à
raz du mur. Remarquez à gauche les deux câbles d’arrivée (alimentation et CAN), et à droite
les deux câbles de départ.

Le connecteur CAN est très visible à l’avant-plan. Je vous conseille de placer des repères
(marqueur de couleur) pour ne pas intervertir vos connecteurs et/ou leur sens de branchement.

39
7.3 Montage mécanique des touches

Nous allons maintenant procéder à l’assemblage de vos touches sensitives. La première


opération consiste à fixer la carte à Pic® sur les deux vis du fond du blochet. Ceci ne devrait
poser aucun problème. N’oubliez pas de brancher votre connecteur Can.

Ensuite, vous faites passer votre carte de touches sensitives à travers le cadre, et vous
placez celui-ci à ras dans le tout petit rebord prévu d’origine. Notez que si vous utilisez du
circuit imprimé de 0.8mm, votre circuit affleurera tout juste le cadre, c’est l’idéal.

Remarquez que le montage mécanique est on ne peut plus simple, une fois trouvé les bons
composants. Si vous utilisez une plaque de finition Btcino® « Light-Tech® » alu, il y aura
évidemment un fil qui sortira d’en-dessous des touches sensitives (dans les fentes des
modules), et qui reliera la plaque de finition à la masse du QT. Dans ce cas, évidemment, à
cette étape du montage, la plaque pendra sous le cadre, attachée au fil de masse.

Souvenez-vous également que pour utiliser une plaque « Light-Tech® » aluminium, vous
devrez peindre votre carte à touches sensitives en couleur grise (évitez les couleurs contenant
du métal). Ici, elle est en blanc pour correspondre à une version en plastique blanc.

7.4 La vitre

Nous allons maintenant garnir la plaque de finition de sa vitre. Si votre vitre est coupée
correctement, elle glisse juste dans la découpe de la plaque de finition Btcino®.

Au dos de la vitre, nous allons coller un adhésif transparent, genre de celui utilisé pour
couvrir les cahiers scolaires.

Dégraissez correctement votre vitre, collez dessus l’adhésif, et glissez le tout par l’arrière
de votre plaque de finition.

Notez que l’adhésif n’est soumis à aucune contrainte mécanique. Si vous poussez sur le
carreau une fois en place, vous forcez sur le circuit de touches sensitives qui se trouvera juste
derrière. L’adhésif ne sert en fait qu’à empêcher le carreau de tomber vers l’extérieur. Si vous

40
trouvez une autre méthode de fixation, vous pouvez me la communiquer, j’en ferais profiter
tout le monde. Après 2 ans d’utilisation, ce mode de fixation ne m’a encore posé aucun
problème (et j’ai des enfants).

Côté finition, le carreau arrive maintenant à fleur de la plaque de finition. Je ne vous le


montre pas, parce qu’un verre transparent, ce n’est pas facile à photographier.

7.5 Le calque

Evidemment, on ne peut pas en rester là niveau finition, ce ne serait pas élégant. De plus,
il faut bien pouvoir insérer des symboles sur les touches sensitives.

Après bien des expériences et essais, j’ai déterminé que l’utilisation de simples feuilles de
papier calque à dessin était la solution la plus simple et la plus économique. De plus, il
s’imprime facilement à l’aide d’une simple imprimante à jet d’encre. Avec une laser, il faut 2
épaisseurs, un calque à dessin non imprimé (pas moyen d’imprimer sur du calque avec une
laser), et un transparent pour laser contenant les symboles.

Le second avantage du papier calque, est qu’il est translucide, mais pas transparent. Il
cache donc les éventuels petits défauts de la carte à touches sensitives, tout en laissant
transparaître la couleur de fond. C’est équivalent à utiliser un verre translucide, sauf que les
symboles, eux, restent parfaitement nets.

La réalisation du calque dépend de vos dons en dessin. Moi, je n’en ai aucun. J’ai
cependant réussi à obtenir quelque chose de propre. J’ai fait pour cela des gabarits pour 6 et
14 touches, et des symboles pour toutes sortes de touches. Il me suffit maintenant de combiner
les touches ensemble pour obtenir un ensemble cohérent. Je vous joints des exemples dans le
répertoire « Touches » qui fait partie du fichier compacté téléchargé.

Voici un exemple pour la chambre d’un de mes enfants :

41
La zone qui sera visible est au centre. Le calque est plus grand pour pouvoir être aisément
fixé sur la plaque de finition (scotch, colle etc). La fixation n’est en fait utile que le temps de
clipser la plaque de finition, après quoi le calque est maintenu automatiquement en place, car
écrasé entre la vitre et le circuit imprimé des touches.

Les 4 rectangles dans les coins sont les découpes nécessaires au passage des encoches
d’enclipsage. Ca permet de positionner de façon très précise le calque.

Les leds bleues se voient parfaitement à travers le calque, nul besoin de prévoir de
découpes. Evitez cependant de colorer le calque en noir foncé à l’endroit précis où se trouve
une led. En gris (comme pour la lampe de chevet dans l’exemple précédent), la transparence
reste parfaite.

Insérez votre calque par l’arrière, contre la vitre. Maintenez éventuellement


momentanément en place à l’aide de petits bouts de scotch, une fois le tout en place, le calque
sera maintenu pressé entre le circuit des touches et la vitre.

7.6 Montage final

Il ne reste plus maintenant qu’à clipser votre face avant équipée sur le cadre, ce qui se fait
simplement en appuyant en face des encoches.

Pour retirer la plaque de finition par la suite, il suffit d’insérer un tournevis sous les petits
ergos situés à gauche et à droite de la dite plaque, au milieu de la hauteur. Une simple rotation
déclipse les plaques de finition (agir avec douceur).

42
Voici le résultat fini :

Sur la photo, le calque est un peu décalé à gauche, je ne l’avais pas vu au moment de faire
la photo sur mon bureau, ce qui explique que les leds soient mal centrées.

Sur site, je l’ai positionné correctement, voici ce que ça donne, leds allumées.

43
Notez la luminosité incroyable de ces leds, à travers le calque, malgré qu’en mode
veilleuse au moment de cet essais, elles n’étaient qu’à 25% de la luminosité possible.

N’oubliez pas que les valeurs sont ajustables dans le logiciel, et que vous pouvez
également modifier la valeur des résistances en série selon vos désirs et selon les leds
utilisées.

44
8. Les communications

8.1 listes des commandes gérées

Comme toutes les cartes Domocan, la carte « sensitive » reconnaît l’intégralité des
commandes communes. Je vous renvoie au document « présentation » pour obtenir la liste et
le détail de toutes ces commandes.

Les erreurs générales susceptibles d’être émises par cette carte se trouvent également dans
ce document.

La carte à touches sensitives est aussi une carte 16 entrées améliorée, il est donc logique
qu’elle reconnaisse les commandes gérées par la dite carte. Evidemment, d’autres commandes
sont adjointes pour permettre de gérer les spécificités liées à l’utilisation d’un second
microcontrôleur.

Je rappelle que cette carte répond au n° de destinataire 0x61, reprise symboliquement dans
Domogest par la constante « Dest_InSens »

Le tableau donne plusieurs indications :

La colonne « Nom » donne le nom symbolique de la commande. Par convention, toutes


les commandes spécifiques commencent par « CMD_ ». Pour rappel, les commandes
communes commencent par « CC_ ».

La colonne « n° » indique à quel numéro de commande correspond le nom symbolique.


Pour rappel, les commandes peuvent aller de 1 à 31 inclus, le n° 0 étant réservé pour les
commandes communes. Les numéros sont donnés en décimal.

La colonne « D » donne la direction de la commande : Un « R » indique que la carte cible


reçoit la commande, alors qu’un « E » indique que la commande est émise par la carte cible.

La colonne « B » indique si la commande accepte ou non le mode broadcast. « O »


indique le mode broadcast, « N » que le mode est refusé. Le mode broadcast n’a évidemment
de sens que pour les commandes reçues par les cartes. Une carte n’émet jamais une réponse
en mode broadcast.

La colonne « Rôle » décrit le rôle de la commande en quelques mots.

45
Tableau des commandes spécifiques à la carte à touches sensitives
Nom N° D B Rôle
Cmd_WStatF 1 R N Ecrire le statut d’une fonction en RAM
Cmd_RStatF 2 R N Lire le statut d’une fonction en RAM
Cmd_WStatFE 3 R N Ecrire le statut d’une fonction en EEPROM
Cmd_RStatFE 4 R N Lire le statut d’une fonction en EEPROM
Cmd_RunTimer 5 R N Démarrer un timer
Cmd_StopTimer 6 R N Stopper un timer
Cmd_RMdTimer 7 R N Demander le mode d’un timer
Cmd_LoadTD 8 R N Recharger un timer ou un décompteur
Cmd_AddValTD 9 R N Ajouter une valeur à un timer ou un décompteur
Cmd_CAct 10 R N Effacer les 16 trames d’une action
Cmd_WAct 11 R N Ecrire une partie d’une action
Cmd_RAct 12 R N Lire une trame d’une action
Cmd_WNameInSens 13 R N Nommer une entrée
Cmd_RNameInSens 14 R N Lire le nom d’une entrée
Cmd_WNbBTC 15 R N Fixer le nombre de boutons physiquement câblés
Cmd_WLevel 16 R N Définit le niveau de fonctionnement
Cmd_SendQT 17 R N Envoi de données vers le QT60161B
Cmd_WQTSpeed 18 R N Définit la vitesse de communication PIC/QT
Cmd_WLedSVB 19 R O Modifie l’état des leds de veilleuse et du bip
Cmd_WLedsT 20 R N Modifie l’allumage des leds témoins
Cmd_RLedsT 21 R O Demande l’état des leds témoins
Cmd_WRedirIn 22 R N Ecriture d’une séquence d’interception de trames
Cmd_RRedirIn 23 R N Lecture d’une séquence d’interception
Cmd_StatF 24 E - Envoi du statut d’une fonction en RAM
Cmd_StatFE 25 E - Envoi du statut d’une fonction en EEPROM
Cmd_MdTimers 26 E - Envoi du mode des timers
Cmd_ActC 27 E - Confirmation d’effacement d’une action
Cmd_Act 28 E - Envoi d’une partie de trame mémorisée
Cmd_NameInSens 29 E - Envoi du nom d’une entrée
Cmd_DataQT 30 E - Informations provenant du QT60161B
Cmd_DetectLed 31/1 E - Envoi de 6 octets de détection pour leds témoins
Cmd_RedirIn 31/2 E - Envoi des 8 octets d’une séquence de redirection

Remarquez d’entrée que vous avez deux commandes n° 31. Ceci est une application
directe de ce que je vous avais signalé dans le document « présentation ». Vous disposez bel
et bien de 31 commandes pour chaque carte, mais vous disposez également pour chaque
commande d’un octet de paramètre. Ici, selon la valeur passée dans le paramètres, une seule
valeur de commande permet en réalité l’utilisation de plusieurs commandes différentes si
nécesaire. Ceci vous montre que les limites réelles sont bien supérieures à ce qu’il paraît au
premier abord.

Par rapport à la carte 16 entrées, vous avez plusieurs commandes supplémentaires


relatives principalement soit aux leds témoins, soit aux communications avec le contrôleur
QT60161B.

46
Bref, vous dialoguez avec le QT via la carte PIC.

Si vous envoyez un ordre au QT, cet ordre transite de la façon suivante :

- Envoi de Domogest vers la carte interface, dans une trame encapsulée, via le port de
communication

- La carte interface extrait la trame CAN encapsulée, et l’envoie sur le bus CAN.

- La carte pic concernée reçoit la trame CAN, et en extrait les informations à envoyer au
QT60161B

- Le pic envoie sur son USART les octets vers le QT60161B à la vitesse voulue

La réponse effectue évidemment le trajet inverse.

Vous voyez que le QT semble accessible en direct sur Domogest, mais qu’en réalité
l’information subit une série de traductions et d’étapes intermédiaires.

8.2 Les trames interceptées

En plus des commandes communes et des trames destinées spécifiquement à la carte


sensitive, celle-ci est en mesure d’intercepter des événements destinés à d’autres cartes.

La liste des commandes s’allongera au fur et à mesure de l’arrivée de nouvelles cartes.


Pour l’instant, la carte sait intercepter la commande :

CMD_LUM EQU CMD_24 ; Valeur d'éclairage des cartes gradateur


; destinataire : 0x50 (gradateur)
; paramètre : n° de la sortie de 0 à 15
; octet de data : 1
; D0 : valeur de la consigne de 0 à 0x32

Cette commande peut être utilisée en interne par la carte pour actionner des événéments
spécifiques. La carte peut donc réagir à des événements qui ne lui sont pas destinés.

Pour des exemples d’utilisation, je vous renvoie au mode d’emploi de Domogest, chapitre
6.15

Je vous donne un exemple d’utilisation. Imaginons que vous décidiez que la led témoin
d’une touche sensitive d’une carte serve à indiquer si la lampe de votre salle-de-bain est
allumée. Si vous programmez la touche pour qu’elle allume la lampe et la led témoin, ça
fonctionnera sans problème.

Le problème survient alors si vous allumez la dite lampe à partir de Domogest sur votre
PC, ou à partir d’un autre point de commande situé ailleurs. Votre led ne s’allumera
évidemment pas.

47
La solution retenue est d’intercepter la commande de luminosité émise en réponse par
chaque carte gradateur. Si la led témoin est paramétrée pour une lampe en cours de
modification, elle s’allumera en conséquence.

8.3 Erreur spécifique

Cette carte reconnaît toutes les erreurs générales. Elle utilise également une erreur
spécifique, l’erreur Err_S1, de numéro 0x98.

Cette erreur indique qu’une commande destinée à la carte en mode superviseur a été
envoyée vers une carte sensitive placée en mode utilisateur. L’erreur signifie donc : « Carte
sensitive pas en mode superviseur ».

L’erreur est déclarée dans le fichier « Domodef.inc ».

8.4 Types d’actions

Chaque carte est capable de réagir à une série d’événements différents. Ces événements
sont dénommés « actions » et sont au nombre théorique de 16, dont 14 actuellement utilisés.
La numérotation conventionnelle dans Domocan est la suivante :

Numéro Type de l’action correspondante


0x00 Impulsion sur une touche (appelé également clic ou pulse)
0x01 Maintien d’une touche (maintien On)
0x02 Relâchement d’une touche après maintien (Maintien Off)
0x03 Passage de la sortie d’une fonction « OR » de 0 vers 1
0x04 Passage de la sortie d’une fonction « OR » de 1 vers 0
0x05 Passage de la sortie d’une fonction « AND » de 0 vers 1
0x06 Passage de la sortie d’une fonction « AND » de 1 vers 0
0x07 Passage de la sortie d’une fonction « NOR » de 0 vers 1
0x08 Passage de la sortie d’une fonction « NOR » de 1 vers 0
0x09 Passage de la sortie d’une fonction « NAND » de 0 vers 1
0x0A Passage de la sortie d’une fonction « NAND » de 1 vers 0
0x0B Délai d’un timer lent (en secondes) expiré
0x0C Délai d’un timer rapide (en dixièmes de seconde) expiré
0x0D Valeur 0 d’un décompteur atteinte
0x0E Réservé pour utilisation future
0x0F Réservé pour utilisation future

8.5 Types de fonctions

Les différentes actions énumérées ci-dessus sont provoquées par des fonctions. Ces
fonctions sont soit des entrées physiques (touches sensitives), soit le résultat d’opérations
logicielles internes (portes, timers, décompteurs).

48
Ces fonctions sont également numérotées, afin de pouvoir être identifiées lors de l’envoi
de statut les concernant via le bus CAN.

La numérotation au niveau de Domocan est la suivante :

Numéro Type de la fonction correspondante


0x00 Entrée physique de type touche sensitive
0x01 Porte « OR » logicielle
0x02 Porte « AND » logicielle
0x03 Porte « NOR » logicielle
0x04 Porte « NAND » logicielle
0x05 Timer logiciel en secondes (timer lent)
0x06 Timer logiciel en dixièmes de seconde (timer rapide)
0x07 Décompteur logiciel
0x08 à 0x0F Réservés pour utilisations futures

Vous noterez de fait que la numérotation d’une fonction se contente de 4 bits.

8.6 Groupe de fonctions

Il y a un maximum de 16 fonctions de chaque type possible, selon la capacité de l’eeprom


placée sur la carte. Chaque fonction, pour être identifiée, doit de ce fait disposer de 2
numéros :

- Son numéro de fonction, comme énuméré ci-dessus, et qui exprime le type de cette
fonction

- Le groupe de fonction, qui identifie en fait de quelle fonction en particulier il s’agit.

Pour être plus clair, si on parle de la porte AND n° 8, on peut dire que :

- Son numéro de fonction vaut 0x02


- Son groupe vaut 0x08

Un groupe de fonctions contient en réalité :

- 1 touche sensitive
- 1 porte de chaque type (OR,AND,NOR,NAND)
- 1 timer de chaque sorte (1 lent et 1 rapide)
- 1 décompteur
- 8 types réservés pour d’éventuelles extensions futures

C’est pourquoi je parle de « groupes », ce qui est plus clair que de parler de « numéro »,
car des « numéros », il y en a un certain nombre, ce qui risque de prêter à confusion.

Notez également que l’identification d’un groupe ne prend que 4 bits.

49
On peut dès lors identifier une fonction à coup sûr à l’aide de 8 bits, 4 pour le type, 4 pour
le groupe, ce qui est mis à profit dans Domocan, pour passer l’identification de la fonction
dans les 8 bits de paramètre de l’identificateur.

Chaque carte d’entrée pouvant contenir 16 groupes, et un bus Domocan pouvant contenir
255 cartes d’un même type, ça signifie que rien qu’avec les cartes sensitives, vous pouvez
obtenir pas moins de 4080 touches et fonctions de chaque type.
Pour voir si vous avez bien compris ce qui précède, imaginons que la porte OU (OR) n° 5
d’une carte sensitive donnée passe du niveau 0 au niveau 1 en sortie.

La commande générée concernera :

- Le groupe de fonctions 5 (porte n° 5)


- Le type de fonction 1 (porte OR)
- L’action n° 3 (porte OU = 1)

Ceci étant dit, nous allons maintenant voir ces commandes en détails.

8.7 Statut des différentes fonctions

Pour identifier l’état des différentes fonctions, un octet de statut est utilisé. Cet octet
dispose de 8 bits dont chacun détermine un élément différent. Le rôle de ces bits dépend du
type de fonction concerné. Voici les différents octets de statut :

8.7.1 Statut pour les touches sensitives

b0 : Traitement du pulse sur pression (1) ou sur relâchement (0)


b1 : Touche en service 0 = off, 1 = on
b2 : dernière action = pulse
b3 : dernière action = début de maintien
b4 : dernière action = fin de maintien
b5 : pulse à traiter
b6 : début de maintien à traiter
b7 : fin de maintien à traiter

Les bits 0 et 1 déterminent le fonctionnement de la touche. Au sujet de b0, son rôle est
différent de celui de la carte 16 entrées. Sur cette carte, il permettait de déterminer si un
bouton-poussoir était NO ou NF. Ici, point de tout cela, puisque la touche est sentive. Par
contre, vous avez tout de même deux modes de fonctionnement :

Soit le pulse est généré lorsque vous relâchez la touche après une pression de moins de 0.5
seconde, exactement comme pour la carte 16 entrées. En effet, s’il y a par exemple 200ms que
vous pressez la touche, le logiciel ne peut pas savoir si vous comptez la maintenir ou non
avant d’avoir rencontré un des deux cas suivants :

- Il y a au moins 500ms que vous maintenez la touche -> début de maintien


- Vous avez relâché la touche avant les 500ms -> pulse

50
Soit le pulse est généré directement sur détection de votre doigt sur la touche. Dans ce cas,
cependant, il se peut que votre intention était de maintenir votre doigt plus de 500ms. Le
comportement sera alors le suivant :

- Dès détection du doigt, action pulse


- Si vous maintenez plus de 500ms, début de maintien.

Bref, dans ce cas, vous avez action directe, mais, si vous maintenez le doigt, vous aurez un
pulse suivi d’un début de maintien, et non un début de maintien seul, c’est logique, impossible
de faire autrement.

Tout dépend en fait de ce que vous voulez faire avec la touche, le choix vous est laissé. Si
vous choisissez « pas d’action directe », la touche fonctionnera exactement comme pour la
carte 16 entrées, c’est le fonctionnement « classique ».

Les bits 2 à 4 permettent de connaître la dernière action générée par la touche, ce qui est
pratique pour analyser la situation au niveau de Domogest.

Les bits 5 à 7 permettent de connaître les actions en cours de traitement, ou de forcer le


déclenchement de celles-ci.

8.7.2 Statut pour les portes logiques

Les portes logiques disposent également d’un octet de statut, dont voici la signification :

b0/b3 : entrées 1 à 4
b4 : état actuel
b5 : réservé
b6 : sortie à 1 à traiter
b7 : sortie à 0 à traiter

Les bits 0 à 3 donnent l’état logique de chacune des 4 entrées de la porte. Le bit 4 quant à
lui donne l’état de la sortie de la dite porte.

Les bits 6 et 7 indiquent qu’un changement d’état de la sortie de la porte est en cours de
traitement, ou permettent de forcer le traitement immédiatement.

8.7.3 Statut pour les timers et décompteurs

Chaque timer et chaque décompteur dispose également d’un octet de statut :

b0/b6 : temps restant à décompter


b7 : durée écoulée à traiter

Dans les bits b6/b0 se trouve la valeur actuelle du timer ou du décompteur. Notez donc
que cette valeur ne peut varier que de 0 à 127.

Le bit 7 indique que la valeur vient d’arriver à 0, et permet également de forcer l’action.

51
En ce qui concerne le forçage d’action, souvenez-vous qu’une action d’une fonction peut
générer l’envoi de jusque 17 trames CAN. Le passage en interne d’un bit d’action (par
exemple la sortie d’une porte OU qui change d’état) à 1 provoquera l’émission de la séquence
correspondante programmée par l’utilisateur. Cependant, si on fait passer ce bit à « 1 » par
une commande d’écriture de statut via une commande CAN de type Cmd_WStatF, on peut
forcer la carte à envoyer sa séquence à n’importe quel moment.

Ce procédé est très pratique, car il permet d’éviter de réécrire un ensemble de commandes,
pour le cas où plusieurs actions engendrent la même séquence de trames CAN. Bref, ça
équivaut à écrire des « macros » de commandes.

8.8 Mode superviseur et mode utilisateur

Il importe maintenant de bien comprendre ces deux modes de fonctionnement. Rassurez-


vous, c’est très simple.

En pratique, vous avez deux cartes dialogant ensemble :

- La carte à PIC, le pic étant un microcontrôleur contenant notre programme


- La carte à QT, le QT60161B étant un microcontrôleur pré-programmé.

Dans Domogest, vous devez communiquer en temps normal avec le pic. C’est lui qui vous
informe des touches appuyées, des contenus des timers, etc. En fonctionnement normal de
votre carte, nous dirons que nous sommes dans le mode « utilisateur ». Le QT ne vous
intéresse pas, c’est le pic qui s’en occupe pour vous.

Mais il va également être nécessaire de communiquer entre Domogest et le QT, ne serait-


ce que pour paramétrer ce composant, faire des vérifications, vérifier son fonctionnement.
Dans ce mode, il n’est pas intéressant que les touches remplissent leurs fonctions habituelles,
mais par contre il faut faire parvenir vers Domogest des informations relatives au QT60161B
qui ne sont pas utiles en fonctionnement « utilisateur ». Bref, le pic se comporte un peu
comme un intermédiaire, qui relaye simplement les infos du QT vers Domogest, et les
commandes de Domogest vers le QT. Ce mode spécifique est appelé « mode superviseur ».

Ces modes sont gérés directement à partir de Domogest, mais il est important de savoir
qu’en mode utilisateur la carte ne remplira pas sa fonction habituelle, et que, par contre, la
communication directe avec le QT ne pourra se faire qu’en mode superviseur.

C’est la raison pour laquelle vous allez trouver dans le descriptif des commandes une
ligne supplémentaire indiquant le ou les mode(s) possible(s) de fonctionnement de chaque
commande. De nouveau, via Domogest, tout est transparent pour vous.

Souvenez-vous que toute commande spécifique au mode superviseur, envoyée vers une
carte sensitive qui se trouve en mode utilisateur, recevra en réponse une erreur « Err_S1 »

52
8.9 Détails des commandes spécifiques

La carte « sensitive » est une carte qui est principalement destinée à gérer des entrées. De
ce fait, elle est orientée pour l’émission de trames CAN.

Cependant, cette carte dispose de fonctions logiques, timers etc, ce qui fait qu’elle est
également prévue pour recevoir un certain nombre de commandes.

En surplus, elle est capable d’intercepter des trames émises par d’autres cartes, dans le but
de gérer ses leds témoins.

Tout ceci en fait une carte relativement complexe.

La carte dispose en outre de la particularité spécifique de pouvoir s’envoyer des


commandes à elle-même. Il est simple d’en comprendre l’utilité.

Si vous imaginez par exemple que l’action sur une touche déclenche une minuterie.

Si le timer de la minuterie se trouve sur une carte différente que celle de la touche, alors
une trame CAN sera envoyée sur le bus.

Par contre, si timer concerné et touche sont repris sur la même carte d’entrée, alors la
commande ne sera pas envoyée sur le bus CAN, mais directement « envoyée » en interne pour
traitement immédiat.

Tout ceci est géré de façon automatique et transparente pour l’utilisateur. Cependant, vous
devez savoir que vous avez intérêt, si vous avez le choix, à utiliser des fonctions internes à la
carte, plutôt que des fonctions identiques d’une autre carte, ceci afin de diminuer le trafic du
bus CAN.

Une bonne partie des commandes de cette carte est identique aux commandes de la carte
16 entrées. Il y en a de plus de nouvelles.

8.9.1 Cmd_WStatF

Commande : 0x01 (Cmd_1)


Niveau : Superviseur ou utilisateur
Paramètre : FFFF GGGG
Sens : Réception
Broadcast : Refusé
Rôle : Ecrire le statut d’une fonction en RAM
Data : 3 octets
D0 : masque pour bits à forcer à 0
D1 : masque pour bits à forcer à 1
D2 : masque pour bits à inverser
Réponse : Cmd_StatF
Erreurs : G1, G4

Permet de modifier les bits d’une fonction en RAM.

53
La commande, toujours afin d’éviter de devoir travailler avec des variables sur les
commandes, permet de réaliser en interne 3 types d’actions différentes sur les bits de statut :

- Forcer un bit à 0
- Forcer un bit à 1
- Inverser un bit

Les 3 octets sont constitués d’un masque, dont chaque bit à 1 valide l’action. Ainsi, si
vous envoyez comme octets de data les octets suivants :

D0 : B’00110100’
D1 : B’01000001’
D2 : B’00000011’

L’effet sera, sur l’octet de statut concerné par la commande :

D0 va forcer les bits 2,4 et 5 à 0 sur cet octet


D1 va quant à lui forcer les bits 0 et 6 à 1
D2 va inverser les bits 0 et 1

Les opérations étant effectuées dans l’ordre précédent, on peut dire que pour l’octet de
statut ciblé :

b7 va rester inchangé
b6 va être forcé à 1
b5 va être forcé à 0
b4 va être forcé à 0
b3 va rester inchangé
b2 va être forcé à 0
b1 va être inversé
b0 va d’abord être forcé à 1 avant d’être inversé, il va donc être forcé à 0

Tout ceci en une unique commande CAN.

Notez que la fonction concernée est identifiée à la fois par son type (FFFF) et par son
groupe (GGGG) dans l’unique octet de paramètre de l’ID (FFFF GGGG)

54
8.9.2 Cmd_RStatF

Commande : 0x02 (Cmd_2)


Niveau : Superviseur ou utilisateur
Paramètre : FFFF GGGG
Sens : Réception
Broadcast : Refusé
Rôle : Lire le statut d’une fonction en RAM
Data : aucun
Réponse : Cmd_StatF
Erreurs : G1, G4
Cette commande est le pendant de la précédente, elle permet d’obtenir en retour le statut
d’une fonction.

8.9.3 Cmd_WStatFE

Commande : 0x03 (Cmd_3)


Niveau : Superviseur ou utilisateur
Paramètre : FFFF GGGG
Sens : Réception
Broadcast : Refusé
Rôle : Ecrire le statut d’une fonction en EEPROM
Data : 3 octets
D0 : masque pour bits à forcer à 0
D1 : masque pour bits à forcer à 1
D2 : masque pour bits à inverser
Réponse : Cmd_StatFE
Erreurs : G1, G3, G4

Cette commande fonctionne exactement comme la commande StatF, exepté que l’écriture
s’effectue en eeprom et non en RAM. Il s’agit donc ici de modifier le statut par défaut de
chaque fonction, ce qui est particulièrement utile pour définir, par exemple, si un bouton-
poussoir est en service ou non, et s’il est N.O. ou N.F.

8.9.4 Cmd_RStatFE

Commande : 0x04 (Cmd_4)


Niveau : Superviseur ou utilisateur
Paramètre : FFFF GGGG
Sens : Réception
Broadcast : Refusé
Rôle : Lire le statut d’une fonction en EEPROM
Data : aucun
Réponse : Cmd_StatFE
Erreurs : G1, G4

Cette commande permet de récupérer le statut d’une fonction mémorisé en eeprom, et


donc le statut par défaut au démarrage de la carte.

55
8.9.5 Cmd_RunTimer

Commande : 0x05 (Cmd_5)


Niveau : Superviseur ou utilisateur
Paramètre : FFFF GGGG, avec FFFF = 5 ou 6
Sens : Réception
Broadcast : Refusé
Rôle : Démarrer un timer lent ou rapide
Data : aucun
Réponse : Cmd_MdTimers
Erreurs : G1, G4

Cette commande permet de démarrer un timer, lent ou rapide. De ce fait, FFFF doit
correspondre à un timer, et ne peut dès lors valoir que 5 ou 6.

En réponse à cette commande, on reçoit via la commande Cmd_MdTimers l’état actuel de


chacun des timers de la carte.

8.9.6 Cmd_StopTimer

Commande : 0x06 (Cmd_6)


Niveau : Superviseur ou utilisateur
Paramètre : FFFF GGGG, avec FFFF = 5 ou 6
Sens : Réception
Broadcast : Refusé
Rôle : Arrêter le timer précisé, lent ou rapide
Data : aucun
Réponse : Cmd_MdTimers
Erreurs : G1, G4

Cette commande, à l’inverse de la précédente, arrête un timer donné. Notez que comme
pour la commande précédente, FFFF doit concerner impérativement un timer, et ne peut donc
valoir que 5 ou 6, sous peine d’être gratifié d’une erreur Err_G4 (paramètre incorrect).

8.9.7 Cmd_RMdTimers

Commande : 0x07 (Cmd_7)


Niveau : Superviseur ou utilisateur
Paramètre : 0x00
Sens : Réception
Broadcast : Refusé
Rôle : Lire l’état de tous les timers d’une carte
Data : aucun
Réponse : Cmd_MdTimers
Erreurs : G1, G4

Permet d’interroger l’état de tous les timers d’une carte donnée.

56
8.9.8 Cmd_LoadTd

Commande : 0x08 (Cmd_8)


Niveau : Superviseur ou utilisateur
Paramètre : FFFF GGGG, avec FFFF = 5, 6, ou 7
Sens : Réception
Broadcast : Refusé
Rôle : Recharger un timer ou un décompteur
Data : 1 octet
D0 : Valeur de recharge de 0 à 127
Réponse : Cmd_StatF
Erreurs : G1, G2, G4

Permet de recharger un compteur ou un décompteur. La valeur de recharge est limitée de


0 à 127, car b7 de cette valeur est utilisée en interne par le programme.

FFFF doit correspondre à un timer ou un décompteur et ne peut donc valoir que 5, 6, ou 7.

8.9.9 Cmd_AddValTD

Commande : 0x09 (Cmd_9)


Niveau : Superviseur ou utilisateur
Paramètre : FFFF GGGG, avec FFFF = 5, 6, ou 7
Sens : Réception
Broadcast : Refusé
Rôle : Modifier la valeur d’un timer ou d’un décompteur
Data : 1 octet
D0 : Valeur d’incrément
b7 : signe : 0 = positif, 1 = négatif
b6/b0 : valeur absolue à ajouter
Réponse : Cmd_StatF
Erreurs : G1, G4

Avec cette commande, vous pouvez modifier la valeur actuelle d’un timer ou d’un
décompteur. Si b7 de l’incrément passé dans D0 vaut 1, le nombre est considéré comme
négatif et la valeur actuelle du timer ou décompteur sera décrémentée de la valeur contenue
dans les bits b6/b0 de la valeur passée dans D0. Il s’agit donc en fait d’une décrémentation.

Si, au contraire, b0 est nul, la valeur contenue dans le timer/décompteur sera incrémentée
de la valeur de D0.

Si le résultat d’une incrémentation donne une valeur supérieure à 127, la nouvelle valeur
du timer/décompteur sera fixée à 127.

Si le résultat d’une décrémentation donne une valeur négative, la nouvelle valeur du


timer/décompteur sera fixée à 0 et l’action correspondante sera exécutée.

57
8.9.10 Cmd_CAct

Commande : 0x0A (Cmd_10)


Niveau : Superviseur ou utilisateur
Paramètre : AAAA GGGG
Sens : Réception
Broadcast : Refusé
Rôle : Effacer les 16 trames d’une action
Data : Aucun
Réponse : Cmd_CAct
Erreurs : G1, G4, G11

Permet d’effacer en une seule commande les 16 commandes liées à l’exécution d’une
action. Les commandes des actions sont mémorisées en eeprom externe 24Cxxx, ce qui
explique la présence d’une erreur possible de type Err_G11.

En retour de cette commande, on recevra un accusé d’exécution sous forme d’une


commande Cmd_CAct.

8.9.11 Cmd_WAct

Commande : 0x0B (Cmd_11)


Niveau : Superviseur ou utilisateur
Paramètre : AAAA GGGG
Sens : Réception
Broadcast : Refusé
Rôle : Ecrire une partie d’une commande d’une action
Data : 8 ou 7
D0 : identification de la partie de trame
b7/b4 : TTTT : N° de la trame
b3/b2 : N.U.
b1 : 1 = seconde partie de la trame (D2/D7)
b0 : 1 = première partie de la trame (ID+DLC+D0+D1)
si b1 = 1
D1/D6 : D2,D3,D4,D5,D6,D7 de la commande
si b0 = 1
D1/D7 : SIDH,SIDL,EIDH,EIDL,DLC,D0,D1 de la commande
Réponse : Cmd_Act
Erreurs : G1, G2, G4, G11

Permet d’écrire une commande relative à une action. Une commande étant une trame
CAN, nécessite au maximum 13 octets. De ce fait, la commande Cmd_WAct ne disposant que
de 8 octets de data, la trame complète nécessite deux envois de commande. Si vous suivez
bien, le but est donc de faire passer une trame CAN (la commande à mémoriser) dans les
octets de data d’une autre trame CAN (la commande Cmd_WAct).

L’octet de data D0 précise à la fois le n° de la trame de commande de l’action déterminée


par le paramètre AAAA GGGG, et identifie que quelle partie de la trame il s’agit, en fonction
de ses bits b1 et b0.

58
Si b0 vaut 1, les 7 octets de data suivants contiennent l’ID, le nombre d’octets de data, et
les 2 premiers octets de data de la trame de commande. SIDL, qui est la commande Domocan,
est codée sous forme d’un nombre de 0 à 31.

Si b1 vaut 1, les 6 octets de data suivants contiennent le reste de la trame, à savoir les
octets de data D2 à D7.

8.9.12 Cmd_RAct

Commande : 0x0C (Cmd_12)


Niveau : Superviseur ou utilisateur
Paramètre : AAAA GGGG
Sens : Réception
Broadcast : Refusé
Rôle : Lire une trame d’une action
Data : 1 octet
D0 : identification de la trame
b7/b4 : TTTT : n° de la trame
b3/b0 : 0000
Réponse : 2 commandes Cmd_Act
Erreurs : G1, G2, G4

Permet de relire une trame spécifique d’une action. La réception d’une trame d’action
complète nécessite 2 trames CAN, comme détaillé pour la commande précédente. La réponse
sera donc constituée de 2 commandes Cmd_Act.

8.9.13 Cmd_WNameInSens

Commande : 0x0D (Cmd_13)


Niveau : Superviseur ou utilisateur
Paramètre : 0000 GGGG
Sens : Réception
Broadcast : Refusé
Rôle : Modifier le nom d’une touche sensitive
Data : 8 octets
D7/D0 : Nom de l’entrée en 8 valeurs ascii
Réponse : Cmd_NameInSens
Erreurs : G1, G4, G5

Permet d’écrire ou modifier le nom d’une des touches de la carte afin de faciliter son
identification.

Le nom sera écrit dans la mémoire flash du pic, et protégé d’un effacement par bootloader.

Notez que le n° de l’entrée est évidemment le n° du groupe de fonction auquel elle fait
partie. Ce numéro sera passé dans les 4 bits de poids faible du paramètre (EIDL pour rappel).

59
8.9.14 Cmd_RNameInSens

Commande : 0x0E (Cmd_14)


Niveau : Superviseur ou utilisateur
Paramètre : 0000 GGGG
Sens : Réception
Broadcast : Refusé
Rôle : Lire le nom d’une touche
Data : aucun
Réponse : Cmd_NameInSens
Erreurs : G1, G4

Permet d’obtenir en retour, via la commande Cmd_NameInSens le nom d’une entrée


particulière.

8.9.15 Cmd_WNbBtC

Commande : 0x0F (Cmd_15)


Niveau : Superviseur ou utilisateur
Paramètre : 0x00
Sens : Réception
Broadcast : Refusé
Rôle : Modifier les touches utilisées
Data : 2 octets
D0 : Nouveau NBGERE
D1 : Nouveau NBBP
Réponse : CC_Carte
Erreurs : G1, G2, G3, G4

Cette commande permet de définir les caractéristiques de la carte. Le premier octet de


data, D0, impose le paramètre NBGERE expliqué dans le document présentation. Il s’agit en
fait ici du nombre maximal de groupes gérés par la carte, nombre qui dépend principalement
du type d’eeprom que vous avez utilisée, comme nous l’avons déjà expliqué.

Ce nombre représentera donc le nombre de portes de chaque type, de timers de chaque


type, de décompteurs, et de touches. Si vous placez 8 comme valeur, à titre d’exemple, vous
aurez 8 entrées possibles au maximum, 8 timers lents, 8 timers rapides, etc.

Le second octet de data, D1, précise le nombre de touches effectivement utilisées sur la
carte. Ainsi, si nous reprenons l’exemple précédent, notre carte 8 groupes pourrait fort bien
avoir 5 touches utilisées, et 3 de réserve. Dans ce cas, nous introduirions la valeur 5 comme
NBBP. Cette information est inutilisée en fait dans le logiciel de la carte, mais interceptée par
le logiciel Domogest pour éviter d’afficher à l’écran des touches qui n’existent physiquement
pas.

Notez pour rappel, bien que cela semble évident, que D1 ne peut pas être supérieur à D0,
sous peine d’être gratifié d’une erreur.

60
La réponse s’effectue via la commande commune d’identification de la carte, CC_Carte.
L’octet D5 contient par définition la valeur NBGERE de chaque carte, tandis que l’octet D6,
dont le rôle dépend du type de la carte, contiendra dans ce cas précis le nombre d’entrées
physiquement utilisées.

Je vous renvoie au document « présentation » pour plus de détails sur la commande


CC_Carte.

8.9.16 Cmd_WLevel

Commande : 0x10 (Cmd_16)


Niveau : Superviseur ou utilisateur
Paramètre : 0x00
Sens : Réception
Broadcast : Refusé
Rôle : Changer de niveau de fonctionnement
Data : 1 octet
D0 : Nouveau niveau de fonctionnement
b7 : utilisateur (0) ou superviseur (1)
b6/b0 : N.U.
Réponse : CC_Carte, avec le niveau dans b7 de D7
Erreurs : G1, G2, G4

Cette commande permet de basculer d’un niveau de fonctionnement à l’autre. Le niveau


actuel de fonctionnement est renvoyé dans CC_Carte, notre fameuse commande commune.

8.9.17 Cmd_SendQT

Commande : 0x11 (Cmd_17)


Niveau : Superviseur
Paramètre : 0x00
Sens : Réception
Broadcast : Refusé
Rôle : Octets à envoyer au QT60161B
Data : 1 ou 2 octet(s)
D0 : premier octet à envoyer au QT
D1 : second octet à envoyer au QT (optionnel)
Réponse : Pas de réponse spécifique, réponse renvoyée par le QT
Erreurs : G1, G4, S1

Cette commande permet de dialoguer directement avec le QT60161B reçoit ses


commandes sous forme de 1 ou deux octets, placés ici dans les octets D0 et D1.

La carte doit se trouver en mode superviseur, sinon elle génére une erreur de type Err_S1.

Le pic ne répond pas à cette commande, il se contente de la transférer au QT. Par contre,
celui-ci va émettre une réponse, qui sera relayée par le pic. Autrement dit, vous recevrez une
réponse directement du QT, par l’intermédiaire du pic, évidemment. Pour bien me faire

61
comprendre, si le QT ne répond pas, vous n’aurez aucune réponse suite à l’envoi de cette
commande. La réception d’une réponse prouve que le QT communique.

8.9.18 Cmd_WQtSpeed

Commande : 0x12 (Cmd_18)


Niveau : Superviseur
Paramètre : 0x00
Sens : Réception
Broadcast : Refusé
Rôle : Modifier la vitesse de communication PIC/QT au niveau du PIC
Data : 3 octets
D0 : Débit de communication
0 : 9600 bauds (par défaut)
1 : 14400 bauds
2 : 19200 bauds
3 : 38400 bauds
4 : 57600 bauds
D1 : octet de vérification : 0xA5
D2 : octet de vérification : 0x5A
Réponse : CC_Carte (avec débit dans b0/b2 de D7)
Erreurs : G1, G4, S1

Cette commande est très très particulière. Normalement, vous ne devrez jamais l’utiliser.
Cependant, j’ai été « obligé » de l’intégré, car, connaissant certains d’entre-vous, qui aiment
faire des expérimentations, ils risqueraient de se retrouver définitivement bloqués, avec
impossibilité de faire fonctionner leur carte, suite à une mauvaise manipulation.

En effet, le QT est un microcontrôleur, son programme accepte différentes commandes.


Or, via la commande Domocan Cmd_SendQT, vous pouvez envoyer la commande de votre
choix vers le QT. Or, une de ces commandes peut être un ordre de modification de la vitesse
de communication de votre QT avec le pic. Celui-ci étant configuré pour travailler en 9600
bauds, il deviendrai impossible à votre carte pic de dialoguer avec votre QT. Ceci vous
obligerait à des manœuvres fastidieuses pour reconfigurer votre QT, puisque l’ordre de
passage à 9600 bauds devrait se faire à la nouvelle vitesse imposée.

Conscient de ça, j’ai ajouté une commande (sécurisée par l’ajout de 2 octets de
vérification), qui permet au pic de modifier sa vitesse de communication avec le QT. Si donc,
vous avez changé la vitesse de communication du QT, vous pouvez forcer la même
modification sur le pic, en utilisant la commande WQtSpeed. Cette commande n’est
volontairement pas présente sous forme d’un bouton dans Domogest, vous devrez donc
envoyer manuellement la trame depuis Domogest, ce qui évitera les changements maladroits.

Pour résumer, cette commande est une commande de dernier secours si vous avez modifié
la vitesse du QT en envoyant manuellement via Domogest une trame WSendQT contenant un
ordre de modification de la vitesse de communication du QT.

Si vous avez oublié quelle vitesse vous avez paramétrée, il ne vous restera qu’à les essayer
toutes, il n’y en a que 5 possibles.

62
J’insiste donc : Sauf nécessité absolue, n’utilisez pas cette commande.

De nouveau, l’information de réponse sera contenue dans notre fameuse commande


commune CC_Carte, via son octet D7. Plus loin, je donnerai un résumé de ce que contient en
réalité la commande CC_Carte pour cette carte sensitive.

8.9.19 Cmd_WLedsVB

Commande : 0x13 (Cmd_19)


Niveau : Superviseur ou utilisateur
Paramètre : 0x00
Sens : Réception
Broadcast : Accepté
Rôle : Modifier le fonctionnement des veilleuses et du bip
Data : 1 octet
D0 : modifications à effectuer
b0 : 1 = forcer veilleuses en service
b1 : 1 = forcer veilleuses hors-service
b2 : 1 = inverser les veilleuses
b3 : 1 = BIP en service
b4 : 1 = BIP hors-service
b5 : 1 = bip immédiat
b6 : 1 = mémoriser état actuel veilleuses en eeprom
b7 : 1 = mémoriser état actuel bip en eeprom
Réponse : CC_Carte
avec état des veilleuses dans b6 de l’octet D7
avec état du BIP dans b5 de l’octet D7
Erreurs : G1, G3, G4

Cette commande permet 5 choses :

- Elle permet d’allumer ou d’éteindre les leds en mode veilleuse


- Elle permet d’autoriser ou d’interdire l’émission d’un bip à chaque action sur une touche
- Elle permet de faire générer un bip par la carte
- Elle permet de mémoriser en eeprom le mode de fonctionnement des leds en veilleuse
- Elle permet de mémoriser en eeprom le mode de fonctionnement du bip

De nouveau, l’état actuel est renvoyé dans la commande CC_Carte,dont le rôle sera
résumé plus avant.

Les leds peuvent s’allumer de deux façons :

- Soit en mode veilleuse, pour permettre de localiser les touches dans le noir (à tâton, ce
n’est pas une bonne idée pour des touches sensitives). Dans ce cas, la luminosité est
limitée à 25%

- Soit en mode témoin, pour signaler une fonction. Dans ce cas, la luminosité est de 100%

63
Si vous avez placé un bip, vous pouvez choisir si vous voulez ou pas l’émission d’un bip à
chaque action sur une touche sensitive.

Vous pouvez également forcer la carte à générer des bips, ce qui pourrait servir par
exemple pour se servir de la carte comme réveille-matin, à condition que le buzzer soit bien
placé et suffisamment puissant.

Vous pouvez utiliser cette fonction pour confirmer des actions spéciales (genre 3 bips
pour enclencher une minuterie, ou 5 bips pour annoncer que l’éclairage de l’escalier va
s’éteindre etc.).

8.9.20 Cmd_WLedsT

Commande : 0x14 (Cmd_20)


Niveau : Superviseur ou utilisateur
Paramètre : 0x00
Sens : Réception
Broadcast : Refusé
Rôle : Modifier l’allumage d’une led en mode témoin
Data : 1 octet
D0 : action(s) à effectuer
b7 : 1 = allumer la led
b6 : 1 = éteindre la led
b5 : 1 = inverser la led
b4 : N.U.
b3/b0 : N° de la led concernée, de 0 à 15
Réponse : Cmd_LedsT
Erreurs : G1, G3, G4

Cette commande permet d’agir directement et individuellement sur les leds, dans leur
fonction Led témoin, c’est-à-dire à pleine luminosité.

Les commandes sont exécutées dans l’ordre, c’est-à-dire que si vous demandez par
exemple à la fois l’allumage et l’inversion, l’allumage sera exécuté en premier, puis
l’inversion, la led sera donc éteinte. Evidemment, deux actions sur une même led est une
pratique curieuse, mais bon, le choix vous est donné.

Notez qu’en mode veilleuse, c’est –à-dire à 25% de luminosité, vous agissez
simultanément sur toutes les leds. En mode témoin, vous agissez led par led.

N’oubliez pas que, de plus, vos leds témoins peuvent se gérer toutes seules
automatiquement, en fonction des commandes reçues d’autres cartes (pour cette version 1.10,
seules les commandes de luminosité sont gérées, mais d’autres vont suivre).

64
8.9.21 Cmd_RLedsT

Commande : 0x15 (Cmd_21)


Niveau : Superviseur ou utilisateur
Paramètre : 0x00
Sens : Réception
Broadcast : Accepté
Rôle : Demander l’état des leds témoins
Data : aucun
Réponse : Cmd_LedsT
Erreurs : G1, G4

Cette commande permet simplement en retour d’obtenir l’état actuel des leds témoins.
Notez que le mode broadcast est autorisé, vous pouvez donc interroger toutes vos cartes avec
une seule commande.

8.9.22 Cmd_WRedirIn

Commande : 0x16 (Cmd_22)


Niveau : Superviseur ou utilisateur
Paramètre : N° de la séquence de redirection de 0 à .63
Sens : Réception
Broadcast : Refusé
Rôle : Ecrire les 8 octets d’une séquence de redirection
Rôle : Ecrire une séquence de redirection (redirection de trames entrantes)
Data : 8 octets
D0/D7 : voir ci-dessous
Réponse : Cmd_RedirIn
Erreurs : G1, G2, G4, G5

La commande écrit une séquence de redirection. Il s’agit en fait de 8 octets de data qui
indiquent à la carte quelle commande est à intercepter et de quelle façon, ainsi que les actions
à effectuer dès qu’une trame correspondante est détectée.

Voici les explications concernant les 2 premiers octets de data, qui sont identiques quelle
que soit la commande à intercepter :

D0 contient toujours l’action à effectuer. Si D0 vaut 0xFF, la séquence d’interception est


considérée comme vide et ne donne lieu à aucune interprétation. La séquence est mémorisée
en mémoire flash, et la carte gère un maximum de 64 séquences différentes. Afin de diminuer
le temps de traitement, la recherche de comparaison entre une trame valide arrivant sur la
carte s’arrête à la première séquence vide rencontrée. Domogest se charge de vérifier au
moment de la programmation qu’il n’y a aucune séquence utile précédée d’une séquence vide.

L’action précisée par D0 l’est au travers de plusieurs flags, utilisant chacun un bit de D0.

D0 : type d’action à effectuer


b7/b4 : type de trame interceptée :
0000 tralme Cmd_Lum en provenance d’une carte gradateur

65
0001/1111 : réservé pour le futur
b3/b0 : opération à effectuer :
0000 : Action sur une led témoin de la carte
0001 : action sur une entrée d’une porte OU
0010 : action sur une entrée de porte ET
0011 : action sur une entrée de porte NOR
0100 : action sur une entrée de porte NAND
0101 : démarrer/stopper un timer lent
0110 : démarrer /stopper un timer rapide
0111/1110 : réservé pour futur (0xFF réservé pour séquence vide)

Les bits b7 à b4 de D0 précisent le type de trame interceptée selon un code interne qui
sera complété au fur et à mesure des besoins. Pour l’instant, seules les trames Cmd_Lum
émanant de cartes gradateurs sont interceptées.

Les bits b3 à b0 précisent sur quel élément la trame détectée va agir.

L’octet D1, quant à lui, contient toujours la description de l’élément en question.

D1 : descriptif de l’élément sur lequel va agir la trame. Le type d’élément est déjà précisé par
les bits b3/b0 de D0 :

b7/b4 : n° de l’entrée concernée si porte logique, ou inutilisés sinon.


b3/b0 : N° de l’élément concernée (n° timer, n° porte, etc.).

Bref, si vous voulez qu’une trame Cmd_Lum agisse sur l’entrée 2 de la porte AND n° 4,
les bits seront :

D0 :
b7/b4 : 0000 : commande de type Cmd_Lum
b3/b0 : 0010 : action sur une porte ET
D1 :
b7/b4 : 0010 : l’action concerne l’entrée n° 2
b3/b0 : 0100 : de la porte n° 4

Avec cet exemple, je suppose que c’est maintenant un peu plus clair. De toutes façons, je
vous rappelle que Domogest gère tout ça de façon transparente pour vous.

Il reste 6 octets à examiner pour chaque séquence. En fait, ces 8 octets sont contextuels,
contrairement à D0 et D1 leur rôle change en fonction de la commande reçue, ce qui
permettra un maximum de souplesse dans le futur sans induire un excès de mémoire
consommée.

Je vous donne à titre d’exemple le rôle des octets D2 à D7 pour la commande Cmd_Lum,
la seule interceptée sur la révision 4.00 de cette carte.

D2 : n° de la carte gradateur qui déclenchera l’action


D3 : n° de la sortie de cette carte qui déclenchera l’action

66
D4 : Valeur minimale qui va déclencher l’action : si 0xFF, aucune action sur la valeur
minimale. La valeur est la valeur de luminosité précisé dans l’octet D0 de Cmd_Lum
b7 : type d’action : (1 = mise à 1 ; 0 = mise à 0)
b6 : égalité : Si 1, l’égalité est considérée comme valide, sinon la valeur doit être
strictement supérieure au minima pour déclencher l’action
b5/b0 : valeur minimale proprement dite (0 à .50 )
D5 : Valeur maximale qui déclenche l’action. Si 0xFF, aucune action sur le maxima.
b7 : type d’action : idem que pour D4
b6 : égalité : si 1, l’égalité induit l’action, sinon la valeur doit être strictement inférieure
b5/b0 : valeur maximale proprement dite.

D6/D7 : non utilisés pour l’interception de cette commande.

Vous constatez que le rôle de D2/D7 dépend du contexte, et que donc toute évolution
future est d’avance maîtrisée.

8.9.23 Cmd_RRedirIn

Commande : 0x17 (Cmd_23)


Niveau : Superviseur ou utilisateur
Paramètre : Numéro de la séquence de redirection (0x00 à 0x3F)
Sens : Réception
Broadcast : Refusé
Rôle : Lire une séquence de redirection (redirection de trames entrantes)
Data : Aucun
Réponse : Cmd_RedirIn
Erreurs : G1, G4

Cette commande demande à la carte une séquence d’interception dont le n° est précisé
dans le paramètre.

8.9.24 Cmd_StatF

Commande : 0x18 (Cmd_24)


Niveau : Superviseur ou utilisateur
Paramètre : FFFF GGGG
Sens : Emission
Rôle : Renvoie le statut d’une fonction en RAM
Data : 1 octet
D0 : statut de la fonction

Cette commande permet de renvoyer le statut actuel d’une fonction. Le statut est renvoyé
dans l’octet de data D0. Le rôle des différents bits dépend du type de fonction, nous en avons
déjà parlé.

Le paramètre permet d’identifier la fonction, avec le n° du type de fonction dans les 4 bits
de poids forts, et le n° du groupe de la fonction dans les 4 bits de poids faibles.

67
8.9.25 Cmd_StatFE

Commande : 0x19 (Cmd_25)


Niveau : Superviseur ou utilisateur
Paramètre : FFFF GGGG
Sens : Emission
Rôle : Renvoie le statut d’une fonction en EEPROM
Data : 1 octet
D0 : statut de la fonction en eeprom

Cette commande fonctionne de façon strictement identique à la précédente, si ce n’est que


l’octet de data renvoyé ne contient pas le statut actuel de la fonction, mais le statut tel que
mémorisé en eeprom. Il s’agit donc ici du statut que prendra la fonction après un reset de la
carte ou une mise sous tension.

8.9.26 Cmd_MDTimers

Commande : 0x1A (Cmd_26)


Niveau : Superviseur ou utilisateur
Paramètre : 0x00
Sens : Emission
Rôle : Renvoie le mode de fonctionnement actuel de tous les timers de la carte
Data : 4 octet
D0 : bits de fonctionnement des timers lents 15 à 8
D1 : idem timers lents 7 à 0
D2 : idem timers rapides 15 à 8
D3 : idem timers rapides 7 à 0
avec b7 = n° le plus élevé, b0 = n° le plus faible

Il s’agit ici de renvoyer un bit par timer. Si le bit vaut 1, le timer est actuellement en cours
de fonctionnement. S’il vaut 0, le timer est à l’arrêt.

Attention, ne confondez pas le mode de fonctionnement (marche/arrêt), avec la valeur de


la fonction timer (valeur actuelle dans les bits b6/b0 et action à exécuter dans le bit b7).

8.9.27 Cmd_ActC

Commande : 0x1B (Cmd_27)


Niveau : Superviseur ou utilisateur
Paramètre : AAAA GGGG
Sens : Emission
Rôle : Confirme l’effacement des 16 trames correspondant à une action
Data : aucun octet

Cette trame est émise en réponse à une demande d’effacement des 16 trames d’une action.
Pour rappel, il y a 16 types d’actions possibles (clic sur BP, maintien sur BP, fin de maintien
sur BP, porte OR qui passe à 0 etc.). Chaque action contenant un maximum de 16 commandes
programmables, c’est l’intégralité de ces 16 commandes qui est concernée ici.

68
L’action est identifiée grâce au paramètre, dont les 4 bits de poids forts indiquent le type
d’action concernée, tandis que les 4 autres bits précisent le groupe d’appartenance de ce type
d’action. Soit, en plus clair : Type d’action / N° de l’action.

Ne confondez pas n° de l’action et n° de la trame de l’action :

- Chaque carte possède un maximum de 16 n° de groupe


- Chaque n° de groupe possède 16 types d’actions possibles (dont 14 utilisés actuellement)
- Chaque carte possède donc en théorie 16 * 16 = 256 actions, identifiées par le paramètre
AAAA GGGG
- Chaque action permet l’envoi d’une trame fixe et de 16 commandes (trames CAN)
paramétrables. Ce sont ces 16 trames qu’on indique ici avoir effacées.

8.9.28 Cmd_Act

Commande : 0x1C (Cmd_28)


Niveau : Superviseur ou utilisateur
Paramètre : AAAA GGGG
Sens : Emission
Rôle : Renvoie une partie d’une commande d’une action
Data : 8 ou 7 octets

Cette commande renvoie dans ses octets de data une demi-trame CAN correspondant à
une demi-commande, parmis les 16 entières, d’une action. Il s’agit ici des mêmes commandes
expliquées pour la commande Cmd_ActC ci-dessus.

Le rôle des différents octets de data est strictement le même que pour la commande
Cmd_WAct, déjà expliquée en détails.

Cette trame permet d’obtenir la moitié d’une ligne de commande concernant une action.
Chaque action comportant au maximum 16 commandes, il faut 32 trames Cmd_Act pour
obtenir une action complète.

8.9.29 Cmd_NameInSens

Commande : 0x1D (Cmd_29)


Niveau : Superviseur ou utilisateur
Paramètre : 0000 GGGG
Sens : Emission
Rôle : Renvoie le nom d’une touche sensitive
Data : 8 octets sous forme de caractères ascii

Cette commande renvoie sous forme de 8 octets ASCII le nom d’une touche de la carte,
dont le n° est contenu dans GGGG.

69
8.9.30 Cmd_DataQT

Commande : 0x1E (Cmd_30)


Niveau : Superviseur
Paramètre : Numérotation
b7/b6 : N.U.
b5/b4 : N° de la trame
b3/b2 : N.U.
b1/b0 : n° de la dernière trame prévue
Sens : Emission
Rôle : Renvoie des octets en provenance du QT
Data : 1 à 8 octets
D0/Dx : octets en provenance du QT60161B

Cette commande ne fonctionne qu’en mode superviseur. Alors qu’en fonctionnement


normal, la carte PIC interroge le QT pour savoir quelles touches sont pressées, en mode
superviseur le pic établit une passerelle entre le QT et Domogest sur votre PC.

Ca permet de configurer et de faire des mesures sur le QT exactement comme si celui-ci


était relié directement au PC. Dans la documentation de Domogest, vous verrez tout ce qu’il
est possible de paramétrer et de mesurer sur ce contrôleur vraiment très puissant.

L’octet de paramètre permet à la fois de savoir de quel groupe de 8 octets il s’agit, et à la


fois de savoir de combien d’octets se compose le message provenant du QT. Domogest sait
donc s’il a reçu tout ou partie du message.

Pour information, le QT peut envoyer un message d’une longueur maximale de 32 octets,


soit 4 trames de 8 octets, ce qui explique qu’il faille 2 bits pour numéroter les trames.

8.9.31 Cmd_RedirIn

Commande : 0x1F (Cmd_31)


Niveau : Superviseur ou utilisateur
Paramètre : N° de la séquence de redirection
Sens : Emisson
Rôle : Renvoie 8 octets de la séquence de redirection
Data : 8 octets
D0/D7 : voir commande Cmd_WRedirIn

Cette commande renvoie les 8 octets constitutifs d’une séquence de redirection de trames
entrantes.

70
8.9.32 Cmd_LedsT

Commande : 0x1F (Cmd_31)


Niveau : Superviseur ou utilisateur
Paramètre : 0xFF
Sens : Emisson
Rôle : Renvoie l’état actuel des 16 led témoins de la carte
Data : 2 octets
D0 : état des leds 15 à 8 (b7 à b0)
D1 : état des leds 7 à 0 (b7 à b0)

Chaque bit renseigne sur l’état d’une led. Si le bit est à 1, la led témoin est allumée, s’il
vaut 0, elle est éteinte.

Notez que cette commande possède le même numéro que la commande Cmd_RedirIn.
C’est le paramètre qui permet de les différentier, ce qui ne pose aucun problème à Domogest.

Commande 0x1F + paramètre de 0 à .63 = Cmd_RedirIn


Commande 0x1F + paramètre 0xFF = Cmd_LedsT

Vous voyez que cette méthode permet d’avoir un grand nombre de commandes,
exactement comme pour l’unique commande commune (0x00), qui contient en réalité un
grand nombre de commandes réelles.

Ceci termine l’étude de nos commandes spécifiques. Vous constatez qu’avec cette carte,
vous êtes gâtés.

8.10 Particularités de la commande CC_Carte

Pour cette carte, les octets de la commande CC_Carte sont tous utilisés. Comme certains
sont optionnels, je vous indique la signification de chaque octet dans le cas particulier des
touches sensitives

D0 : type de pic sur la carte


D1/D3 : révision software
D4 : Mode de fonctionnement
b0 : normal (0) ou bootloader (1)
b1 : mode décentralisé (0) ou centralisé (1)
b2 : Led Can en service (1) ou pas (0)
b3/b7 : N.U.
D5 : NBGERE : nombre de groupes gérés
D6 : NBBP : nombre de touches sensitives en service
D7 : Communications et informations
; débit QT (renvoyé dans D7 de CC_CARTE) :
; b7 : carte en mode utilisateur (0) ou superviseur (1)
; b6 : 1 : leds de veille en service
; b5 : 1 : BIP en service
; b4/b3 : N.U.
; b2/b0 : débit communication QT

71
; 000 : 9600 bauds (valeur par défaut du QT)
; 001 : 14400 bauds
; 010 : 19200 bauds
; 011 : 38400 bauds
; 100 : 57600 bauds

Vous constatez que CC_Carte est destiné en fait à avoir un résumé efficace des
fonctionnalités de la carte et de son état. Les octets D0 à D4 sont communs à toutes les cartes,
l’octet D5 contient une information utilisée par la majorité des cartes. D6 tel que décrit est
spécifique aux cartes 16 entrées et aux cartes sensitives, alors que les informations renvoyées
par D7 sont limitées pour l’instant aux cartes sensitives.

Bref, c’est une commande dont le noyau donne des informations toujours identiques, alors
que les octets supplémentaires donnent des informations contextuelles.

Notez qu’il n’y a pas de commande spécifique de lecture du niveau (utilisateur ou


superviseur), puisque cette information peut être obtenue en demandant l’envoi d’une trame
CC_Carte.

Vous constaterez qu’avec cette carte, vous disposez d’un « plus » évident par rapport à
une installation électrique classique, et même que la grande majorité des systèmes domotiques
actuellement commercialisés. Qui peut se vanter de pouvoir piloter toute son habitation à
l’aide de touches sensitives paramétrables ?

Et nul doute que votre épouse appréciera comme la mienne le côté « blue » de vos leds.

72
9. Utilisation du présent document

Cet ouvrage est destiné à être lu après les précédents documents du même projet
disponibles sur mon site.

Communiquez à l’auteur (avec politesse) toute erreur constatée afin que la mise à jour
puisse être effectuée dans l’intérêt de tous, si possible par émail.

Pour des raisons de facilité de maintenance, j’ai décidé que cet ouvrage serait disponible
uniquement sur mon site : www.abcelectronique.com/bigonoff

Aussi, si vous trouvez celui-ci ailleurs, merci de m’en avertir.

Bien entendu, j’autorise (et j’encourage) les webmasters à placer un lien vers le site,
inutile d’en faire la demande. Je ferai de même en retour si la requête m’en est faite. Ainsi,
j’espère toucher le maximum d’utilisateurs.

Le présent ouvrage peut être utilisé par tous, la modification et la distribution sont
interdites sans le consentement écrit de l’auteur.

Tous les droits sur le contenu de cet ouvrage, et sur les programmes qui l’accompagnent
demeurent propriété de l’auteur.

L’auteur ne pourra être tenu pour responsable d’aucune conséquence directe ou indirecte
résultant de la lecture et de l’application de l’ouvrage, des programmes, ou du matériel.

Lorsque vous travaillez sur la tension secteur, assurez-vous que vous avez les
compétences nécessaires, et soyez prudents.

Toute utilisation commerciale est interdite sans le consentement écrit de l’auteur. Tout
extrait ou citation dans un but d’exemple doit être accompagné de la référence de l’ouvrage.

Si vous avez aimé cet ouvrage, si vous l’utilisez, ou si vous avez des critiques, merci de
m’envoyer un petit mail. Ceci me permettra de savoir si je dois ou non continuer cette
aventure avec les parties suivantes.

Sachez que je réponds toujours au courrier reçu, mais notez que :

- Je ne réalise pas les programmes de fin d’étude pour les étudiants (même en payant), c’est
une demande qui revient toutes les semaines dans mon courrier. Tout d’abord je n’ai pas
le temps, et ensuite je ne pense pas que ce soit un bon service. Enfin, pour faire un peu
d’humour, si je donnais mes tarifs, ces étudiants risqueraient un infarctus.

- Je n’ai malheureusement pas le temps de debugger des programmes complets. Inutile donc
de m’envoyer vos programmes avec un message du style « Ca ne fonctionne pas, vous
pouvez me dire pourquoi ? ». En effet, je passe plus de 2 heures par jour pour répondre au
courrier, si, en plus, je devais debugger, j’y passerais la journée. Vous comprenez bien que
c’est impossible, pensez que vous n’êtes pas seul à poser des questions. Posez plutôt une
question précise sur la partie qui vous semble inexacte.

73
- Si vous avez des applications personnelles, n’hésitez pas à les faire partager par tous. Pour
ce faire, vous pouvez me les envoyer. Attention cependant, faites précéder votre envoi
d’une demande.

Je remercie tous ceux qui m’ont soutenu tout au long de cette aventure, et qui se
reconnaîtront. Nul doute que sans les nombreux encouragements reçus, ce livre n’aurait
jamais vu le jour.

Merci au Webmaster de www.abcelectronique.com, pour son hébergement gratuit.

- Révision 1 : 14/04/2006 : Première version en ligne

- Révision 2 : 22/02/2007 : Remplacement d’une référence page 14. Ajout de commandes


concernant les redirections, qui remplacent les commandes relatives au déclenchement des
leds témoins (nécessite une carte en révision >= 2.00)

- Révision 3 : 12/04/2008 : Remplacement des PIC18F2x8 par les PIC18F2x80 utilisés en


mode ECAN 2 (FIFO). Rectificatif taille des leds (3mm et pas 2mm)

Réalisation : Bigonoff

Site : http://www.abcelectronique.com/bigonoff ou www.bigonoff.org


Email : bigocours@hotmail.com (Attention BIGOCOURS PAR BIGONOFF)

74

Vous aimerez peut-être aussi