QWIIC, el estándar de conexión I2C de módulos de SparkFun

Conectar módulos de SparkFun nunca ha sido tan fácil con el estándar QWIIC

 Conexion del sistema

SarkFun Electronics invento el sistema Qwiic como respuesta a la creación de una “simple” interfaz plug-and-go para placas independientes aptas para microprocesadores o microcontroladores complejos. En pocas palabras, Qwiic es una combinación de clavija/receptor de cuatro pines que agrega una interfaz I2C para casi cualquier proyecto.

El sistema Qwiic Connect de SparkFun utiliza conectores JST de 4 pines para conectar rápidamente las placas de desarrollo con sensores, LCD, relés y más.

 

Este sistema está diseñado para mantener tus proyectos en un rápido movimiento, permitiéndote cambiar los dispositivos fácilmente de lugar.

 Logo Qwiic

Los cables Qwiic (JST de 4 pines) se conectan sin necesidad de soldar a las placas de desarrollo a los sensores, protectores, placas de accesorios y más, lo que facilita la configuración de un nuevo prototipo.

Caracteristicas Qwiic

Basta de preocupaciones a la hora de intercambiar accidentalmente los cables SDA y SCL en su placa. El conector Qwiic está polarizado para que se sepa que tendrás conectado correctamente cada vez, desde el principio.

¡Saca el máximo partido a la potencia del bus I2C! La mayoría de las placas Qwiic tendrán dos o más conectores, lo que permitirá conectar varios dispositivos resultando muy sencillo su encadenamiento.

¿Cuánta energía puedo usar con QWIIC?

La corriente máxima que permite cómodamente un cable Qwiic es 226mA. Si desea presionarlo, 28AWG funcionan correctamente hasta 1.4A para cableado de chasis No se recomiendan forzar los cables a los 1,4 A, pero unos cientos de mA deberían ser capaces de ir bien.

¿Cuál es el pinout de nuevo?

Todos los cables Qwiic tienen la siguiente combinación de colores y disposición:

Negro = GND

Rojo = 3,3 V

Azul = SDA

Amarillo = SCL

Qwiic 

Qwiic cable - 50mm – Referencia SP040

Por ahora, Qwiic solo admite placas de 3.3V. Actualmente, más del 90 por ciento de los productos I2C de esta marca son de 3,3 V, y el mercado de tecnología está acelerando esta tendencia.

Productos en Solectro

Como distribuidores oficiales de la marca líder americana SparkFun, disponemos de varios productos con QWIIC conector:

Adaptador Qwiic

Uno de los más útiles es este Adaptador QWIIC. Permite que cualquier dispositivo con conectores I2C funcione con el sistema Qwiic. 

 Adaptador Qwiic

SparkFun Adaptador Qwiic – Referencia SP033

Tiene dos puertos Qwiic, ambos servidos con el mismo bus I2C. Simplemente pones la placa en tu placa I2C y obtienes dos puertos Qwiic adicionales. Es tan fácil como suena.

Hay varias formas de conectar su dispositivo I 2 C al adaptador Qwiic. El método más simple y probablemente más limpio sería usar encabezados. Esto también permite volver a conectar el adaptador a un dispositivo I 2 C diferente en el futuro.

Con unos alicates, separe una fila de 4 pines del cabezal macho en ángulo recto. Usando cortadores diagonales, deberás sacrificar un enchufe para cortar una fila de 4 pines del cabezal hembra. Doble con cuidado las clavijas del cabezal hembra con los alicates para formar un ángulo recto con el dispositivo I 2 C. Suelda los conectores macho al adaptador Qwiic y los encabezados de hembra al dispositivo I2C dispositivo como se muestra en la imagen de abajo.

Qwiic_conectado

 

Una vez tengas los encabezados soldados en cada una de lass placas, simplemente conecta su adaptador a su dispositivo habilitado para I2C. Con un cable Qwiic, conecta tu adaptador Qwiic a una placa Qwiic apilable de tu elección. Suponiendo que haya un código de ejemplo cargado en tu placa de desarrollo, es tan fácil como hacer uso de él. ¡Ya puedes comenzar a leer datos de tu dispositivo habilitado para I2C!

pHAT para Raspberry Pi

