Drinkinator


1. Introducción

1.1 Grupo e integrantes:

“Drinkduino”, es un proyecto realizado por Francisco Javier García Arias, José Carlos
Bartolomé Torres y Raquel Rodríguez Recio, quienes componen el grupo 22 y pertenecen al
Campus de Móstoles.

1.2 Presentación del proyecto:

“Drinkduino” es una máquina expendedora bebida implementada con Arduino.
La idea de este proyecto se nos ocurrió comiendo en el TGB, puesto que vimos que ciertas
personas se servían la bebida de la máquina cuando no la habían pagado. Entonces nos
planteamos realizar algo similar y un poco más innovador para evitar comportamientos como el
mencionado anteriormente y, además, ahorrar a las personas tener que mantener un botón
presionado hasta rellenar el vaso entero.
“Drinkduino” está pensado para entornos más íntimos como, por ejemplo, un hotel, en el cual
sólo sus clientes pueden consumir bebida del restaurante del hotel con la tarjeta de su
habitación. Esto lo hacemos mediante un sistema de NFC, el cual funciona mediante una
tarjeta de prepago que te permite acceder a los recursos de la máquina. Así, nos aseguraremos
de que sólo las personas alojadas disponen de este recurso y nadie más se aprovecha de él.
Además, hemos añadido ciertos botones para seleccionar la bebida que el cliente desea,
colocar el vaso y esperar a que la máquina se encargue de rellenarlo, evitando así pulsar
durante “x” tiempo el botón de rellenado del vaso.
Como puede apreciarse, el comportamiento de este proyecto es muy similar al de las típicas
máquinas expendedoras de los restaurantes públicos, pero con una funcionalidad adicional.

    1.3 Cómo utilizar “Drinkduino”


    Nuestra máquina funciona como una máquina expendedora de bebida típica, a excepción del
    uso de una tarjeta para poder consumir la bebida.
    En primer lugar, se introduce la tarjeta para obtener permiso de uso de la máquina.
    A continuación, seleccionamos la bebida que queremos con el correspondiente botón, y
    colocamos el vaso donde deseamos.

    Por último, esperamos unos segundos y … ¡nuestra bebida está servida!

    1.4 Materiales y presupuesto

    – botones x6
    – Arduino mega
    – protoboard
    – motores x4
    – cables
    – Arduino mega
    – led
    – dispensadores
    – tablas de madera

    2. Desarrollo del proyecto

    2.1 Construcción de la máquina

    En su momento, nos encontramos con un amplio abanico de posibilidades a la hora de elegir la
    estructura del proyecto. Finalmente, nos decantamos por construir una especie de rectángulo
    tridimensional, colocado sobre un soporte para darle más aspecto de máquina de bebidas.
    Para unir todos los tablones de madera utilizados, usamos tornillos y bisagras. Los
    dispensadores quedan tapados junto a los cables, dándole un aspecto bonito. Además,
    pintamos las maderas de negro con un spray.

    2.2 Circuitos

    3. IMÁGENES DEL PROCESO




    4. Problemas encontrados y soluciones

    Vamos a comentar los problemas con que nos encontramos a la hora de construir “Drinkduino”.
    – El primer problema con que nos encontramos fue con la colocación de los engranajes para
    que encajaran bien y que los motorres cogiesen la mayor fuerza posible. Pues según su colocación, adquieren
    una relación mayor o menor de fuerza.
    – El segundo problema fueron los motores, puesto que para conseguir que el dispensador se
    abra y expulse la bebida, fue necesario mucha fuerza y se nos quemaron los motores que
    teníamos. A pesar de que consiguiesen nuestro propósito, se terminaban quemando y eso
    implicaba comprar motores mucho más caros, con que lo dejamos así.
    – Otro problema fue el uso de tantos cables, que nos hizo falta otra protoboard para poder unir
    todo el circuito.
    – Y, por último, destacar que utilizamos un Arduino mega porque con Arduino one no teníamos
    suficiente pines.

    5. CÓDIGO


    //Viral Science
    //RFID
    #include <SPI.h>
    #include <MFRC522.h>
    #include <LiquidCrystal.h>

    #define SS_PIN 53 //EntradaNFC
    #define RST_PIN 5 //EntradaNFC
    #define LED_G 3 //define green LED pin
    #define LED_R 2 //define red LED
    MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
    LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
    int motor=3;

    void setup() 
    {
      Serial.begin(9600);   // Initiate a serial communication
      SPI.begin();      // Initiate  SPI bus
      mfrc522.PCD_Init();   // Initiate MFRC522
      pinMode(LED_G, OUTPUT);
      pinMode(LED_R, OUTPUT);
      Serial.println(«Put your card to the reader…»);
      lcd.clear();
      lcd.print(«Introduzca Tarjeta»);
      Serial.println();
      lcd.begin(16, 2);
      pinMode(A0,INPUT);

    }
    void loop() 
    {
      // Look for new cards
      if ( ! mfrc522.PICC_IsNewCardPresent()) 
      {
        return;
      }
      // Select one of the cards
      if ( ! mfrc522.PICC_ReadCardSerial()) 
      {
        return;
      }
      //Show UID on serial monitor
      Serial.print(«UID tag :»);
      String content= «»;
      byte letter;
      for (byte i = 0; i < mfrc522.uid.size; i++) 
      {
         Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? » 0″ : » «);
         Serial.print(mfrc522.uid.uidByte[i], HEX);
         content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? » 0″ : » «));
         content.concat(String(mfrc522.uid.uidByte[i], HEX));
      }
      Serial.println();
      Serial.print(«Message : «);
      content.toUpperCase();
      if (content.substring(1) == «90 9B 7C A4») //change here the UID of the card/cards that you want to give access
      {
        Serial.println(«Authorized access»);
        Serial.println();
        lcd.clear();
        lcd.print(«Tarjeta Aceptada»);
        digitalWrite(LED_G, HIGH);
        delay(3000);
        digitalWrite(LED_G, LOW);
        if(digitalRead(A0)==HIGH){
          lcd.clear();
          lcd.print(«Sirviendo la Bebida»);
          analogWrite(motor,200);
          delay(4000);
          analogWrite(motor,0);
          lcd.clear();
          lcd.print(«Terminado»);
          delay(2000);
          lcd.clear();
          lcd.print(«Introduzca tarjeta»);
        }
      }
     else   {
        Serial.println(» Access denied»);
        lcd.clear();
        lcd.print(«Tarjeta Denegada»);
        digitalWrite(LED_R, HIGH);
        delay(3000);
        digitalWrite(LED_R, LOW);
      }

    También te podría gustar...

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *