Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Регистратор данных GPS, кривая в реальном времени, максимальная высота и максимальная скорость

Компоненты и расходные материалы

Arduino UNO
arduino uno
× 1
Перемычка (сборная шина), набор выводов перемычки
× 1
Arduino Proto Shield
× 1
1,8-дюймовый ЖК-экран TFT SPI с разъемом MicroSD
или другой с SD-картой
× 1
u-blox gps neo 6m
× 1

Необходимые инструменты и машины

Паяльник (универсальный)
Проволока для припоя, без свинца
Инструмент для зачистки и резки проводов, 18–10 AWG / 0,75–4 мм² Емкость проводов

Об этом проекте

ВВЕДЕНИЕ

Я занимаюсь авиамоделированием, и мне нравится знать скорость и высоту своих самолетов. К сожалению, коммерческие регистраторы данных GPS очень дороги.

Поэтому я решил сделать регистратор данных GPS на базе Arduino по цене менее 50 евро.

Мой первый прототип основан на Arduino Uno R3 с экраном Sainsmart ST7735 со встроенной SD-картой и GPS-модулем NEO 6M V2.

Во втором проекте я бы использовал Arduino Nano с OLED-экраном SSD1306, тем же модулем GPS и картой micro SD. Вес с чемоданом должен составлять около 40 граммов, и его можно легко разместить в самолете среднего размера (размер L 50 мм X l 30 мм X H 22 мм).

Это будет мой следующий проект (жду материалов.)

ТЕСТ

Снять экран Arduino в машине непросто, но я это сделал, и вы можете увидеть результат на видео.

Следующее испытание будет с новым, меньшим и более легким прототипом на радиоуправляемом самолете. Продолжение следует!


Код

  • регистратор данных gps
  • sauvegarde SD
регистратор данных gps Arduino
 #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; // Статическая связь GPS 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 («инициализация»); } недействительный цикл () {tft.setTextSize (1); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); // передача информации о приемном спутнике chaque bonne while (ss.available ()> 0) {gps.encode (ss.read ()); если (gps.location.isUpdated ()) {cadre (); tft.setCursor (5, 44); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("Широта:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.location.lat (), 6); tft.setCursor (5, 58); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("Долгота:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.location.lng (), 6); // дата появления в экране tft.setCursor (5, 7); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("дата:"); 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 ()); // афиша 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); // высота экрана 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 (); // афиша ecran vitesse tft.setCursor (5, 115); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("V акт:"); 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 (maxspeed); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (""); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); Courbe (); // присвоить номер спутников 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 (""); // Горизонтальный размер. Precision (100ths-i32) Serial.print ("HDOP ="); Serial.println (gps.hdop.value ()); smartDelay (400); }}} // отложить получение бонуса статическое void smartDelay (unsigned long ms) {unsigned long start =millis (); do {while (ss.available ()) gps.encode (ss.read ()); } while (millis () - start  123) {х =80; tft.fillRect (82,110,43,30, ST7735_BLACK); }} void courbeh () {int nouvelleValeurh; // преобразование vitesse max (350 км / ч) в новый пиксельValeurh =map ((gps.altitude.meters ()), 0, 1000, 104, 72); // Автомобиль увеличен до 64 пикселей xh ++; tft.drawPixel (xh, nouvelleValeurh, ST7735_CYAN); если (xh> 123) {xh =80; tft.fillRect (82,72,43,35, ST7735_BLACK); }} void vmax () {// вычисляем максимальную скорость vitese1 =(gps.speed.kmph ()); если (скорость1> максимальная скорость) {максимальная скорость =скорость1; }} void hmax () {// вычисляем максимальную высоту high1 =(gps.altitude.meters ()); если (high1> maxhigh) {maxhigh =high1; }} 
sauvegarde SD Arduino
регистратор данных
 #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; // Статическая связь GPS 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 («инициализация»); tft.setCursor (5, 70); tft.print ("init SD"); задержка (1000); if (! SD.begin (cs_sd)) // Условие определяется по карте SD, если оно указано в приложении {tft.setCursor (5, 82); tft.print («Defaut SD»); возвращение; } tft.setCursor (5, 82); tft.print («Carte SD OK»); задержка (1000); tft.fillScreen (ST7735_BLACK); Данные файла =SD.open ("donnees.txt", FILE_WRITE); // Ouvre le fichier "donnees.txt" data.println (""); data.println («Приобретение бракосочетания»); // Ecrit dans ce fichier data.close (); } недействительный цикл () {tft.setTextSize (1); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); // передача информации о приемном спутнике chaque bonne while (ss.available ()> 0) {gps.encode (ss.read ()); если (gps.location.isUpdated ()) {cadre (); tft.setCursor (5, 44); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("Широта:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.location.lat (), 6); tft.setCursor (5, 58); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("Долгота:"); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (gps.location.lng (), 6); // дата появления в экране tft.setCursor (5, 7); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("дата:"); 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 ()); Строка Дата =Строка (gps.date.day ()) + ("") + (gps.date.month ()) + ("") + (gps.date.year ()); // афиша 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); Строка Temps =Строка (gps.time.hour () + 1) + ("") + (gps.time.minute ()) + ("") + (gps.time.second ()); // высота экрана 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 (); // афиша ecran vitesse tft.setCursor (5, 115); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); tft.print ("V акт:"); 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 (maxspeed); tft.setTextColor (ST7735_CYAN, ST7735_BLACK); tft.print (""); tft.setTextColor (ST7735_GREEN, ST7735_BLACK); Courbe (); // присвоить номер спутников 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 (""); // Горизонтальный размер. Precision (100ths-i32) Serial.print ("HDOP ="); Serial.println (gps.hdop.value ()); smartDelay (400); // Ошибка в тексте файла. Данные файла =SD.open ("donnees.txt", FILE_WRITE); data.println (Date + "" + 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 (); }}} // отложить получение бонуса статическое void smartDelay (unsigned long ms) {unsigned long start =millis (); do {while (ss.available ()) gps.encode (ss.read ()); } while (millis () - start  123) {х =80; tft.fillRect (82,110,43,30, ST7735_BLACK); }} void courbeh () {int nouvelleValeurh; // преобразование vitesse max (350 км / ч) в новый пиксельValeurh =map ((gps.altitude.meters ()), 0, 1000, 104, 72); // Автомобиль увеличен до 64 пикселей xh ++; tft.drawPixel (xh, nouvelleValeurh, ST7735_CYAN); если (xh> 123) {xh =80; tft.fillRect (82,72,43,35, ST7735_BLACK); }} void vmax () {// вычисляем максимальную скорость vitese1 =(gps.speed.kmph ()); если (скорость1> максимальная скорость) {максимальная скорость =скорость1; }} void hmax () {// вычисляем максимальную высоту high1 =(gps.altitude.meters ()); если (high1> maxhigh) {maxhigh =high1; }} 

Схема


Производственный процесс

  1. Создайте пожарный извещатель за считанные минуты с помощью Samsung SAMIIO, Arduino UNO и Raspberry Pi
  2. Сбор данных солнечной панели в реальном времени с использованием Arduino
  3. Как создать монитор энергии и регистратор данных Arduino
  4. ЖК-анимация и игры
  5. Регистратор данных температуры и влажности
  6. Простой калькулятор UNO
  7. Постоянство видения
  8. u-blox LEA-6H 02 GPS-модуль с Arduino и Python
  9. Светодиодный куб 4x4x4 с Arduino Uno и 1sheeld
  10. Связь Python3 и Arduino