Objetivos

 

  • Vamos a usar el PCF8575 con ESP32.
  • Veremos el diagrama de conexión.
  • Comprobaremos que es el mismo programa que con Arduino UNO.[/three-fourth] [clear/]
  •  

    Material requerido.

     

    Taza de café Un ratito tranquilo

     

    Conectando sensores a Arduino

     

    Nuestros venerables Arduinos son algo, a lo que habría que hacerle un monumento por la cantidad de gente que han introducido a la programación, la electrónica y los proyectos Makers. Mucha gente que pensaba que todo eso era solo para ingenieros frikis, se ha ido dado cuenta de que cualquiera, ellos incluidos, podían hacer proyectos de un modo sorprendentemente fácil

    Con unos pocos sensores, de bajo coste en muchas ocasiones, puedes montar con facilidad pequeñas maquetas, que van desde encender la calefacción de tu segunda casa remotamente, a estaciones meteorológicas y hasta pequeños robots autónomos que hacen las delicias de los más pequeños (Y de algunos no tan pequeños)

    Pero mientras que la parte del prototipo es rápido y hasta sencillo… el lio de cables que se suele alcanzar es una invitación al desastre, porque en cuanto empiezas a usar protoboards y electrónica discreta como leds y resistencias o pequeños chips integrados, si intentas mover la placa para llevarla a otro sitio, la cosa suele acabar con algo suelto y el proyectito se va al guano directamente.

    Las protoboards y los cables DuPont han sido magníficos para que todos empezáramos… hace unos años. Pero seamos sinceros, cuando montas proyectos en un centro educativo, por ejemplo, el profesor dedica mucho más tiempo a ver qué pasa con los circuitos de los alumnos, y cuando acaba la ronda tiene que volver a empezar porque alguno ha arrancado algún cable al jugar con el compa de al lado.

    Al final el montaje físico ocupa mucho mi tiempo de la clase de lo previsto y hace que la parte realmente educativa vea su tiempo seriamente limitado. Por eso, cantidad de gente inteligente que hay por el mundo, se han devanado los sesos buscando alguna solución y hoy vamos a traeros una de las estandarizaciones más interesantes, (Que probablemente ya conozcas) llamada Grove conector propuesta por Seed y que, aunque ya lleva bastante tiempo en el mercado, actualmente está cogiendo mucho impulso por razones que en seguida iremos viendo.

    Por eso empezaremos hablando de que es el Estándar Grove y que problemas nos resuelve.

     

    Conectores Grove

     

    ¿Veamos, que problemas tienen la electrónica y los sensores que compramos para Arduino? Buenos pues principalmente, que cada elemento es de su padre y de su madre. Cada uno emplea los conectores que se le ocurren (O ninguno, y nos da cables sueltos) lo que los suele hacer incompatibles y en algunos casos, aun usando el mismo conector de múltiples hilos el orden es distinto según el fabricante.

    ¿Qué necesitaríamos para que conectar sensores y actuadores a nuestros Arduino fuese más sencillo? Pues básicamente:

  • Un estándar de conectores para las cosas habituales
  • Una normalización del uso y la función de esos pines
  • Un modelo lo suficientemente abierto para permitirnos incluir sensores, actuadores, motores, etc. de diferentes fabricantes, es decir un estándar abierto.  [/fancy-ul] [/three-fourth]
  •  

    Como suele ocurrir cuando hay líos de este estilo, en un mercado lo suficiente amplio, alguien se pone a ello y tras varios intentos, la empresa China Seed Studio, que es una de las más activas en el mundo Arduino y hace ya tiempo diseño el conector Grove para todo lo que comentamos arriba y ahora mismo está cogiendo el suficiente impulso para que me permita recomendároslo.

    Para empezar los módulos Grove usan un conector estándar de 4 pines del tipo JST, que permite conectar las cosas con facilidad y que requiere un poco más esfuerzo para soltarlo, de forma que las cosas no se suelten tontamente si hacerlo voluntariamente.

    Conectores GroveAdemás, estandariza el nombre de esos pines y su uso dependiente de sus características:

    Pin Color Función
    Pin 1 Amarillo En I2C SCL on I2C Grove Connectors
    Pin 2 Blanco En I2C SDA on I2C Grove Connectors
    Pin 3 Rojo VCC on all Grove Connectors
    Pin 4 Negro GND on all Grove Connectors

    No todos los módulos Grove tienen que ser I2C, en realidad, aunque es el mismo conector puede haber 4 tipos distintos de módulos o units:

    Grove digital: Lleva los pines de alimentación y dos pines de entrada/salidas digitales

    pin1  Dn Primary Digital Input/Output
    pin2 Dn+1 Secondary Digital Input/Output
    pin3 VCC Power for Grove Module, 5V/3.3V
    pin4 GND Ground

    Grove Analog: Lleva los pines de alimentación y dos pines de entrada/salidas digitales

    pin1 An Primary Analog Input
    pin2 An+1 Secondary Analog Input
    pin3 VCC Power for Grove Module, 5V/3.3V
    pin4 GND Ground

    Grove UART: Para usar con puertas de comunicaciones serie

    pin1 RX Serial Receive
    pin2 TX Serial Transmit
    pin3 VCC Power for Grove Module, 5V/3.3V
    pin4 GND Ground

    Grove I2C: Para unidades que utilicen I2C (Esta vez sí)

    pin1 SCL I2C Clock
    pin2 SDA I2C Data
    pin3 VCC Power for Grove Module, 5V/3.3V
    pin4 GND Ground

    Es decir que los conectores Grove permiten 4 funciones distintas: Entrada / Salida digital, Entradas analógicas, UART e I2C para poderse adecuar al mundo que conocemos. Pero esto lleva aparejado que no todas las puertas Grove serán iguales, ya que algunas serán, precisamente, de uno u otro tipo. Por eso las expansiones para Arduino y demás con varios conectores deben especificar con rótulos las funciones asignadas a cada una (Es mucho más fácil de lo que parece)

    Por ejemplo, existe un Arduino Grove base Shield (Entre otros):

    Arduino grove shield

    El Grove base shield for Arduino incluye un buen número de conectores Grove para que puedas usar los módulos Grove con tu micro favorito, y si te fijas veras con claridad los rótulos que indican la función de cada uno.

    No es que no puedas usar un módulo Grove digital en un conector I2C. Podrás, pero lo usaras simplemente como I/O estándar, pero si conectas un módulo Grove I2C a un conector I/O te vas a llevar un chasco, porque tu Arduino UNO solo dispone de un puerto I2C y los puertos Grove digital se conectan a pines digitales que no permiten usarlos para I2C. Al final todo es una cuestión de a que pines Arduino están ligados los conectores Grove ¿Vale?

  • Espero que nadie sea tan melón para decirme que si solo hay un puerto I2C en el Arduino ¿Cómo puedo tener 4 conectores Grove en ese módulo de arriba? El I2C está diseñado como un bus serie que permite múltiples unidades conectadas a los mismos hilos y por eso podemos tener 4 o 40 sin problemas. El base ha nos da 4 conectores para que podamos conectar con comodidad hasta 4 unidades, pero hay expansores por si queremos/necesitamos mas.
  • También podemos usar módulos SPI, ya que usa los mismos pines que el I2C.
  •  

    Vale pues, ya tenemos conector estándar ¿y qué cosa puedo conectar?

     

    Módulos o unidades Grove

     

    Una vez definido el conector estándar, varios fabricantes empiezan a montar sensores y actuadores con el conector Grove y a día de hoy podemos encontrar un buen puñado de ellos proporcionados por múltiples fabricantes

    Por ejemplo, Seed Studio ofrece una muy amplia variedad de sensores aquí:

    Sensores Seed studio grove

    Pinchad en la imagen si queréis surfear los mas de 150 ítems que lista. Prácticamente hay de cualquier sensor que se os ocurra de los habituales que manejamos con Arduino y muchos otros menos comunes. Esta organizado por categorías:

  • Sensores
  • Actuadores (motores, relés…)
  • Comunicaciones
  • Interfaces humanos
  • Shields & Hats   Para conectar con otros controladores
  •  

    Pero, naturalmente Seed no es el único que vende módulos Grove. Personalmente me gustan mucho los módulos de M5stack que llevamos en la tienda Prometec, (También Grove por supuesto), porque están encapsulados magníficamente y de los que podéis conseguir un listado completo en la tienda de M5stack

  • En Prometec somos distribuidores tanto de Seed Studio como de M5stack y podemos suministrar con rapidez todos los diferentes sensores de Seed y de M5 entre otros, aunque no listamos todos los módulos en la tienda por el exceso de componentes que supondría, pero si necesitáis algo en concreto os pasaremos una oferta sobre cualquier unidad que os interese.   [/fancy-ul] [/three-fourth]
  •  

    Pero además de la amplia variedad de oferta disponible hay otra ventaja importante de los módulos Grove, y es que son compatibles no solo con Arduino, sino también con

  • Arduino
  • Raspberry pi
  • Pi Pico
  • Xiao Seed (Estoy preparando tuto)
  • Microbit
  • NodeMCU Esp8266
  • BeagleBone
  • Adfafruit Feather
  •  

    Un conjunto particularmente interesante si queréis iniciaros en Arduino con Grove es el Grove Beginner Kit para Arduino de Seed,  que incluye un Arduino uno en la placa central con los conectores Grove (A diferencia del Arduino Grove sensor kit, que incluye los mismos sensores, pero no el Arduino UNO) además de varios sensores y un display y los cables necesarios para empezar con su curso de iniciación:

    Aquí os dejo un video mostrando algunas placas y sensores Grove: