3. Primera Parte

PROCEDIMIENTO

  1. Observe el script para el transmisor1 (provisto por la cátedra) e interprete su funcionamiento.

      1. ¿Qué realiza la línea "char tx_byte = mensaje[byte_ind];"?

      2. ¿Qué realiza la línea “bool tx_bit = tx_byte & (0x80 >> bit_ind);”?

      3. ¿Qué realiza este comando: tx_bit ? "1" : "0"?

      4. ¿Por qué se colocó un retardo (delay(1000 / TX_RATE);)?

      5. ¿Qué se espera observar en el PIN TX_DATA (PIN 31)?

  2. A continuación realice el conexionado que se muestra en la Figura 1 o Figura 2, según se disponga de un display con controlador para bus I2C o no. Conecte el arduino MEGA 2560 a la PC mediante el cable USB y cargue el código correspondiente al mismo.

  3. Conectar el PIN de transmisión (PIN 31) al osciloscopio. Analice la señal y verifique que la misma corresponde al mensaje enviado, decodificando los primeros caracteres.

      1. ¿Qué tipo de codificación se utilizó para convertir los caracteres en bits?

      2. ¿Cuántos bits componen cada carácter?

      3. ¿Qué tipo de codificación se esta empleando para la transmisión del mensaje?

  4. Observe el script del receptor2 (provisto por la cátedra) e interprete su funcionamiento.

      1. ¿Qué realiza el código?

      2. ¿Qué realiza la línea “bool rx_bit = digitalRead(RX_DATA);”?

      3. ¿Qué realiza la línea “rx_byte |= (0x80 >> bit_pos);”?

      4. ¿Qué realiza este comando: rx_byte & (0x80 >> i) ? "1" : "0"?

      5. ¿Cuál es la función del comando delay(200)?, y ¿por qué se colocó el valor 200 como argumento?

  5. Realice el conexionado que se muestra en la Figura 1 o Figura 2, según se disponga de un display con controlador para bus I2C. Conecte el Arduino MEGA 2560 a la PC medainte el cable USB y cargue el código al mismo.

  6. Conecte el PIN 31 (transmisión de datos) del transmisor al PIN 31 del receptor y unifique las masas de los Arduinos como se muestra en la Figura 3.

  7. Presione interruptor de reset de ambos Arduinos de forma sincronizada y verifique si el mensaje recibido en el receptor corresponde a lo enviado por el transmisor.

      1. ¿Por qué se debe resetear al mismo tiempo ambos Arduino?

      2. ¿El receptor recibió el mensaje de forma correcta?, en caso de no haberlo hecho ¿cuál cree que es la causa de esto?

  8. Modifique el delay del receptor (dependiendo del analisis del punto 7.2 deberá incrementar o disminuir el mismo) y observe si mejora la recepción de los datos.

      1. ¿Es una solución viable modificar el delay del receptor?

      2. ¿Si en lugar de utilizar delay tanto para el transmisor como para el receptor se utiliza el timer del Arduino se solucionaría el problema?

      3. ¿Las frecuencia de los cristales son iguales?

      4. ¿Cree que la recomendación del punto 8.2 funcionará?

      5. ¿Qué solución se le ocurre?

Figura 1 - Conexionado de display con controlador I2C al Arduino MEGA 2560.

Figura 2 - Conexionado del display sin controlador I2C al Arduino MEGA 2560.

Figura 3 - Conexión entre Arduinos MEGA 2560.

1Código provisto por la cátedra: transmisor_v1.ino o transmisor_v1_i2c.ino

2Código provisto por la cátedra: receptor_v1.ino o receptor_v1_i2c.ino

3En caso de utilizar display con controlador I2C utilizar la librería NewLiquidCrystal