Domotique


Toutes mes applications de domotique sont liées les unes aux autres par un protocole de communication radio. J’ai regroupé l’ensemble sous le titre « Home Supervisor » dans cette section.

Le protocole de communication radio

Objectifs

L’objectif est la mise en place d’un protocole de communication radio à usage domotique. Il doit être simple et ouvert, de manière à pouvoir intégrer facilement de nouveau composants.

Support de transmission

Il s’agit d’une communication numérique radio de porteuse 433 MHz. Chaque bit est persistant pendant 1,024 ms, soit une fréquence de 976,5625 Hz par bit, soit 122 Hz par octet. Cette période peu banale est en fait très facilement mesurable car elle va pouvoir correspondre à un débordement de Timer sur 8 bit moyennant un prescaller, ce qui va faciliter grandement le codage des logiciels et la fiabilité des transmission.

Lorsque aucune transmission n’a lieu, le récepteur radio reçoit une succession de 0.

Les récepteurs radio

Un récepteur possède une adresse. Lorsqu'il reçoit son adresse, il se met en attente d’une instruction lui permettant de changer son état.

Les adresses des récepteurs sont codées sur 8 bits et varient de 0x01 à 0x7E.
L’adresse 0x00 est interdite.
L’adresse 0x7F est utilisée pour lancer des commandes en broadcast.

Protocole radio

Voici le prototype d’une trame :

0xFF S Adresse S Instructions

Chaque octet utile est précédé d’un octet de synchronisation (S) valant 0x01. Cet octet à pour but de permettre au récepteur de se recaler sur l’émetteur au cas où les horloges ne seraient pas exactement les mêmes. A la fin des instructions, en cas de perturbation qui gênerait la lecture de l’état de repos, les récepteurs ignoreront toutes données jusqu’à réception d’une succession d’au moins 8 uns témoignant du commencement d’une nouvelle transmission. Par sécurité, l’émetteur enverra deux séries de 0xFF.
Les octets sont envoyés en commençant par le bit de poids fort.
L’adresse commence toujours par un zéro, de manière à ce qu’aucune donnée ne puisse avoir la valeur 0xFF, valeur réservée au début de transmission.

Liste des instructions

Les codes des instructions occupent 1 octet.

Code Nom Description
0x01 ACTIVE_STATE Demande d’une mise en conduction du récepteur
0x02 INACTIVE_STATE Demande d’une coupure du récepteur


ACTIVE_STATE

Cette instruction permet de demander au récepteur de rétablir l’alimentation secteur.

0xFF S Adresse S 0x01
  • Adresse : adresse actuelle du récepteur
  • 0x01 : code de l’instruction


INACTIVE_STATE

Cette instruction permet de demander au récepteur de couper l’alimentation secteur.

0xFF S Adresse S 0x02
  • Adresse : adresse actuelle du récepteur
  • 0x02 : code de l’instruction


Brique logicielle d’émission radio

Suivi des étapes de conception

Etat IT
IT 1 : Cahier des charges logiciel <fc green>Terminée</fc>
IT 2 : Conception Software <fc green>Terminée</fc>
IT 3 : Validation de la brique <fc green>Terminée</fc>


IT 1 : Cahier des charges logiciel

L’objectif de cette brique est d’encapsuler l’utilisation de la radio. Elle devra fournir des primitives de haut niveaux correspondant aux diverses instructions radio :

void RADIO_ActiveState(unsigned char Slave);
void RADIO_InactiveState(unsigned char Slave);

La brique aura besoin d’un timer. Nous utiliserons le Timer 0 commun à tous les PIC. On tâchera de faire fonctionner le microcontrôleur avec un quartz de 4MHz, soit 1 MIPS. Ce timer 8 bits, prescallé à 4, fournira alors une interruption toutes les 1,024 ms, ce qui permettra de cadencer l’envoi des bits.

IT 2 : Conception Software

La conception USDP en langage UML a été faite. Le schéma ci-dessous présente le diagramme statique de classes issu de cette conception :

IT 3 : Validation de la brique

J’ai réalisé un logiciel extrêmement simple pour valider la brique. Il tourne sur un PIC 12F629.

Le microcontrôleur est cadencé par son quartz interne de 4 MHz. Deux broches seront utilisées comme sortie pour les deux sorties radio (data et alimentation). 2 broches sont utilisées en entrée.

