{"id":1215,"date":"2018-04-12T12:19:41","date_gmt":"2018-04-12T17:19:41","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/edelros\/?p=1215"},"modified":"2018-09-10T10:29:07","modified_gmt":"2018-09-10T15:29:07","slug":"morse-codec-txrx-inalambrico-433mhz-askook","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/edelros\/morse-codec-txrx-inalambrico-433mhz-askook\/","title":{"rendered":"Morse Codec - TxRx Inal\u00e1mbrico 433Mhz ASK\/OOK"},"content":{"rendered":"<p>El punto de partida es la combinaci\u00f3n de <a title=\"Morse Codec - LED\" href=\"http:\/\/blog.espol.edu.ec\/edelros\/2018\/02\/27\/morse-codec-led\/\">Morse Codec - LED<\/a> y\u00a0<a title=\"TxRx Inalambrico 433Mhz ASK\/OOK\" href=\"http:\/\/blog.espol.edu.ec\/edelros\/2018\/04\/11\/txrx-inalambrico-433mhz-askook\/\">TxRx Inalambrico 433Mhz ASK\/OOK<\/a> . Al primero se a\u00f1ade el pin 4 con el dato\/s\u00edmbolo bit \"Alto\"(1) o \"Bajo\" (0), que al repetirlos genera el espacio o tono morse.<\/p>\n<p>Como receptor se usa la misma configuraci\u00f3n de <a title=\"TxRx Inalambrico 433Mhz ASK\/OOK\" href=\"http:\/\/blog.espol.edu.ec\/edelros\/2018\/04\/11\/txrx-inalambrico-433mhz-askook\/\">TxRx Inalambrico 433Mhz ASK\/OOK<\/a> , que permite visualizar lo recibido en un segundo arduino.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/04\/TxRx433Mhz_04.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1205\" src=\"http:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/04\/TxRx433Mhz_04.png\" alt=\"\" width=\"819\" height=\"455\" srcset=\"https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/04\/TxRx433Mhz_04.png 819w, https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/04\/TxRx433Mhz_04-300x167.png 300w, https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/04\/TxRx433Mhz_04-768x427.png 768w\" sizes=\"auto, (max-width: 819px) 100vw, 819px\" \/><\/a><\/p>\n<p>El mensaje de prueba del transmisor es \" SOS\u00a0\u00a0 \" que permite observar los valores o la gr\u00e1fica en el monitor o plotter serial del programa de arduino.<\/p>\n<p>Al separar el receptor del transmisor, o bloquear la se\u00f1al, se obtendr\u00e1n lecturas diferentes a las ideales, lo que permite disponer de nuevo material de trabajo para decodificar la se\u00f1al correctamente.<\/p>\n<p>Temas como correcci\u00f3n de errores, distancias de cobertutas, etc aparecen a partir de \u00e9ste punto.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/04\/morseRF433_01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1216\" src=\"http:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/04\/morseRF433_01.png\" alt=\"\" width=\"840\" height=\"578\" srcset=\"https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/04\/morseRF433_01.png 840w, https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/04\/morseRF433_01-300x206.png 300w, https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/04\/morseRF433_01-768x528.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/a><\/p>\n<p>El siguiente paso consiste en decodificar la secuencia de 0's y 1's como puntos y rayas, previo a convertirlos nuevamente a letras.<\/p>\n<p><strong>Calidad de Se\u00f1al entre Tx y Rx<\/strong><\/p>\n<p>El los dispositivos RF433 transmisor y receptor se encuentran muy cercanos, a unos 10 cm, pues a\u00fan no se les ha a\u00f1adido una antena. Al separar un poco los RF433 se visualiza ruido en la se\u00f1al, que afecta al mensaje enviado.<\/p>\n<p>Si se presentan muchos problemas, simplifique conectando un cable entre el TxRfPin 4 y el RxRfPin A0<\/p>\n<pre>\/*  CODificador morse\r\n *   recibe un mensaje y transmite usando RF 433 Mhz\r\n *   equivale: estructura de datos char y string\r\n *   funciones: codificar y decodificar\r\n *\/\r\n\r\n\/\/ PIN para el LED, led integrado = 13\r\n#define PIN_LED 13\r\n\/\/Duraci\u00f3n de un s\u00edmbolo en  ms\r\n#define DURACION 100\r\n#define TxRfPin 4 \r\n\r\nvoid setup(){\r\n  pinMode(PIN_LED, OUTPUT );\r\n  digitalWrite( PIN_LED, LOW );\r\n  pinMode(TxRfPin, OUTPUT);\r\n  digitalWrite( TxRfPin, LOW );\r\n  \r\n}\r\n\r\nvoid loop(){\r\n  String mensaje = \" SOS  \";\r\n  String mensajemorse;\r\n  char simbolo;\r\n  int n;\r\n  mensajemorse = codifica(mensaje);\r\n  \/\/ Transmite el mensaje\r\n  n = mensajemorse.length();\r\n  for(int i=0; i&lt;=n; i++){\r\n    simbolo = mensajemorse[i];\r\n    morseTxRF(simbolo);\r\n  }\r\n}\r\n\r\nvoid morseTxRF(char simbolo){\r\n    if (simbolo == '.'){\r\n        digitalWrite(PIN_LED, HIGH );\r\n        digitalWrite(TxRfPin, HIGH);\r\n        delay( DURACION ); \r\n        digitalWrite(PIN_LED, LOW );\r\n        digitalWrite(TxRfPin, LOW);\r\n        delay( DURACION );\r\n    }\r\n    if (simbolo == '-'){\r\n        digitalWrite(PIN_LED, HIGH );\r\n        digitalWrite(TxRfPin, HIGH);\r\n        delay( DURACION*3 );\r\n        digitalWrite(PIN_LED, LOW );\r\n        digitalWrite(TxRfPin, LOW);\r\n        delay( DURACION );\r\n    }\r\n    if (simbolo == ' ') {\r\n        digitalWrite(PIN_LED, LOW );\r\n        digitalWrite(TxRfPin, LOW);\r\n        delay( DURACION );\r\n    }\r\n}\r\n\r\n\/\/ Equivalente letra a c\u00f3digo Morse. Estructura de datos\r\nstatic const struct {const char letra, *codigo;} equivale[] =\r\n{\r\n  { 'A', \".-\" }, { 'B', \"-...\" }, { 'C', \"-.-.\" }, \r\n  { 'D', \"-..\" }, { 'E', \".\" }, { 'F', \"..-.\" }, \r\n  { 'G', \"--.\" }, { 'H', \"....\" }, { 'I', \"..\" },\r\n  { 'J', \".---\" }, { 'K', \"-.-\" }, { 'L', \".-..\" },\r\n  { 'M', \"--\" }, { 'N', \"-.\" }, { 'O', \"---\" }, \r\n  { 'P', \".--.\" }, { 'Q', \"--.-\" }, { 'R', \".-.\" },\r\n  { 'S', \"...\" }, { 'T', \"-\" }, { 'U', \"..-\" }, \r\n  { 'V', \"...-\" }, { 'W', \".--\" }, { 'X', \"-..-\" },\r\n  { 'Y', \"-.--\" }, { 'Z', \"--..\" }, \r\n  { ' ', \" \" },   \/\/espacio entre palabras \r\n  { '1', \".----\" }, { '2', \"..---\" }, { '3', \"...--\" },\r\n  { '4', \"....-\" }, { '5', \".....\" }, { '6', \"-....\" }, \r\n  { '7', \"--...\" }, { '8', \"---..\" }, { '9', \"----.\" }, \r\n  { '0', \"-----\" },\r\n  { '.', \".\u2013.\u2013.\u2013\" }, { ',', \"--..--\" }, { '?', \"..--..\" },\r\n  { '!', \"-.-.--\" }, { ':', \"---...\" }, { ';', \"-.-.-.\" }, \r\n  { '(', \"-.--.\" }, { ')', \"-.--.-\" }, { '\"', \".-..-.\" },\r\n  { '@', \".--.-.\" }, { '&amp;', \".-...\" },\r\n};\r\n\r\nString codifica(String mensaje){\r\n  String mensajemorse = \"\";\r\n  int i, j, n, m;\r\n  bool encontre;\r\n  n = mensaje.length();\r\n  m = (sizeof equivale \/ sizeof *equivale);\r\n  for( i = 0; i&lt;n; i++ ){\r\n    encontre = 0;\r\n    j=0;\r\n    while(j&lt;m and encontre==0){\r\n      if(toupper(mensaje[i]) == equivale[j].letra){\r\n        mensajemorse += equivale[j].codigo;\r\n        encontre=1;\r\n       }\r\n      j++;\r\n    }\r\n    mensajemorse += \" \"; \/\/separador de caracteres\r\n  }\r\n  return mensajemorse;  \r\n}\r\n<\/pre>\n<p><strong>Por realizar<\/strong>:<\/p>\n<p>F\u00e1cilmente se determina la necesidad de un decodificador que use los datos y convierta a morse, o a texto, en el arduino o en un computador a partir de los datos seriales. Mostrar los datos en pantalla del PC o en una pantalla LCD en el arduino.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El punto de partida es la combinaci\u00f3n de Morse Codec - LED y\u00a0TxRx Inalambrico 433Mhz ASK\/OOK . Al primero se a\u00f1ade el pin 4 con el dato\/s\u00edmbolo bit \"Alto\"(1) o \"Bajo\" (0), que al repetirlos genera el espacio o tono morse. Como receptor se usa la misma configuraci\u00f3n de TxRx Inalambrico 433Mhz ASK\/OOK , que &hellip; <a href=\"https:\/\/blog.espol.edu.ec\/edelros\/morse-codec-txrx-inalambrico-433mhz-askook\/\" class=\"more-link\">Sigue leyendo <span class=\"screen-reader-text\">Morse Codec - TxRx Inal\u00e1mbrico 433Mhz ASK\/OOK<\/span><\/a><\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1293406],"tags":[],"class_list":["post-1215","post","type-post","status-publish","format-standard","hentry","category-morse"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts\/1215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/comments?post=1215"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts\/1215\/revisions"}],"predecessor-version":[{"id":1236,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts\/1215\/revisions\/1236"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/media?parent=1215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/categories?post=1215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/tags?post=1215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}