K4S, un teclado para Arduino para utilizarlo con S4A

wDSC03591Actualización: En la comunidad de element14 dicen que este proyecto es impresionante!!

Este proyecto comenzó hace unos meses, cuando Juan Brito, autor del blog Desafio Ecuador, contacto conmigo para hablar acerca de Scratch y las oportunidades que ofrece este entorno de programación en el mundo de la educación. En sus propias palabras:

Juan Brito y Danny Macancela están convecidos que para poder aumentar la calidad de la educación de las escuelas y colegios no es necesario grandes presupuestos por parte de los gobiernos. Este ideal de cambio nos ha llevado a desarrollar este proyecto para enseñar a los niños matemáticas y a programar. Los niños pueden aprender matemáticas con fábulas. Este proyecto busca el desarollo del talento humano, que comienza en el aula de clases. Y como dijo Fritjof Capra : “Actualmente poseemos el conocimiento, las tecnologías y los medios económicos para construir un futuro sostenible. Solo nos falta la voluntad política y el liderazgo.”

Desde aqui, también quiero dar las gracias a Danny Macancela por su ilusión en el proyecto y soporte económico.

Scratch para Arduino

Scratch para Arduino es una modificación de Scratch que permite programar la plataforma Arduino de una forma muy simple, utilizando una interfaz de alto nivel. Esta modificación incluye bloques específicos para manejar sensores y actuadores conectados a la tarjeta Arduino. En la página del proyecto, se puede encontrar toda la información y recursos necesarios para comenzar a trabajar con este entorno.

A la hora de escribir este artículo, el entorno S4A no permite configurar los pines de la tarjeta Arduino. Es decir, cada pin de la tarjeta tiene una función específica, cosa que hay que tener en mente cunado se conectan dispositivos a la tarjeta Arduino. A continuación hay un resumen de los pines de la tarjeta y la función asociada que tienen:

  • Entradas Digitales: pines digitales 2 y 3
  • Entradas Analógicas: 6 pines analógicos
  • Salidas Digitales: pines digitales 10, 11 y 13
  • Salidas Analógicas (PWM): pines digitales 5, 6 y 9
  • Cuatro salidas especiales para conectar servomotores de rotación contínua: pines digitales 4, 7, 8 y 12.

Para usar esta modificación de Scratch con Arduino, lo primero que hay que hacer es instalar el entorno de desarrollo de Arduino (incluyendo los drivers). El siguiente paso será grabar en la tarjeta Arduino el firmware que permite la comunicación entre ésta y Scratch. Una vez realizados estos pasos, el sistema estará listo para trabajar con S4A!.

Hardware

K4S KeyboardEsta tarjeta está orientada hacia un entorno educacional, así el hardware es ‘simple’, y contiene elementos básicos para empezar a trabajar con S4A. He desarrollado esta tarjeta de tal forma que encaje con la tarjeta Arduino UNO. ¿Por qué esta tarjeta? Porque desde S4A aseguran que esta tarjeta funciona bien con la modificación de Scratch. Y es cierto, he estado trabajando con esta tarjeta unos 3 meses y siempre ha funcionado bien!.

Aqui se puede descargar el esquema de la tarjeta. Los elementos que he incluido en esta tarjeta teclado son los siguientes:

  • Tres led’s de 10mm difusos:

El led de la izquierda (el azul en las imágenes) está conectado a la salida analógica 9 (PWM). Esto permite variar la intensidad de iluminación del led, en función del valor de esta salida (las señales PWM no son del tipo ON / OFF, sino que su valor puede variar entre 0 y 255 (resolucion de 8 bits) lo que en función del valor utilizado el led brillará mas o menos).

El led del medio (rojo) está conectado a la salida digital 10. Aqui solo se permiten los estados de ON / OFF.

El led de la derecha (amarillo) está conectado a la salida digital 10. Aqui solo se permiten los estados de ON / OFF.

  • wDSC03584Zumbador

El zumbador está conectado a la salida digital 13, a través de un transistor MOSFET digital (FDV301N) para activarlo.

  • Potenciómetro lineal

El potenciómetro está conectado al a entrada analógica 5, y permite enviar al programa S4A valores analógicos desde 0 a 1023.

  • Tres Pulsadores

Como he indicado antes, S4A emplea pines específicos de Arduino UNO para funciones específicas. Necesitaba tres entradas para leer tres pulsadores, pero S4A solo dispone de dos entradas digitales. Para resolver esto,he utilizado también las entradas analógicas. Asi, se puede configurar cada pulsador (por hardware) para que se pueda leer como una entrada digital o como una entrada analógica:

