Zaloguje się
or
Tel +48 698 615 740

Moduł Tiny GPS RC 5V

11 marca, 2022

W tym artykule przedstawię po krótce możliwości wykorzystania RV 5V TinyGPS, pozwalającego na określenia swojego położenia geograficznego na mapie. W artykule będzie również zawarty opis obsługi wyświetlacza Oled 128×128 oraz spis bibliotek do korzystania z niego. Przykład który poniżej przedstawię ma za zadanie wyświetlić długość i szerokość geograficzną naszego położenia oraz wysokość nad poziomem morza.

Spis treści

  • Krótki opis
  • Specyfikacja
  • Przykład
  • Pliki do pobrania

Krótki opis

Ten moduł TinyGPS podaje nam z jakiej ilości satelitów korzystam, określa z jaką prędkością się poruszamy, do tego możemy ustalić w jakiej jednostce chcemy żeby nam podał tę informacje, ale również może określać czas z dokładnością do centy-sekundy.

Specyfikacja

  • Nazwa: Tiny GPS Module
  • Napięcie wejściowe: 5V
  • Antena: Antena Ceramiczna
  • Formaty odbioru: GPS,GLONASS,BDS
  • Wskaźnik wsparcia: 9600dps
  • Protokół wyjścia: UBLOX
  • Temperatura Pracy: -40℃-+85℃
  • Temperatura Przechowania: -40℃-+105℃
  • Wymiary: 12mm x 16mm x 6mm
  • Waga: 3g

Przykład

Elementy:

  • Arduino Uno lub Mega
  • Oled 128×64
  • TinyGPS
  • *Płytka Stykowa lub szybko złączki dla wygody korzystania

Połączenie:

  • Arduino – GPS
  • VCC(czerwony kabel) – 5V
  • GND(czarny kabel) – GND
  • TX(biały kabel) – pin 10(Arduino Mega) / pin 4 (Uno)
  • RX(żółty kabel) – pin 11(Arduino Mega)/ pin 3(Uno)
  • Oled-arduino
  • VCC – 5V
  • GND – GND
  • SCL – SCL(Uno – pin 5)
  • SDA – SDA(Uno – pin4)

Program

!!Uwaga GPS nie może pobrać danych o lokacji będąc w pomieszczeniu

Na początku musimy zdefiniować biblioteki AdafruitSSD_1306 odpowiadająco za działanie wyświetlacza oraz TinyGPS kontrolującą moduł GPS. Użyłem również w przykładzie biblioteki SoftwareSerial, odpowiadającej za port, oprócz szeregowego, którym będą przesyłane dane z modułu GPS. W jej obiekcie ustalam piny RX i TX (Jeśli korzystasz z Uno lub Nano zmień wartości na 4,3) Jeśli chcesz dowiedzieć się jakie biblioteki będą wykorzystane i należy pobrać dla wyświetlacza Oled zachęcam do zapoznania się z tym artykułem -> Reziorek.pl – Wyświetlacze OLED 0.91, 0.96 (ajmaker.pl)

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <TinyGPSPlus.h>
#include <SoftwareSerial.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
// The pins for I2C are defined by the Wire-library. 
// On an arduino UNO:       A4(SDA), A5(SCL)
// On an arduino MEGA 2560: 20(SDA), 21(SCL)
// On an arduino LEONARDO:   2(SDA),  3(SCL), ...
#define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
TinyGPSPlus gps;
SoftwareSerial SoftSerial(10, 11); // RX, TX
static const uint32_t GPSBaud = 9600;

Pierwszą z funkcji jaką teraz omówię bedzie void setup(). Aktywujemy w niej porty szeregowy i danych w których ustawiamy po kolei wartości 115200 oraz 9600(ponieważ na takim baundrate działa moduł GPS).

  Serial.begin(9600);
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
      Serial.println(F("SSD1306 allocation failed"));
      for(;;); // Don't proceed, loop forever
    }
  // Show image buffer on the display hardware.
  // Since the buffer is intialized with an Adafruit splashscreen
  // internally, this will display the splashscreen.
  SoftSerial.begin(GPSBound);

Następną funkcją jest funkcja void loop(). Składa się ona z while i if. Funkcja while będzie wykonywała się do momentu gdy dane z portu będą odbierane. Natomiast warunkiem if jest poprawne działanie gps. Jeżeli tak się stanie rozpocznie się działanie funkcji DisplayInfo().

void loop() {
  while (SoftSerial.available() > 0) 
   if (gps.encode(SoftSerial.read()))
      DisplayInfo();   
}

Funkcja DisplayInfo() ma 3 zadania. Najpierw powinna podać nam dzisiejszą datę, jeżeli się to nie stanie wyświetli się komunikat o pojawieniu się błędu w jej miejscu. To samo stanie się jeżeli gps nie będzie w stanie odczytać wartości naszej długości i szerokości geograficznej. Ostatnim zadaniem modułu jest odczyt naszej wysokości nad poziomem morza.

void DisplayInfo() {
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  if(gps.date.isValid()) {
        display.setCursor(60,0);
        display.print(gps.date.day());
        display.print("/");
        display.print(gps.date.month());
        display.print("/");
        display.print(gps.date.year());
   } else {
      display.setCursor(60, 0);
      display.print("Error");
    }
     
       if(gps.location.isValid()){
        display.setCursor(0,20);
        display.print("Dlugosc :");
        display.println(gps.location.lat(), 4);
        display.setCursor(0, 30);
        display.print("Szerokosc :");
        display.println(gps.location.lng(), 4);
        if(gps.altitude.isValid()) {
          display.setCursor(0, 40);
          display.println("Wysokosc:");
          display.println(gps.altitude.meters());
        }else {
          display.setCursor(0, 40);
          display.print("Error");
        }
       
   } else {
      display.setCursor(0, 20);
      display.print("Error");
      display.setCursor(0, 30);
      display.print("Error");
      display.setCursor(0, 40);
      display.print("Error");
    }
      display.display();
}

Pliki do pobrania

Sticky
Możliwość komentowania Moduł Tiny GPS RC 5V została wyłączona
Dadas Bartosz

Dadas Bartosz

Jest Uczniem Technikum Budowlano-Elektronicznego w Świdnicy na kierunku Technik Informatyk. Na co dzień oprócz projektów z ardunio uczy się programować aplikacje mobile. W przyszłości chcę zostać programistą.

Comments are closed.

Strona korzysta z plików cookies w celu realizacji usługi i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.