Au démarrage, le soft regarde l’état des broches d’entrée. Suivant l’état de ces broches, le soft fait un appel à l’une des 2 primitives de la brique radio.

Brique logicielle de réception radio

Suivi des étapes de conception

Etat IT
IT 1 : Cahier des charges logiciel <fc green>Terminée</fc>
IT 2 : Conception Software <fc green>Terminée</fc>
IT 3 : Validation de la brique <fc green>Terminée</fc>


IT 1 : Cahier des charges logiciel

L’objectif de cette brique est d’encapsuler l’utilisation de la radio.

La brique aura une primitive d’entrée :

RADIO_EVENT RADIO_Reception(unsigned char Address) ;
Timer

La brique aura besoin d’un timer. Nous utiliserons le Timer 0 commun à tous les PIC. On tâchera de faire fonctionner le microcontrôleur avec un quartz de 4MHz, soit 1 MIPS. Ce timer 8 bits, prescallé à 4, fournira alors une interruption toutes les 1,024 ms, ce qui permettra de cadencer l’envoi des bits.

Lors des phases de synchronisation, il prescallera le Timer 0 sur 32 de manière à avoir une interruption tous les octets.

Lecture des bits

Par sécurité, chaque bit sera lu 5 fois. La brique ne validera un bit que si les 5 lectures sont identiques.

IT 2 : Conception Software

La conception USDP en langage UML a été faite. Le schéma ci-dessous présente le diagramme statique de classes issu de cette conception :

Pour utiliser la brique, il faut appeler la méthode RADIO_Reception(), en passant en paramètre l’adresse du récepteur. La brique renvoi l’instruction qui a été reçue, ou RADIO_EVENT_VOID si la trame n’était pas pour cette adresse ou en cas d’erreur.

IT 3 : Validation de la brique

Créer un logiciel pour permettre la validation de la brique revient à concevoir un récepteur. En conséquence, la validation de la brique se fera en même temps que celle du premier récepteur.

HS Commander : radiocommande 4 canaux

Suivi des étapes de conception

Etat IT
IT 1 : Cahier des charges fonctionnel <fc green>Terminée</fc>
IT 2 : Conception hardware <fc green>Terminée</fc>
IT 3 : PCB <fc green>Terminée</fc>
IT 4 : Cahier des charges logiciel <fc green>Terminée</fc>
IT 5 : Conception software <fc green>Terminée</fc>
IT 6 : Validation fonctionnelle <fc green>Terminée</fc>


IT 1 : Cahier des charges fonctionnel

Généralités

Un Commander est une radiocommande locale permettant de piloter jusqu’à 4 récepteurs.

4 adresses sont mémorisées, l’adresse de broadcast 0x7F pouvant être l’une de ces adresses, de même que l’adresse de sortie d’usine 0x00, de sorte que le commander n’a pas à faire de vérification concernant la validité des adresses.

Un commander peut piloter soit un seul des récepteurs, soit l’ensemble des 4 récepteurs mémorisés simultanément.
Les adresses sont stockées en dur dans le commander. Toutefois, il faudra prévoir de pouvoir les mettre à jour facilement via reprogrammation. Cette fonctionnalité ne dois pas être accessible à l’utilisateur.

IHM

Un commander possède 3 boutons poussoirs :

  • Activer : ce bouton vert permet de lancer la commande d’activation aux récepteurs présélectionnés.
  • Désactiver : ce bouton rouge permet de lancer la commande de désactivation aux récepteurs présélectionnés.
  • Sélection : ce bouton noir ou blanc permet de présélectionner le ou les récepteurs à piloter.


Un commander possède 4 LED rouge permettant de visualiser quels sont les récepteurs à piloter :

  • 1 seule LED allumée : 1 seul récepteur présélectionné.
  • Toutes les LED allumées : tous les récepteurs présélectionnés.


Démarrage du commander

Lorsque l’utilisateur appui sur l’un des boutons, ceci provoque la mise en route du commander. Par défaut, à chaque démarrage, c’est la première adresse qui est sélectionnée.

Si la première touche pressée est :

  • Activer : La première LED s’allume, et la commande est immédiatement envoyée à la première adresse.
  • Désactiver : La première LED s’allume, et la commande est immédiatement envoyée à la première adresse.
  • Sélection : La deuxième qui s’allume pour présélectionner le second slave.


