Plaga de correos infectados en argentina

  • -

Plaga de correos infectados en argentina

Desde principios de Noviembre y empeorando hacia estos días (Diciembre 2018), se masificó la recepción de correos electrónicos conteniendo archivos adjuntos que supuestamente corresponden a documentos de facturación, acuses de recibo importantes y diferentes modalidades de órdenes de pago. En general el contenido del correo está en ingles o mal traducido al español y el texto difiere según el “modelo” que te haya tocado en suerte. La constante es que todos incluyen un archivo adjunto en formato Zip, Doc, Docx o PDF.

Como se ve en la imagen, hasta hubo quien lo recibió en alemán y, sin entender una letra de lo que decía, siguió los links, descargó el paquete y en definitiva terminó abonando 3 horas de servicio técnico para solucionar el estropicio.

La prevención es sumamente sencilla y simplemente consta de aplicar las mismas reglas aconsejadas habitualmente:

  • Verificar el cuenta de correo del remitente: No sólo lo que se muestra, sino la dirección real, pasando el mouse por encima o con un click derecho en la mayoria de las aplicaciónes puede verse ese dato
  • No descargas adjuntos que uno no espera
  • Contener la curiosidad (que mató al gato y a mas de una PC)
  • Saber que no hay un tesoro al final del arco iris y nadie regala nada, mucho menos en Internet: si no esperabas un pago, no lo vas a recibir. Ni una herencia. Ni una transferencia de u$s 1000000 que por error llegó a tu cuenta.

Por último cualquier cosa que descargues, al menos verificala con tu antivirus antes de abrirla. Si el Office te dice que un archivo puede ser peligroso, creéle. Y si no conoces la fuente, eliminalo.

Si no, prepará la billetera y buscá un técnico para hacer limpiar el equipo.

Mas vale prevenir…

 


  • -

Teclado simple para Arduino

En el mercado existe una gran variedad de teclados que pueden adaptarse casi a cualquier proyecto. Desde los más utilizados, como los teclados de membrana similares a un teclado telefónico hasta las matrices de pulsadores múltiples o los shields que integran el teclado a un LCD, muy útiles para manejar un menú, por ejemplo.

Resultado de imagen para teclados arduino

Pero que pasa cuando no disponemos de la cantidad de pines libres que requieren estos teclados? Y cuando no queremos o no podemos implementar un shield a nuestro proyecto?

Teclado resistivo para un sólo pin

Los pines analógicos de Arduino permiten leer tensiones de 0 a 5v devolviendo al programa un valor proporcional a la lectura, entre 0 y 1023.

Por otro lado, con un par de resistencias en serie se puede crear un divisor de tensión: un circuito que divide la tensión de entrada en el circuito en otras dos diferentes y más pequeñas de salida.

Algo así:

Se trata de una entrada de voltaje Vin y una salida a través de la resistencia R2. La resistencia R1 se usa para dividir la tensión hacia la salida Vout.

Podés saber que valor tendrá Vout con la siguiente fórmula:

Vout=(R1 / (R1 + R2)) x Vin

… pero para nuestra finalidad la verdad es que mucho no va a importar. Lo que sí tiene que importarte es que si el valor de la resistencia R1 cambia, tambien lo hará el valor de Vout. Entonces, si conectamos Vout a un pin analógico de Arduino (por ejemplo, A0), cuando cambie el valor de R1, va a cambiar el valor devuelto por analogRead(A0).

Además, R1 puede ser remplazada por varias resistencias conectadas en serie, cuyos valores se suman. Y si entre estas resistencias en serie colocamos interruptores, podemos cambiar el valor de R1 al abrir o cerrar esos interruptores. Como sigue:

Si seguís más o menos este circuito, notarás que según que pulsador se active, se sumará una diferente cantidad de resistencias (las que en nuestro ejemplo inicial llamamos R1) y por ende el valor leído en A0 será diferente.

Entonces podés conectar a tu proyecto un completo teclado para, por ejemplo manejar un menú con arriba-abajo, derecha-izquierda y OK, usando apenas 5 pulsadores y 6 resistencias. Si además tenés en cuenta que sólo vas a consumir 1 único pin analógico de tu Arduino, las ventajas ya son obvias.

Claro que es un circuito económico y sencillo y por eso, sabiendo que la magia no existe, tambien será bastante impreciso. La misma pulsación difícilmente entregue el mismo exacto valor a A0… más bien este valor va a estar dentro de un rango, pero no es demasiado difícil lidiar con eso:

 

