Publicado : 02/02/2021 QWIIC, el estándar de conexión I2C de módulos de SparkFun - Categorías : Otras novedades , Productos Productos relacionados Qwiic cable - 100mm Qwiic cable - 50mm Qwiic cable protoboard - 4 pin 150mm SparkFun Adaptador Qwiic SparkFun Qwiic pHAT v2.0 para Raspberry Pi Conectar módulos de SparkFun nunca ha sido tan fácil con el estándar QWIIC 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. 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. 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 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. 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. 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. 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. NVIDIA Jetson Nano Developer Kit – Referencia RA095 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. 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. 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. 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: 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. 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: 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.