En cas d’appuis simultanées, des boutons, les ordres de priorité sont : Désactiver, Activer, Sélection.
Aucun appui n’est pris en compte si le précédent bouton n’a pas été relâché.

Arrêt du commander

Si dans une limite de 4 secondes, aucune action n’est effectuée, le commander s’arrête. Ce compte à rebours de 4 secondes est lancé dès le lâché du dernier bouton pressé.

Si dans une limite de 4 secondes, un autre bouton est pressé, il est traité et un nouveau compte à rebours de 4 secondes est initié, et ainsi de suite jusqu’à ce qu’aucun bouton ne soit plus actionné.

IT 2 : Conception hardware

Module d’émission radio

Le module d’émission radio sera un module Aurel TX-SAW 433. Il s’alimente en 12V, et se commande avec un signal TTL.

Alimentation

En conséquence, la source d’alimentation sera une petite pile de 12V. Etant donnée sa petite capacité, il faudra que l’ensemble du montage ne soit pas du tout alimenté au repos. Ce sont les boutons qui provoqueront la mise sous tension.
Le circuit radio, bien qu’alimenté directement en 12V, se pilote avec un signal TTL. Il faudra donc un régulateur 5V.

Microcontrôleur

Le Commander sera géré par un microcontrôleur PIC. C’est lui qui commandera l’ensemble des composants du montage.

Dressons l’inventaire des ressources nécessaires concernant le microcontrôleur :

  • 4 sorties pour les LED
  • 1 sortie pour la communication avec le module radio
  • 1 sortie pour piloter l’alimentation du module radio
  • 1 sortie pour piloter l’auto alimentation du montage après le lâché des boutons.
  • 3 entrées pour les boutons poussoirs


Soit un total de 7 sorties et 3 entrées.

Le microcontrôleur doit en outre pouvoir mémoriser de façon non volatile les 4 adresses. Cependant elles doivent pouvoir être modifiées par programmation. On préconisera de la mémoire de type EEPROM. Il faudra 4 octets pour mémoriser les 4 adresses.

Notre choix se portera sur le PIC 16F628A.

Schéma complet

Voici le schéma complet du Commander :

RAPPEL1 et RAPPEL2 sont deux résistances permettant d’accélérer la chute des tensions d’alimentation après coupure des transistors PNP.

Liste des composants
  • 1 Pile 12V GP23 + Coupleur à fil
  • 1 module radio AUREL AC-RX 433 + support barrette 15 contacts
  • 3 boutons poussoirs (1 bleu ou vert, 1 rouge, 1 noir)
  • 2 Transistors BC547
  • 3 Transistors BC557
  • 4 LED rouges
  • 1 PIC 16F628A + support DIL18
  • 2 Résistances 10 kOhm ¼ W
  • 5 Résistances 330 Ohm ¼ W
  • 2 Résistances 560 Ohm ¼ W
  • 5 Résistances 1 MOhm ¼ W
  • 1 Régulateur 7805
  • 1 Condensateur papier 330 nF
  • 2 Condensateur papier 100 nF
  • 3 diodes Zener 5,1V
  • 1 fil d’antenne de 15 cm
  • 4 straps


IT 3 : PCB

Voici le layout complet du système (vue côté composants) :

IT 4 : Cahier des charges logiciel

Interface Matériel Logiciel

Voici le brochage du pic 16F628A :

N° Broche Nom Broche Direction Description
1 RA2 OUT Pilotage LED3
2 RA3 OUT Pilotage LED4
3 RA4/T0CKI - -
4 RA5/MCLR - -
5 VSS VSS VSS
6 RB0/INT OUT Pilotage LED3
7 RB1 OUT Pilotage de l’alimentation de la radio
8 RB2 OUT Auto maintient de l’alimentation
9 RB3 - -
10 RB4 IN Bouton Activer
11 RB5 IN Bouton Désactiver
12 RB6 IN Bouton Sélection
13 RB7 - -
14 VDD VDD VDD
15 RA6/OSC2 - -
16 RA7/OSC1 - -
17 RA0 OUT Pilotage LED1
18 RA1 OUT Pilotage LED2

Remarque : toutes les broches « - » seront paramétrées en entrée, et reliées à VSS.

Séquence de mise sous tension