int pinKb = A0;
 
void setup() {
 
   Serial.begin(9600);
 
   Serial.print("PULSADA:");
 
}
 
void loop() {
  // LECTURA DE TECLADO Y MENU *************************
  int pulsada = analogRead(pinKb);
 
  if (pulsada > 100) {
 
    Serial.println(pulsada);
 
  }

Habiendo armado el circuito del esquema anterior, cargás este último sketch en tu Arduino y, desde el monitor serial, vas a obtener el valor leído para cada tecla pulsada. Entonces vas a hacer repetidas pruebas con cada pulsador, tomando nota en cada caso del valor obtenido. Como resultado, vas a tener una tabla como esta:

Pulsador 1 – Valor mínimo: 100, Valor máximo 190

Pulsador 2 – Valor mínimo 210, Valor máximo 260

Pulsador 3 – Valor mínimo 310, Valor máximo 385

Pulsador 4 – Valor mínimo 410, Valor máximo 475

Pulsador 5 – Valor mínimo 516, Valor máximo 685

Con esta tabla, no te va a ser difícil implementar en tu proyecto funciones similares a la siguiente:

 

int tecla=analogRead(pinKb);
   if ((tecla>99) && (tecla<191)) { // se presionó la tecla 1 // y acá va el código en consecuencia... } if ((tecla>209) && (tecla<261)) {
    // se presionó la tecla 2
    // y acá va el código en consecuencia...
   }

A tener en cuenta:

Los valores que obtengas en tus experimentos seguramente van a ser bien diferentes de los de mi ejemplo. Van a depender principalmente del valor de las resistencias que hayas utilizado. En este ejercicio usé resistencias de 2k2, pero podes usar el valor que mejor te convenga. Tené en cuenta que cuanto mayor sea el valor de las resistencias, más amplitud habrá entre los valores obtenidos para cada tecla y esto es deseable. Pero si exagerás con las resistencias, la tensión que llegue al pin A0 puede ser demasiado pequeña para ser leída…

Este circuito, por su pobre diseño, ya es bastante impreciso en sí mismo, aunque cumple con creces con lo que se le pide. No le confiaría el control de un centro de disparo de misiles nucleares, pero para un menú de opciones de un control de luces LCD será más que suficiente. Igualmente, no está demás recomendarte que uses resistencias de tolerancias bajas… 1% no estaría mal. El valor de las resistencias varía de acuerdo a muchos factores… el circuito, el cableado, la temperatura, etc… y cuanto mayor sea la tolerancia de la resistencia, más van a variar los valores finales y por ende variarán tambien los valores obtenidos en la lectura del pin A0. Por ejemplo, para un circuito con resistencias de tolerancia 5% que armé durante el verano, con temperaturas por sobre los 30 grados, ahora que cambió el clima y tenemos unos 8 grados en el ambiente las pulsaciones en el teclado resultan erráticas: no siempre son leídas y muchas veces se confunde la tecla pulsada con otra. O bien tendría que hacer versiones diferentes del programa para cada temporada (????) o, lo correcto, usar resistencias de buena calidad con tolerancias bajas y ajustar los valores del rango correspondiente a cada tecla.

Si tu circuito usa lecturas de varios pines analógicos, especialmente si están próximos, tenés que considerar hacer una pausa entre las lecturas, para darle tiempo al microcontrolador de Arduino a limpiar los canales y obtener datos fehacientes. Un delay(100) debería ser suficiente en la mayoría de los casos.

El ruido eléctrico propio de tu circuito o interferencias externas pueden afectar estas lecturas. Incluir la instrucción inputMode(A0, INPUT_PULLUP) antes de comenzar a leer puede solucionar parte del problema (esto activa la resistencia pullup interna conectada al pin analógico de Arduino) pero si lo vas a hacer de este modo tendrás que volver a tomar los valores para tu tabla de referencia, porque el pullup activado va a modificar los valores obtenidos.

Si hay relés conectados al circuito para la activación de cargas importantes (calefactores, motores, etc…) el “chispazo” de activación de los relés pueden provocar el ruido suficiente como para que e dispare una falsa lectura de tecla pulsada. En algún momento publicaré algo sobre filtros antichispa, pero mientras tanto podes googlear el tema.

 


  • -

Rusia 2018: Estafas, spam, virus y otra vez sopa…

Cualquier oportunidad es buena. Si convoca (agrupa, aglutina y amontona) mucha gente, mejor. Y los mundiales son un regalito navideño para estafadores de toda clase que, con Internet, tienen el medio ideal para desparramar sus tramperas.

El ratón

Tramperas y ratoneras, digo, porque en general estas estafas ofrecen algún botín a manera de queso y, cuando querés alcanzarlo, Zas!, te atrapó. Sí, claro: el ratón sos vos.

Obtener gratis aquello que es normalmente es carísimo, conseguir entradas que ya no hay disponibles, comprar muy barato, recibir ganancias por nada a cambio… cualquier tesoro al final del arcoiris sigue siendo una maravillosa manera de atrapar incautos que no pueden controlar su avara y voraz ingenuidad.

Para cualquier estafa de esta clase se necesita siempre un estafador. Pero del otro lado es imprescindible una víctima ingenua pero capaz de saltearse cualquier escrúpulo, duda o inconsistencia para obtener algo que no le correspondería. Básicamente un equipo de dos deshonestos. Uno gana y el otro pierde.

El queso

Entradas

Mucho correo spam ofreciendo entradas para diferentes partidos. En general con precios altísimos, la compra de entradas en la reventa no es segura en ningún caso, pero especialmente en eventos de esta magnitud es muy desaconsejable.

En particular, se multiplicaron los sitios que ofrecen entradas para “invitados”. En primera instancia hay que entender que se trata de entradas personales, emitidas a nombre de un titular determinado. No son transferibles y lo más probable es que un tercero (quien las compre…) no pueda acceder al estadio el día del evento. Y esto asumiendo un escenario optimista en el que las entradas sean originales y no copias fraudulentas.

Por otro lado, la venta se hace a través de sitios creados específicamente para estas operaciones: una vez hecho el pago, no hay manera de asegurar que el comprador reciba los tickets.

Y por último, siendo que el medio de pago es electrónico, una vez concretada la compra el vendedor no sólo tendrá tu dinero, sino los datos de tu tarjeta de crédito o medio de pago que hayas utilizado y podría aprovecharlos para cualquier tipo de operación en muy breve tiempo: para cuando recibas el resúmen va a ser muy tarde y el daño va a estar hecho.

Partidos on-line gratis

En Argentina disminuyó levemente durante la existencia de Fútbol Para Todos (que permitía ver por TV, gratis, cualquier partido local) pero nunca dejó de existir en Internet la oferta de ver gratis y en vivo aquellas emisiones que sólo estan disponible a través de suscripciones pagas.

Aunque los partidos importantes de las copas mundiales se suelen transmitir gratuitamente por medios oficiales, los horarios laborales y otras cuestiones no siempre permiten verlos por TV y poder disfrutarlos por Internet siempre es una excelente opción. Esto es aprovechado por toda clase de estafadores. Hubo una catarata de eventos en el 2014 y nada indica que en este 2018 vaya a ser diferente.

Cualquier navegador más o menos moderno tiene TODO lo necesario para reproducir una transmisión de video. Algunos sitios reconocidos pueden requerir la descarga e instalación de una App o extensión por cuestiones de manejo de la interfase o control de los usuarios pero, más allá de esos casos específicos, cualquier sitio web que te ofrezca ver un partido mostrándote un cuadro de video que al intentar reproducirlo intenta obligarte a instalar un reproductor (una falsa versión de flash player es de lo más habitual), es una muy clara señal de que deberías buscar por otro lado. Exigirte cerrar trescientas cincuenta y siete ventanas de publicidad y responder setenta y ocho encuestas antes de mostrarte el partido, tambien.

Esos falsos reproductores suelen incluir aplicaciones para desviar tu navegador hacia páginas publicitarias, modificar los resultados de tus búsquedas y hasta descargar periódicamente diferentes programas que pueden permitirle a un tercero controlar tu equipo, obtener la información que envías normalmente a través de internet (claves, contraseñas, datos bancarios….), ponerlo a trabajar en el minado de criptomonedas para rédito de otros,  interceptar y robar tus transacciones si es que vos mismo operas con esas criptomonedas y hasta obtener acceso a tus archivos o el control de tus dispositivos (la webcam, por ejemplo)

Ofertas Imperdibles

Televisores de súperultimísima generación a precios ridículos, teléfonos celulares gratis por haber sido ganador de un sorteo  del que ni siquiera habías participado, descuentos fantásticos sólo por hacer un click en un anuncio… vas a recibir estas tentaciones por e-mail, avisos en redes sociales, mensajes y hasta posteos de amigos y familiares. Esto último porque muy probablemente ellos ya hayan caído en alguna trampa y ya tienen sus equipos infectados y alguna aplicación tiene acceso a sus contactos.

Prevenirse

Hasta ahora los antivirus y los más sofisticados sistemas de seguridad siguen siendo incapaces de protegerte de vos mismo, así que más te vale ser cauto.

Cuando hacés click en una ventana y decidís ignorar las advertencias de tu antivirus o sistema operativo y seguís adelante como un toro para instalar esa aplicación que te va a permitir ver el partido, el antivirus se rinde y a partir de ahí es problema tuyo.

Nada es 100% infalible pero al menos podés minimizar las chances de daños irreparables o abultadas facturas de servicio técnico posterior con algunas simples precauciones:

  • Si es demasiado bueno para ser cierto, es porque no lo es.
  • Hacé tus compras a través de sitios reconocidos que ofrezcan un nivel de seguridad razonable: un sitio de compraventa gratuito que pone en contacto a las partes sin casi ningún tipo de requisito o control previo es una mina de oro para toda clase de delincuentes. Revisá las reputaciones y operaciones realizadas previamente por los vendedores. Si en una venta algo no está del todo claro, mejor abortar y buscar otra oferta.
  • Cualquier correo de verificación de una operación realizada tiene que ser revisado con cuidado. Es mejor copiar los links (usando opciones como “copiar dirección de enlace” o “copiar links”) y acceder “manualmente” a través de un navegador que hacerlo directamente desde los enlaces presentes en los correos. Un link es muy fácil de falsificar: por ejemplo si hacés click en este link http://google.com te aseguro que a Google no vas, pese a que así lo diga.
  • La mayoría de los navegadores modernos advierten cuando los certificados de seguridad no corresponden con el sitio original. Especialmente en sitios de compraventa, páginas de pago o bancos, es una advertencia que no debe ignorarse. Cerrar el navegador e intentar, una vez más, ingresar manualmente al sitio buscado es la mejor opción.
  • No instales reproductores de video exigidos por una web cualquiera. Si es imprescindible, asegurate de que se trate de un servicio oficial y que la aplicación provenga de Google Play, Apple Store o la Tienda de Microsoft. No son infalibles (especialmente a Google y a Apple se le filtran miles de apps fraudulentas que ser distribuyen por millares hasta que son descubiertas y desactivadas…) pero es más seguro que no hacerlo.
  • No respondas ni completes datos en correos que te notifican sobre operaciones pendientes que no realizaste. Especialmente si te ofrecen la acreditación de una suma jugosa y pensás que se trata de un error del que podrías obtener un beneficio: esa es justamente la trampa… el queso del que hablaba al principio.
  • Prestá mucha antención a mensajes extraños en tu celular que agradezcan o confirmen la suscripción a un servicio al que no recordás haberte suscripto: muchos sitios web no oficiales (no hablo de Gmail ni Yahoo, claro…) pueden pedirte tu número de celular como método de identificación para permitirte hacer algo pero en realidad lo utilizan para suscribirte a un servicio pago de notificaciones inservibles. Ante la duda, contactá a tu empresa de celulares sobre tus suscripciones activas y dá de baja aquellas que no correpondan.
  • La aparición de publicidades excesivas en sitios que frecuentabas y no las mostraban normalmente, resultados de búsquedas incoherentes o que los links en Internet te lleven a sitios incorrectos son un claro síntoma de que tu dispositivo está comprometido. Tambien una notoria pérdida de rendimiento, lentitud en las respuestas y demoras para abrir o cerrar ventanas y aplicaciones. Hacelo revisar a la brevedad.

El consejo final

Backup. Copia de seguridad. Llamalo como quieras, pero hacelo. A diario, semanalmente, una vez por mes… según cuanta info estarías dispuesto a perder en caso de catástrofe. En un disco externo que conectás para hacer la copia y desconectás al terminar sería una excelente opción. Una copia de seguridad en la nube, tambien… y mejor todavía si está al margen de las sincronizaciones automáticas: cuando los contenidos se sincronizan en tiempo real en todos tus dispositivos y la nube es muy cómodo, pero la eliminación o la alteración de un archivo en un dispositivo se replica en todos los medios al mismo tiempo y la recuperación podría ser, si no imposible, muy engorrosa.

 

 


  • -

Conectar 2 Arduino por I2C

En un principio, para proyectos simples, no parece muy útil. Pero al empezar a explorar la posibilidad de interconectar dos o más placas Arduino entre sí, las alternativas, ocasiones y necesidad de usar este sistema se multiplican muchísimo. Por ejemplo, algunas situaciones en que la interconexión de Arduinos nos permiten saltear problemas de desarrollo. Especialmente porque podremos aprovechar al máximo la capacidad de cada una de las placas que interconectemos, haciéndolas conversar entre ellas para que se presten los recursos.

Falta de memoria

No la tuya, sino la de Arduino. Sketchs extensos o intensivo uso de variables puede hacer directamente que nuestros programas no carguen o que durante la ejecución aparezcan errores productos de la corrupción de la memoria: extraños contenidos en las variabes, funciones que no devuelven los valores esperados, cuelgues diversos…

En estos casos se puede “repartir” el sketch entre dos o más Arduinos, haciendo que uno consulte el resultado de funciones almacenado en el otro o utilizando la EPROM de ambos para almacenar datos que puedan ser consultados por uno u otro cuando se necesiten. Un buen uso de Arduino en estos casos puede producir una diferencia similar a utilizar una PC con un sólo núcleo o una con varios, porque estaremos repartiendo la carga de la ejecución del sketch en varios procesadores e incluso podremos programar procesos que corran en paralelo e independientes de la manera más pura.

Como ejemplo, podríamos utilizar un Arduino para la comunicación con el usuario, controlando un display, teclado y menúes y otro Arduino para que se encargue de relevar estado de sensores y activar o desactivar dispositivos comunicando los datos al otro cuando lo solicite.

Falta de pines, entradas o salidas

En especial cuando usamos Pro Mini o Nano, podemos encontrarnos con que nos resulten insuficientes los pines analógicos o digitales para determinadas funciones. PWM por ejemplo. Sumar Arduinos suma tambien sus puertos I/O permitiéndonos expandir nuestro proyecto todo lo que necesitemos.

Falta de velocidad

Los microcontroladores con que se equipan las placas Arduino son más que suficientes para la mayoría de las aplicaciones para las que fueron planeados, pero no son un Ryzen ni un i7. Aplicaciones complejas pueden funcionar de maravillas pero decepcionarnos un poco con los tiempos de respuesta. Tal como explicaba en el caso de falta de memoria, repartir la carga del sketch entre varios Arduinos mejora notablemente los tiempos de ejecución. La única limitación será la habilidad, creatividad y talento del programador. Y el presupuesto disponible para placas, pero de eso no me voy a ocupar… o sí? Sí, tambien:

Presupuesto

En un proyecto reciente, actual de hecho… en realidad todavía en proceso… por los requerimientos de memoria y pines opté por iniciarlo sobre una Mega cuyo costo en Argentina es de unos u$s 20.- y a poco de avanzar me resultaron insuficientes los puertos de I/O para ciertas funciones. Buscando como saltar el problema, pensé en la conexión I2C con una Pro Mini y de ese modo sumar puertos. Y allí me dí cuenta de que dos placas Pro Mini me daban los recursos necesarios y, a u$s 4.- cada una, a menos de la mitad del costo. Tambien hay que tener en cuenta el mejor aprovechamiento del espacio en el circuito final y por ende, un menor costo en fabricación y materiales de un posible PCB.

Y, la mejor parte: todo esto…

Así de Fácil

La imagen muestra el diagrama de conexión, usando en este caso dos placas Pro Mini, pero sea cual sean las placas a conectar se trata de usar una conexión a masa común (unir los pines GND de las placas y la alimentación), conectar los +5V de la fuente de alimentación a la entrada correspondiente en las placas y, la parte que nos importa, unir el pin SDA de una placa con el SDA de la otra, y el SCL de una con el SCL de la otra.

Para las placas Uno, Pro Mini y Nano, el puerto SDA corresponde al pin A4 y el SCL al pin A5. En las placas Mega y Due el puerto SDA corresponde al pin 20 y el puerto SCL corresponde al pin 21

 

Acá voy a hacer una aclaración importante: este recurso no se limita a interconectar dos placas sino que pueden sumarse tantas placas como sea necesario casi sin límite. Simplemente uniendo todos sus pines SDA por un lado y los SCL por otro. Es más, tambien pueden conectarse de este modo, en la misma línea, otros dispositivos que requieran de interconexión IC2.

Esto es así, porque luego en la programación veremos que cada dispositivo tendrá un identificador único que se utilizará en la comunicación para diferenciarlo de todos los demás. Así, si el dispositivo (o la placa) nro. 1 necesita un dato de la placa (o el dispositivo) nro. 8, enviará la pregunta al dispositivo identificado como “8” y este enviará la respuesta al dispositivo identificado como “1”, permitiendo que las conexiones entre todos viajen por los mismos cables sin confundirse.

A trabajar

Con todo conectado, vamos a escribir un primer sketch para probar el sistema. En realidad, vamos a escribir 2: uno para el Arduino que hará las veces de Master y otro para el que hará de Slave.

Master

 
// la librería encargada de proporcionarnos todos los comandos necesarios para la comunicación I2C
#include <Wire.h>
 
void setup() {
 
    Wire.begin(1); // Iniciamos el bus I2C identificando este dispositivo como 1. En el caso del Master el "1" es opcional y podríamos obtener el mismo resultado escribiendo Wire.begin();
 
}
 
void loop() {
 
    byte x = 0; // definimos x como variable tipo byte (podrá contener un valor entero entre 0 y 255)
 
    Wire.beginTransmission(8); // preparamos el bus para transmitir datos al dispositivo nro. 8
    Wire.write("x es ");        // envía 5 bytes (un caracter = un byte)
    Wire.write(x);              // envía un byte
    Wire.endTransmission();    // finaliza la transmisión
 
    x++;
 
    if (x>255) {
 
        x=0; // si x es mayor a 255 lo volvemos a 0 para no superar los valores permitidos para una variable tipo byte
 
    }
 
    delay(500); // una pausa necesaria para dar tiempo a la transmisión completa
 
}

Slave

#include <Wire.h> // la librería encargada de proporcionarnos todos los comandos necesarios para la comunicación I2C
 
void setup() {
    Wire.begin(8);                // Conectamos al bus I2c identificando a este dispositivo como 8
 
    Wire.onReceive(receiveEvent); // Se registra la función receiveEvent, que será llamada cada vez que se reciba un dato por I2C
    Serial.begin(9600);           // Iniciamos el puerto serie para imprimir la salida por el monitor serie de Arduino
 
}
 
void loop() {
    delay(100); // pausa para esperar la recepción y completar la transmisión de respuestas
}
 
void receiveEvent(int cuantosBytes) {
 
    while (1 < Wire.available()) { // loop para leer todos los bytes recibidos, menos el último
        char c = Wire.read(); // lee un byte recibido y lo convierte a caracter
        Serial.print(c);         // imprime el caracter en el monitor serie
    }
    int x = Wire.read();    // lee un último byte y lo convierte a integer
    Serial.println(x);         // imprime el valor por el monitor serie
 
}

El resultado será algo así:

X es 0

X es 1

X es 2

… nada demasiado útil ni emocionate en sí mismo, pero date cuenta que habrás logrado interconectar y hacer interactuar dos microcontroladores independientes. Master calcula el valor de x y le transmite a  Slave la frase “x es..” y el valor. Slave recibe la frase y se encarga de imprimirla a tu monitor a través del puerto serie.

Con el mismo procedimiento podés hacer que Master envíe órdenes que sean interpretadas y obedecidas por Slave.

Por ejemplo, Master envía “T”. Slave recibe un byte y si ese byte corresponde al caracter “T”, lee el valor del sensor de temperatura y lo devuelve a Master, que lo lee y si es menor a una temperatura predeterminada activa el relé de un calefactor. Ya no es tan inútil, no?

Con un poco de imaginación y talento no te será difícil crear tu propio “protocolo” de comandos para intercambiar órdenes y respuestas entre un Master y un Slave, o varios. Te será muy útil y necesario seguramente aprender o refrescar un poco las bases de la comunicación seríal basada en transmisión de bytes y un poco de sistemas numéricos para ayudarte a transmitir valores mayores a 255 o menores a 0 u otro tipo de datos.

Esa parte, se la dejo a Google.

 

 

 


Buscar en JADM

Biblioteca