Este HAT abre prácticamente todo el universo QWIIC a tu Raspberry Pi. Podrás conectar a ella multitud de sensores.

Qwiic Phat 

SparkFun Qwiic pHAT v2.0 para Raspberry Pi – Referencia SP0020

El Qwiic pHAT tiene 4 puertos de conexión Qwiic, todos en el mismo bus I 2 C. Hay dos conectores Qwiic verticales ubicados en el centro y dos conectores horizontales en el lado derecho.

5V de potencia

Si necesitas alimentar un dispositivo con 5V, han dividido los pines 5V y GND de la Raspberry Pi en el lateral con un terminal de tornillo. Dependiendo de tu proyecto, también puede soldar a los pads PTH.

Botón de uso general

En la placa se incluye un botón de uso general conectado a GPIO17. Puedes usar el botón como desees, pero lo encontramos útil para apagar o reiniciar una Raspberry Pi con un script de Python .

Montaje de hardware

Para comenzar con su Qwiic pHAT, simplemente conéctelo a los encabezados de la Raspberry Pi con las letras hacia ti. Y ya estás listo para conectarle

El Qwiic pHat también es compatible con computadoras de placa única (como NVIDIA Jetson Nano o Google Coral ) que utilizan la huella del encabezado Raspberry Pi de 40 pines.

Qwiic Jetson

NVIDIA Jetson Nano Developer Kit – Referencia RA095

Google Coral

Google Coral Development Board

Módulo GPS con QWIIC

La placa cuenta con el módulo GPS XA1110 de GTOP y el chipset MediaTek MT3333 ya cargado con el firmware de SparkFun, lo que permite un uso limpio y fácil de ambos puertos.

GPS con Qwiic

Módulo GPS XA1110 SparkFun – Referencia SP034

El módulo soporta GPS, GLONASS, QZSS, SBAS permitiendo un posicionamiento muy preciso en múltiples lugares. Además, tiene una batería RTC que permite el arranque en caliente con sólo 5 segundos para iniciar la primera fijación.

Instalación

Puedes conectar este módulo mediante el adaptador QWIIC por I2C a tu placa Arduino UNO o a la placa SparkFun ESP32 Thing, por ejemplo. 

 ESP32 con Qwiic

SparkFun ESP32 Thing - Referencia SP009

Primero, deberá descargar e instalar la biblioteca de GPS Sparkfun I2C, esto se puede hacer como siempre usando el Administrador de bibliotecas de Arduino.

Busca la siguiente librería e instala la última versión.

Libreria Ublox

Antes de comenzar a desarrollar un boceto, veamos las funciones disponibles de la biblioteca:

boolean begin(TwoWire &wireport = Wire, uint32_t i2cSpeed = I2C_SPEED_STANDARD);--- begin()se usa para iniciar el GPS, funciona así:

o Comienza a ejecutar el puerto I 2 C en el puerto y la velocidad de reloj dados

o Hace ping al módulo y busca una respuesta

o Devuelve TRUEsi se recibe la respuesta, FALSEsi no.

void check(); --- Comprueba el módulo en busca de nuevos datos.

uint8_t available();--- Devuelve el número de bytes disponible. Llamará a check () si cero está disponible.

uint8_t read(); --- Devuelve el siguiente byte disponible.

void enableDebugging(Stream &debugPort = Serial); --- Muestra varios mensajes para ayudar en la depuración.

void disableDebugging(); --- Bastante autoexplicativo, desactiva la depuración.

boolean sendMTKpacket(String command); --- Se puede usar para enviar un comando o configuración al módulo GPS.

o El búfer de entrada en el MTK es de 255 bytes, por lo que las cadenas deben tener menos de 255 bytes.

o Después de finalizar una transmisión, déle al módulo 10 ms para procesar el mensaje.

String createMTKpacket(uint16_t packetType, String dataField);--- Crea una oración de configuración (String) a partir de un tipo de paquete y cualquier configuración. Consulte la hoja de datos del paquete MTK NMEA para obtener más información.

String calcCRCforMTK(String sentence); --- XORs bytes para crear el paquete MTK.

Código de ejemplo

Abre un sketch vacío y copia el siguiente código:

#include "SparkFun_I2C_GPS_Arduino_Library.h"

I2CGPS myI2CGPS; //Hook object to the library

void setup()

