Tabla de contenido
resumen
En este proyecto, crearemos un velocímetro utilizando un módulo GPS, un Arduino y una pantalla OLED. Un velocímetro o velocímetro es un indicador que mide y muestra la velocidad instantánea de un vehículo. Muchos velocímetros utilizan un cable flexible giratorio accionado por un engranaje vinculado a la transmisión del vehículo. Pero muchos velocímetros modernos son electrónicos.
Para construir un velocímetro GPS, necesitas un receptor GPS. El receptor GPS más popular es el módulo GPS u-blox NEO-6M. Pero usamos Módulo GPS Cuektel L86 Ya que es pequeño con antenas muy pequeñas. Al interconectar el módulo GPS L86 con Arduino y la pantalla OLED de 0,96 pulgadas, los parámetros relacionados con la velocidad se pueden mostrar en la pantalla OLED.
Lista de materiales
Para crear un velocímetro GPS Arduino, necesitará los siguientes componentes: Todos los componentes se pueden comprar en línea en Amazon.
¿Cómo mide el GPS la velocidad?
Los dispositivos GPS pueden medir la velocidad de dos maneras:
1. Método 1: El primer y más simple método se basa en qué tan lejos ha viajado el receptor desde la última medición. Dichos cálculos de velocidad no se ven afectados por las mismas fuentes de error (tamaño de la rueda, transmisión / relación de transmisión) que el velocímetro del vehículo. En cambio, la precisión de la posición GPS, y por lo tanto la velocidad calculada, depende de la calidad de la señal satelital en ese momento. El cálculo de la velocidad es más rápido y preciso cuanto menor sea la relación entre el error de posición y el cambio de posición. El software GPS también puede utilizar cálculos de media móvil para reducir los errores. Algunos dispositivos GPS no tienen en cuenta la posición vertical del coche, por lo que subestiman la velocidad por la pendiente de la carretera.
2. Método 2: Alternativamente, el GPS puede usar el efecto Doppler para estimar su velocidad. En condiciones ideales, la precisión de los dispositivos comerciales está dentro de 0.2-0.5 km / h, pero puede deteriorarse con una disminución en la calidad de la señal.
Módulo GPS Cuektel L86/L80
el Módulo L86 Es la solución perfecta para dispositivos portátiles de fitness. Diseño ultracompacto Y Bajo consumo de energía Pedir. Sus características de bajo consumo de energía permiten Conexión GPS Consumo de energía de aproximadamente la mitad del consumo de energía del modo normal durante el modo de recepción estática. Su precisión combinada con una alta sensibilidad hace que el L86 sea adecuado para una amplia gama. Aplicaciones de IoT Dispositivos portátiles, automoción, seguimiento personal, seguridad, PDAs industriales, etc.
L86 Antena de parche Medición en la parte superior 16,0 mm × 16,0 mm × 6,45 mmY 66 canales de adquisición Y 22 canales de seguimientoAdquiera y rastree satélites en el menor tiempo posible, incluso a nivel de señal interior. El módulo funciona con 2.8V ~ 4.3V El consumo de energía típico es inferior a 1 μA. 20mA En el modo de espera, el consumo de energía es de aproximadamente 1.0mA. Para obtener más información acerca del módulo GPS L86, consulte Hoja de datos de L86.
El módulo GPS Quectel L86/L80 tiene 12 pines como se muestra en la imagen de abajo.
El L86 es un pequeño módulo de tipo SMD sin un pin de cabecera macho/hembra para pruebas. Por lo tanto, puede usar pines de cabezal macho espaciados 2.54 para soldar a la PCB L86 desde abajo.
Cuando los 12 pines del módulo L86 están soldados, el módulo está listo para la placa de pruebas. Ahora puede insertar fácilmente el módulo en la placa de pruebas.
Diagrama del circuito del velocímetro GPS Arduino
Ahora, echemos un vistazo al esquema del velocímetro GPS Arduino. Como se muestra en la imagen a continuación, el diagrama de conexión es bastante simple.
El módulo GPS Quectel L86 tiene 12 pines, pero el proyecto solo usa 5 pines. Conecte los pines VCC y GND del L86 a los pines 3.3V y GND del Arduino. Si el pin V_BCKP del L86 está conectado a 3.3V y este pin se deja desconectado, el módulo no funcionará. Los pines Rx y Tx del L86 van a los pines digitales Arduino 2 y 3 respectivamente.
La pantalla OLED es un módulo I2C. Conecte los pines VCC y GND del OLED a los pines Arduino 3.3V y GND. Del mismo modo, conecte los pines SDA y SCL a los pines Arduino A4 y A5, respectivamente.
Proyecto PCB Gerber File & PCB Pedidos en línea
Si no desea ensamblar circuitos en una placa de pruebas y desea una PCB para su proyecto, aquí está la PCB. La placa PCB para velocímetro GPS está diseñada utilizando EDA fácil Herramientas de diseño de PCB y esquemáticos en línea. Diseñe primero el esquema y luego conviértalo en PCB.
El archivo Gerber de la PCB se muestra a continuación. Simplemente descargue el archivo Gerber y solicite la PCB. Todas las placas de circuito impreso Y $1$ Solamente.
Puede usar este archivo Gerber para solicitar una PCB de alta calidad para este proyecto. Para ello, Todas las placas de circuito impreso Visite el sitio web oficial haga clic aquí: https://www.allpcb.com/.
Con esto[今すぐ引用]Puede seleccionar una opción para cargar su archivo Gerber. De estas opciones, puede seleccionar el tipo de material, las dimensiones, la cantidad, el grosor, el color de la máscara de soldadura y otros parámetros requeridos.
Una vez que haya ingresado todos los detalles, seleccione su país y método de envío. Finalmente, puede realizar un pedido.
Código fuente/Programa
La mejor parte del módulo GPS L80 es que es compatible. Pequeña biblioteca GPS++Descargue la biblioteca y agréguela a su carpeta de biblioteca Arduino. Además de la biblioteca Tiny GPS ++, el código también requiere la biblioteca SSD1306. Adafruit SSD1306 Biblioteca.
Aquí está el código completo. Puede copiar el código y cargarlo en su nanoplaca Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | #include <SoftwareSerial.h> #include <wire.h> #include <Adafruit_SSD1306.h> #include <TinyGPS++.h> #define RX pin 2 #define TX pin 3 Software Serie Migpus(RX Pin, Pin TX); #define SCREEN_WIDTH 128 // Ancho de pantalla OLED en píxeles #define SCREEN_HEIGHT 64 // Altura de pantalla OLED en píxeles #define OLED_RESET -1 // reset pin # (o -1 si se comparte el pin de restablecimiento de Arduino) Ver hoja de datos para #define SCREEN_ADDRESS 0x3C// dirección Adafruit_SSD1306 Monitor(SCREEN_WIDTH, SCREEN_HEIGHT, &wire, OLED_RESET); TinyGPSPlus para GPS; No válido arreglo() { serial.empezar(115200); Migpus.empezar(9600); Si (!Monitor.empezar(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { serial.Printrung(F(“Error al asignar SSD1306”)); para (;;); No continúes, bucle para siempre } Monitor.Borrar pantalla(); Monitor.Monitor(); demorar(2000); } No válido bucle() { Booleano Nuevos datos = falso; para (Unsigned largo empezar = Milis(); Milis() – empezar < 1000;) { mientras (Migpus.disponible()) { Si (para GPS.codificar(Migpus.leer())) { Nuevos datos = verdadero; } } } Cuando los nuevos datos son verdaderos Si (Nuevos datos == verdadero) { Nuevos datos = falso; Monitor.Establecer color de texto(SSD1306_WHITE); Si (para GPS.lugar.válido() == 1) { String gps_speed = String(gps.speed.kmph()); Monitor.Establecer cursor(0, 0); Monitor.Establecer tamaño de texto(3); Monitor.Impresión(para GPS.velocidad.Mph()); Monitor.Establecer cursor(75, 20); Monitor.Establecer tamaño de texto(2); Monitor.Impresión(“km/h”); Monitor.Establecer tamaño de texto(1); Monitor.Establecer cursor(0, 50); Monitor.Impresión(“Sábado:”); Monitor.Establecer cursor(25, 50); Monitor.Impresión(para GPS.satélite.valor()); Monitor.Establecer tamaño de texto(1); Monitor.Establecer cursor(70, 50); Monitor.Impresión(“ALT:”); Monitor.Establecer cursor(95, 50); Monitor.Impresión(para GPS.altitud.metro(), 0); Monitor.Monitor(); demorar(1500); Monitor.Borrar pantalla(); } } de otra manera { Monitor.Establecer color de texto(SSD1306_WHITE); Monitor.Establecer cursor(0, 0); Monitor.Establecer tamaño de texto(3); Monitor.Impresión(“Sin datos”); Monitor.Monitor(); demorar(1500); Monitor.Borrar pantalla(); } } |
Prueba del velocímetro GPS de Arduino
Sube el código anterior a tu nanoplaca Arduino. Al principio, la pantalla OLED no mostrará ningún dato. Esto se debe a que el receptor GPS L86 no está sincronizado con el sistema satelital.
Espere un momento y el GPS comenzará a recibir señales del sistema satelital más cercano. La recepción de señales y la sincronización con satélites varían según las condiciones interiores y exteriores. Después de sincronizarse correctamente con el satélite, la pantalla OLED muestra la velocidad en kilómetros por hora (kmph). La velocidad puede caer a cero cuando está parado.
Mientras el velocímetro GPS está colocado en un vehículo en movimiento, comenzará a mostrar la velocidad en kmph. También muestra el total y la altitud de los satélites conectados al sistema en metros.
Video Tutorial y Guía
Velocímetro DIY con Arduino con módulo GPS y pantalla OLED
Así es como puedes construir un velocímetro Arduino usando un módulo GPS y un Arduino. Los velocímetros tienen muchas aplicaciones. Se puede utilizar para medir la velocidad de automóviles, bicicletas, caminatas, carreras e incluso barcos, autobuses, trenes, bicicletas y aviones.