Medidor de distancia con Grove System

INTRODUCCIÓN

En este tutorial vamos a ver un ejemplo de uso de los módulos Grove de la empresa Seeed Studio con Arduino. Construiremos mediante estos módulos y piezas de LEGO un medidor de distancia.

 

Una de las ventajas de usar los módulos Grove es que son fáciles de usar y permiten realizar prototipos rápidamente. Poseen unas dimensiones e interfaz de conexión estandarizadas y la empresa suministra las librerías necesarias para poder utilizar los diferentes módulos con la plataforma Arduino.

Dimensiones

Actualmente hay 5 tipos de medidas: 20x20mm (1×1), 20x40mm (1×2), 20x60mm (1×3), 40x40mm (2×2) y 40x60mm (2×3) siendo las más típicas las  medidas de 20x20mm y 20x40mm.

Grove Wrappers

Otra de las ventajas que tienen estos módulos y que veremos en este proyecto es que se pueden acoplar mediante los llamados “Grove wrappers” a piezas de LEGO y también a las estructuras de la marca Makeblock. 

Hay que decir que en el momento de escribir este tutorial solo hay disponibles dos tipos de “Grove wrappers” que únicamente permiten acoplar módulos de 20x20mm y 20x40mm. Existen 4 colores disponibles : rojo, verde, azul y amarillo. Otro dato a comentar es que hay módulos que debido a la posición del conector no se pueden acoplar correctamente a estos “Grove wrappers”, como por ejemplo el módulo LED Bar que utilizaremos en este proyecto.

Para más información sobre los Grove Wrappers:

https://wiki.seeedstudio.com/Grove-Wrapper/

 

Interfaz de conexión

 Poseen una interfaz de conexión formada por 4 pines/cables de diferentes colores:

    • Amarillo (Dependerá del tipo de interfaz. Por ejemplo, SCL en conectores Grove I2C).
    • Blanco (Dependerá del tipo de interfaz. Por ejemplo, SDA en conectores Grove I2C).
    • Rojo – VCC en todos los conectores Grove (5V/3,3V).
    • Negro – GND en todos los conectores Grove.

Hay 4 tipos de interfaz de conexión: Digital, Analógica, I2C y UART. En la siguiente tabla se muestra la función que tiene cada pin/cable dependiendo de la interfaz:

Digital Analógica I2C UART
Amarillo Dn An SCL Rx
Blanco Dn+1 An+1 SDA Tx
Rojo Vcc Vcc Vcc Vcc
Negro Gnd Gnd Gnd Gnd

La interfaz estandarizada significa que todos los cables e interfaces del módulo son comunes a todos, es decir, utilizan la misma interfaz de 4 pines del mismo tamaño, color y paso de pin. Con esta interfaz no nos tenemos que preocupar de equivocarnos al conectar los cables a los módulos puesto que solo existe una manera de poder hacerlo.

En este proyecto vamos a conectar los módulos a nuestro Arduino UNO a través de la Shield  “Grove Base Shield V2.0 for Arduino”. En la siguiente imagen podemos ver los diferentes puertos y elementos que la componen:

    • 1-Puertos Analógicos : A0, A1, A2 y A3.
    • 2-Puertos Digitales: D2, D3, D4, D5, D6, D7 y D8.
    • 3-Puerto UART: 1 puerto UART.
    • 4-Puertos I2C Ports: 4 puertos I2C.
    • 5-Power Switch: Cuando usamos una placa Arduino UNO hay que ponerlo en la posición de 5v.
    • 6-Botón Reset:  Botón de reset de la placa Arduino.
    • 7-PWR LED:LED de color verde  que se enciende cuando hay potencia.
    • 8-P1, P2:Se deben soldar los pads P1 y  P2  si se usa la Shield con Seeeduino V3.

 

CodeCraft

Los módulos Grove más comunes y utilizados se pueden programar mediante Scratch a través de la aplicación CodeCraft basada en Scratch 3.0. Esta aplicación está disponible para poder utilizarla online mediante un navegador compatible o se puede descargar la aplicación para sistemas operativos Windows y Mac. 

La lista de módulos Grove soportados en CodeCraft los tenéis en el siguiente enlace:

https://wiki.seeedstudio.com/Codecraft_Grove_Compatible_List/

Tutorial de Codecraft:

https://wiki.seeedstudio.com/Guide_for_Codecraft_using_Arduino/

 

Si queréis profundizar en el sistema Grove en los siguientes enlaces tenéis más información al respecto:

https://www.seeedstudio.com/blog/2020/04/16/what-does-grove-mean-why-grove/

https://wiki.seeedstudio.com/Grove_System/

CIRCUITO

El circuito que construiremos será un medidor de distancia sencillo utilizando para la estructura piezas de LEGO. Los módulos y componentes que utilizaremos son:

    • Placa Arduino UNO.
    • Grove Base Shield V2.0 for Arduino.
    • Módulo Grove: LED Bar V2.0.
    • Módulo Grove: 4 Digit Display V1.0.
    • Módulo Grove: Blue LED Button.
    • Módulo Grove: Buzzer.
    • Módulo Grove: Ultrasonic Range V2.0.
    • Grove wrappers.
    • Piezas de LEGO.

Conectaremos los diferentes módulos Grove a la Shield “Grove Base Shield V2.0 for Arduino” de la siguiente manera:

 

MÓDULO GROVE PUERTOS (Base Shield V2.0)
Módulo Grove: LED Bar V2.0 D2
Módulo Grove: 4 Digit Display V1.0 D8
Módulo Grove: Blue LED Button D5
Módulo Grove: Buzzer D7
Módulo Grove: Ultrasonic Range V2.0 D4

El funcionamiento será el siguiente:

Si el módulo Grove Ultrasonic Range detecta un objeto a más de 30 cm de distancia el módulo Grove 4 Digit Display mostrará en pantalla los caracteres “—-”  indicando que no existe ningún objeto detectado a una distancia menor de 30 cm. El módulo Grove LED Bar no mostrará ningún LED encendido (no mostrará ningún nivel) ni el módulo Grove Buzzer (zumbador) emitirá ningún tipo de pitido.

Si se detecta un objeto a menos de 30 cm de distancia por un lado el módulo Grove 4 Digit Display mostrará la distancia real medida entre el objeto y el sensor, el módulo Grove LED Bar mostrará el nivel acorde a la distancia medida y el módulo Grove Buzzer emitirá una serie de pitidos que se harán más seguidos conforme el objeto se aproxima al sensor.

Por otro lado el módulo Grove Blue LED Button (botón con LED azul) que se encuentra en la base de la estructura servirá para activar o desactivar el pitido del zumbador. Cuando el sonido se encuentra activado el LED del botón se iluminará de color azul y aparecerá durante un segundo el texto “ON” en el el módulo Grove 4 Digit Display y cuando se desactiva aparecerá el texto “OFF” y el LED del botón se apagará.

Como vemos en la fotografía anterior el módulo Grove Ultrasonic Ranger lo hemos acoplado con piezas de LEGO puesto que no existe un “Grove wrapper” para este tipo de módulos.

Por otro lado en la siguiente fotografía vemos como el módulo Grove LED Bar pese a que es un módulo de 20x40mm y si existe un “Grove wrapper” para esa dimensión debido a la posición del conector no podemos acoplarlo 100% al “Grove wrapper”.

PROGRAMACIÓN

Sketch a cargar en la placa Arduino UNO:

https://github.com/avilmaru/medidordistancia_grovesystem/blob/master/medidordistancia_grovesystem.ino