Raadi Koodka

Ka soo saarida Latitude iyo Longitude ee Signal-ka GPS ee Arduino

Ka soo saarida Latitude iyo Longitude ee Signal-ka GPS ee Arduino

Cashigarkaan, waxaan baran doonnaa sida loo soo saaro xogta latitude iyo longitude ee signal-ka GPS iyadoo la adeegsanayo Arduino iyo qaybta GPS ee Ublox NEO-6M. Mashruucani wuxuu si gaar ah faa'iido ugu leeyahay codsiyada u baahan raadraaca goobta, sida robotics ama navigation-ka bannaanka. Marka aad dhammayso casharkan, waxaad yeelan doontaa barnaamij shaqeeya oo akhriya xogta GPS oo daabaca isku-duwayaasha (coordinates) seriyalka kormeerka (serial monitor).

Ka hor inta aanan ku dhex gelin faahfaahinta, waxaa laga yaabaa inaad rabto inaad tixraacdo fiidiyowga la xidhiidha si aad uga helto caddayn dheeraad ah oo ku saabsan isku xirka (wiring) iyo hirgelinta koodka (fiidiyowga 00:00).

Qalabka La Sharxay

Qaybta ugu muhiimsan ee mashruucan waa qaybta GPS ee Ublox NEO-6M. Qaybtani waxay loogu talagalay inay bixiso xog goob oo sax ah iyadoo la adeegsanayo signalada dayax-gacmeedyada GPS. Waxay qaadi kartaa signalado ka yimaada dayax-gacmeedyo badan isku mar, taas oo u oggolaanaysa raadraaca goobta oo sax ah. Qaybtu waxay la xidhiidhaa Arduino iyadoo la adeegsanayo isgaarsiin taxane ah (serial communication), taas oo ka dhigaysa mid fudud in lagu daro mashaariic kala duwan.

Marka lagu daro qaybta GPS, waxaad u baahan doontaa looxa Arduino si aad u habeyso xogta GPS. Arduino wuxuu akhriyi doonaa xogta ay soo dirto qaybta GPS wuxuuna soo saari doonaa qiimaha latitude iyo longitude si loogu isticmaalo mustaqbalka. Qaybta GPS waxay caadi ahaan ku shaqeysaa 5V, waxayna bixisaa wax soo saar taxane ah (serial output) oo Arduino uu ka akhriyi karo pin-kiisa RX.

Faahfaahinta Xaashida Xogta (Datasheet)

Soo saarahau-blox
Nambarka qaybtaNEO-6M
Danabka Logic/IO3.3V
Danabka sahayda3.0 ilaa 5.5V
Korontada soo saarka≤ 50 mA
Xasaasiyadda GPS-165 dBm
Heerkulka shaqada-40 ilaa 85 °C
Heerka cusboonaysiinta1 Hz (caadi ahaan)
Baakadda25 x 35 x 4 mm
Qoraalo / noocyo kaleQaabab kala duwan ayaa diyaar ah

  • Hubi in qaybta GPS ay ku xiran tahay ilo koronto oo deggan (3.0 ilaa 5.5V).
  • Isticmaal maktabad (library) ku habboon si aad u maareyso kala-goynta xogta GPS.
  • Ka fogee anteenada caqabadaha si aad u hesho helitaan dayax-gacmeed oo ka wanaagsan.
  • Hubi heerka baud-ka ee qaybta GPS; waxay caadi ahaan ku shaqeysaa 9600 baud.
  • Tixgeli isticmaalka capacitor si aad u simiso korontada haddii qaybta GPS ay tahay mid aan degganayn.

Tilmaamaha Isku Xirka

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

Si aad ugu xirto qaybta GPS ee NEO-6M Arduino-kaaga, waxaad ku bilaabi kartaa adigoo ku xira pin-ka VCC ee qaybta GPS pin-ka 5V ee Arduino. Marka xigta, ku xir pin-ka GND ee qaybta GPS pin-ka dhulka (GND) ee Arduino. Qaybta GPS waxay la xidhiidhi doontaa Arduino iyadoo la adeegsanayo pin-yada TX iyo RX. Ku xir pin-ka TX ee qaybta GPS pin-ka RX (caadi ahaan pin 0) ee Arduino.

Haddii aad isticmaalayso Arduino leh pin-yo I2C oo gaar ah, hubi inaad si habboon ugu xirto pin-yada SDA iyo SCL (caadi ahaan A4 ee SDA iyo A5 ee SCL ee looxa Arduino ee caadiga ah). Ka dib isku xirka, laba jeer hubi dhammaan isku xirka si aad u hubiso inay yihiin kuwo adag oo si sax ah u toosan.

Tusaalooyinka Koodka & Sharaxaad

Waa kan qayb kooban oo ka mid ah koodka si loo bilaabo isgaarsiinta taxanaha ah loona dejiyo xadhkaha gelinta ee xogta GPS:

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

Koodkani wuxuu bilaabayaa isgaarsiinta taxanaha ah heerka baud-ka 9600 wuxuuna kaydiyaa meel (reserve) xadhkaha xogta GPS ee soo socota.

Marka xigta, aan eegno qaybta koodka ee habeyneysa xogta GPS ee soo socota oo soo saareysa latitude iyo longitude:

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

Qaybtan, barnaamijku wuxuu hubinayaa in xogta soo socota ay la mid tahay signal-ka GPS ee la filayo. Haddii ay tahay, wuxuu soo saarayaa qiimaha latitude iyo longitude ee xadhkaha gelinta wuxuuna daabacayaa seriyalka kormeerka.

Ugu dambeyntii, koodku wuxuu ku darayaa qayb si loo maareeyo xogta cusub ee ku soo socota isku xirka taxanaha ah:

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

Shaqadani waxay akhriysaa xarfaha soo socda ee dekedda taxanaha ah waxayna ku darsataa inputString. Marka xarfa khadka cusub (newline) la ogaado, waxay dejisaa calaamadda stringComplete si run ah, taas oo muujinaysa in xadhko xog oo dhammaystiran la helay.

Muuujin / Waxa Laga Filan Karo

Markaad soo geliso koodka oo aad wado Arduino, waxaad arki doontaa qiimaha latitude iyo longitude oo lagu daabacay seriyalka kormeerka. Waxaa muhiim ah inaad hubiso in qaybta GPS ay leedahay arag cad oo cirka ah si ay si fiican u hesho signalada dayax-gacmeedka. Haddii qaybtu aysan helin signal, waxaa laga yaabaa inaysan muujin isku-duwayaasha saxda ah (fiidiyowga 02:30).

Khaladaadka caadiga ah waxaa ka mid ah khaladaadka isku xirka, sahayda koronto oo aan ku filnayn, iyo helitaanka dayax-gacmeed oo liita. Hubi inaad xalliso dhinacyadan haddii aad la kulanto arrimo.

Waqtiyada Fiidiyowga

  • 00:00 - Hordhac
  • 02:30 - Tilmaamaha isku xirka
  • 05:00 - Sharaxaadda koodka
  • 08:15 - Muujinta shaqada GPS

Sawirro

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
Luqadda: 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;
        }
    }
}

Waad u baahan tahay

Kheyraadka & Tixraacyada

Wali wax kaydsan ah oo weli ma jiro.

Faylasha📁

Faylal kale

  • 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