Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Registrador de datos GPS, curva en tiempo real, altura máxima y velocidad máxima

Componentes y suministros

Arduino UNO
arduino uno
× 1
Puente (barra colectora), juego de cables de puente
× 1
Arduino Proto Shield
× 1
Pantalla LCD TFT SPI de 1.8 "con conector MicroSD
u otro con tarjeta SD
× 1
u-blox gps neo 6m
× 1

Herramientas y máquinas necesarias

Soldador (genérico)
Alambre de soldadura, sin plomo
Pelacables y cortador, 18-10 AWG / 0,75-4 mm² Cables de capacidad

Acerca de este proyecto

INTRODUCCIÓN

Practico aeromodelismo y me gusta conocer la velocidad y altitud de mis aviones. desafortunadamente, los registradores de datos GPS comerciales son muy costosos.

Entonces decidí hacer un registrador de datos GPS basado en Arduino por un costo inferior a 50 €.

Mi primer prototipo está basado en Arduino Uno R3 con una pantalla Sainsmart ST7735 con tarjeta SD integrada y un módulo GPS NEO 6M V2.

En el segundo proyecto usaría un Arduino Nano con una pantalla OLED SSD1306, el mismo módulo GPS y una tarjeta micro SD. El peso con el estuche debe ser de alrededor de 40 gramos y se puede integrar fácilmente en un avión de tamaño mediano (tamaño L 50 mm X l 30 mm X H 22 mm).

Será mi próximo proyecto (estoy esperando los materiales)

PRUEBA

No es fácil filmar una pantalla de Arduino en un automóvil, pero lo hice y puedes ver el resultado en el video.

La próxima prueba será con el nuevo prototipo más pequeño y ligero en un avión controlado por radio. ¡Continuará!


Código

  • registrador de datos gps
  • sauvegarde SD
registrador de datos gps Arduino
 #include  #include  #include  #define cs 10 # define dc 9 # define rst 8 #include  #include  Adafruit_ST7735 tft =Adafruit_ST7735 (cs, dc, rst); estática constante int RXPin =4, TXPin =3; // Comunicación GPS estática const uint32_t GPSBaud =9600; #define OLED_RESET 5TinyGPSPlus gps; SoftwareSerial ss (RXPin, TXPin); int x =80; int xh =80; int maxhigh =0; int maxspeed =0, speed1 =0; int high1 =0;; void setup () {Serial.begin (9600); ss.begin (GPSBaud); tft.initR (INITR_GREENTAB); tft.fillScreen (ST7735_BLACK); tft.setCursor (5, 58); tft.setTextSize (1); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("inicialización"); } bucle vacío () {tft.setTextSize (1); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); // affichage des informations un satélite de recepción chaque bonne while (ss.available ()> 0) {gps.encode (ss.read ()); if (gps.location.isUpdated ()) {cuadro (); tft.setCursor (5, 44); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("Latitud:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (ubicación.gps.lat (), 6); tft.setCursor (5, 58); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("Longitud:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (ubicación.gps.lng (), 6); // affichage ecran date tft.setCursor (5, 7); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("fecha:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.date.day ()); tft.print (""); tft.print (gps.date.month ()); tft.print (""); tft.print (gps.date.year ()); // affichage ecran heure tft.setCursor (5, 20); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("heure:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.time.hour () + 1); tft.print (""); tft.print (gps.time.minute ()); tft.print (""); tft.print (gps.time.second ()); tft.print (""); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.setCursor (3, 30); // affichage ecran altitud tft.setCursor (5, 80); tft.print ("H m:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.altitude.meters (), 0); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (""); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.setCursor (5, 95); hmax (); tft.print ("Hmax:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (maxhigh); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (""); courbeh (); // affichage ecran vitesse tft.setCursor (5, 115); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("V acto:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.speed.kmph (), 0); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (""); tft.setCursor (5, 130); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); vmax (); tft.print ("vmax:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (velocidad máxima); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (""); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); courbe (); // affichage ecran nombre de satellites tft.setCursor (5, 147); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("nombre de Sat:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.satellites.value ()); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (""); // Dim. Horizontal de Precision (100ths-i32) Serial.print ("HDOP ="); Serial.println (gps.hdop.value ()); smartDelay (400); }}} // delai pour une bonne recptionstatic void smartDelay (unsigned long ms) {unsigned long start =millis (); hacer {while (ss.available ()) gps.encode (ss.read ()); } while (millis () - start  123) {x =80; tft.fillRect (82,110,43,30, ST7735_BLACK); }} void courbeh () {int nouvelleValeurh; // converison vitesse max (350 km / h) en pixel nouvelleValeurh =map ((gps.altitude.meters ()), 0, 1000, 104, 72); // car l'cran a 64 píxeles de haut xh ++; tft.drawPixel (xh, nouvelleValeurh, ST7735_CYAN); si (xh> 123) {xh =80; tft.fillRect (82,72,43,35, ST7735_BLACK); }} void vmax () {// calcul vitese máxima velocidad1 =(gps.speed.kmph ()); if (velocidad1> velocidad máxima) {velocidad máxima =velocidad1; }} void hmax () {// cálculo de altitud máxima high1 =(gps.altitude.meters ()); if (alto1> máximo alto) {máximo alto =alto1; }} 