Pulsador ‘A‘: Se puede conectar a la entrada digital 2 o a la entrada analógica A0. Actualmente está configurado para ser leído como una entrada digital.

Pulsador ‘B‘: Se puede conectar a la entrada digital 3 o a la entrada analógica A1. Actualmente está configurado para ser leído como una entrada digital.

Pulsador ‘C‘: Se puede conectar a la salida digital especial 4 o a la entrada analógica A2. Actualmente está configurado para ser leído como una entrada analógica, ya que el pin digital 4 está configurado como salida. Si en el futuro esta salida se puede cambiar a entrada, entonces el pulsador se podrá leer como una entrada digital.

wDSC03587

Diseño de PCB

La tarjeta está diseñada para ir montada sobre una placa Arduino UNO. Después de buscar por la web durante un tiempo el perfil de placa de la tarjeta Arduino UNO que fuera compatible con Altium Designer y no encontrarlo, decidí hacerlo yo mismo con las dimensiones que encontré aqui. Como resultado, aqui está el contorno de placa en formato Protel, para que pueda ser abierto con Protel 2.71 / Protel99 / Altium Designer. El diseño de la PCB ha sido fácil. He utilizado la cara Top para los actuadores e indicadores, y la cara Bottom para el resto de los componentes. He utilizado componentes en formato SMD 1206 porque no había problema de espacio y son fáciles de soldar a mano.

wDSC03597

De nuevom he vuelto a utilizar el servicio de PCB’s de Seeed Studio para fabricar las tarjetas, en color azul esta vez!. Continuan ofreciendo el test eléctrico de las placas sin coste adicional, un plus para continuar trabajando con ellos.

Montando la tarjeta sobre Arduino UNO

Después de recibir las tarjetas y montar los componentes, el siguiente paso es montar la tarjeta sobre la placa de Arduino UNO y ver como encajan. A continuación, algunas fotos del resultado:

K4A with Arduino UNO (1) K4A with Arduino UNO (2) K4A with Arduino UNO (3) K4A with Arduino UNO (4) K4A with Arduino UNO (5)

K4A with Arduino UNO (6)

Pruebas y Futuras Mejoras

En el diseño de la tarjeta he cometido dos errores. Uno es trivial, y es que la serigrafía de los led’s está cambiada. La marca del cátodo corresponde realmente al ánodo, por lo que los led’s han de montarse al revés de como indica la serigrafía. El otro error es algo más importante pero facilmente solucionable. He cambiado los pines del conector de alimentación de la tarjeta Arduino (conector J1 en el esquema). Esto significa que los pines IOREF y RESET están conectados a masa y la alimentación de 3V3 de la tarjeta Arduino se lleva a la alimentación de +5V de la tarjeta teclado. Afortunadamente es muy fácil de solucionar: en el conector J1, no hay que montar los pines 2, 3 y 4, y hacer un puente entre los pines 4 y 5 para llevar la alimentación de 5V a la tarjeta teclado. Es un error muy tonto que ya he corregido en la PCB para las futuras versiones.

Una vez realizados estos cambios, el último paso es realizar un programa simple en S4A para testear todas las funcionalidades de la tarjeta teclado. Aqui se puede descargar este programa para el testeo de la tarjeta: K4S_DEMO.

La apariencia del programa es la siguiente:

K4S_DEMO_screenshotUna cosa a tener en cuenta es que en el montaje final de la tarjeta, he cambiado el orden de los led’s rojo y azul (como se puede ver en la foto de S4A). Teniendo esto en cuenta, ¿como funciona este código? Lo que he intentado hacer es lo siguiente:

  • Cuando se pulsa el botón ‘A’, los led’s azul y amarillo se encienden.
  • Cuando se pulsa el botón ‘B’, los led’s azul y amarillo se apagan.
  • Cuando se pulsa el botón ‘C’, el zumbador emite un pitido de unos 300mS y después se apaga.
  • El led rojo brilla en función de la posición del potenciómetro. Cuando el potenciómetro esta en la posición ‘MIN’, el led rojo está apagado. Y cuando está en la posición ‘MAX’, el led rojo brilla al máximo posible.

Finalmente, un pequeño video donde puede verse la tarjeta en funcionamiento:

Si estás interesado en este proyecto y quieres más información, puedes contactar conmigo utilizando el formulario de contacto o con Juan Brito en la dirección de correo: brito.grandes@gmail.com

  • Twitter
  • del.icio.us
  • Digg
  • Facebook
  • Technorati
  • Reddit
  • Yahoo Buzz
  • StumbleUpon

This post is also available in: Inglés

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.