Control Maestro-Esclavo con Arduino: Restablecimiento y Bloqueo mediante Botones.

Comunicación con Arduino maestro-esclavo, utilizando botones para manipular la transmisión de datos con LEDS.

...
Posteado por Caamal el 13-06-2024 a las 01:14
Categoria: Arduino
Realizado por: Carlos Caamal, Cat Avilés Francisco, Víctor Catzin, Yáñez Alvarado, Isaac segura, Huchim Miguel, Bermúdez Alejandro.

Presentación.

Este proyecto se enfoca en desarrollar la transmisión de datos mediante dos Arduinos, los cuales son configurados en una relación de maestro-esclavo. Utilizando botones, se puede controlar y manipular la transmisión de datos entre ambos módulos. Los botones permiten restablecer y bloquear la comunicación, proporcionando un control preciso sobre la transmisión de datos.

Mediante la configuración maestro-esclavo, el Arduino maestro puede enviar comandos y recibir datos del Arduino esclavo, permitiendo una comunicación eficiente y organizada. Este sistema es fundamental para aplicaciones avanzadas que demandan una transmisión de datos fiable y manipulable.

Funcionamiento.

Una vez establecida la conexión adecuada en nuestro proyecto, procedemos a proporcionar la alimentación correcta a nuestros Arduinos. Cada Arduino está conectado a un botón, y el Arduino esclavo tiene conectados dos LEDs: uno verde y uno rojo.

Al presionar el botón conectado al Arduino esclavo, se enciende el LED de color rojo, indicando que se ha realizado una acción. Esta acción bloquea completamente los otros botones, evitando que más de un botón realice la misma acción simultáneamente. Para permitir que otro botón funcione, se debe presionar el botón de reset que está conectado al Arduino maestro. Esto enciende el LED verde, indicando que el botón del Arduino esclavo se puede presionar nuevamente.

Esta configuración demuestra cómo se coordinan el Arduino esclavo y el Arduino maestro, asegurando que las acciones sean gestionadas de manera eficiente y sin interferencias.

Realización.

Materiales necesarios para el ensamblado del proyecto:

  • 2 Arduino Uno.
  • 2 LEDS, uno rojo y uno verde.
  • 2 botones.
  • Cables
  • 1 Protoboard

El circuito queda de la siguiente manera: 

 

El resultado queda de la siguiente manera:

Programación.

Código 1. Arduino Maestro.

const int buttonPin = 2;  // Pin del botón

char receivedChar;         // Variable para almacenar el carácter recibido

 

void setup() {

  Serial.begin(9600);     // Inicializar la comunicación serie a 9600 bps

  //pinMode(buttonPin, INPUT_PULLUP); // Configurar el pin del botón como entrada con pull-up interno

  pinMode(buttonPin, INPUT_PULLUP);

}

 

void loop() {

 

  int buttonState = digitalRead(buttonPin); // Leer el estado del botón

  if (buttonState == LOW) {  // Si el botón está presionado

    Serial.println('r');

    //Serial.print("1 ");     // Enviar el carácter 'a' por el puerto serie

    delay(250);               // Pequeño retardo para evitar rebotes

    digitalWrite(buttonPin, HIGH); // Desactivar el botón

  }

}

Código 2. Arduino Esclavo.

const int buttonPin = 2;  // Pin del botón

char receivedChar;         // Variable para almacenar el carácter recibido

 

int ledRojo = 9;

int ledVerde = 11;

 

void setup() {

  Serial.begin(9600);     // Inicializar la comunicación serie a 9600 bps

  pinMode(buttonPin, INPUT_PULLUP); // Configurar el pin del botón como entrada con pull-up interno

  pinMode(3, OUTPUT);

  pinMode(ledRojo, OUTPUT);

  pinMode(ledVerde, OUTPUT);

}

 

