Bincika Lambar

Cire Latitude da Longitude daga Siginar GPS a cikin Arduino

Cire Latitude da Longitude daga Siginar GPS a cikin Arduino

A cikin wannan koyawa, za mu koyi yadda ake fitar da bayanan latitude da longitude daga siginar GPS ta amfani da Arduino da kuma na'urar Ublox NEO-6M GPS module. Wannan aikin yana da amfani musamman ga aikace-aikacen da ke buƙatar bin diddigin wuri, kamar robotics ko kewayawa a waje. A ƙarshen wannan koyawa, za ku sami shirin aiki wanda ke karanta bayanan GPS kuma yana buga haɗin gwiwar zuwa serial monitor.

Kafin mu shiga cikin cikakkun bayanai, kuna iya son koma ga bidiyon da ke da alaƙa don ƙarin bayani game da wiring da aiwatar da lambar (a cikin bidiyo a 00:00).

Kayan Aiki Da Aka Yi Bayani

Babban ɓangaren wannan aikin shine Ublox NEO-6M GPS module. Wannan na'urar an ƙera ta ne don samar da ingantattun bayanan wuri ta amfani da siginonin tauraron dan adam na GPS. Tana iya karɓar sigina daga taurarin dan adam da yawa a lokaci ɗaya, wanda ke ba da damar bin diddigin wuri daidai. Na'urar tana sadarwa da Arduino ta amfani da serial communication, wanda ke sauƙaƙa haɗawa cikin ayyuka daban-daban.

Baya ga GPS module, kuna buƙatar Arduino board don sarrafa bayanan GPS. Arduino zai karanta bayanan da GPS module ya aiko kuma ya fitar da ƙimar latitude da longitude don amfani gaba. GPS module yawanci yana aiki a 5V, kuma yana ba da serial output wanda Arduino zai iya karantawa ta hanyar RX pin.

Bayanan Datasheet

Manufactureru-blox
Part numberNEO-6M
Logic/IO voltage3.3V
Supply voltage3.0 zuwa 5.5V
Output current≤ 50 mA
GPS sensitivity-165 dBm
Operating temperature-40 zuwa 85 °C
Update rate1 Hz (default)
Package25 x 35 x 4 mm
Notes / variantsAna samun nau'ikan daban-daban

  • Tabbatar cewa GPS module an haɗa shi da ingantaccen tushen wutar lantarki (3.0 zuwa 5.5V).
  • Yi amfani da library mai dacewa don sarrafa bayanan GPS.
  • Ka kiyaye eriya daga shingen don ingantaccen karɓar tauraron dan adam.
  • Duba baud rate na GPS module; yawanci yana aiki a 9600 baud.
  • Yi la'akari da amfani da capacitor don daidaita wutar lantarki idan GPS module bai tsaya ba.

Umarnin Wiring

Arduino wiring for Neo-6M GPS module
Arduino wiring for Neo-6M GPS module

Don haɗa NEO-6M GPS module zuwa Arduino, fara da haɗa VCC pin na GPS module zuwa 5V pin akan Arduino. Na gaba, haɗa GND pin na GPS module zuwa ground (GND) pin akan Arduino. GPS module zai sadarwa da Arduino ta amfani da TX da RX pins. Haɗa TX pin na GPS module zuwa RX pin (yawanci pin 0) akan Arduino.

Idan kuna amfani da Arduino mai keɓaɓɓun I2C pins, tabbatar da haɗa SDA da SCL pins daidai (yawanci A4 don SDA da A5 don SCL akan daidaitattun Arduino boards). Bayan wiring, sake duba duk haɗin don tabbatar da cewa sun amintu kuma suna cikin daidaitaccen yanayi.

Misalan Lamba & Bayani

Ga ɗan gajeren yanki daga lambar don fara serial communication da saita input string don bayanan GPS:

void setup() {
    Serial.begin(9600);
    inputString.reserve(200);
}

Wannan lambar tana fara serial communication a baud rate na 9600 kuma tana tanadin sarari don bayanan GPS masu shigowa.

Na gaba, bari mu duba ɓangaren lambar da ke sarrafa bayanan GPS masu shigowa da fitar da latitude da longitude:

if (BB == signal) {
    String LAT = inputString.substring(7, 17);
    String LON = inputString.substring(20, 31);
    Serial.println(LAT);
    Serial.println(LON);
}

