Retrouvez l'article, Communication CPL -Partie 1.
Pour rappel le CPL, permet de construire un réseau informatique sur le réseau électrique ; basiquement nous allons utiliser les lignes électriques présentes afin de transporter des données. Les plugs CPL vendues dans le commerce sont équipés d’une entrée RJ45 qui leur permets de diffuser les données liées à votre connexion internet. A savoir, un module installé près de votre routeur/box FAI permet d’envoyer les requêtes HTTP sur le réseau électrique ; Un second module installé aléatoirement sur le même réseau électrique (même phase et pour des tronçons électriques de même diamètre) viendra réceptionner les requêtes HTTP afin de diffuser ces dernières et ainsi amplifier la portée de votre réseau internet. Toujours muni d’au moins deux éléments vous pourrez donc étendre votre réseau Ethernet au travers de vos lignes électriques (sans que votre routeur ne soit à proximité).
D'une manière générale la technologie CPL permet de transmettre des informations en utilisant le réseau électrique, et pas seulement pour communiquer sur le net.
Même s’il est vrai que nos échanges par radiofréquence sont fiables à 99%, les 1% d’erreur potentiel peuvent engendrer de gros problèmes, et réduire à néant notre système de communication. C’est pourquoi une communication filaire est toujours préférable et plus sécurisée. C'est donc l’avantage indéniable de ce mode de communication, la fiabilité.
Problématique
La technologie CPL est donc très prometteuse. Aussi nous voudrions utiliser cette technologie pour les transferts de données liés à notre système domotique. Néanmoins concernant notre projet, et comme j’en faisais mention dans l’article précédent, nous n’allons pas démonter un plug CPL vendu dans le commerce afin de l’incorporer dans notre installation. Cela reviendrait cher et ne serait pas très élégant.
Nous avions également vue la possibilité de nous rediriger vers le schield Mamba ; mais son prix reste relativement élevé (entre 50 et 70$).
Enfin certains semblent s'être orientés vers une création entièrement DIY, mais la tâche est concidérable, alors chapeau à ceux qui ont tenté l'aventure !
J'ai une bonne nouvelle pour vous, une série de module a vue le jour, CPL DIY ( dit "à nu") vendue dans le commerce à un prix raisonnable. Nous allons donc poursuivre notre mise en place avec l’un de ces module : le Narrow Band Powerline Communication Module, que vous trouverez pour environ 20 à 25€ /unité (cf.fiche technique ci-dessous).
Concernant les modules à bas prix, méfiance tout de même !
Surveiller la fiche technique lors de vos achats, vous y trouverez la taille maximum de la trame que vous serez capable de transmettre entre vos éléments ; et quand certains plug CPL du commerce atteignent maintenant des transferts de l’ordre du Giga/octet, nos modules DIY seront très souvent bien plus limités (quelques octets environ). Le module présenté ici fonctionne jusqu’à 19200 bps, et peut transmettre des trames de l’ordre des 20 bytes par transfert, et ce jusqu’à 1km environ.
Je vous l’accorde, nous n’échangerons pas des trames de données volumineuses par ce biais, mais cela devrait suffire compte tenu des messages courts que nous devons faire transités. Ainsi nous allons pouvoir transiter via nos lignes électriques des messages courts (quelques octets) entre nos différents éléments commandés. Autrement dit, nous ne serons plus soumis au hasard des interférences électromagnétiques, et aux aléas des pertes de trame, rencontrés avec l’utilisation de la technologie de communication radiofréquence.
Lien d’achat (20/25€ au 4/02/18) https://www.robotshop.com/en/narrow-band-powerline-communication-module.html
Description
· Narrowband powerline communication module with simple MAC
· Moves serial data over the power line network with speed of 500 bps
· Interface data rate: 19200 bps (TTL UART)
· Carrier frequency: 290KHz/125Khz
The Narrow Band Powerline Communication Module moves serial data over the power line network at a speed of 500 bps, and achieves the target of replacing serial cables by the ubiquitous power line network. It can work on AC 220V/110V, 50Hz/60Hz, or DC line.
Application
· AMR
· Industry manufacture and control
· Safeguard, fire alarm, smoke alarm
· Collect and transmit instrument data
· Safeguard and monitor
· Home automation
· Parking Meters
Specifications
· Voltage: 220V/110V AC or 12V-16V DC
· Interface: TTL UART, RXD, TXD
· Communication powerline: 220V/110V, 50Hz/60Hz, DC, or no power
· Communication distance: 1000 meters (depends on the powerline environment)
· Frame length: <=20 bytes
· Modulation: Narrow band
· Working temperature: -20°C to +70°C
Dimensions
· Size: 6cm (L) x 4.5cm (W) x 2cm (H)
ATTENTION
Je tiens à rappeler encore une fois que les opérations effectuées sur des tensions secteurs (110v / 220v) ne sont pas à prendre à la légère. Toutes les précautions doivent être prisent.
Ne travaillé jamais directement sous tension, débrancher toujours l'appreil ou disjoncter le fusil adéquate avant de commencer.
Assurez vous toujours que le courant est bien interrompu avant de commencer.
Serrez convenablement vos connectiques. Un désserrage sur une connectique secteur avec une forte intensité peut occasionner des incendies, des brulures ...
Description pratique
Pour ceux qui connaissent déjà les protocoles d’échanges par radiofréquence, ou simplement les communications Serial par exemple entre deux Arduino le fonctionnement de ce nouveau module ne devrait pas trop vous perturber ;
Vous retrouverez donc les pins RXD (réception data) et TXD (transmission data), ainsi que l'alimentation via les pins GND et VCC ;
Vous remarquerez que la pin en bas à gauche sur la photo ci-dessous porte la mention +5VOUT, en effet le module est également capable d'alimenter des éléments externes jsuqu'à 500mA.
Aussi, pas de quoi nous dépayser. Pour le test nous pouvons connecter deux modules l’un à l’autre via les connecteurs RXD et TXD ;
RXD < ----------------- TXD
TXD ----------------- > RXD
Schéma connection Module CPL
Connection CPL & Microcontroleur
D'un côté vous trouverez les connexions indiquées MIC pour Microcontroleur, à relié à votre arduino.
Ici le module nous délivre une logique 5V TTL, ce qui nous permet une parfaite compatibilité avec l'ensemble des Arduino en logique 5V.
Connection CPL & Secteur
De l'autre côté, le domino, est à relié vers le secteur.
Il faut savoir que les modules fonctionnent aussi bien sur courant AC que sur DC. Ils peuvent communiquer sur des tensions allant de 12/24v jusqu’à 220V/110V, 50/60Hz
Le module peut, soit être alimenter via la ligne électrique sur laquelle il communique ses données, soit être alimenté avec un transformateur externe (dans le cas d'une alimentation externe reportez vous à la pin VHH, visible sur la photo précédente).
Connection CPL : Vitesse de transmission
Les trois pins situées sur le bas du module (référencé a, b et c sur la photo ci-après, de droite à gauche) servent à définir la vitesse de transmission, qui sert de base au fonctionnement du module.
Ainsi, en appliquant une tension positive (1) (VCC +5v), ou négative (0) (GND), sur chaque pin vous modifierez le comportement du module.
Les vitesse de transmission peuvent ainsi être modifiées de, 600, 1200, 2400, 4800 , 9600 or 19200bps, en suivant le tableau ci-dessous.
La vitesse par défaut est configurée à 19200bps. Les trois pins sont à l'état HIGH (VCC +5v) par défauts.
Nous retrouvons notre habituel 9600bps, qui est la vitesse de transmission que l'on utilise généralement avec nos Arduino. Afin de paramétrer une vitesse de 9600bps, il nous suffit donc de relier le pin 'c' avec GND (comme présenté sur le premier schéma de la rubrique).
A noter : Si vous souhaitez créer un réseau CPL avec différents modules, veillez à vérifier leurs fréquences de communication. En effet, en fonction des modules, les fréquences de communication varient ; il vous sera donc impossible de faire communiquer deux modules entre eux n’ayant pas la même plage de fréquence. Toutefois quelques modules différents semblent voir le jour, d’une manière générale, il est donc impératif de contrôler que les caractéristiques du produit correspondent aux attentes de votre projet.
Programmation des échanges
Une fois notre branchement effectué, il ne nous reste qu’à injecter des données sur l’un des module afin que celles-ci soient transmissent vers le second module.
Il faut noter que chaque module sera à la fois capable d’émettre, mais aussi de recevoir des données (RXD, TXD).
Programmation Transmission
Nous commencerons par définir dans le setup(), la vitesse de transmission de l’échange : Serial.begin(9600) ;
Comme nous en avons parlé plus tôt, le module est capable de communiquer jusqu’à 19200bps. Or avec notre Arduino nous avons l’habitude de communiquer sur une base de 9600bps, en configurant notre module à 9600bps nous pouvons communiquer des données de la même manière que nous le faisions entre deux Arduino.
A noter :
Ici la vitesse de transmission est donnée en bauds (bit/seconde).
Contrôler la vitesse conseillée sur la notice de votre module.
Selon le module choisit vous pourrez plus ou moins augmenter cette vitesse.
Puis pour les instructions de la boucle principale du programme, nous avons juste à inscire un paquet dans le buffer : Serial.print(‘data’) ;
Ou ‘data’ représente notre trame à envoyer.
Voici tout ce que l’on doit inscrire pour ce qui est du côté émetteur CPL.
Programmation Réception
Pour la partie réception quelques instructions supplémentaires sont nécessaires :
En effet nous allons devoir faire une boucle de lecture des octets présents dans notre buffer. Pour schématiser, notre buffer est simplement un conteneur qui permet de stocker les data reçues avant qu’elles ne soient traitées. Une mémoire tampon si vous préférez. Si nous avons émis une trame avec l’instruction ; Serial.print(12345) ;
Alors coté réception le buffer contiendra ; 12345.
Comme dit précédemment nous allons ici simplement devoir effectuer une boucle de lecture afin d’extraire les données reçues.
Vous trouverez de nombreux exemples de code sur internet utilisant des boucles de lecture avec Arduino.
La programmation des ATmega328 necessaire au fonctionnement des modules CPL présentés ici est basique et s'apparente à la lecture et l'écriture de données sur le port-série. Toutefois si vous rencontrez des difficultés est que vous souhaitez disposer d'un exemple de code n'hésitez pas à postez vos demandes en commentaire.
Afin de diminuer le coût de l'installation domotique j’ai choisi de constituer des multiprises commandées. Ceci nous permettra de réduire d’autant le coût du projet. Ainsi pour contrôler 4 appareils / 4 prises, nous aurons uniquement besoin d’un module CPL. Pensez toutefois à utiliser des boitiers suffisamment volumineux pour accueillir l’ensemble de notre montage, y compris le module CPL, un bloc alimentation ainsi que nos relais (un par prise), et enfin notre MIC ici le ATmega328, et pourquoi pas un emetteur radio...
Pour ma part j'ai utilisé des boitiers multiprises équipés de modules hub USB, qui une fois démonter, nous permets d'obtenir la place nécessaire à notre personnalisation.
Afin d'augmenter encore l'espace disponible, j'ai dû également faire sauter 2 prises sur les 6 de bases.
Le boitier 4 prises commandées par CPL
Vue du montage global, coffret ouvert
Vue du montage (partie contrôle)
Modul alimentation 220/5v, Arduino-Nano avec ATmega328, MIC protection I/O, Emeteur radio-fréquence 433MHz, Modul CPL (de haut en bas).
Vue du montage (partie relay électrique)
Vue du montage (partie prises commandées)
BILAN
Muni de ces informations, vous pourrez vous servir de vos modules afin de transmettre et recevoir des données sur votre réseau électrique.
Nous venons de voir comment effectuer la communication entre nos deux modules, toutefois vous pourrez de la même manière faire communiquer autant de module qu’il vous semblera nécessaire.
Le sujet est vaste et ne peut-être couvert rapidemment, c'est pourquoi si vous rencontrez des problèmes n'hésitez pas à m'en faire part en commentaire.
A lire également un excelent tutoriel fait par linkSpirit.
Vous voici donc paré à toutes éventualités pour vos projets d’échange par communication filaire.
Nous allons bientôt détailler une partie intéressante ; la communication sans-fil, avec la description des modes de communications par radiofréquence, bluetooth, infrarouge…
Retrouvez les articles sur le CPL ;
L’arduino et la technologie CPL & Le shield Mamba, ainsi qu’un exemple de mise en place d’un réseau CPL.