C’est forcément un appui sur l’un des boutons qui provoque la mise sous tension du microcontrôleur. La première chose à faire est le maintient de l’auto alimentation. Ensuite, il faut procéder à la lecture du bouton, en sachant qu’un filtrage est peut-être nécessaire. Le plus simple est d’attendre 10ms après le déclenchement de l’auto maintient de l’alimentation.

Mémorisation des adresses

4 adresses de 1 octet chacune (Adresses 0x00 à 0x03) sont à stoker en mémoire EEPROM.

Réalisation de Timers

Deux temps doivent pouvoirs être mesurés : 10 ms et 4 secondes.
Sachant que le microcontrôleur est cadencé à 1 MIPS, 8 débordements du Timer 1 prescallé sur 8 correspondent à 4,2 secondes. Etant donné que l’on se fiche de la précision de ce compteur de 4 secondes, cela ira très bien.
Quant à 10 ms, on utilisera le Timer 2 prescallé sur 16, et on comptera ses débordements. En conséquence, on fera un appel synchrone qui ajoutera 1250 à la valeur dur Timer 1, et attendra que ce dernier atteigne cette valeur.

OS

La fonction principale main fonctionnera comme une tâche d’OS. Un octet sera utilisé en flags pour matérialiser l’arrivée des messages asynchrones sur la tâche.

Voici l’inventaire de ces flags :

  • 0b00000001 : Fin de timeout 4 secondes


Utilisation des interruptions

Les boutons seront détectés par scrutation. Nous aurons par contre à utiliser l’interruption débordement de Timer 1 pour la mesure des 4 secondes.
La brique d’émission radio utilise enfin l’interruption Timer 0.

IT 5 : Conception software

La conception USDP en langage UML a été faite. Les 2 schémas ci-dessous présentent les diagrammes statiques de classes issus de cette conception :



IT 6 : Validation fonctionnelle

J’ai fait une validation en observant et en mesurant les signaux de sortie du microcontrôleur avec un oscilloscope.

HS Slave : Interrupteur secteur radiopiloté

Suivi des étapes de conception

Etat IT
IT 1 : Cahier des charges fonctionnel <fc green>Terminée</fc>
IT 2 : Conception hardware <fc green>Terminée</fc>
IT 3 : PCB <fc green>Terminée</fc>
IT 4 : Cahier des charges logiciel <fc green>Terminée</fc>
IT 5 : Conception software <fc green>Terminée</fc>
IT 6 : Validation fonctionnelle <fc green>Terminée</fc>
IT 7 : Validation système <fc green>Terminée</fc>


IT 1 : Cahier des charges fonctionnel

Généralités

Le slave est un interrupteur de courant commandé par radio.
Il s’intégrera dans un boîtier standard de coupure secteur.

Son adresse est en dure en mémoire EEPROM. On peut facilement la changer lors de la programmation, ou par reprogrammation de la mémoire EEPROM. Par défaut, elle vaut 0x00.

Lorsqu’il reçoit une suite de 8 « 1 » consécutifs, il considère qu’il s’agit du début d’une transmission radio. A la suite de l’octet de synchronisation, il lit l’adresse.
Si l’adresse reçue est la bonne, le slave réceptionne les instructions et les interprète.
Si l’adresse reçue n’est pas la bonne, le slave de remet en attente d’une suite de 8 « 1 » consécutifs, ce qui ne peut pas arriver tant que la dernière communication n’est pas terminée.

Ergonomie

Deux LED matérialiseront l’état du slave :

  • Une LED verte indiquera un état actif
  • Une LED rouge indiquera un état inactif


IT 2 : Conception hardware

Contraintes dues au boîtier

Le boîtier est de faible dimension et impose que la carte électronique ait des dimensions inférieurs ou égales à 6,5 x 4,5 cm.

Module de réception radio

Il s’agit d’un module AUREL AC-RX, alimenté en 5V et fournissant en sortie un signal TTL.
L’état de repos de sortie est l’état bas.

LEDS

2 LEDS sont à piloter par le microcontrôleur.
Afin de minimiser le nombre de broches de commande du microcontrôleur, nous allons réaliser la commande des LED avec seulement une seule broche.

Le schéma a été encapsulé dans un sous circuits dont voici le schéma :

