Piggy Bank
Grupo 22 – Piggy Bank
Integrantes:
Álvaro Robles Sánchez
QianQian Ye
Costinel Alexandru Glont
Contenido
1. Descripción del Proyecto
2. Materiales utilizados
3. Fases del desarrollo
3.1 Diseño
3.2 Implementación del código
3.3 Montaje
3.4 Pruebas
4. Problemas encontrados
5. Posibles mejoras
1. DESCRIPCIÓN DEL PROYECTO
El proyecto PIGGY
BANK es una hucha inteligente, con estructura de cartón
y funcionalidades electrónicas implementadas mediante Arduino.
BANK es una hucha inteligente, con estructura de cartón
y funcionalidades electrónicas implementadas mediante Arduino.
La hucha por
dentro cuenta con un mecanismo de clasificación de hasta 6 tipos de monedas
distintas. Debido al clasificador de monedas electrónico sólo podemos
registrar hasta 6 monedas distintas a la vez y en nuestro caso
decidimos entrenar al selector para que reconociese las monedas de
0.05€, 0.1€, 0.2€, 0.5€, 1€ y 2€.
dentro cuenta con un mecanismo de clasificación de hasta 6 tipos de monedas
distintas. Debido al clasificador de monedas electrónico sólo podemos
registrar hasta 6 monedas distintas a la vez y en nuestro caso
decidimos entrenar al selector para que reconociese las monedas de
0.05€, 0.1€, 0.2€, 0.5€, 1€ y 2€.
El mecanismo de
clasificación consiste en una rampa de cartón controlada por un servo que
girará, con giros de 30º, en función de la moneda detectada para
dejarlas caer en sus respectivas cajas.
clasificación consiste en una rampa de cartón controlada por un servo que
girará, con giros de 30º, en función de la moneda detectada para
dejarlas caer en sus respectivas cajas.
Utilizamos una
pantalla LCD de 20×4 para mostrar mensajes tales como el saldo total en
la hucha o instrucciones a seguir por el usuario para realizar distintas
acciones como activar el modo ahorrador, abrir y cerrar la puerta de la
hucha, etc.
pantalla LCD de 20×4 para mostrar mensajes tales como el saldo total en
la hucha o instrucciones a seguir por el usuario para realizar distintas
acciones como activar el modo ahorrador, abrir y cerrar la puerta de la
hucha, etc.
Las órdenes al
sistema se introducen mediante un teclado de matriz 4×4. Las teclas alfabéticas
y los dos símbolos del teclado han sido programados para cumplir funciones
específicas, mientras que las teclas numéricas se usan como tal.
sistema se introducen mediante un teclado de matriz 4×4. Las teclas alfabéticas
y los dos símbolos del teclado han sido programados para cumplir funciones
específicas, mientras que las teclas numéricas se usan como tal.
Los mecanismos
internos móviles, en nuestro caso la rampa, una pequeña caja que hace de
intermediario entre el selector de monedas y la rampa, y el pestillo de la
puerta se accionan con 3 servomotores, habiendo medido previamente los ángulos
de giro necesarios en cada caso.
internos móviles, en nuestro caso la rampa, una pequeña caja que hace de
intermediario entre el selector de monedas y la rampa, y el pestillo de la
puerta se accionan con 3 servomotores, habiendo medido previamente los ángulos
de giro necesarios en cada caso.
En
cuanto a las funcionalidades, además de la de guardado y clasificación de
monedas, destacan:
cuanto a las funcionalidades, además de la de guardado y clasificación de
monedas, destacan:
A.
Cambio de contraseña
Cambio de contraseña
Tras pulsar la tecla “A”, el Piggy Bank dará
la opción al usuario de cambiar su contraseña, para ello deberá introducir
previamente su contraseña actual para identificarse, tras esto deberá
introducir luna nueva contraseña de 4 dígitos.
la opción al usuario de cambiar su contraseña, para ello deberá introducir
previamente su contraseña actual para identificarse, tras esto deberá
introducir luna nueva contraseña de 4 dígitos.
B.
Apertura de la puerta
Apertura de la puerta
Tras pulsar la tecla “B”, el usuario deberá
introducir su contraseña y pulsar confirmar, después la puerta se desbloqueará
y podrá extraer el dinero. Para volver a cerrar la puerta se debe volver a
pulsar la tecla “B”.
introducir su contraseña y pulsar confirmar, después la puerta se desbloqueará
y podrá extraer el dinero. Para volver a cerrar la puerta se debe volver a
pulsar la tecla “B”.
C.
Modo ahorrador
Modo ahorrador
Tras pulsar la tecla “C”, el usuario podrá
introducir una hora para que el sistema accione una alarma todos los días a
dicha hora que solo se parará al introducir una moneda. Si este modo está
activado, se puede desactivar pulsando “C” y confirmar.
introducir una hora para que el sistema accione una alarma todos los días a
dicha hora que solo se parará al introducir una moneda. Si este modo está
activado, se puede desactivar pulsando “C” y confirmar.
D.
Cambio de la hora de
la máquina
Cambio de la hora de
la máquina
Tras pulsar la tecla “D”, el usuario deberá
introducir la hora actual al igual que en el apartado C.
introducir la hora actual al igual que en el apartado C.
2. MATERIALES UTILIZADOS
El coste total de los materiales son 79,53€, aunque finalmente
no llegamos a utilizar los multiplexores ya que con los pines que tienen
el Arduino nos llegaba justo para este proyecto que hemos
diseñado.
no llegamos a utilizar los multiplexores ya que con los pines que tienen
el Arduino nos llegaba justo para este proyecto que hemos
diseñado.
COMPONENTES |
Precio |
Selector de monedas (1) |
14,69 € |
Zumbador 5V (3) |
1,99 € |
Servo motor (4) |
12,99 € |
Teclado 4 x 4 (1) |
3,50 € |
Pistola de silicona (1) |
9,99 € |
Pilas AAA (20) |
6,99 € |
Pantalla LCD 20 x 4 (1) |
11,69 € |
Cables Arduino (120) |
6,19 € |
Pilas AA (4) |
2,00 € |
Cajas portapilas AAA (4) |
1,60 € |
Caja portapilas AA (1) |
0,00 € |
Papel de regalo (1) |
0,90 € |
Cola blanca (1) |
1,00 € |
Multiplexor (2) |
2,79 € |
Spray para decorar la caja (1) |
3,00 € |
Cajas de cartones (2) |
0,00 € |
Resistencias (5) |
1,50€ |
Total |
81,03 € |
3. FASES DEL DESARROLLO
3.1. Diseño
En un principio
barajamos varias ideas respecto al proyecto. Una de ella era identificar las
monedas mediante un sensor de peso, aunque por la gran precisión que
necesitábamos al pesar las monedas decidimos descartar esta idea. La segunda
idea fue construir una rampa con ranuras del tamaño de las monedas de tal
forma que cada moneda entrase únicamente en su ranura específica,
pero por la complejidad del diseño y nuevamente la alta precisión
requerida también descartamos esta idea. Finalmente decidimos comprar
un selector de monedas y fabricar nosotros a mano el mecanismo de
distribución de las mismas.
barajamos varias ideas respecto al proyecto. Una de ella era identificar las
monedas mediante un sensor de peso, aunque por la gran precisión que
necesitábamos al pesar las monedas decidimos descartar esta idea. La segunda
idea fue construir una rampa con ranuras del tamaño de las monedas de tal
forma que cada moneda entrase únicamente en su ranura específica,
pero por la complejidad del diseño y nuevamente la alta precisión
requerida también descartamos esta idea. Finalmente decidimos comprar
un selector de monedas y fabricar nosotros a mano el mecanismo de
distribución de las mismas.
3.2. Implementación del código
En el código del
proyecto tenemos una serie de funciones definidas fuera de las funciones setup()
y loop() para otorgarle a
nuestra hucha inteligente toda la funcionalidad deseada.
proyecto tenemos una serie de funciones definidas fuera de las funciones setup()
y loop() para otorgarle a
nuestra hucha inteligente toda la funcionalidad deseada.
·
ponerHora() permite
introducir la hora del dispositivo mediante el teclado numérico.
ponerHora() permite
introducir la hora del dispositivo mediante el teclado numérico.
·
coinInserted() incrementa
en 0.05€ el saldo por cada pulso recibido del selector de monedas. El
selector de monedas envía un pulso por cada 0.05€ introducidos, de esta
forma para una moneda de 2€ enviará 40 pulsos al arduino.
coinInserted() incrementa
en 0.05€ el saldo por cada pulso recibido del selector de monedas. El
selector de monedas envía un pulso por cada 0.05€ introducidos, de esta
forma para una moneda de 2€ enviará 40 pulsos al arduino.
·
comprobarAlarma() comprueba
si la hora actual es coincide con la hora a la que la alarma está
programada para activarse.
comprobarAlarma() comprueba
si la hora actual es coincide con la hora a la que la alarma está
programada para activarse.
·
moverRampa(double diferencia) en
base al número que recibe mueve la rampa a una posición indicada en
grados, teniendo en cuenta que el servo tiene un arco de giro de 0º a
180º.
moverRampa(double diferencia) en
base al número que recibe mueve la rampa a una posición indicada en
grados, teniendo en cuenta que el servo tiene un arco de giro de 0º a
180º.
·
displayCredit() muestra
en la pantalla LCD el valor acumulado de las monedas guardadas.
displayCredit() muestra
en la pantalla LCD el valor acumulado de las monedas guardadas.
En la función setup() inicializamos
los servos a sus posiciones iniciales, inicializamos la hora que será
tecleada por el usuario y mostramos el crédito inicial, que serán 0€.
los servos a sus posiciones iniciales, inicializamos la hora que será
tecleada por el usuario y mostramos el crédito inicial, que serán 0€.
En la función loop() hacemos
llamadas a todas las demás funciones en base a las teclas pulsada. En
un switch implementamos las distintas funciones de la hucha, como
abrir puerta, cambiar contraseña, activar alarma, etc.
llamadas a todas las demás funciones en base a las teclas pulsada. En
un switch implementamos las distintas funciones de la hucha, como
abrir puerta, cambiar contraseña, activar alarma, etc.
3.3. Montaje
La hucha es una caja
de cartón de dimensiones 40x30x40cm. Las paredes han sido recortadas y pegadas
individualmente ya que no encontramos una caja de cartón con las medidas
necesarias.
de cartón de dimensiones 40x30x40cm. Las paredes han sido recortadas y pegadas
individualmente ya que no encontramos una caja de cartón con las medidas
necesarias.
En una de las caras
están empotrados la pantalla LCD, el selector de monedas y el teclado. En uno
de los laterales se encuentra la puerta para acceder al contenedor de monedas.
La puerta tiene un pestillo activado por un servo motor.
están empotrados la pantalla LCD, el selector de monedas y el teclado. En uno
de los laterales se encuentra la puerta para acceder al contenedor de monedas.
La puerta tiene un pestillo activado por un servo motor.
El selector de
monedas deja caer las monedas en una caja de cartón, también accionada por
un servo. Esta caja se gira para dejar caer la moneda en la rampa que
apunta a una de las 6 cajas, dependiendo del tipo de moneda.
monedas deja caer las monedas en una caja de cartón, también accionada por
un servo. Esta caja se gira para dejar caer la moneda en la rampa que
apunta a una de las 6 cajas, dependiendo del tipo de moneda.
El contenedor de
monedas es una caja semicircular dividida en 6 compartimentos, cada uno para un
tipo de moneda. Se puede extraer para vaciar su contenido, una vez se ha
abierto la puerta.
monedas es una caja semicircular dividida en 6 compartimentos, cada uno para un
tipo de moneda. Se puede extraer para vaciar su contenido, una vez se ha
abierto la puerta.
Todas las piezas no
electrónicas están hechas a mano por los integrantes del
proyecto recortando y pegando cartón con una pistola de pegamento
termofusible.
electrónicas están hechas a mano por los integrantes del
proyecto recortando y pegando cartón con una pistola de pegamento
termofusible.
3.4. Pruebas
Antes de empezar el
montaje probamos cada pieza con código específico para ver, en primer
lugar, que las piezas no eran defectuosas, y en segundo lugar para probar
código específico que queríamos incluir en el proyecto. Tras las pruebas
individuales empezamos con pruebas de integración, probando varios dispositivos
electrónicos a la vez. Hasta ver que toda la parte electrónica del
proyecto funcionaba tal como debía.
montaje probamos cada pieza con código específico para ver, en primer
lugar, que las piezas no eran defectuosas, y en segundo lugar para probar
código específico que queríamos incluir en el proyecto. Tras las pruebas
individuales empezamos con pruebas de integración, probando varios dispositivos
electrónicos a la vez. Hasta ver que toda la parte electrónica del
proyecto funcionaba tal como debía.
Tras el montaje
parcial del proyecto empezamos a probar los elementos electrónicos sobre
el esqueleto de la hucha, principalmente para medir distancias y ángulos
de giro. Nos preocupaba la distancia y altura a la que debíamos colocar la
rampa y si tenía espacio para girar dentro de la caja.
parcial del proyecto empezamos a probar los elementos electrónicos sobre
el esqueleto de la hucha, principalmente para medir distancias y ángulos
de giro. Nos preocupaba la distancia y altura a la que debíamos colocar la
rampa y si tenía espacio para girar dentro de la caja.
4. PROBLEMAS ENCONTRADOS
Durante la fase de
diseño encontramos una serie de problemas que nos obligó a cambiar el
proyecto en algunos aspectos. En un primer momento decidimos
clasificar las monedas calculando su peso, pero no encontramos ningún
sensor que pudiera medir diferencias tan pequeñas de peso y que
no disparase nuestro presupuesto. Otra de las ideas que tuvimos
fue crear una rejilla con agujeros del tamaño de cada moneda, de tal forma
que las monedas solo entrarían por su agujero correspondiente. Dado que el
proyecto íbamos a realizarlo con cartón y las diferencias de tamaño
entre las monedas son milimétricas optamos por no hacerlo al considerar
que no podríamos hacer los huecos de las monedas con
su precisión necesaria.
diseño encontramos una serie de problemas que nos obligó a cambiar el
proyecto en algunos aspectos. En un primer momento decidimos
clasificar las monedas calculando su peso, pero no encontramos ningún
sensor que pudiera medir diferencias tan pequeñas de peso y que
no disparase nuestro presupuesto. Otra de las ideas que tuvimos
fue crear una rejilla con agujeros del tamaño de cada moneda, de tal forma
que las monedas solo entrarían por su agujero correspondiente. Dado que el
proyecto íbamos a realizarlo con cartón y las diferencias de tamaño
entre las monedas son milimétricas optamos por no hacerlo al considerar
que no podríamos hacer los huecos de las monedas con
su precisión necesaria.
Durante el montaje
encontramos otra serie de problemas de carácter técnico. Por ejemplo, la rampa
por el peso de las monedas sumado a la vibración del servo durante el giro
muchas veces se caía y tuvimos que pegarla a la patilla de plástico del servo.
Lo mismo nos pasó con la caja en la que cae la moneda justo después de pasar
por el selector. En un punto del montaje tuvimos que recortar parte de la rampa
e introducir un tope al final de la misma porque las monedas caían
fuera de los contenedores.
encontramos otra serie de problemas de carácter técnico. Por ejemplo, la rampa
por el peso de las monedas sumado a la vibración del servo durante el giro
muchas veces se caía y tuvimos que pegarla a la patilla de plástico del servo.
Lo mismo nos pasó con la caja en la que cae la moneda justo después de pasar
por el selector. En un punto del montaje tuvimos que recortar parte de la rampa
e introducir un tope al final de la misma porque las monedas caían
fuera de los contenedores.
Otro problema que
tuvimos fue que el selector de monedas a veces identifica monedas
de 1€ como si fueran de 0.2€, esto se debe principalmente a una falta
de precisión ya que el selector de monedas debe ser entrenado previo uso
con un gran número de monedas distintas para poder identificarlas de forma
correcta. En nuestro caso no teníamos las suficientes monedas como para
otorgarle toda la precisión necesaria.
tuvimos fue que el selector de monedas a veces identifica monedas
de 1€ como si fueran de 0.2€, esto se debe principalmente a una falta
de precisión ya que el selector de monedas debe ser entrenado previo uso
con un gran número de monedas distintas para poder identificarlas de forma
correcta. En nuestro caso no teníamos las suficientes monedas como para
otorgarle toda la precisión necesaria.
5. POSIBLES MEJORAS
1.
Añadir dispensador de
monedas.
Añadir dispensador de
monedas.
Para ello, deberíamos modificar la estructura
interna del Piggy Bank, cambiando la caja de monedas por unos tubos en los
que las monedas estén colocadas verticalmente. Una vez el usuario introduzca el
dinero que quiere extraer, un mecanismo (como
un pistón hidráulico) que empuje las monedas necesarias en
el fondo de los tubos hasta la rendija exterior. A nivel de
código, también se debería tener un registro de cuántas monedas hay de cada
tipo para administrar bien la selección al extraer las mismas.
interna del Piggy Bank, cambiando la caja de monedas por unos tubos en los
que las monedas estén colocadas verticalmente. Una vez el usuario introduzca el
dinero que quiere extraer, un mecanismo (como
un pistón hidráulico) que empuje las monedas necesarias en
el fondo de los tubos hasta la rendija exterior. A nivel de
código, también se debería tener un registro de cuántas monedas hay de cada
tipo para administrar bien la selección al extraer las mismas.
2.
Posibilidad de
introducir monedas de otros países.
Posibilidad de
introducir monedas de otros países.
En este caso más sencillo que el anterior,
deberíamos configurar el selector de monedas para aceptar dinero extranjero
y adecuar los pulsos que envía para seleccionarlas correctamente.
deberíamos configurar el selector de monedas para aceptar dinero extranjero
y adecuar los pulsos que envía para seleccionarlas correctamente.
3.
Opción de cambiar la
canción del modo ahorrador.
Opción de cambiar la
canción del modo ahorrador.
Podemos introducir varias canciones por
defecto y que el usuario selecciones la que más le guste. Para ello solo
tendríamos que crear la disposición de notas de cada canción y dar la
posibilidad de elegirlas.
defecto y que el usuario selecciones la que más le guste. Para ello solo
tendríamos que crear la disposición de notas de cada canción y dar la
posibilidad de elegirlas.
Vídeo presentación del proyecto
Código del Proyecto