P33 Ligthing contactless / "wireless"

De Wiki d'activités IMA
Révision datée du 11 décembre 2014 à 18:24 par Blafit (discussion | contributions) (Semaine 10 (24/11 - 30/11))

Présentation du projet

Contexte

Mesure et pilotage de la lumière en ON/OFF ou gradation d'une habitation via des gestes significatifs ou via un smartphone.

Cahier des charges

Le But de ce projet est de piloter l'éclairage d'une habitation, le produit devra donc s'alimenter en 220V (P+N) et rentrer dans une boite électrique encastrable standard NF. Le dispositif pourra aussi être caché dans le mur (placo) pour disparaître.

Il doit permettre à l'utilisateur de piloter via des gestes de la main l'éclairage (base Microchip MGC3130):

  • mouvement de la main du haut vers le bas pour éteindre
  • mouvement de la main du bas vers le haut pour allumer
  • rotation de la main pour augmenter ou diminuer la luminosité

L'utilisateur pourra récupérer l'information de consommation électrique sur son smartphone et pourra aussi allumer/éteindre ou faire une gradation tout cela en liaison Bluetooth Low Energy (Bluetooth 4.0).

Présentation des outils

Le PCB de la carte sera développé à l'aide du logiciel Eagle, qui est un logiciel de CAO (Conception Assistée par Ordinateur) de circuits électroniques.

La programmation du microcontrolleur PIC de la carte de démonstration sera faite à l'aide du logiciel MPLAB X.

J'utiliserai le logiciel IAR Embedded Workbench pour programmer la puce Bluetooth Low Energy (BLE) CC2541 de Texas Instrument.

Avancement du projet

Semaine 01 (22/09 - 28/09)

Prise de connaissance du sujet, début de réflexion sur la fonctionnalité du système dans son ensemble.

Semaine 02 (29/09 - 05/10)

Afin de pouvoir connaitre la position et le mouvement de la main, j'utiliserai une puce MGC3130 de Microchip (http://www.microchip.com/wwwproducts/Devices.aspx?product=MGC3130). Ce composant permet de suivre des mouvements dans un environnement 3D grâce à un champ magnétique. Il est contrôlé au moyen d'une communication I2C ou SPI et permettra de capter les mouvement jusqu'à environ 15cm, notre système pourra donc être totalement sans contact.