Ce montage est intéressant car il permet de ne pas forcément implanter les LEDS selon les besoins : on pourra par exemple ne mettre qu’une LED verte pour ne pas générer de lumière lors du non fonctionnement du montage.

Microcontrôleur

Le slave va être commandé par un microcontrôleur PIC.

Dressons l’inventaire des ressources nécessaire concernant le microcontrôleur :

  • 1 sortie pour le pilotage des LEDS
  • Un courant de sortie supérieur à 15 mA sur 1 broche pour les LEDS
  • 1 sortie pour le pilotage de la coupure secteur
  • 1 entrée pour la réception radio
  • 1 octet au moins de mémoire EEPROM pour mémorisation de l’adresse


Tout ceci nous amène à sélectionner le PIC16F629.
Son petit boîtier DIL8 convient parfaitement à notre application. Il dispose d’assez de broches, d’une bonne taille de mémoire de programme, et de mémoire EEPROM.
Il est en outre capable de délivrer 25 mA par broche, et un maximum de 125 mA pour l’ensemble des broches.
Enfin, ce microcontrôleur possède un quartz interne de fréquence 4MHz, avec une précision de 1%, ce qui est amplement suffisant pour notre application, et favorisera davantage la réduction du coût et de l’encombrement du montage.

Schéma complet

Voici la schéma complet du slave :

Liste des composants

Résistances :

  • 4 Résistances 330 Ohm ¼ W
  • 1 Résistance 560 Ohm ¼ W

Condensateurs :

  • 1 condensateur polyester type C368 400V 470nF pas 15mm
  • 1 condensateur chimique radial 220µF 16V
  • 2 condensateurs papier 100nF

Composants actifs :

  • 1 Triac BTA12 400V 12A
  • 1 microcontrôleur PIC 12F629 en boîtier DIL8
  • 1 module de réception radio AUREL AC-RX + support barrette 15 contacts
  • 1 régulateur 7805 (boîtier TO-220)

Optoélectronique :

  • 1 LED Verte
  • 1 LED Rouge
  • 1 Optotriac MOC3043

Diodes :

  • 4 diodes 1N4001 ou 1N4007
  • 1 diode Zener 11V 1N5348

Connecteurs & supports :

  • 1 support de CI tulipe DIL6
  • 1 support de CI tulipe DIL8
  • 1 porte fusible à câbler isolé (pour fusible 1A 5x20mm)

Divers :

  • 1 fusible de 1A 5x20mm
  • 1 fil d’antenne de 15 cm


IT 3 : PCB

Voici le layout complet du slave :

IT 4 : Cahier des charges logiciel

Cadence du microcontrôleur

On utilisera le quartz interne du microcontrôleur. Il fonctionne à 4MHz, soit 1 MIPS.

Interface Matériel Logiciel

Voici le brochage du pic 12F629 :

N° Broche Nom Broche Direction Description
1 VDD VDD VDD
2 GP5/OSC1 - -
3 GP4/OSC2 - -
4 GP3/MCLR IN Reset externe
5 GP2/INT IN Broche de réception radio
6 GP1/CIN- OUT Pilotage LEDS
7 GP0/CIN+ OUT Pilotage de l’interrupteur secteur
8 VSS VSS VSS

Remarque : toutes les broches « - » seront paramétrées en entrée, et reliées à VSS.

Description du fonctionnement

En l’absence de communication radio, le slave est en sommeil. L’absence de communication radio provoque l’arrivée d’une continuité de « 0 ».
L’arrivée d’un « 1 » sur la liaison radio provoque le réveil du microcontrôleur via l’interruption externe INT.
Le slave appellera alors la primitive RADIO_Reception() de la brique radio.
Cette fonction renverra le code de l’instruction reçue ou bien un code d’erreur. En cas d’erreur, le Slave retournera en mode sommeil après réactivation des interruptions INT.
En cas d’instruction reçue, la slave exécutera l’instruction en demandant le cas échéant les paramètres à la brique radio.

Gestion des timers

La brique radio utilise le Timer 0.

Mémorisation de l’adresse

L’octet est à stoker en mémoire EEPROM. On utilisera l’adresse 0x00.

OS

La fonction principale main fonctionnera comme une tâche d’OS. Un octet sera utilisé en flags pour matérialiser l’arrivée des messages asynchrones sur la tâche.

Voici l’inventaire de ces flags :

  • 0b00000001 : Une interruption INT a eu lieu


