Ir al contenido principal

Te puede intersar

Conectando ESP8266 a la nube de Amazon(AWS) - Core IOT

COMUNICACIÓN SERIAL UART ENTRE ARDUINOS SIMULACION EN PROTEUS

En esta entrada de comunicación Serial se presenta la programación para obtener una comunicación entre 2 Arduinos configurados 1 como maestro y 1 como esclavo. Esta configuración nos permite monitorear 2 sensores conectado a cada uno de los Arduinos y ser mostrados por medio del principal Arduino Maestro. 

Tal como se podrá revisar más adelante tendremos conectado al Arduino Maestro un sensor de luz LDR (Light Dependent Resistor) y al Arduino Esclavo un sensor de temperatura LM35. Adicionalmente se tendrá conectado una pantalla alfanumérica de 4 filas por 20 columnas, donde se podrán visualizar ambos datos de los sensores conectados a los arduinos. La comunicación que se genera entre ambos arduinos se logra por medio de los pines de conexión serial TX / RX, esto le permite al módulo esclavo enviar la información obtenida por su sensor conectado. El Arduino Maestro imprimirá el valor de su sensor conectado en la pantalla alfanumérica y a su vez el dato obtenido por el Arduino Esclavo conectado a este.

Librerías Usadas

  • Para utilizar el arduino en PROTEUS es necesario que utilicemos la siguiente librería, que puedes bajar AQUI
  • Para el código de arduino necesitaremos las siguientes librerías:

Las cuales puedes descargar del administrador de bibliotecas en arduino buscándolas en Programa > Incluir Librería > Administrar Biblioteca

Componentes a usar

  • Arduino UNO


  • LM 35


  • PCF8574


  • LCD ALFANUMERICO 4x20


  • LDR


Conexiones 

  • Conexión Arduino Maestro



  • Conexión Arduino Esclavo

  • Conexión Sensores

(Izquierda: LM35, Derecha: LDR)

  • Conexión de LCD Alfanumérico

  • Conexión completa del proyecto

Programación de los arduinos

  • Arduino Maestro
    
    #include
    #include
    LiquidCrystal_I2C lcd(0x27,20,4);
    float luz; float val; char incomingByte; char msg[2]; int num;
    bool started = false; bool ended = false; byte index;
    void setup () {
    Serial.begin(9600);
    lcd.init();
    lcd.backlight();
    }
    void loop () {
    lcd.setCursor(0,0); lcd.print("Proyecto SStech");
    lcd.setCursor(0,1); lcd.print("Serial Tx/Rx");
    val = analogRead(A0);
    luz = 5*val/1023;
    while (Serial.available()>0){
     incomingByte = Serial.read();
    if (incomingByte == 'A') {
     started = true;
     index = 0;
     msg[index] = '\0';
    } else if (incomingByte == 'B') {
     ended = true;
     break;
     } else {
     if (index < 3) {
     msg[index] = incomingByte;
     index++;
     msg[index] = '\0'; }
    }
    }
    lcd.setCursor(0,2); lcd.print("LUZ= ");
    lcd.setCursor(5,2); lcd.print(luz);
    lcd.setCursor(0,3); lcd.print("TEMP= ");
    if (started && ended) {
     num = atoi(msg);
     lcd.setCursor(6,3); lcd.print(num);
     index = 0; msg[index] = '\0'; started = false; ended = false;
     }
    }
  • Arduino Esclavo
    
    //Envia datos de temperuta en una cadena con inicio(A) y fin (B)
    #include
    int temp;
    int val;
    SoftwareSerial otroSerial(6,7);
    void setup () {
    Serial.begin(9600);
    otroSerial.begin(9600);
    }
    void loop () {
    val = analogRead(A0);
    temp = 5*val/10.23;
    Serial.println(temp);
    // Marca El inicio de la cadena de valor enviada del esclavo
    otroSerial.print("A");
    otroSerial.print(temp);
    //Marca El final de la cadena del dato enviado del esclavo
    otroSerial.println("B");
    delay(250);
    }

Simulación

Ahora procedemos a cargar los archivos HEX a cada arduino según corresponda, para ello seguimos los siguientes pasos:

1° Vamos al arduino IDE y abrimos el programa de MAESTRO, entramos Archivo > Preferencias y Seleccionamos Compilación en  Mostrar salida detalla 

(Marcamos la casilla de Compilación)

2° Verificamos el programa y al finalizar veremos la ruta del archivo .HEX que utilizaremos. La copiamos

(Resaltado la ruta del archivo .HEX)

3° Vamos a Proteus y damos doble click izquierdo sobre el Arduino Maestro. Luego pegamos la ruta del archivo .HEX en Program File


5° Hacemos click en ok. Y realizamos el mismo proceso con el arduino esclavo

6° Procedemos a simular dando click en el botón de PLAY y vamos variando los sensores para observar el cambio en el LCD

(Ejemplo de simulación)

Y listo eso seria todo por ahora en futuras entradas haremos la conexión Serial de 3 a más arduinos. Si te interesa este tema por favor no dudes en comentarlo.
Cualquier consulta o sugerencia por favor enviar al correo: sstechnolyrp@gmail.com

Muchas gracias por leer. 

Comentarios

Entradas populares