- Materiales usados
- Módulo GPS NEO6M
- Pantalla OLED I2C de 1,3 pulgadas
- Diagrama de circuito
- Programación de Arduino para el velocímetro OLED de Arduino
Los velocímetros se utilizan para medir la velocidad de desplazamiento de un vehículo. Anteriormente usamos el sensor de infrarrojos y el sensor de pasillo para construir un velocímetro analógico y un velocímetro digital respectivamente. Hoy usaremos GPS para medir la velocidad de un vehículo en movimiento. Los velocímetros GPS son más precisos que los velocímetros estándar porque pueden localizar continuamente el vehículo y pueden calcular la velocidad. La tecnología GPS se usa ampliamente en teléfonos inteligentes y vehículos para alertas de navegación y tráfico.
En este proyecto, construiremos un velocímetro GPS Arduino utilizando un módulo GPS NEO6M con una pantalla OLED.
Materiales usados
- Arduino Nano
- Módulo GPS NEO6M
- Pantalla OLED I2C de 1.3 pulgadas
- Tablero de circuitos
- Conexión de puentes
Módulo GPS NEO6M
Aquí estamos usando el módulo GPS NEO6M. El módulo GPS NEO-6M es un receptor GPS popular con una antena de cerámica incorporada, que proporciona una sólida capacidad de búsqueda por satélite. Este receptor tiene la capacidad de detectar ubicaciones y rastrear hasta 22 satélites e identificar ubicaciones en cualquier parte del mundo. Con el indicador de señal integrado, podemos monitorear el estado de la red del módulo. Tiene una batería de respaldo de datos para que el módulo pueda guardar los datos cuando la energía principal se apaga accidentalmente.
El corazón central dentro del módulo del receptor GPS es el chip GPS NEO-6M de u-blox. Puede rastrear hasta 22 satélites en 50 canales y tiene un nivel de sensibilidad muy impresionante que es de -161 dBm. Este motor de posicionamiento u-blox 6 de 50 canales cuenta con un tiempo hasta la primera reparación (TTFF) de menos de 1 segundo. Este módulo admite la velocidad en baudios de 4800-230400 bps y tiene la velocidad de transmisión predeterminada de 9600.
caracteristicas:
- Voltaje de funcionamiento: (2.7-3.6) V DC
- Corriente de funcionamiento: 67 mA
- Tasa de baudios: 4800-230400 bps (9600 predeterminado)
- Protocolo de comunicación: NEMA
- Interfaz: UART
- Antena externa y EEPROM incorporada.
Pinout del módulo GPS:
- VCC: pin de voltaje de entrada del módulo
- GND: pin de tierra
- RX, TX: pines de comunicación UART con microcontrolador
Anteriormente, hemos interconectado GPS con Arduino y hemos creado muchos proyectos utilizando módulos GPS, incluido el seguimiento de vehículos.
Pantalla OLED I2C de 1,3 pulgadas
El término OLED significa “ diodo emisor de luz orgánica”, utiliza la misma tecnología que se utiliza en la mayoría de nuestros televisores pero tiene menos píxeles en comparación con ellos. Es realmente divertido tener estos módulos de pantalla de aspecto atractivo para conectarse con Arduino, ya que hará que nuestros proyectos se vean geniales. Hemos cubierto un artículo completo sobre pantallas OLED y sus tipos aquí. Aquí, estamos usando una pantalla OLED monocromática de 4 pines SH1106 OLED de 1.28 ”. Esta pantalla solo puede funcionar con el modo I2C.
Especificaciones técnicas:
- Controlador IC: SH1106
- Voltaje de entrada: 3.3V-5V DC
- Resolución: 128x64
- Interfaz: I2C
- Consumo de corriente: 8 mA
- Color de píxel: azul
- Ángulo de visión:> 160 grados
Descripción del Pin:
VCC: fuente de alimentación de entrada 3.3-5V DC
GND: pin de referencia de tierra
SCL: Pin de reloj de la interfaz I2C
SDA: pin de datos en serie de la interfaz I2C
La comunidad de Arduino ya nos ha proporcionado muchas bibliotecas que se pueden usar directamente para hacer esto mucho más simple. Probé algunas bibliotecas y descubrí que la biblioteca Adafruit_SH1106.h era muy fácil de usar y tenía un puñado de opciones gráficas, por lo que usaremos las mismas en este tutorial.
OLED se ve muy bien y se puede conectar fácilmente con otros microcontroladores para construir algunos proyectos interesantes:
- Interfaz de pantalla OLED SSD1306 con Raspberry Pi
- Interfaz de pantalla OLED SSD1306 con Arduino
- Reloj de Internet usando ESP32 y pantalla OLED
- Controlador automático de temperatura de CA con Arduino, DHT11 e IR Blaster
Diagrama de circuito
El diagrama de circuito para este velocímetro Arduino GPS que usa OLED se muestra a continuación.
La configuración completa se verá a continuación:
Programación de Arduino para el velocímetro OLED de Arduino
El código completo del proyecto se encuentra al final del tutorial. Aquí explicamos el código completo línea por línea.
En primer lugar, incluya todas las bibliotecas. Aquí la biblioteca TinyGPS ++. H se usa para obtener las coordenadas GPS usando el módulo receptor GPS y Adafruit_SH1106.h se usa para OLED.
#incluir
Luego, se define la dirección OLED I2C, que puede ser OX3C o OX3D, aquí es OX3C en mi caso. Además, se debe definir el pin de reinicio de la pantalla. En mi caso, se define como -1, ya que la pantalla comparte el pin Reset de Arduino.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 pantalla Adafruit_SH1106 (OLED_RESET);
A continuación, los objetos para TinyGPSPlus y la clase Softwareserial se definen como se muestra a continuación. La clase de serie de software necesita el pin Arduino no. para la comunicación en serie, que se define aquí como 2 y 3.
int RX = 2, TX = 3; TinyGPSPlus gps; SoftwareSerial gpssoft (RX, TX);
Dentro de setup () , la inicialización se realiza para la comunicación serial y OLED. La velocidad en baudios predeterminada para la comunicación en serie del software se define como 9600. Aquí SH1106_SWITCHCAPVCC se usa para generar voltaje de pantalla a partir de 3.3 V internamente y la función display.begin se usa para inicializar la pantalla.
configuración vacía () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Dentro del bucle while true, los datos en serie recibidos se validan, si se reciben señales GPS válidas, se llama a displayspeed () para mostrar el valor de velocidad en OLED.
while (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displayspeed ();
Dentro de la función displayspeed () , los datos de velocidad del módulo GPS se verifican usando la función gps.speed.isValid () y si devuelve un valor verdadero, entonces el valor de velocidad se muestra en la pantalla OLED. Aquí el tamaño del texto en OLED se define usando la función display.setTextSize y la posición del cursor se define usando la función display.setCursor . Los datos de velocidad del módulo GPS se decodifican usando la función gps.speed.kmph () y finalmente se muestran usando display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Finalmente, cargue el código en Arduino Uno y coloque el sistema en un vehículo en movimiento, y podrá ver la velocidad en la pantalla OLED como se muestra en la siguiente imagen.
A continuación se proporciona el código completo con un video de demostración.