Utilisation des interruptions

Voici la liste des interruptions que nous allons utiliser :

  • Interruption externe INT pour détecter l’arrivée du premier bit radio
  • Débordement du Timer 0 pour la brique radio


IT 5 : Conception software

La conception USDP en langage UML a été faite. Les 2 schémas ci-dessous présentent les diagrammes statiques de classes issus de cette conception :


IT 6 : Validation fonctionnelle

J’ai pu valider le montage en stimulant l’entrée du microcontrôleur avec un signal très propre issu d’un autre microcontrôleur.

IT 7 : Validation système

L’objectif de cette itération est de faire fonctionner ensemble un Commander et un Slave. Cette étape, si elle n’a pas marché du premier coup ;-) fonctionne très bien aujourd’hui.

Les principaux problèmes concernent les perturbations hertziennes dues au nombre important d’applications de domotique qui utilisent la même gamme de fréquence. Cela se traduisait par des allumages ou des extinctions intempestives du slave alors qu’aucune action n’avait été demandée. Pour résoudre ce problème, j’ai du augmenter la robustesse du protocole de communication.

A présent, c’est le contraire, le protocole est très (trop ?) robuste, et en cas de perturbation, les ordres ont du mal à être transmis. Bon mais ca fonctionne globalement pas mal, même si un compromis entre robustesse et fiabilité de transmission est peut-être à revoir.

HS Master : Radiocommande séquentielle de groupe

Suivi des étapes de conception

Etat IT
IT 1 : Cahier des charges fonctionnel <fc green>Terminée</fc>
IT 2 : Conception hardware <fc green>Terminée</fc>
IT 3 : PCB <fc green>Terminée</fc>
IT 4 : Cahier des charges logiciel <fc green>Terminée</fc>
IT 5 : Conception software <fc green>Terminée</fc>
IT 6 : Validation fonctionnelle <fc green>Terminée</fc>
IT 7 : Validation système <fc green>Terminée</fc>


IT 1 : Cahier des charges fonctionnel

Généralités

Un master est une radiocommande séquentielle. Il peut envoyer des commandes radio à un groupe de récepteurs. Le nombre de récepteurs pilotables est variable, et peut aller jusqu’à toutes les adresses HS disponibles, c’est-à-dire 126 (0x7E). 0x7F n’est pas interdit, mais ne nécessite pas d’autres adresses puisqu’il mémorise tout le monde.

IHM

Le master possède un bouton unique. A chaque appui, il active ou désactive les slaves qu’il connaît.

Afin d’indiquer quelle est la commande envoyée, le master possède 2 leds qui s'allument comme suit :

  • Led Rouge : la commende d’extinction a été envoyée.
  • Led Verte : la commande d’allumage a été envoyée.


Energie

Le master est alimenté par une pile de 9V. A l’arrêt, il ne devra absolument rien consommer.

Arrêt du master

Le master s’arrête tout seul après 4 secondes d’inactivité.

Le groupe d’adresse

Le groupe d’adresses est stocké en dur dans le soft, mais doit être facilement modifiable par reprogrammation. On préconisera donc l’espace EEPROM.

IT 2 : Conception hardware

Module d’émission radio

Le module d’émission radio sera un module Aurel TX-SAW 433. Il s’alimente en 12V, et se commande avec un signal TTL. On peut l'alimenter en 9V sans problème.

Alimentation

La source d’alimentation sera une pile de 9V. Le microcontrôleur sera alimenté en 5V, il faudra donc un régulateur 5V.

Microcontrôleur

Le Master sera géré par un microcontrôleur PIC. C’est lui qui commandera l’ensemble des composants du montage.

Dressons l’inventaire des ressources nécessaires concernant le microcontrôleur :

  • 1 sortie pour la communication avec le module radio
  • 1 sortie pour piloter l’alimentation du module radio
  • 1 sortie pour piloter l’auto alimentation du montage après le lâché des boutons
  • 1 entrée pour le bouton poussoir
  • 2 sorties pour le pilotage des leds


Soit un total de 5 sorties et 1 entrée.

Il faudra en outre prévoir 101 octets de mémoire EEPROM :

  • 1 octet pour stocker la dernière commande envoyée
  • 100 octets pour stocker le groupe d’adresse


Notre choix se portera sur le PIC 12F629.