A cikin wannan yanki, shirin yana duba idan bayanan masu shigowa sun dace da siginar GPS da ake tsammani. Idan sun dace, yana fitar da ƙimar latitude da longitude daga input string kuma yana buga su zuwa serial monitor.

A ƙarshe, lambar ta haɗa da ɓangaren da ke sarrafa sabbin bayanan da ke shigowa ta hanyar serial connection:

void serialEvent() {
    while (Serial.available()) {
        char inChar = (char) Serial.read();
        inputString += inChar;
        if (inChar == '\\n') {
            stringComplete = true;
        }
    }
}

Wannan aikin yana karanta haruffa masu shigowa daga serial port kuma yana ƙara su zuwa inputString. Da zarar an gano sabon layi, yana saita stringComplete flag zuwa gaskiya, yana nuna cewa an karɓi cikakken bayanan.

Nuni / Abin Da Za Ku Yi Tsammani

Bayan loda lambar da kunna Arduino, ya kamata ku ga ƙimar latitude da longitude da aka buga a serial monitor. Yana da mahimmanci a tabbatar da cewa GPS module yana da cikakken hangen nesa na sama don karɓar siginonin tauraron dan adam yadda ya kamata. Idan module bai karɓi sigina ba, ƙila ba zai nuna ingantattun haɗin gwiwa ba (a cikin bidiyo a 02:30).

Matsalolin gama gari sun haɗa da kurakuran wiring, rashin isasshen wutar lantarki, da rashin ingantaccen karɓar tauraron dan adam. Tabbatar da bincika waɗannan abubuwan idan kun fuskanci matsala.

Lokutan Bidiyo

  • 00:00 - Gabatarwa
  • 02:30 - Umarnin wiring
  • 05:00 - Bayanin lamba
  • 08:15 - Nuni na aikin GPS

Hotuna

GPS antenna
GPS antenna
GPS module with antenna
GPS module with antenna
GPS modules
GPS modules
Arduino wiring for Neo-6M GPS module
Arduino wiring for Neo-6M GPS module
3-Extract latitude and longitude from a GPS signal in an Arduino NEO-6M
Harshe: C++
/*
 * This is Arduino code for the Ublox NEO-6M GPS module.
 * This code extracts the GPS latitude and longitude so it can be used for other purposes.


 * 
 * Written by Ahmad Nejrabi for Robojax Video
 * Date: January 24, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code, given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.
 * 
 */

// Written for RoboJax.com 
String inputString = ""; // a string to hold incoming data
boolean stringComplete = false; // whether the string is complete
String signal = "\$GPGLL";
void setup() {
    // initialize serial:
    Serial.begin(9600);
    // reserve 200 bytes for the inputString:
    inputString.reserve(200);
}

void loop() {
    // print the string when a newline arrives:
    if (stringComplete) {
        String BB = inputString.substring(0, 6);
        if (BB == signal) {
            String LAT = inputString.substring(7, 17);
            int LATperiod = LAT.indexOf('.');
            int LATzero = LAT.indexOf('0');
            if (LATzero == 0) {
                LAT = LAT.substring(1);
            }

            String LON = inputString.substring(20, 31);
            int LONperiod = LON.indexOf('.');
            int LONTzero = LON.indexOf('0');
            if (LONTzero == 0) {
                LON = LON.substring(1);
            }

            Serial.println(LAT);
            Serial.println(LON);

        }

        // Serial.println(inputString);
        // clear the string:
        inputString = "";
        stringComplete = false;
    }
}

/*
SerialEvent occurs whenever new data arrives via the
hardware serial RX. This routine runs between each
time loop() runs, so using delay inside loop can delay
response. Multiple bytes of data may be available.
*/
void serialEvent() {
    while (Serial.available()) {
        // get the new byte:
        char inChar = (char) Serial.read();
        // add it to the inputString:
        inputString += inChar;
        // if the incoming character is a newline, set a flag
        // so the main loop can do something about it:
        if (inChar == '\\n') {
            stringComplete = true;
        }
    }
}

Abin da zaka iya bukata

Albarkatun da kuma shafukan da za a duba

Babu kayan aiki tukuna.

Fayiloli📁

Sauran fayiloli

  • GPS TinyGPSPlus NEO-7 DataSheet
    Datasheet for the u-blox NEO-7 GPS module, a compact GNSS receiver with high sensitivity and low power consumption. It provides positioning data via UART and is commonly used with Arduino and the TinyGPSPlus library.
    robojax_GPS_TinyGPSPlus_NEO-7_DataSheet.pdf 1.73 MB