Laboratorio de Transmisión Serie
Laboratorio de Transmisión Serie entre dispositivos Arduino
3. Primera Parte
PROCEDIMIENTO
-
Observe el script para el transmisor1 (provisto por la cátedra) e interprete su funcionamiento.
-
¿Qué realiza la línea "char tx_byte = mensaje[byte_ind];"?
-
¿Qué realiza la línea “bool tx_bit = tx_byte & (0x80 >> bit_ind);”?
-
¿Qué realiza este comando: tx_bit ? "1" : "0"?
-
¿Por qué se colocó un retardo (delay(1000 / TX_RATE);)?
-
¿Qué se espera observar en el PIN TX_DATA (PIN 31)?
-
-
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.
-
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.
-
¿Qué tipo de codificación se utilizó para convertir los caracteres en bits?
-
¿Cuántos bits componen cada carácter?
-
¿Qué tipo de codificación se esta empleando para la transmisión del mensaje?
-
-
Observe el script del receptor2 (provisto por la cátedra) e interprete su funcionamiento.
-
¿Qué realiza el código?
-
¿Qué realiza la línea “bool rx_bit = digitalRead(RX_DATA);”?
-
¿Qué realiza la línea “rx_byte |= (0x80 >> bit_pos);”?
-
¿Qué realiza este comando: rx_byte & (0x80 >> i) ? "1" : "0"?
-
¿Cuál es la función del comando delay(200)?, y ¿por qué se colocó el valor 200 como argumento?
-
-
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.
-
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.
-
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.
-
¿Por qué se debe resetear al mismo tiempo ambos Arduino?
-
¿El receptor recibió el mensaje de forma correcta?, en caso de no haberlo hecho ¿cuál cree que es la causa de esto?
-
-
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.
-
¿Es una solución viable modificar el delay del receptor?
-
¿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?
-
¿Las frecuencia de los cristales son iguales?
-
¿Cree que la recomendación del punto 8.2 funcionará?
- ¿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