Wa Koodu

Yiyo jade latitudi ati longitudi lati ifihan GPS kan ni Arduino

Yiyo jade latitudi ati longitudi lati ifihan GPS kan ni Arduino

Nínú ẹ̀kọ́ yìí, a óò kọ́ bí a ṣe ń yọ data latitude àti longitude jáde láti inú ifihan GPS kan nípa lílo Arduino àti module GPS Ublox NEO-6M. Iṣẹ́ yìí wúlò pàtàkì fún àwọn ohun èlò tí ń béèrè fún ìtọ́kasí ibi, bíi robotics tàbí ìtọ́kasí ìrìn-àjò ní ìta. Ní ìparí ẹ̀kọ́ yìí, o óò ní ètò tí ń ṣiṣẹ́ tí ó ń ka data GPS tí ó sì ń tẹ̀ àwọn ìpàtàkì ibi sí ojú ìṣàfihàn serial.

Kí a tó wọ inú àwọn àlàyé náà, o lè fẹ́ wo fídíò tí ó somọ́ pẹ̀lú rẹ̀ fún ìmúkún àlàyé nípa bí a ṣe ń so àwọn okun àti bí a ṣe ń ṣe àmúlò kóòdù (nínú fídíò ní 00:00).

Àlàyé Ohun Èlò

Ohun èlò pàtàkì fún iṣẹ́ yìí ni module GPS Ublox NEO-6M. Module yìí jẹ́ àpẹẹrẹ tí a ṣe láti pèsè data ìtọ́kasí ibi tí ó péye nípa lílo àwọn ifihan láti àwọn sátẹ́laitì GPS. Ó lè gba àwọn ifihan láti ọ̀pọ̀ sátẹ́laitì ní àkókò kan náà, èyí tí ó jẹ́ kí ìtọ́kasí ibi jẹ́ pípéye. Module yìí ń bá Arduino sọ̀rọ̀ nípa lílo ìbánisọ̀rọ̀ serial, tí ó mú kí ó rọrùn láti dapọ̀ mọ́ àwọn iṣẹ́ oríṣiríṣi.

Ní àfikún sí module GPS, o óò nílò bọọdù Arduino kan láti ṣe àkóónú data GPS náà. Arduino yóò ka data tí module GPS rán, yóò sì yọ àwọn iye latitude àti longitude jáde fún ìlò síwájú sí i. Module GPS sábà máa ń ṣiṣẹ́ ní 5V, ó sì ń pèsè ìjàde serial tí Arduino lè ka nípa pin RX rẹ̀.

Àwọn Àlàyé Datasheet

Olùṣeu-blox
Nọ́mbà apáNEO-6M
Folti Logic/IO3.3V
Folti ìpèsè3.0 sí 5.5V
Ìjàde lọ́wọ́lọ́wọ́≤ 50 mA
Ìmọ̀ GPS-165 dBm
Ìwọ̀n ìṣiṣẹ́-40 sí 85 °C
Ìwọ̀n ìmúdójúìwọ̀n1 Hz (àìyàn)
Ìpó25 x 35 x 4 mm
Àwọn àkíyèsí / oríṣiríṣiÀwọn ìtòlẹ́sẹẹsẹ oríṣiríṣi wà

  • Rí i dájú pé module GPS ti so mọ́ orísun agbára tí ó dúró ṣinṣin (3.0 sí 5.5V).
  • Lo library tí ó yẹ láti ṣe àkóónú data GPS.
  • Pa antenna mọ́ kúrò ní àwọn ohun tí ń díwọ̀n fún gbígba sátẹ́laitì tí ó dára.
  • Ṣàyẹ̀wò ìwọ̀n baud ti module GPS; ó sábà máa ń ṣiṣẹ́ ní 9600 baud.
  • Rò nípa lílo capacitor fún ìmúdójúìwọ̀n agbára bí module GPS bá jẹ́ aláìdúróṣinṣin.

Àwọn Ìtọ́kasí Ìsopọ̀ Okun

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