sauvegarde SD Arduino
registrador de datos
 #include  #include  #include  #include  #define cs 10 # define dc 9 # define rst 8 #include  #include  Adafruit_ST7735 tft =Adafruit_ST7735 (cs, dc, rst); static const int RXPin =4, TXPin =3; // Comunicación GPS estática const uint32_t GPSBaud =9600; const int cs_sd =4; #define OLED_RESET 5TinyGPSPlus gps; SoftwareSerial ss (RXPin, TXPin); int x =80; int xh =80; int maxhigh =0; int maxspeed =0, speed1 =0; int high1 =0;; void setup () {Serial.begin (9600); ss.begin (GPSBaud); tft.initR (INITR_GREENTAB); tft.fillScreen (ST7735_BLACK); tft.setCursor (5, 58); tft.setTextSize (1); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("inicialización"); tft.setCursor (5, 70); tft.print ("init SD"); retraso (1000); if (! SD.begin (cs_sd)) // Condición vrifiant si la carta SD est prsente dans l'appareil {tft.setCursor (5, 82); tft.print ("SD predeterminado"); regreso; } tft.setCursor (5, 82); tft.print ("Carte SD OK"); retraso (1000); tft.fillScreen (ST7735_BLACK); Datos de archivo =SD.open ("donnees.txt", FILE_WRITE); // Ouvre le fichier "donnees.txt" data.println (""); data.println ("adquisición de Dmarrage"); // Ecrit dans ce fichier data.close (); } bucle vacío () {tft.setTextSize (1); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); // affichage des informations un satélite de recepción chaque bonne while (ss.available ()> 0) {gps.encode (ss.read ()); if (gps.location.isUpdated ()) {cuadro (); tft.setCursor (5, 44); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("Latitud:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (ubicación.gps.lat (), 6); tft.setCursor (5, 58); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("Longitud:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (ubicación.gps.lng (), 6); // affichage ecran date tft.setCursor (5, 7); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("fecha:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.date.day ()); tft.print (""); tft.print (gps.date.month ()); tft.print (""); tft.print (gps.date.year ()); Cadena Fecha =Cadena (gps.date.day ()) + ("") + (gps.date.month ()) + ("") + (gps.date.year ()); // affichage ecran heure tft.setCursor (5, 20); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("heure:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.time.hour () + 1); tft.print (""); tft.print (gps.time.minute ()); tft.print (""); tft.print (gps.time.second ()); tft.print (""); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.setCursor (3, 30); String Temps =String (gps.time.hour () + 1) + ("") + (gps.time.minute ()) + ("") + (gps.time.second ()); // affichage ecran altitud tft.setCursor (5, 80); tft.print ("H m:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.altitude.meters (), 0); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (""); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.setCursor (5, 95); hmax (); tft.print ("Hmax:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (maxhigh); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (""); courbeh (); // affichage ecran vitesse tft.setCursor (5, 115); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("V acto:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.speed.kmph (), 0); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (""); tft.setCursor (5, 130); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); vmax (); tft.print ("vmax:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (velocidad máxima); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (""); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); courbe (); // affichage ecran nombre de satellites tft.setCursor (5, 147); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("nombre de Sat:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.satellites.value ()); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (""); // Dim. Horizontal de Precision (100ths-i32) Serial.print ("HDOP ="); Serial.println (gps.hdop.value ()); smartDelay (400); // Ecriture des donnes dans le fichier texte Datos de archivo =SD.open ("donnees.txt", FILE_WRITE); data.println (Fecha + "" + Temps + "" + String (gps.location.lat (), 6) + "" + String (gps.location.lng (), 6) + ("") + String ( gps.altitude.meters (), 0) + ("") + String (maxhigh) + ("") + String (gps.speed.kmph (), 0) + ("") + String (maxspeed)); data.close (); }}} // delai pour une bonne recptionstatic void smartDelay (unsigned long ms) {unsigned long start =millis (); hacer {while (ss.available ()) gps.encode (ss.read ()); } while (millis () - start  123) {x =80; tft.fillRect (82,110,43,30, ST7735_BLACK); }} void courbeh () {int nouvelleValeurh; // converison vitesse max (350 km / h) en pixel nouvelleValeurh =map ((gps.altitude.meters ()), 0, 1000, 104, 72); // car l'cran a 64 píxeles de haut xh ++; tft.drawPixel (xh, nouvelleValeurh, ST7735_CYAN); si (xh> 123) {xh =80; tft.fillRect (82,72,43,35, ST7735_BLACK); }} void vmax () {// calcul vitese máxima velocidad1 =(gps.speed.kmph ()); if (velocidad1> velocidad máxima) {velocidad máxima =velocidad1; }} void hmax () {// cálculo de altitud máxima high1 =(gps.altitude.meters ()); if (alto1> máximo alto) {máximo alto =alto1; }} 

Esquemas


Proceso de manufactura

  1. Cree un detector de incendios en minutos con Samsung SAMIIO, Arduino UNO y Raspberry Pi
  2. Adquisición de datos en tiempo real del panel solar usando Arduino
  3. Cómo construir un monitor de energía Arduino y un registrador de datos
  4. Animación LCD y juegos
  5. Registrador de datos de temperatura y humedad
  6. Calculadora UNO simple
  7. Persistencia de la visión
  8. Módulo GPS u-blox LEA-6H 02 con Arduino y Python
  9. Cubo LED 4x4x4 con Arduino Uno y 1sheeld
  10. Python3 y comunicación Arduino
  11. Radio FM usando Arduino y RDA8057M