﻿{"id":2000,"date":"2020-07-29T17:46:38","date_gmt":"2020-07-29T17:46:38","guid":{"rendered":"http:\/\/robots-argentina.com.ar\/didactica\/?p=2000"},"modified":"2022-01-07T00:39:32","modified_gmt":"2022-01-07T00:39:32","slug":"control-de-reles-por-enlace-de-24-ghz-modulos-nrf24l01-domotica-4","status":"publish","type":"post","link":"https:\/\/robots-argentina.com.ar\/didactica\/control-de-reles-por-enlace-de-24-ghz-modulos-nrf24l01-domotica-4\/","title":{"rendered":"Control de rel\u00e9s por enlace de 2,4 GHz \u2013 m\u00f3dulos NRF24L01 (Dom\u00f3tica 4)"},"content":{"rendered":"<p>La funci\u00f3n de este art\u00edculo es dar ejemplos de comunicaci\u00f3n inal\u00e1mbrica entre dos placas Arduino,  utilizando el m\u00f3dulo transceptor basado en el chip <strong><a href=\"https:\/\/www.sparkfun.com\/datasheets\/Components\/SMD\/nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf\" rel=\"noopener\" target=\"_blank\">NRF24L01<\/a><\/strong>.<\/p>\n<p>En la imagen se observa dos formatos de <strong><a href=\"http:\/\/robots-argentina.com.ar\/didactica\/arduino-comunicacion-inalambrica-con-nrf24l01\/\" rel=\"noopener\" target=\"_blank\">m\u00f3dulo transceptor<\/a><\/strong>, ambos con el chip <strong>NRF24L01<\/strong>. Este chip utiliza la banda de <strong>2,4 GHz<\/strong> y puede operar con velocidades de transmisi\u00f3n de <strong>250 kbps<\/strong> hasta <strong>2 Mbps<\/strong>. Si se usa en espacios abiertos y, con menor velocidad de transmisi\u00f3n, su alcance puede llegar hasta los 100 metros. Para mayores distancias, hasta 1000 metros, existen m\u00f3dulos provistos con una antena externa en lugar de una antena trazada sobre la misma placa, como se observa en la imagen.<\/p>\n<p>Con este sistema enviaremos comandos de texto que controlen un m\u00f3dulo de rel\u00e9s para manejar artefactos de 220V CA en una instalaci\u00f3n de dom\u00f3tica. Para dom\u00f3tica es suficiente el alcance del m\u00f3dulo b\u00e1sico, pero se puede optar por la versi\u00f3n con antena incorporada, si es necesario.<br \/>\n<a href=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/modulos.png\"><img loading=\"lazy\" src=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/modulos.png\" alt=\"\" width=\"806\" height=\"513\" class=\"aligncenter size-full wp-image-2001\" srcset=\"https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/modulos.png 806w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/modulos-300x191.png 300w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/modulos-768x489.png 768w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/modulos-624x397.png 624w\" sizes=\"(max-width: 806px) 100vw, 806px\" \/><\/a><br \/>\nEn nuestro art\u00edculo <strong><a href=\"http:\/\/robots-argentina.com.ar\/didactica\/arduino-comunicacion-inalambrica-con-nrf24l01\/\" rel=\"noopener\" target=\"_blank\">Arduino: Comunicaci\u00f3n inal\u00e1mbrica con NRF24L01<\/a><\/strong> est\u00e1n explicados y desarrollados en detalle varios usos del m\u00f3dulo <strong>NRF24L01<\/strong> con un Arduino. Si no est\u00e1 familiarizado con un m\u00f3dulo como este, o si desea profundizar m\u00e1s en sus caracter\u00edsticas y capacidades, recomendamos su lectura, aunque no es imprescindible para utilizar este dise\u00f1o.<\/p>\n<p>Para el control de las placas <strong>NRF24L01<\/strong> para enlace de <strong>RF<\/strong> se utiliza la biblioteca <strong><a href=\"https:\/\/github.com\/tmrh20\/RF24\/\" rel=\"noopener\" target=\"_blank\">RF24<\/a><\/strong>, totalmente compatible con las placas Arduino. En la p\u00e1gina enlazada hay una explicaci\u00f3n en ingl\u00e9s de c\u00f3mo instalarla en su IDE de Arduino. Si no, puede leer las instrucciones a continuaci\u00f3n (si ya conoce el procedimiento, saltee esta explicaci\u00f3n):<\/p>\n<h3>Como es una librer\u00eda obtenida del sitio <a href=\"https:\/\/github.com\/tmrh20\/RF24\/\" rel=\"noopener\" target=\"_blank\">GitHub<\/a>, que es un repositorio de c\u00f3digo para programadores, deberemos utilizar el m\u00e9todo de instalaci\u00f3n manual. Lo primero es descargar <a href=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/RF24.zip\" rel=\"noopener\" target=\"_blank\">la librer\u00eda en formato ZIP<\/a> dentro de la carpeta que usted elija.<\/p>\n<p>Una vez descargada debemos a\u00f1adir la librer\u00eda mediante el men\u00fa desplegable Programa >> Incluir Librer\u00eda >> A\u00f1adir biblioteca .ZIP\u2026 Se abrir\u00e1 un panel para buscar el ZIP en su disco r\u00edgido.<br \/>\n<a href=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/SeleccionEnIDE.png\"><img loading=\"lazy\" src=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/SeleccionEnIDE.png\" alt=\"\" width=\"631\" height=\"271\" class=\"aligncenter size-full wp-image-2002\" srcset=\"https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/SeleccionEnIDE.png 631w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/SeleccionEnIDE-300x129.png 300w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/SeleccionEnIDE-624x268.png 624w\" sizes=\"(max-width: 631px) 100vw, 631px\" \/><\/a><br \/>\nUna vez seleccionado el archivo \u00e9ste ser\u00e1 incluido. Cerramos el IDE de Arduino y cuando volvamos a abrirlo la librer\u00eda ya estar\u00e1 disponible.<\/h3>\n<p><strong>Circuito b\u00e1sico para el sistema<\/strong><\/p>\n<p>La biblioteca <strong>RF24<\/strong> utiliza los pines est\u00e1ndar del hardware <strong><a href=\"https:\/\/es.wikipedia.org\/wiki\/Serial_Peripheral_Interface\" rel=\"noopener\" target=\"_blank\">SPI<\/a><\/strong> (<strong>MISO<\/strong>, <strong>MOSI<\/strong>, <strong>SCK<\/strong>) que son, respectivamente, los pines digitales <strong>12<\/strong>, <strong>11<\/strong> y <strong>13<\/strong> en la placa Arduino UNO. Tambi\u00e9n se necesitan dos pines adicionales para controlar las funciones de selecci\u00f3n del chip (<strong>CS)<\/strong> y habilitaci\u00f3n del chip (<strong>CE<\/strong>).<\/p>\n<p>Estos dos \u00faltimos pines pueden ser elegidos y designados por el usuario utilizando la funci\u00f3n <strong>radio(ce_pin, cs_pin)<\/strong> de la biblioteca <strong>RF24<\/strong>; y se puede usar cualquier pin digital disponible.<\/p>\n<p>El diagrama de conexiones de los m\u00f3dulos \u2014que mostramos a continuaci\u00f3n\u2014 es id\u00e9ntico para las placas Arduino de ambos lados, transmisor y receptor. Observe con atenci\u00f3n que la entrada <strong>VCC<\/strong> del m\u00f3dulo transceptor est\u00e1 conectada a la salida <strong>3,3V<\/strong> del Arduino. No se equivoque con la alimentaci\u00f3n poni\u00e9ndola a <strong>5V<\/strong>, porque el m\u00f3dulo resultar\u00eda da\u00f1ado.<br \/>\n<a href=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-1.png\"><img loading=\"lazy\" src=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-1.png\" alt=\"\" width=\"433\" height=\"558\" class=\"aligncenter size-full wp-image-2003\" srcset=\"https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-1.png 433w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-1-233x300.png 233w\" sizes=\"(max-width: 433px) 100vw, 433px\" \/><\/a><br \/>\nA continuaci\u00f3n, le agregaremos a uno de los dos Arduino, que funcionar\u00e1 de <strong>receptor<\/strong>, un m\u00f3dulo de rel\u00e9s como los que hemos descrito y explicado en detalle en el art\u00edculo <strong>M\u00f3dulos de rel\u00e9 y Arduino: Dom\u00f3tica (1)<\/strong>. Recomendamos leerlo.<\/p>\n<p><strong>Sistema 1: Control utilizando el teclado de la computadora a trav\u00e9s de Monitor Serie<\/strong><\/p>\n<p>La placa Arduino utilizada como transmisor estar\u00e1 conectada al puerto <strong>USB<\/strong> de la PC, o laptop, que utilizamos para programarlo y luego para enviar los comandos. El puerto <strong>USB<\/strong> alimentar\u00e1 la placa y el m\u00f3dulo transmisor.<\/p>\n<p>El Arduino receptor puede estar conectado a cualquiera de los modos de alimentaci\u00f3n adecuados: un cable <strong>USB<\/strong> conectado a un cargador est\u00e1ndar de <strong>5V<\/strong>, o a un Power Bank para celular; una bater\u00eda de 9V o una fuente regulada de <strong>9V CC<\/strong> conectada al jack de entrada de alimentaci\u00f3n de la placa Arduino o a su pin <strong>Vin<\/strong>.<\/p>\n<p>El circuito del receptor se cablear\u00e1 de la siguiente manera a los m\u00f3dulos de rel\u00e9:<\/p>\n<p><strong>Nota: en este circuito se alimentan los led emisores de los optoacoples desde la misma fuente de los rel\u00e9s. Para separar totalmente los circuitos, quitar el jumper entre VCC y JD-VCC y alimentar VCC desde los 5V de la placa Arduino.<\/strong><\/p>\n<p><strong>Circuito del Sistema 1, con m\u00f3dulo de 2 rel\u00e9s<\/strong><br \/>\n<a href=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-ReceptorNRF24L01.png\"><img loading=\"lazy\" src=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-ReceptorNRF24L01.png\" alt=\"\" width=\"863\" height=\"551\" class=\"aligncenter size-full wp-image-2005\" srcset=\"https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-ReceptorNRF24L01.png 863w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-ReceptorNRF24L01-300x192.png 300w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-ReceptorNRF24L01-768x490.png 768w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-ReceptorNRF24L01-624x398.png 624w\" sizes=\"(max-width: 863px) 100vw, 863px\" \/><\/a><br \/>\n<strong>Criterio de control:<\/strong><\/p>\n<p>La lista de comandos es como sigue<\/p>\n<p><strong>a<\/strong> \u2013 Activa el rel\u00e9 1 \/ <strong>a<\/strong> apaga el rel\u00e9 1 al pulsar de nuevo<br \/>\n<strong>b<\/strong> \u2013 Activa el rel\u00e9 2 \/ <strong>b<\/strong> apaga el rel\u00e9 2 al pulsar de nuevo<\/p>\n<p><strong>Programa del transmisor<\/strong><\/p>\n<pre class=\"width-set:true width:600 toolbar:1 nums:false lang:arduino decode:true \" title=\"Transmisor\" >#include &lt;SPI.h&gt;\r\n#include &lt;RF24.h&gt;\r\nRF24 radio(7,8); \/\/ CE, CSN\r\nconst byte identificacion[6] = \"00001\"; \/\/ cualquier juego de 5 letras y numeros\r\n\r\nvoid setup() {\r\n  Serial.begin(9600); \/\/ Inicia comunicacion hacia el Monitor Serie\r\n  radio.begin();\r\n  radio.openWritingPipe(identificacion);\r\n  radio.setPALevel(RF24_PA_MIN);\r\n \/\/ Opciones RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX\r\n \/\/ MIN = -18dBm, LOW = -12dBm, HIGH = -6dBm, MAX = 0dBm\r\n  radio.stopListening();\r\n}\r\n\r\nvoid loop() {\r\n  char caracter; \r\n  if (Serial.available() &gt; 0) {\r\n    caracter = Serial.read();\r\n    if (sizeof(caracter) == 1) { \r\n        radio.write(&amp;caracter, 1);\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p><strong>Programa del receptor:<\/strong><\/p>\n<pre class=\"width-set:true width:600 toolbar:1 nums:false lang:arduino decode:true \" title=\"Receptor\" >#include &lt;SPI.h&gt;\r\n#include &lt;RF24.h&gt;\r\n#define encender LOW \/\/ definicion de valores para accionar reles\r\n#define apagar HIGH\r\nint rele1 = 2; \/\/ definicion de nombres de salidas\r\nint rele2 = 3;\r\n\r\nRF24 radio(7,8); \/\/ CE, CSN\r\nconst byte identificacion[6] = \"00001\"; \/\/ cualquier juego de 5 letras y numeros\r\n\r\nvoid setup() {\r\n  pinMode(rele1,OUTPUT); \r\n  digitalWrite(rele1,apagar); \/\/ Rele 1\r\n  pinMode(rele2,OUTPUT);\r\n  digitalWrite(rele2,apagar); \/\/ Rele 2\r\n  radio.begin();\r\n  radio.openReadingPipe(0, identificacion);\r\n  radio.setPALevel(RF24_PA_MIN);\r\n  \/\/ Opciones RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX\r\n  \/\/ MIN = -18dBm, LOW = -12dBm, HIGH = -6dBm, MAX = 0dBm\r\n  radio.startListening(); \/\/ inicio de recepcion\r\n}\r\nvoid loop() {\r\n\/**************************************************************\/\r\n  if (radio.available()) {\r\n  char texto[2]; \r\n  radio.read(&amp;texto,1); \/\/ Esperamos que llegue algo por RF desde el modulo\r\n  if (sizeof(texto)&gt;0) {\r\n\/**************************************************************\/\r\n  controlEncendido(texto[0]);\r\n  }\r\n }\r\n}\r\n\r\n\/\/ rutina auxiliar\r\nvoid controlEncendido(char val) {\r\nint valor = 0;\r\nswitch (val) {\r\n  case 'a':\r\n    valor = !digitalRead(rele1);\r\n    digitalWrite(rele1,valor); \r\n    \/\/ RELE 1 apagado \r\n    break;\r\n  case 'b':\r\n    valor = !digitalRead(rele2);\r\n    digitalWrite(rele2,valor); \r\n    \/\/ RELE 2 apagado \r\n    break;\r\n  case '0':\r\n    digitalWrite(rele1,apagar); \r\n    digitalWrite(rele2,apagar); \r\n    \/\/ Todos apagados\r\n    break;\r\n  default:\r\n    break;\r\n  }\r\n}\r\n<\/pre>\n<p>Con esta disposici\u00f3n, la manera de controlar los rel\u00e9s es como sigue: abrimos el panel de Monitor Serie y tipeamos all\u00ed los comandos \u201c<strong>a<\/strong>\u201d o \u201c<strong>b<\/strong>\u201d para encender y apagar los rel\u00e9s.<\/p>\n<p>La capacidad de control se puede ampliar utilizando m\u00f3dulos de mayor tama\u00f1o, por ejemplo de 4, 8 o 16 rel\u00e9s, y agregando las variables y l\u00edneas de programa para cada rel\u00e9. Utilizaremos en esos casos las siguientes letras: \u201c<strong>c<\/strong>\u201d, \u201c<strong>d<\/strong>\u201d y as\u00ed sucesivamente.<br \/>\n<center><br \/>\n<script type=\"text\/javascript\"><!--\ngoogle_ad_client = \"ca-pub-7090242166042605\";\n\/* femeie336x280 *\/\ngoogle_ad_slot = \"6118472803\";\ngoogle_ad_width = 336;\ngoogle_ad_height = 280;\n\/\/-->\n<\/script><br \/>\n<script type=\"text\/javascript\"\nsrc=\"\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\">\n<\/script><br \/>\n<\/center><\/p>\n<p><strong>Sistema 2: Control con pulsadores, sin necesidad de computadora<\/strong><\/p>\n<p>Con el sistema desarrollado en la primera parte dependemos de una computadora para ingresar los comandos al Arduino transmisor, y esto puede ser impr\u00e1ctico. <\/p>\n<p>Para agregar un nivel m\u00e1s de independencia al control, conectaremos unos pulsadores al circuito transmisor de Arduino que ya presentamos. Para que nos resulte m\u00e1s simple, vamos a utilizar los pulsadores de RESET con cable y conector que es posible rescatar por desarme del panel frontal de cualquier PC de mesa que haya sido descartada. Como este:<br \/>\n<a href=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/PC-Reset-Switch-Cable-On-Off-Motherboard-Cord-Front-Panel-Connector-Wire.jpg\"><img loading=\"lazy\" src=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/PC-Reset-Switch-Cable-On-Off-Motherboard-Cord-Front-Panel-Connector-Wire.jpg\" alt=\"\" width=\"600\" height=\"600\" class=\"aligncenter size-full wp-image-2008\" srcset=\"https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/PC-Reset-Switch-Cable-On-Off-Motherboard-Cord-Front-Panel-Connector-Wire.jpg 600w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/PC-Reset-Switch-Cable-On-Off-Motherboard-Cord-Front-Panel-Connector-Wire-150x150.jpg 150w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/PC-Reset-Switch-Cable-On-Off-Motherboard-Cord-Front-Panel-Connector-Wire-300x300.jpg 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><br \/>\nSi usted lo desea, puede reemplazar los dos pulsadores por cualquier modelo que usted disponga, como estos (colocados sobre una protoboard y conectados con cables), que adem\u00e1s de venir en los kits b\u00e1sicos de Arduino, son muy comunes en electr\u00f3nica:<br \/>\n<a href=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/pulsadores.png\"><img loading=\"lazy\" src=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/pulsadores.png\" alt=\"\" width=\"426\" height=\"370\" class=\"aligncenter size-full wp-image-2009\" srcset=\"https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/pulsadores.png 426w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/pulsadores-300x261.png 300w\" sizes=\"(max-width: 426px) 100vw, 426px\" \/><\/a><br \/>\n<strong>Diagrama para el Sistema 2: pulsadores y m\u00f3dulo de 2 rel\u00e9s<\/strong><\/p>\n<p>Hemos agregado dos pulsadores de panel frontal de computadora de mesa, que ingresan por las entradas digitales <strong>2<\/strong> y <strong>3<\/strong>. Los pulsadores los hemos nombrado como <strong>Puls1<\/strong> y <strong>Puls2<\/strong>.<\/p>\n<p>Con estos pulsadores podremos controlar el m\u00f3dulo de dos rel\u00e9s con el que trabajamos en este art\u00edculo hasta ahora, pero podr\u00edamos implementar este control con m\u00f3dulos de 8, 16, y hasta 32 rel\u00e9s.<\/p>\n<p>El diagrama para esta parte del proyecto \u2014siempre manteniendo el cableado b\u00e1sico del Arduino con el <strong>NRF24L01<\/strong>\u2014 es:<br \/>\n<a href=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-Transmisor-Pulsadores-1.png\"><img loading=\"lazy\" src=\"http:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-Transmisor-Pulsadores-1.png\" alt=\"\" width=\"500\" height=\"558\" class=\"aligncenter size-full wp-image-2010\" srcset=\"https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-Transmisor-Pulsadores-1.png 500w, https:\/\/robots-argentina.com.ar\/didactica\/wp-content\/uploads\/CircuitoBasico-Transmisor-Pulsadores-1-269x300.png 269w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><br \/>\n<strong>Criterio de control:<\/strong><\/p>\n<p>La lista de comandos es como sigue<\/p>\n<p><strong>Puls1<\/strong> \u2013 Activa el rel\u00e9 1 \/ <strong>Puls1<\/strong> apaga el rel\u00e9 1 al pulsar de nuevo<br \/>\n<strong>Puls2<\/strong> \u2013 Activa el rel\u00e9 2 \/ <strong>Puls2<\/strong> apaga el rel\u00e9 2 al pulsar de nuevo<\/p>\n<p><strong>Programa del transmisor:<\/strong><\/p>\n<pre class=\"width-set:true width:600 toolbar:1 nums:false lang:arduino decode:true \" title=\"Transmisor\" >#include &lt;SPI.h&gt;\r\n#include &lt;RF24.h&gt;\r\n  RF24 radio(7, 8); \/\/ CE, CSN\r\n  const byte identificacion[6] = \"00001\";\r\n  int Puls1 = 2;\r\n  int Puls2 = 3;\r\n  \r\nvoid setup() {\r\n  pinMode(Puls1,INPUT_PULLUP); \/\/ se define la entrada con un resistor a 5V (pullup)\r\n  pinMode(Puls2,INPUT_PULLUP);  \/\/ se define la entrada con un resistor a 5V (pullup)\r\n  Serial.begin(9600); \/\/ Iniciamos la comunicacion serie hacia el Monitor Serie en la PC\r\n  radio.begin();\r\n  radio.openWritingPipe(identificacion);\r\n  radio.setPALevel(RF24_PA_MIN);\r\n  radio.stopListening();\r\n}\r\n\r\nvoid loop() {\r\n  char caracter = \"\"; \r\n  if (digitalRead(Puls1) == 0) {\r\n    delay(10); \/\/ filtro de rebote mecanico\r\n    if (digitalRead(Puls1) == 0) {\r\n      caracter = \"a\";\r\n      radio.write(&amp;caracter, 1);\r\n      while (digitalRead(Puls1) == 0) { } \/\/ espera a que se suelte el pulsador\r\n    }\r\n  }\r\n  else\r\n  if (digitalRead(Puls2) == 0) {\r\n    delay(10); \/\/ filtro de rebote mecanico\r\n    if (digitalRead(Puls2) == 0) {\r\n      caracter = \"b\";\r\n      radio.write(&amp;caracter, 1);\r\n      while (digitalRead(Puls1) == 0) { } \/\/ espera a que se suelte el pulsador\r\n    }\r\n  }\r\n  delay(500);\r\n}\r\n<\/pre>\n<p><strong>Programa del receptor:<\/strong><\/p>\n<pre class=\"width-set:true width:600 toolbar:1 nums:false lang:arduino decode:true \" title=\"Receptor\" >#include &lt;SPI.h&gt;\r\n#include &lt;RF24.h&gt;\r\n#define encender LOW \/\/ definicion de valores para accionar reles\r\n#define apagar HIGH\r\nint rele1 = 2; \/\/ definicion de nombres de salidas\r\nint rele2 = 3;\r\n\r\nRF24 radio(7,8); \/\/ CE, CSN\r\nconst byte identificacion[6] = \"00001\"; \/\/ cualquier juego de 5 letras y numeros\r\n\r\nvoid setup() {\r\n  pinMode(rele1,OUTPUT); \r\n  digitalWrite(rele1,apagar); \/\/ Rele 1\r\n  pinMode(rele2,OUTPUT);\r\n  digitalWrite(rele2,apagar); \/\/ Rele 2\r\n  radio.begin();\r\n  radio.openReadingPipe(0, identificacion);\r\n  radio.setPALevel(RF24_PA_MIN);\r\n  \/\/ Opciones RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX\r\n  \/\/ MIN = -18dBm, LOW = -12dBm, HIGH = -6dBm, MAX = 0dBm\r\n  radio.startListening(); \/\/ inicio de recepcion\r\n}\r\nvoid loop() {\r\n\/**************************************************************\/\r\n  if (radio.available()) {\r\n  char texto[2]; \r\n  radio.read(&amp;texto,1); \/\/ Esperamos que llegue algo por RF desde el modulo\r\n  if (sizeof(texto)&gt;0) {\r\n\/**************************************************************\/\r\n  controlEncendido(texto[0]);\r\n  }\r\n }\r\n}\r\n\r\n\/\/ rutina auxiliar\r\nvoid controlEncendido(char val) {\r\nint valor = 0;\r\nswitch (val) {\r\n  case 'a':\r\n    valor = !digitalRead(rele1);\r\n    digitalWrite(rele1,valor); \r\n    \/\/ RELE 1 apagado \r\n    break;\r\n  case 'b':\r\n    valor = !digitalRead(rele2);\r\n    digitalWrite(rele2,valor); \r\n    \/\/ RELE 2 apagado \r\n    break;\r\n  default:\r\n    break;\r\n  }\r\n}\r\n<\/pre>\n<p>Presionando el pulsador 1 se activar\u00e1 el rel\u00e9 1, y con una nueva pulsaci\u00f3n se lo desactiva. El funcionamiento es igual para el pulsador 2 en conjunto con el rel\u00e9 2.<\/p>\n<p><small>Nota: Si usted halla un error, por favor h\u00e1ganos saber que lo ha encontrado. Gracias.<\/small><\/p>\n<p><strong>Art\u00edculos relacionados:<\/strong><\/p>\n<p>\u25a0 <strong><a href=\"http:\/\/robots-argentina.com.ar\/didactica\/modulos-de-rele-y-arduino-domotica-1\/\" rel=\"noopener\" target=\"_blank\">M\u00f3dulos de rel\u00e9 y Arduino: Dom\u00f3tica (1)<\/a><\/strong><br \/>\n\u25a0 <strong><a href=\"http:\/\/robots-argentina.com.ar\/didactica\/control-con-reles-por-interfaz-serie-domotica-2\/\" rel=\"noopener\" target=\"_blank\">Control con rel\u00e9s por interfaz serie: Dom\u00f3tica (2)<\/a><\/strong><br \/>\n\u25a0 <strong><a href=\"http:\/\/robots-argentina.com.ar\/didactica\/control-de-reles-con-control-remoto-ir-domotica-3\/\">Control de rel\u00e9s con control remoto IR: Dom\u00f3tica (3)<\/a><\/strong><br \/>\n\u25a0 <strong><a href=\"http:\/\/robots-argentina.com.ar\/didactica\/?p=2000\">Control de rel\u00e9s por enlace de 2,4 GHz \u2013 m\u00f3dulos NRF24L01: Dom\u00f3tica (4)<\/a><\/strong><br \/>\n\u25a0 <a href=\"http:\/\/robots-argentina.com.ar\/didactica\/descripcion-y-funcionamiento-del-bus-i2c\/\" rel=\"noopener\" target=\"_blank\"><strong>Descripci\u00f3n y funcionamiento del Bus I2C<\/strong><\/a><br \/>\n\u25a0 <a href=\"http:\/\/robots-argentina.com.ar\/didactica\/que-es-la-comunicacion-serie\/\" rel=\"noopener\" target=\"_blank\"><strong>\u00bfQu\u00e9 es la comunicaci\u00f3n serie?<\/strong><\/a><br \/>\n<center><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script><br \/>\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-format=\"fluid\"\n     data-ad-layout-key=\"-6u+d5+53-1c-7n\"\n     data-ad-client=\"ca-pub-7090242166042605\"\n     data-ad-slot=\"9428762062\"><\/ins><br \/>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La funci\u00f3n de este art\u00edculo es dar ejemplos de comunicaci\u00f3n inal\u00e1mbrica entre dos placas Arduino, utilizando el m\u00f3dulo transceptor basado en el chip NRF24L01. En la imagen se observa dos formatos de m\u00f3dulo transceptor, ambos con el chip NRF24L01. Este chip utiliza la banda de 2,4 GHz y puede operar con velocidades de transmisi\u00f3n de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16,3,9,4,14],"tags":[44],"_links":{"self":[{"href":"https:\/\/robots-argentina.com.ar\/didactica\/wp-json\/wp\/v2\/posts\/2000"}],"collection":[{"href":"https:\/\/robots-argentina.com.ar\/didactica\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/robots-argentina.com.ar\/didactica\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/robots-argentina.com.ar\/didactica\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/robots-argentina.com.ar\/didactica\/wp-json\/wp\/v2\/comments?post=2000"}],"version-history":[{"count":0,"href":"https:\/\/robots-argentina.com.ar\/didactica\/wp-json\/wp\/v2\/posts\/2000\/revisions"}],"wp:attachment":[{"href":"https:\/\/robots-argentina.com.ar\/didactica\/wp-json\/wp\/v2\/media?parent=2000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/robots-argentina.com.ar\/didactica\/wp-json\/wp\/v2\/categories?post=2000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/robots-argentina.com.ar\/didactica\/wp-json\/wp\/v2\/tags?post=2000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}