{

  Serial.begin(115200);

  Serial.println("GTOP Read Example");

  if (myI2CGPS.begin() == false)//Checks for succesful initialization of GPS

  {

    Serial.println("Module failed to respond. Please check wiring.");

    while (1); //Freeze!

  }

  Serial.println("GPS module found!");

}

void loop() //Writes GPS data to the Serial port with a baud rate of 115200

{

  while (myI2CGPS.available()) //available() returns the number of new bytes available from the GPS module

  {

    byte incoming = myI2CGPS.read(); //Read the latest byte from Qwiic GPS

    if(incoming == '$') Serial.println(); //Break the sentences onto new lines

    Serial.write(incoming); //Print this character

  }

}

Este primer ejemplo genera las sentencias NMEA sin procesar. Que se parecen a esto que aparece por el Monitor Serie:

GTOP module found

Si su GPS no tiene una posición de satélite, simplemente obtendrá ceros en lugar de números. Estas oraciones NMEA pueden ser un poco difíciles de entender si no habla GPS con fluidez, así que pasemos al segundo ejemplo, que tomará estos datos y usará la biblioteca TinyGPS para transformarlos en una latitud y longitud sensibles. datos. El segundo ejemplo requiere la biblioteca TinyGPS, que se puede descargar igualmente buscándola en el Administrador.

 Libreria Tiny GPS

Abre un sketch vacío y copia el siguiente código:

#include <SparkFun_I2C_GPS_Arduino_Library.h> //Use Library Manager or download here: https://github.com/sparkfun/SparkFun_I2C_GPS_Arduino_Library

I2CGPS myI2CGPS; //Hook object to the library

#include <TinyGPS++.h> //From: https://github.com/mikalhart/TinyGPSPlus

TinyGPSPlus gps; //Declare gps object

void setup()

{

  Serial.begin(115200);

  Serial.println("GTOP Read Example");

  if (myI2CGPS.begin() == false)

  {

    Serial.println("Module failed to respond. Please check wiring.");

    while (1); //Freeze!

  }

  Serial.println("GPS module found!");

}

void loop()

{

  while (myI2CGPS.available()) //available() returns the number of new bytes available from the GPS module

  {

    gps.encode(myI2CGPS.read()); //Feed the GPS parser

  }

  if (gps.time.isUpdated()) //Check to see if new GPS info is available

  {

    displayInfo();

  }

}

//Display new GPS info

void displayInfo()

{

  //We have new GPS data to deal with!

  Serial.println();

  if (gps.time.isValid())

  {

    Serial.print(F("Date: "));

    Serial.print(gps.date.month());

    Serial.print(F("/"));

    Serial.print(gps.date.day());

    Serial.print(F("/"));

    Serial.print(gps.date.year());

    Serial.print((" Time: "));

    if (gps.time.hour() < 10) Serial.print(F("0"));

    Serial.print(gps.time.hour());

    Serial.print(F(":"));

    if (gps.time.minute() < 10) Serial.print(F("0"));

    Serial.print(gps.time.minute());

    Serial.print(F(":"));

    if (gps.time.second() < 10) Serial.print(F("0"));

    Serial.print(gps.time.second());

    Serial.println(); //Done printing time

  }

  else

  {

    Serial.println(F("Time not yet valid"));

  }

  if (gps.location.isValid())

  {

    Serial.print("Location: ");

    Serial.print(gps.location.lat(), 6);

    Serial.print(F(", "));

    Serial.print(gps.location.lng(), 6);

    Serial.println();

  }

  else

  {

    Serial.println(F("Location not yet valid"));

  }

}

La salida de este código en el monitor en serie debe ser similar a la imagen de abajo. Si el módulo aún no tiene una solución, verá en lugar de una lectura de latitud y longitud un “Location not yet valid”.

Abre el Monitor Serial y podrás ver las coordenadas:

 GTOP example readout

Conclusión 

Pensamos que este estándar tiene muchas posibilidades dentro de la electrónica tanto para principiantes, como para profesionales, a la hora de hacer proyectos robustos y cómodos.

¿Qué te parece esta solución en IIC de SparkFun? ¿Piensas que deberíamos tener en catálogo algún módulo más? 

Si necesitas alguno producto SparkFun, no dudes en preguntarnos.

Share