Schéma électronique


Liste des composants
  • 1 Pile 9V + Coupleur à fil
  • 1 module radio AUREL TX-SAW 433 + support barrette 15 contacts
  • 1 bouton poussoir (1 rouge)
  • 2 Transistors BC547
  • 3 Transistors BC557
  • 2 LED (1 rouge, 1 verte)
  • 1 PIC 12F629 + support DIL8
  • 2 Résistances 10 kOhm ¼ W
  • 3 Résistances 330 Ohm ¼ W
  • 3 Résistances 1 MOhm ¼ W
  • 2 Résistances 560 Ohm ¼ W
  • 1 Régulateur 7805
  • 1 Condensateur papier 330 nF
  • 2 Condensateur papier 100 nF
  • 1 diode Zener 5,1V
  • 1 fil d’antenne de 15 cm
  • 3 straps


IT 3 : PCB


IT 4 : Cahier des charges logiciel

Cadence du microcontrôleur

On utilisera le quartz interne du microcontrôleur. Il fonctionne à 4MHz, soit 1 MIPS.

Interface Matériel Logiciel

Voici le brochage du pic 12F629 :

N° Broche Nom Broche Direction Description
1 VDD VDD VDD
2 GP5/OSC1 OUT Pilotage de l’alimentation de la radio
3 GP4/OSC2 OUT Broche d’émission radio
4 GP3/MCLR IN Bouton poussoir
5 GP2/INT OUT Auto alimentation
6 GP1/CIN- OUT Pilotage de la led verte
7 GP0/CIN+ OUT Pilotage de la led rouge
8 VSS VSS VSS

Remarque : toutes les broches « - » seront paramétrées en entrée, et reliées à VSS.

Description du fonctionnement

Au repos, l’alimentation est complètement coupée. L’appui sur le bouton provoque la mise sous tension. Tout d’abord, le microcontrôleur valide l’auto maintient de son alimentation. Ensuite il regarde la dernière commande envoyée, positionne les leds, envoie la commande à toutes les adresses qu’il connaît, et enfin, sauvegarde la dernière commande envoyée. Au bout de 4 secondes sans inactivité, l’auto maintient est invalidé. Si dans ce laps de 4 secondes le bouton est de nouveau enclenché, le fonctionnement reprend et le compteur de 4 secondes est relancé.

Gestion des timers

La brique radio utilise le Timer 0.
Le bouton aura besoin d’un compteur de 10 ms pour gérer son antirebond. Nous utiliserons le timer 1 prescallé sur 8, et nous compterons 1250 incrémentation.
Pour le timeout de 4 secondes, nous utiliserons aussi le Timer 1 prescallé sur 8, et nous compterons 8 débordements. C’est grossièrement 4s, mais la précision n’est pas fondamentale dans ce cas.
Etant donné qu’un nouvel appui clavier arrête le Timeout de 4 secondes, nous pouvons utiliser sans problème le même timer pour ces deux cas.

Mémorisation de la dernière commande envoyée

La dernière commande envoyée est à stoker en mémoire EEPROM. On utilisera l’adresse 0x7F.

Mémorisation des adresses

Les adresses à piloter sont stockées en mémoire EEPROM. On utilisera les adresses EEPROM allant de 0x00 à 0x7C. D’un point de vu algorithmique, le master enverra la commande à toutes les adresses stockées à partir de 0x00, et s’arrêtera lorsque cette adresse vaudra 0xFF. Si toutes les adresses sont utilisées, il trouvera forcément un 0xFF à l’adresse EEPROM 0x7E.

OS

La fonction principale main fonctionnera comme une tâche d’OS. Un octet sera utilisé en flags pour matérialiser l’arrivée des messages asynchrones sur la tâche.

Voici l’inventaire de ces flags :

  • 0b00000001 : Une inactivité a été détectée


Utilisation des interruptions

Voici la liste des interruptions que nous allons utiliser :

  • Débordement du Timer 0 pour la brique radio
  • Débordement du Timer 1 pour la gestion de l’inactivité


IT 5 : Conception software

Voici les diagrammes de classes issus des différentes phase de modélisation :


IT 6 : Validation fonctionnelle

On valide la master fonctionnellement de la même manière que le Commander.

IT 7 : Validation système

L’insersion dans un système HS ne pose aucun problème.