void loop() {

  if (Serial.available() > 0) {  // Si hay datos disponibles para leer

    receivedChar = Serial.read(); // Leer el carácter recibido

    if (receivedChar == 'b') {    // Si se recibe 'b'

      digitalWrite(3, HIGH); // Desactivar el botón

 

    }

    else if (receivedChar == 'r') { // Si se recibe 'r'

      digitalWrite(3, LOW); // Activado el botón

      digitalWrite(ledRojo, LOW);

      digitalWrite(ledVerde, HIGH);

 

    }

  }

 

  int buttonState = digitalRead(buttonPin); // Leer el estado del botón

  if (buttonState == LOW) {  // Si el botón está presionado

    digitalWrite(ledVerde, LOW);

    digitalWrite(ledRojo, HIGH);

    Serial.print("1 ");     // Enviar el carácter 'a' por el puerto serie

    //delay(100);               // Pequeño retardo para evitar rebotes

    digitalWrite(3, HIGH); // Desactivar el botón

  }

}

Utilización.

  • Una vez realizadas todas las conexiones necesarias, procedemos a conectar nuestros Arduino a nuestra PC.
  • Se cargan los códigos a cada Arduino, importante identificar a nuestro Maestro y nuestro Esclavo.
  • Procedemos a presionar el botón que tiene el Arduino esclavo, este nos encenderá el LED de color rojo, indicando que se ha realizado la acción.
  • Una vez hecha dicha acción, no se podrá hacer ninguna otra a menos que el Arduino maestro oprima el botón de reset, lo que hará que se encienda el led de color verde, esto para indicar que ya se puede volver a presionar el botón.  
  • De esta manera tendremos un buen funcionamiento de nuestro proyecto además de su gran coordinación al enviar los datos cada vez que el botón se presiona.

Conclusiones.

Carlos: En conclusión, este proyecto demuestra la efectividad de la coordinación precisa entre dispositivos Arduino utilizando botones. La capacidad de bloquear y restablecer acciones garantiza un control ordenado y sin interferencias, fundamental para diversas aplicaciones en automatización y sistemas de control.

Víctor: El proyecto de maestro-esclavo con dos botones, donde el esclavo bloquea y el maestro desbloquea, es una solución ingeniosa para controlar sistemas con seguridad incorporada. Esta configuración ofrece un mecanismo de protección intuitivo, donde el esclavo actúa como una capa de seguridad que impide no acciones autorizadas. Al presionar el botón esclavo, se establece un estado de bloqueo que previene cualquier cambio no deseado, mientras que al activar el botón maestro, se libera el sistema para realizar ajustes o acciones necesarias.

Bermúdez: En resumen, aprendí a hacer que dos Arduinos se comuniquen en una configuración maestro-esclavo. También descubrí cómo usar botones para controlar la transmisión de datos, incluyendo cómo restablecer y bloquear la comunicación. Esto me ayudó a entender mejor cómo funcionan estos sistemas y a mejorar mis habilidades en proyectos electrónicos.

Yañez: En resumen, aprendí a conectar y controlar dos Arduinos en una configuración maestro-esclavo. Usando botones, logré manejar la transmisión de datos entre ellos, pudiendo resetear y bloquear la comunicación según fuera necesario. Esta experiencia me enseñó mucho sobre cómo gestionar la comunicación entre dispositivos y mejoró mis habilidades prácticas con Arduino.

Huchim: En este proyecto entendí que la comunicación maestro-esclavo en Arduinos es crucial para la organización y eficiencia en sistemas automatizados facilitando la coordinación y el control de varios módulos y sensores en base a la comunicación de un sistema central que gestiona a los demás subsistemas.

Isaac: A través de esta experiencia, adquirimos habilidades prácticas en la configuración de hardware y en la programación de microcontroladores. La implementación exitosa del botón maestro para controlar y comunicarse con el botón esclavo demostró nuestra capacidad para crear sistemas interactivos y coordinados. Este proyecto sienta las bases para aplicaciones más complejas y ha sido una valiosa oportunidad para aplicar nuestros conocimientos en electrónica y programación de microcontroladores.

Referencias.

  • Botón o pulsador con Arduino: Todo lo que debes saber. (2018, 28 junio). Geek Factory. Recuperado 12 de junio de 2024, de https://www.geekfactory.mx/tutoriales-arduino/boton-o-pulsador-con-arduino/
  • Tutorial Arduino: Entradas (2): Botones. (2015, 29 abril). OpenWebinars. Recuperado 12 de junio de 2024, de https://openwebinars.net/blog/tutorial-arduino-entradas-2-botones/

Para comentar debes acceder Acceder

Comentarios


No hay comentarios en este post