{"id":473,"date":"2015-01-03T13:48:49","date_gmt":"2015-01-03T12:48:49","guid":{"rendered":"http:\/\/darrigan.net\/blog\/?p=473"},"modified":"2020-04-30T12:50:40","modified_gmt":"2020-04-30T10:50:40","slug":"prises-telecommandees-radiofrequence-arduino","status":"publish","type":"post","link":"https:\/\/darrigan.net\/blog\/prises-telecommandees-radiofrequence-arduino\/","title":{"rendered":"Prises t\u00e9l\u00e9command\u00e9es par radiofr\u00e9quence avec un Arduino"},"content":{"rendered":"<p>On peut acheter des prises \u00e9lectriques t\u00e9l\u00e9command\u00e9es, bien pratiques pour allumer et \u00e9teindre des lampes ou \u00e9quipements dans sa maison. Comment piloter ces prises avec une carte <a href=\"http:\/\/www.arduino.cc\/\" target=\"_blank\" rel=\"noopener noreferrer\">Arduino<\/a>, un \u00e9metteur\/r\u00e9cepteur radiofr\u00e9quence AM 433,92 MHz et un peu de r\u00e9tro-ing\u00e9nierie ? Et surtout, comment faire mieux que la t\u00e9l\u00e9commande de base fournie avec ces prises ? R\u00e9ponses avec des exemples.<\/p>\n<p><!--more--><\/p>\n<p><em>Ce qui suit\u00a0suppose que vous ma\u00eetrisiez\u00a0l&rsquo;<a href=\"http:\/\/arduino.cc\/en\/Main\/Software\" target=\"_blank\" rel=\"noopener noreferrer\">interface de programmation Arduino<\/a>.<\/em><\/p>\n<h2>Mat\u00e9riel<\/h2>\n<p>C\u00f4t\u00e9 Arduino :<\/p>\n<ul>\n<li>Une carte Arduino (Uno r\u00e9vision 3, par exemple).<\/li>\n<li>Un ensemble \u00e9metteur\/r\u00e9cepteur RF AM 433,92 MHz achet\u00e9 1,55 \u20ac (frais de port inclus !)\u00a0sur ebay\u2026 (<a href=\"http:\/\/www.ebay.fr\/itm\/1pcs-433Mhz-RF-emetteur-et-le-recepteur-Kit-pour-projet-Arduino-Nouveau-design-\/161237866019?ssPageName=ADME:L:OC:FR:3160\" target=\"_blank\" rel=\"noopener noreferrer\">ce mod\u00e8le exactement<\/a>)<\/li>\n<\/ul>\n<p>Pour les prises t\u00e9l\u00e9command\u00e9es test\u00e9es :<\/p>\n<ul>\n<li><a href=\"http:\/\/www.chacon.be\" target=\"_blank\" rel=\"noopener noreferrer\">Chacon<\/a><sup>\u00ae<\/sup> : t\u00e9l\u00e9commande mod\u00e8le RSL366T, r\u00e9f\u00e9rence 54655 (Tx) ; prise mod\u00e8le RSL3660R-F, r\u00e9f\u00e9rence 54655 (Rx).<\/li>\n<\/ul>\n<table>\n<tbody>\n<tr>\n<td>\u00a0<img decoding=\"async\" loading=\"lazy\" class=\"wp-image-493 alignnone\" src=\"http:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Chacon-T\u00e9l\u00e9commande-face.jpg\" alt=\"T\u00e9l\u00e9commande Chacon (face)\" width=\"133\" height=\"353\" srcset=\"https:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Chacon-T\u00e9l\u00e9commande-face.jpg 179w, https:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Chacon-T\u00e9l\u00e9commande-face-113x300.jpg 113w\" sizes=\"(max-width: 133px) 100vw, 133px\" \/><\/td>\n<td>\u00a0<img decoding=\"async\" loading=\"lazy\" class=\"  wp-image-491  alignnone\" src=\"http:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Chacon-T\u00e9l\u00e9commande.jpg\" alt=\"T\u00e9l\u00e9commande Chacon\" width=\"139\" height=\"354\" srcset=\"https:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Chacon-T\u00e9l\u00e9commande.jpg 192w, https:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Chacon-T\u00e9l\u00e9commande-118x300.jpg 118w\" sizes=\"(max-width: 139px) 100vw, 139px\" \/><\/td>\n<td>\u00a0<img decoding=\"async\" loading=\"lazy\" class=\"wp-image-494 alignnone\" src=\"http:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Chacon-Prise.jpg\" alt=\"Prise Chacon\" width=\"188\" height=\"353\" srcset=\"https:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Chacon-Prise.jpg 214w, https:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Chacon-Prise-160x300.jpg 160w\" sizes=\"(max-width: 188px) 100vw, 188px\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ul>\n<li><a href=\"http:\/\/www.diagral.fr\/#\" target=\"_blank\" rel=\"noopener noreferrer\">Diagral<\/a><sup>\u00ae<\/sup> : t\u00e9l\u00e9commande mod\u00e8le SOLO101F ; prise mod\u00e8le SOLO111F.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Diagral.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-497\" src=\"http:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Diagral.jpg\" alt=\"Diagral\" width=\"313\" height=\"357\" srcset=\"https:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Diagral.jpg 313w, https:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/Diagral-263x300.jpg 263w\" sizes=\"(max-width: 313px) 100vw, 313px\" \/><\/a><\/p>\n<h2>Le d\u00e9codage<\/h2>\n<p>Pour savoir comment piloter les prises avec son Arduino, il faut d&rsquo;abord conna\u00eetre le code \u00e0 transmettre sur la fr\u00e9quence. Ce code peut d\u00e9pendre du fabricant, il est structur\u00e9 diff\u00e9remment\u00a0selon les mod\u00e8les\u2026<\/p>\n<p>Pour cela, on utilise le module r\u00e9cepteur RF correctement branch\u00e9 \u00e0 la carte Arduino, et la\u00a0<a href=\"http:\/\/code.google.com\/p\/rc-switch\/\" target=\"_blank\" rel=\"noopener noreferrer\">librairie rc-switch<\/a> permettant de communiquer avec l&rsquo;\u00e9metteur\/r\u00e9cepteur RF.<\/p>\n<p style=\"text-align: center;\"><span style=\"line-height: 1.714285714; font-size: 1rem;\"> <img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-483\" src=\"http:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/RF-433-RX.jpg\" alt=\"RF 433 RX\" width=\"230\" height=\"262\" \/><\/span><\/p>\n<p style=\"text-align: left;\">Une borne DATA est reli\u00e9e\u00a0au pin #2 (=\u00a0<em>interrupt 0<\/em>) de l&rsquo;Arduino Uno. L&rsquo;antenne est un fil gain\u00e9 de 17,3 cm (antenne quart d&rsquo;onde \u00e9quivalent \u00e0 433,92 MHz).<\/p>\n<p style=\"text-align: left;\"><span style=\"line-height: 1.714285714; font-size: 1rem;\">Ouvrir le fichier d&rsquo;exemple \u00ab\u00a0ReceiveDemo_Advanced\u00a0\u00bb fourni avec la librairie. Son contenu est :<\/span><\/p>\n<pre class=\"theme:arduino-ide lang:arduino decode:true\">\/*\r\nExample for receiving\r\n\r\nhttp:\/\/code.google.com\/p\/rc-switch\/\r\n\r\nIf you want to visualize a telegram copy the raw data and \r\npaste it into http:\/\/test.sui.li\/oszi\/\r\n\r\nNeed help? http:\/\/forum.ardumote.com\r\n*\/\r\n\r\n#include &lt;RCSwitch.h&gt;\r\n\r\nRCSwitch mySwitch = RCSwitch();\r\n\r\nvoid setup() {\r\nSerial.begin(9600);\r\nmySwitch.enableReceive(0); \/\/ Receiver on interrupt 0 =&gt; that is pin #2\r\n}\r\n\r\nvoid loop() {\r\nif (mySwitch.available()) {\r\noutput(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());\r\nmySwitch.resetAvailable();\r\n}\r\n}<\/pre>\n<p>Compiler, lancer le programme sur la carte et ouvrir la fen\u00eatre du <em>Moniteur s\u00e9rie<\/em>. Testons les deux t\u00e9l\u00e9commandes\u2026<\/p>\n<h3>T\u00e9l\u00e9commande Chacon<\/h3>\n<p>Cette t\u00e9l\u00e9commande permet de piloter 4 r\u00e9cepteurs, soit ON, soit OFF. \u00c0 l&rsquo;arri\u00e8re de la t\u00e9l\u00e9commande se trouve un bouton s\u00e9lecteur \u00e0 4 positions not\u00e9es \u00ab\u00a0I \u00a0II \u00a0III \u00a0IV\u00a0\u00bb qui permet de choisir un groupe de prises particulier, ou de ne pas interf\u00e9rer avec les prises du voisin. Pla\u00e7ons le s\u00e9lecteur de groupe en position \u00ab\u00a0I\u00a0\u00bb. Appuyons sur le bouton n\u00b01, ON. Le r\u00e9sultat affich\u00e9 sur le <em>Moniteur s\u00e9rie<\/em> est :<\/p>\n<pre class=\"lang:default decode:true\">Decimal: 1381717 (24Bit) \r\nBinary: 000101010001010101010101 \r\nTri-State: 0FFF0FFFFFFF \r\nPulseLength: 438 microseconds \r\nProtocol: 1\r\nRaw data: 13580,392,1352,396,1352,396,1352,1268,480,396,1348,1272,476,396,1356,1264,480,396,1348,1272,476,396,1352,1268,476,396,1348,1272,480,392,1352,1272,476,396,1352,1268,480,396,1348,1268,480,392,1352,1272,476,1268,480,1268,480,<\/pre>\n<p>Nous avons : le code binaire, son \u00e9quivalent en codage tri-state,\u00a0la conversion des 24 bits en\u00a0d\u00e9cimal (1381717), la longueur d&rsquo;impulsion, le protocole reconnu, et les donn\u00e9es brutes du signal re\u00e7u.<\/p>\n<p>Faisons de m\u00eame avec le bouton n\u00b01 OFF :<\/p>\n<pre class=\"lang:default decode:true\">Decimal: 1381716 (24Bit) \r\nBinary: 000101010001010101010100 \r\nTri-State: 0FFF0FFFFFF0 \r\nPulseLength: 437 microseconds \r\nProtocol: 1\r\nRaw data: 13576,396,1352,400,1348,396,1348,1272,480,396,1352,1268,480,392,1352,1272,476,396,1352,396,1352,396,1348,1272,480,396,1348,1272,476,400,1348,1272,476,396,1352,1268,480,396,1352,1268,480,396,1348,1272,484,1264,480,1268,480,<\/pre>\n<p>R\u00e9p\u00e9tons ces op\u00e9rations avec les boutons n\u00b02, 3 et 4, et avec les autres positions du s\u00e9lecteur de groupe \u00ab\u00a0II\u00a0\u00bb, \u00ab\u00a0III\u00a0\u00bb et \u00ab\u00a0IV\u00a0\u00bb.<\/p>\n<p>En notant\u00a0les diff\u00e9rences, on comprend rapidement que le codage sur 24 bits est form\u00e9 par 3 s\u00e9quences de 8 bits, soit 3 octets :<\/p>\n<ul>\n<li>1er octet : correspond au codage du <strong>s\u00e9lecteur de groupe<\/strong> : (code binaire ;\u00a0code tri-state)<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\">I \u00a0 : 00010101 ;\u00a00FFF<br \/>\nII \u00a0: 01000101 ;\u00a0F0FF<br \/>\nIII : 01010001 ;\u00a0FF0F<br \/>\nIV : 01010100 ;\u00a0FFF0<\/p>\n<ul>\n<li>2e octet : correspond au codage du <strong>num\u00e9ro du bouton<\/strong> :\u00a0(code binaire\u00a0;\u00a0code tri-state)<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\">1 : 00010101 ;\u00a00FFF<br \/>\n2 : 01000101 ;\u00a0F0FF<br \/>\n3 : 01010001 ;\u00a0FF0F<br \/>\n4 : 01010100 ;\u00a0FFF0<\/p>\n<ul>\n<li>3e octet : correspond au codage de l&rsquo;<strong>action<\/strong>, ON ou OFF :\u00a0(code binaire\u00a0;\u00a0code tri-state)<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\">OFF : 01010100 ;\u00a0FFF0<br \/>\nON \u00a0: 01010101 ;\u00a0FFFF<\/p>\n<p>On sait maintenant quel code utiliser. Par exemple pour une prise dont le bouton s\u00e9lecteur est sur \u00ab\u00a0III\u00a0\u00bb et dont le num\u00e9ro est \u00ab\u00a02\u00a0\u00bb, si l&rsquo;on veut allumer (ON) la lampe branch\u00e9e dessus, il faut envoyer la s\u00e9quence binaire :\u00a0010100010100010101010101 (code\u00a0tri-states :\u00a0FF0FF0FFFFFF). La sortie sur le Moniteur s\u00e9rie indique aussi la conversion des 24 bits en d\u00e9cimal ; pour cet exemple :\u00a05326165.<\/p>\n<h3>T\u00e9l\u00e9commande\u00a0Diagral<\/h3>\n<p>Cette t\u00e9l\u00e9commande permet de piloter 16 r\u00e9cepteurs, avec un s\u00e9lecteur de groupe \u00e0 16 choix. De plus, cette t\u00e9l\u00e9commande contient une programmation horaire avec 12 programmes possibles, ce qui est bien pratique pour allumer et \u00e9teindre des lampes ou appareillages \u00e0 certaines heures.<\/p>\n<p>Le codage sur 24 bits est form\u00e9 par 3 s\u00e9quences de 8 bits, soit 3 octets :<\/p>\n<ul>\n<li>1er octet : correspond au codage du\u00a0<strong>s\u00e9lecteur de groupe<\/strong>\u00a0: (code binaire ;\u00a0code tri-state)<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\">A : 00000000 ;\u00a00000<br \/>\nB : 01000000 ;\u00a0F000<br \/>\nC : 00010000 ;\u00a00F00<br \/>\nD : 01010000 ;\u00a0FF00<br \/>\nE : 00000100 ;\u00a000F0<br \/>\nF : 01000100 ;\u00a0F0F0<br \/>\nG : 00010100 ;\u00a00FF0<br \/>\nH : 01010100 ;\u00a0FFF0<br \/>\nI : 00000001 ;\u00a0000F<br \/>\nJ : 01000001 ;\u00a0F00F<br \/>\nK : 00010001 ;\u00a00F0F<br \/>\nL : 01010001 ;\u00a0FF0F<br \/>\nM : 00000101 ;\u00a000FF<br \/>\nN : 01000101 ;\u00a0F0FF<br \/>\nO : 00010101 ;\u00a00FFF<br \/>\nP : 01010101 ;\u00a0FFFF<\/p>\n<ul>\n<li>2e octet : correspond au codage du\u00a0<strong>num\u00e9ro du bouton<\/strong>\u00a0:\u00a0(code binaire\u00a0;\u00a0code tri-state)<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\">1 \u00a0 : 00000000 ;\u00a00000<br \/>\n2 \u00a0 : 01000000 ;\u00a0F000<br \/>\n3 \u00a0 : 00010000 ;\u00a00F00<br \/>\n4 \u00a0 : 01010000 ;\u00a0FF00<br \/>\n5 \u00a0 : 00000100 ;\u00a000F0<br \/>\n6 \u00a0 : 01000100 ;\u00a0F0F0<br \/>\n7 \u00a0 : 00010100 ;\u00a00FF0<br \/>\n8 \u00a0 : 01010100 ;\u00a0FFF0<br \/>\n9 \u00a0 : 00000001 ;\u00a0000F<br \/>\n10 : 01000001 ;\u00a0F00F<br \/>\n11 : 00010001 ;\u00a00F0F<br \/>\n12 : 01010001 ;\u00a0FF0F<br \/>\n13 : 00000101 ;\u00a000FF<br \/>\n14 : 01000101 ;\u00a0F0FF<br \/>\n15 : 00010101 ;\u00a00FFF<br \/>\n16 : 01010101 ;\u00a0FFFF<\/p>\n<ul>\n<li>3e octet : correspond au codage de l&rsquo;<strong>action<\/strong>, ON ou OFF :\u00a0(code binaire\u00a0;\u00a0code tri-state)<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\">OFF : 00010100 ;\u00a00FF0<br \/>\nON \u00a0: 00010101 ;\u00a00FFF<\/p>\n<h3>Comparaison des deux t\u00e9l\u00e9commandes<\/h3>\n<p>On remarque que les codes ne sont pas identiques, ce qui explique pourquoi la t\u00e9l\u00e9commande Diagral ne peut pas piloter les prises Chacon, et inversement\u2026 Les fabricants s&rsquo;assurent ainsi que seules <em>leurs<\/em> prises seront compatibles avec <em>leur<\/em> t\u00e9l\u00e9commande, et qu&rsquo;il n&rsquo;y aura pas d&rsquo;interf\u00e9rences entre les \u00e9quipements.<\/p>\n<p>Mais\u00a0nous avons pu d\u00e9coder les s\u00e9quences et nous pouvons utiliser l&rsquo;Arduino pour commander toutes les prises, sans besoin de t\u00e9l\u00e9commande des fabricants.<\/p>\n<h2>Le pilotage<\/h2>\n<p>Connaissant les s\u00e9quences, nous pouvons les envoyer avec l&rsquo;Arduino, via l&rsquo;\u00e9metteur RF, correctement branch\u00e9 :<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/RF-433-TX.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-487 size-full\" src=\"http:\/\/darrigan.net\/blog\/wp-content\/uploads\/2015\/01\/RF-433-TX.jpg\" alt=\"\" width=\"167\" height=\"252\" \/><\/a><\/p>\n<p>La borne DATA est reli\u00e9e au pin #10 de l&rsquo;Arduino (ou un autre, du moment que le code ci-apr\u00e8s est adapt\u00e9).<\/p>\n<p>Faisons un petit code pour allumer\/\u00e9teindre la prise de son choix. Afin de nous faciliter la t\u00e2che, assignons une fois pour toutes les codes des prises \u00e0 des noms de variable \u00ab\u00a0humainement compr\u00e9hensible\u00a0\u00bb. Ces variables ne contiennent pas la s\u00e9quence en binaire mais le nombre entier correspondant aux 24 bits de la s\u00e9quence binaire.<\/p>\n<p>L&rsquo;instruction\u00a0<span class=\"theme:arduino-ide lang:arduino decode:true  crayon-inline \">mySwitch.send<\/span>\u00a0\u00a0envoie une s\u00e9quence correspondant au nombre entier contenu dans la variable, qui\u00a0sera cod\u00e9 sur 24 bits. L&rsquo;instruction <span class=\"theme:arduino-ide lang:arduino decode:true  crayon-inline\">delay(1000)<\/span>\u00a0\u00a0sert juste \u00e0 attendre 1000\u00a0ms avant de\u00a0passer \u00e0 l&rsquo;instruction suivante. Dans cet exemple simple, on fait clignoter une\u00a0fois la \u00ab\u00a0lampe du bureau\u00a0\u00bb, puis\u00a0la \u00ab\u00a0lampe du salon\u00a0\u00bb, suivi d&rsquo;une pause de 5 s.<\/p>\n<pre class=\"theme:arduino-ide lang:arduino decode:true\">#include &lt;RCSwitch.h&gt;\r\n\r\nRCSwitch mySwitch = RCSwitch();\r\n\r\nunsigned long Lampe_bureau_OFF = 1310740;\r\nunsigned long Lampe_bureau_ON  = 1310741;\r\n\r\nunsigned long Lampe_salon_OFF  = 1327124;\r\nunsigned long Lampe_salon_ON   = 1327125;\r\n\r\nunsigned long Lampe_entree_OFF = 1314836;\r\nunsigned long Lampe_entree_ON  = 1314837;\r\n\r\nvoid setup() {\r\n  Serial.begin(9600);\r\n  \/\/ Emetteur connect\u00e9 au pin #10 de l'Arduino  \r\n  mySwitch.enableTransmit(10);\r\n  Serial.println(\"init \");\r\n}\r\n\r\nvoid loop() {\r\n  Serial.print(\"allume \");\r\n  mySwitch.send(Lampe_bureau_ON, 24);\r\n  delay(1000);  \r\n  Serial.println(\"eteint \");\r\n  mySwitch.send(Lampe_bureau_OFF, 24);\r\n  delay(1000);  \r\n  Serial.println(\"allume \");\r\n  mySwitch.send(Lampe_salon_ON, 24);\r\n  delay(1000);  \r\n  Serial.println(\"eteint \");\r\n  mySwitch.send(Lampe_salon_OFF, 24);\r\n  delay(5000);\r\n}<\/pre>\n<p>Et voil\u00e0.<\/p>\n<h2>Les am\u00e9liorations possibles<\/h2>\n<p>Alors que les t\u00e9l\u00e9commandes sont limit\u00e9es au pilotage de 4 ou 16 prises, sur 4 ou 16 groupes possibles, et seulement pour leur marque, le syst\u00e8me Arduino permet de piloter autant de prise que l&rsquo;on souhaite, et de diff\u00e9rentes marques, pour autant que l&rsquo;on aie trouv\u00e9 la logique de codage.<\/p>\n<p>On peut donc piloter 4&#215;4=16 prises Chacon, et 16&#215;16=256 prises Diagral, soit bien plus que ce qu&rsquo;offrent les t\u00e9l\u00e9commandes d&rsquo;origine. En faisant l&rsquo;analyse pour d&rsquo;autres prises, il doit \u00eatre possible de piloter plusieurs prises de marques diff\u00e9rentes, l&rsquo;Arduino servant alors de \u00ab\u00a0t\u00e9l\u00e9commande universelle\u00a0\u00bb.<\/p>\n<p>Un Arduino autonome, dont le programme contient des s\u00e9quences d&rsquo;allumage et d&rsquo;extinction de prises en fonction de l&rsquo;heure, de la luminosit\u00e9 ambiante ou d&rsquo;autres capteurs, peut servir \u00e0 fabriquer un simulateur de pr\u00e9sence complexe, ou \u00e0 d\u00e9clencher simultan\u00e9ment un ensemble de prises, volets roulants, etc., selon les moments de la journ\u00e9e, chose qui n&rsquo;est pas possible avec la t\u00e9l\u00e9commande\u00a0Chacon.<\/p>\n<p>En combinant le\u00a0module RF r\u00e9cepteur sur l&rsquo;Arduino, il est possible de t\u00e9l\u00e9commander l&rsquo;Arduino pour lui faire ex\u00e9cuter des actions complexes. Par exemple l&rsquo;appuie du bouton n\u00b02 ON d\u00e9clenche un programme, le bouton n\u00b02 OFF d\u00e9clenche un autre programme, etc.<\/p>\n<p>Plusieurs Arduino munis des modules RF peuvent interagir ensemble, dans la limite o\u00f9 les signaux ne sont pas \u00e9mis en m\u00eame temps\u2026<\/p>\n<p>Cependant, on voit que le codage de ces prises reste simple et leur acc\u00e8s n&rsquo;est pas s\u00e9curis\u00e9 : \u00a0il est possible de programmer l&rsquo;Arduino pour \u00e9mettre toutes les s\u00e9quences binaires possibles et mettre une grande\u00a0pagaille chez un voisin qui utilise ce genre de prises ! \ud83d\ude09 Mais ce n&rsquo;est bien s\u00fbr pas la philosophie d&rsquo;un v\u00e9ritable\u00a0<em>hacker<\/em>.<\/p>\n<p>Les syst\u00e8mes t\u00e9l\u00e9command\u00e9s plus s\u00e9curis\u00e9s, comme ceux des portails de garage, poss\u00e8dent des codages plus complexes qui peuvent changer \u00e0 chaque utilisation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>On peut acheter des prises \u00e9lectriques t\u00e9l\u00e9command\u00e9es, bien pratiques pour allumer et \u00e9teindre des lampes ou \u00e9quipements dans sa maison. Comment piloter ces prises avec une carte Arduino, un \u00e9metteur\/r\u00e9cepteur radiofr\u00e9quence AM 433,92 MHz et un peu de r\u00e9tro-ing\u00e9nierie ? Et surtout, comment faire mieux que la t\u00e9l\u00e9commande de base fournie avec ces prises ? [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[39,5],"tags":[30,44,32,45,46],"_links":{"self":[{"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/posts\/473"}],"collection":[{"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/comments?post=473"}],"version-history":[{"count":24,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/posts\/473\/revisions"}],"predecessor-version":[{"id":801,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/posts\/473\/revisions\/801"}],"wp:attachment":[{"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/media?parent=473"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/categories?post=473"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/tags?post=473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}