Láti so module GPS NEO-6M mọ́ Arduino rẹ, bẹ̀rẹ̀ nípa sísopọ̀ pin VCC ti module GPS sí pin 5V lórí Arduino. Nígbà tí o bá ṣe èyí, so pin GND ti module GPS sí pin ilẹ̀ (GND) lórí Arduino. Module GPS yóò bá Arduino sọ̀rọ̀ nípa lílo àwọn pin TX àti RX. So pin TX ti module GPS sí pin RX (sábà pin 0) lórí Arduino.

Bí o bá ń lo Arduino tí ó ní àwọn pin I2C pàtó, rí i dájú pé o so àwọn pin SDA àti SCL pọ̀ ní ọ̀nà tí ó tọ́ (sábà A4 fún SDA àti A5 fún SCL lórí àwọn bọọdù Arduino tí ó wọ́pọ̀). Lẹ́yìn sísopọ̀, ṣàyẹ̀wò gbogbo àwọn ìsopọ̀ lẹ́ẹ̀kan sí i láti rí i dájú pé wọ́n ṣinṣin àti pé wọ́n tọ́ ní ọ̀nà.

Àwọn Àpẹẹrẹ Kóòdù & Ìtọ́kasí

Èyí ni àpẹẹrẹ kúkúrú láti inú kóòdù náà láti bẹ̀rẹ̀ ìbánisọ̀rọ̀ serial àti láti ṣètò okun ìfidánilẹ́kọ̀ọ́ fún data GPS:

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

Kóòdù yìí bẹ̀rẹ̀ ìbánisọ̀rọ̀ serial ní ìwọ̀n baud 9600, ó sì fi ààyè pamọ́ fún okun data GPS tí ń bọ̀.

Nígbà tí o bá ṣe èyí, jẹ́ kí a wo apá kóòdù tí ń ṣe àkóónú data GPS tí ń bọ̀ tí ó sì ń yọ latitude àti longitude jáde:

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

Nínú àpẹẹrẹ yìí, ètò náà ṣàyẹ̀wò bí data tí ń bọ̀ bá ti bá ifihan GPS tí a retí mu. Bí ó bá rí bẹ́ẹ̀, ó yọ àwọn iye latitude àti longitude jáde láti inú okun ìfidánilẹ́kọ̀ọ́, ó sì tẹ̀ wọ́n sí ojú ìṣàfihàn serial.

Ní ìparí, kóòdù náà ní apá kan tí ń ṣe àkóónú data tuntun tí ń dé nípa ìsopọ̀ serial:

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

Ìṣiṣẹ́ yìí ń ka àwọn ohun kíkọ tí ń bọ̀ láti ibùdó serial, ó sì ń fi wọ́n kún inputString. Ní kété tí a bá rí àmì ìlà tuntun kan, ó ṣètò àmì stringComplete sí òtítọ́, tí ó ń fi hàn pé a ti gba okun data kíkún kan.

Ìfihàn / Ohun Tí O Lè Retí

Nígbà tí o bá gbé kóòdù náà sí inú Arduino tí o sì bá ṣiṣẹ́, o yẹ kí o rí àwọn iye latitude àti longitude tí a tẹ̀ sí ojú ìṣàfihàn serial. Ó ṣe pàtàkì láti rí i dájú pé module GPS ní ojú tí ó mọ́ sí ọ̀run láti gba àwọn ifihan sátẹ́laitì dáradára. Bí module kò bá gba ifihan kan, ó lè má fi àwọn ìpàtàkì ibi tí ó wúlò hàn (nínú fídíò ní 02:30).

Àwọn ìṣòro tí ó wọ́pọ̀ pẹ̀lú àwọn àṣìṣe ìsopọ̀ okun, ìpèsè agbára tí kò tó, àti gbígba sátẹ́laitì tí kò dára. Rí i dájú pé o ṣàyẹ̀wò àwọn nǹkan wọ̀nyí bí o bá pàdé àwọn ìṣòro.

Àwọn Àkókò Nínú Fídíò

  • 00:00 - Ìfihàn
  • 02:30 - Àwọn ìtọ́kasí ìsopọ̀ okun
  • 05:00 - Àlàyé kóòdù
  • 08:15 - Ìfihàn iṣẹ́ GPS

Aworan

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

Ohun ti o le nilo

Orisun & itọkasi

Ko si awọn orisun sibẹsibẹ.

Fáìlìs📁

Awọn faili miiran

  • 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