De plus, afin d'établir la communication BLE, mon choix s'est fait sur la puce CC2541 de Texas Instrument (http://www.ti.com/lit/ds/symlink/cc2541.pdf). Ce choix a été fait en comparaison avec le CC2540 car ce dernier consomme plus de courant et surtout ne comporte pas de bus I2C alors que j'utiliserai celui-ci pour la communication avec le MGC3130. L'avantage de cette puce BLE c'est qu'elle est basée sur un microcontrôleur Intel, le 8051 et permettra donc au moyen de ses entrées/sorties de contrôler tout le système sans la nécessité d'ajouter un microcontrôleur annexe. Ce qui sera un gain de place, de coût mais aussi de consommation.

Semaine 03 (06/10 - 12/10)

Notre produit aura pour but de contrôler un éclairage, or, il existe plusieurs types d'éclairages qui ne seront pas contrôlés de la même façon. Le problème se posera sur la gradation de lumière, car le ON/OFF ne sera en rien différents d'un éclairage à un autre.

  • Ampoule incandescente : c'était l'ampoule la plus courante, aujourd'hui en grande partie remplacée par des ampoules dites "à économie d’énergie". C'est la plus simple à contrôler en gradation car il suffit d'abaisser la tension à ses bornes pour qu'elle éclaire moins et vice versa.
  • Ampoule fluo-compactes (à économie d’énergie) : celle-ci comporte de l'électronique, son contrôle en gradation sera donc plus complexe.
  • Néon :
  • Ampoule à LED :

Il faut donc réfléchir au type d'éclairage visé et aux solutions à mettre en œuvre pour le contrôler.

Semaine 04 (13/10 - 19/10)

La communication entre le microcontrôleur et MGC3130 se fera au moyen du protocole I2C. Ce protocole permet au moyen de 2 fils de communiquer entre plusieurs périphériques, il permet nottement plusieurs maîtres et plusieurs esclaves. Ici aurons un maître, le microcontrôleur et un esclave : le MGC3130.

Description du fonctionnement du protocole I2C :

  • SDA : fil de transmission de données
  • SCL : fil de transmission de l'horloge, celle ci sera générée par le maître. Elle est généralement comprise entre 100kHz et 400kHz

Description de la trame de données (source : Wikipédia):

  • condition de START : le maître génère la condition de start afin de signifier le début de la communication. C'est un passage de la ligne SDA du niveau haut au niveau bas pendant que SCL est à niveau haut.
  • octet d'adressage (sur 7bits) : les 7 premiers bits servent à l'adressage à proprement parlé, le 8ème bit (R/W) permet d'indiquer si le maître souhaite lire ou écrire, 0 pour une écriture, 1 pour pour une lecture
  • acquittement : le récepteur force la ligne SDA à niveau "LOW" (0) pour signaler une bonne réception de l'octet (ACK) ou à "HIGH"pour signaler un problème dans la réception de l'octet (NACK)
  • pause : le recepteur peut forcer la ligne SDA à 0 pour signifier qu'il est déjà occupé.
  • data : données à envoyer, dans le cas d'une écriture ou données reçues dans le cas d'une lecture
  • acquittement
  • stop : le maître génère la condition de stop pour indiquer la fin de la communication. C'est un passage de la ligne SDA du niveau bas au niveau haut pendant que SCL est à niveau haut.

Semaine 05 (20/10 - 26/10)

Dans le cadre de mon CDD au sein d'INODESIGN j'ai créé une carte électronique de démonstration basé sur un PIC16F1713 et la puce MGC3130 accompagnée de quelques LEDs. Je vais donc pouvoir utiliser cette carte pour prendre en main la communication I2C avec le MGC3130.

Installation des outils necessaires au développement sur microcontrôleur PIC :

  • l'environnement de développement utilisé sera MPLAB X, qui est l'environnement officiel de Microchip, celui possède l'avantage de pouvoir être utilisé sur plusieurs système d'exploitations différents (Linux, Windows, OS X).
  • le programmateur sera le MPLAB ICD 3 de Microchip.

Afin de prendre en main les outils et la programmation sur microcontrôleur PIC, j'ai d'abord créé un petit programme afin de contrôler les différentes LEDs.

Semaine 06 (27/10 - 02/11)

Semaine 07 (03/11 - 09/11)

Test de communication I2C, pour faire ces tests j'ai utilisé le module USB vers I2C "C232HM-DDHSL-0". Peu de documentation est fourni avec ce module, néanmoins quelques exemple de code sont présents. J'ai modifié le code afin qu'il communique avec un module I2C très simple, il s'agit d'un driver de LED PCA9532 qui se trouve sur une petite carte électronique comprenant, deux PCA9532 afin de contrôler 8 leds RGB. Malheureusement les tests s'avèrent peu concluant, l'ordinateur ne peut ouvrir une communication I2C. Les drivers utilisé par ce câble étant assez spécifiques, nous avons décidé de commander une nouvelle interface USB/I2C avec laquelle une application de démo est fournie. Cette application permet de communiquer en I2C de manière basique et c'est cela que nous recherchons.

Semaine 08 (10/11 - 16/11)

Réception de l'"USB interface adapter" de Texas Instrument. Début des tests de communication avec la carte de LEDS.

En parallèle, j'ai installé l'environnement de développement Android (ADT) basé sur Eclipse afin de me familiariser avec la programmation Android.

Semaine 09 (17/11 - 23/11)

La communication I2C avec la carte à LED fonctionne bien. J'utilise le logiciel TI Fusion Digital Power Designer qui intègre un programme pour communiquer en I2C via l'USB Interface Adapter. La prise en main du module MGC3130 avec sa librairie GestIC n'est pas chose aisée, en effet la librairie est très fournie ce qui complexifie son apprentissage.

Semaine 10 (24/11 - 30/11)

Recherches sur les différentes façons de faire de la gradation sur des ampoules à incandescences, à économie d'energie et à led. Ces trois types d'ampoules étant celles que l'on trouve le plus dans le commerce. On ne trouve plus beaucoup d'ampoule à incandescence, mais mes recherches m'ont permis de voir que la gradation sur ce type d'ampoule était relativement aisé. En revanche, je n'ai pour le moment pas trouvé le moyen de faire varier l'intensité lumineuse sur des ampoules basse consommation ou des ampoules à LED.

Semaine 11 (01/12 - 07/12)

Recherches sur les différentes solutions pour faire varier l'intensité lumineuse d'ampoule à économie d'energie. Mes recherches m'ont ammené à la conclusion que la manière la plus simple de faire la partie gradateur de mon circuit été de faire un gradateur pour lampe à incandescence/halogène.

Pourquoi ce choix ?

Tout d'abord ce type de gradateur est simple à mettre en oeuvre et peu cher, de plus je sais qu'il existe une manière de faire varier l'intensité lumineuse sur des ampoule basse consommation mais je n'ai pas encore trouvé le moyen. Le prix des variateurs "tout type d'ampoule" que l'on peut trouver dans le commerce est élévé (environ 100euros). Cela signifie que son développement dans notre système aurait un coup élevé et ça n'est pas le but recherché dans le produit final (à l'heure d'aujourd'hui). Pour finir, il existe des ampoules basse consommation compatiblent avec les gradateurs standards, notre système serait donc compatible avec ces ampoules.

Semaine 12 (08/12 - 14/12)

Conception du schéma électrique sous Eagle.

Semaine 13 (15/12 - 21/12)