કોડ શોધો

આર્ડુઇનોમાં GPS સિગ્નલમાંથી અક્ષાંશ અને રેખાંશ કાઢવા

આર્ડુઇનોમાં GPS સિગ્નલમાંથી અક્ષાંશ અને રેખાંશ કાઢવા

આ ટ્યુટોરિયલમાં, આપણે Arduino અને Ublox NEO-6M GPS મોડ્યુલનો ઉપયોગ કરીને GPS સિગ્નલમાંથી અક્ષાંશ અને રેખાંશ ડેટા કેવી રીતે કાઢવો તે શીખીશું. આ પ્રોજેક્ટ ખાસ કરીને એવી એપ્લિકેશનો માટે ઉપયોગી છે કે જેને સ્થાન ટ્રેકિંગની જરૂર હોય, જેમ કે રોબોટિક્સ અથવા આઉટડોર નેવિગેશન. આ ટ્યુટોરિયલના અંત સુધીમાં, તમારી પાસે એક કાર્યક્ષમ પ્રોગ્રામ હશે જે GPS ડેટા વાંચે છે અને કોઓર્ડિનેટ્સને સીરિયલ મોનિટર પર છાપે છે.

વિગતોમાં જવા પહેલાં, તમે વાયરિંગ અને કોડ અમલીકરણ વિશે વધુ સ્પષ્ટતા માટે સંબંધિત વિડિયો જોવા માંગો છો (વિડિયોમાં 00:00 પર).

હાર્ડવેર સમજાવ્યું

આ પ્રોજેક્ટ માટેનો મુખ્ય ઘટક Ublox NEO-6M GPS મોડ્યુલ છે. આ મોડ્યુલ GPS ઉપગ્રહોના સિગ્નલોનો ઉપયોગ કરીને ચોક્કસ સ્થાન ડેટા પ્રદાન કરવા માટે રચાયેલ છે. તે એક સાથે બહુવિધ ઉપગ્રહોમાંથી સિગ્નલો મેળવી શકે છે, જે ચોક્કસ સ્થાન ટ્રેકિંગ માટે પરવાનગી આપે છે. મોડ્યુલ સીરિયલ સંચારનો ઉપયોગ કરીને Arduino સાથે વાતચીત કરે છે, જે તેને વિવિધ પ્રોજેક્ટ્સમાં સંકલિત કરવાનું સરળ બનાવે છે.

GPS મોડ્યુલ ઉપરાંત, GPS ડેટા પ્રક્રિયા કરવા માટે તમારે Arduino બોર્ડની જરૂર પડશે. Arduino GPS મોડ્યુલ દ્વારા મોકલવામાં આવેલ ડેટા વાંચશે અને વધુ ઉપયોગ માટે અક્ષાંશ અને રેખાંશ મૂલ્યો કાઢશે. GPS મોડ્યુલ સામાન્ય રીતે 5V પર કાર્ય કરે છે, અને તે સીરિયલ આઉટપુટ પ્રદાન કરે છે જે Arduino તેના RX પિન દ્વારા વાંચી શકે છે.

ડેટાશીટ વિગતો

ઉત્પાદકu-blox
ભાગ નંબરNEO-6M
લોજિક/IO વોલ્ટેજ3.3V
સપ્લાય વોલ્ટેજ3.0 થી 5.5V
આઉટપુટ કરંટ≤ 50 mA
GPS સંવેદનશીલતા-165 dBm
ઓપરેટિંગ તાપમાન-40 થી 85 °C
અપડેટ દર1 Hz (ડિફોલ્ટ)
પેકેજ25 x 35 x 4 mm
નોંધો / વેરિઅન્ટ્સવિવિધ રૂપરેખાંકનો ઉપલબ્ધ છે

  • ખાતરી કરો કે GPS મોડ્યુલ સ્થિર પાવર સ્ત્રોત (3.0 થી 5.5V) સાથે જોડાયેલ છે.
  • GPS ડેટા પાર્સિંગ સંભાળવા માટે યોગ્ય લાઇબ્રેરીનો ઉપયોગ કરો.
  • વધુ સારા ઉપગ્રહ સ્વાગત માટે એન્ટેનાને અવરોધોથી દૂર રાખો.
  • GPS મોડ્યુલનો બૉડ દર તપાસો; તે સામાન્ય રીતે 9600 બૉડ પર કાર્ય કરે છે.
  • જો GPS મોડ્યુલ અસ્થિર હોય તો પાવર સ્મૂથિંગ માટે કેપેસિટરનો ઉપયોગ કરવાનું વિચારો.

વાયરિંગ સૂચનાઓ

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

NEO-6M GPS મોડ્યુલને તમારા Arduino સાથે વાયર કરવા માટે, GPS મોડ્યુલના VCC પિનને Arduino પરના 5V પિન સાથે જોડીને શરૂ કરો. આગળ, GPS મોડ્યુલના GND પિનને Arduino પરના ગ્રાઉન્ડ (GND) પિન સાથે જોડો. GPS મોડ્યુલ TX અને RX પિનનો ઉપયોગ કરીને Arduino સાથે વાતચીત કરશે. GPS મોડ્યુલના TX પિનને Arduino પરના RX પિન (સામાન્ય રીતે પિન 0) સાથે જોડો.

જો તમે સમર્પિત I2C પિન સાથે Arduino નો ઉપયોગ કરી રહ્યા છો, તો SDA અને SCL પિનને યોગ્ય રીતે જોડવાનું સુનિશ્ચિત કરો (સામાન્ય રીતે પ્રમાણભૂત Arduino બોર્ડ પર SDA માટે A4 અને SCL માટે A5). વાયરિંગ પછી, બધા જોડાણો સુરક્ષિત અને યોગ્ય રીતે દિશામાં છે તેની ખાતરી કરવા માટે બે વાર તપાસો.

કોડ ઉદાહરણો અને વોકથ્રુ

સીરિયલ સંચાર શરૂ કરવા અને GPS ડેટા માટે ઇનપુટ સ્ટ્રિંગ સેટ કરવા માટે અહીં કોડમાંથી એક ટૂંકો અંશ છે:

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

}

આ કોડ 9600 ના બૉડ દર પર સીરિયલ સંચાર શરૂ કરે છે અને આવનારા GPS ડેટા સ્ટ્રિંગ માટે જગ્યા અનામત રાખે છે.

આગળ, ચાલો કોડના તે ભાગને જોઈએ જે આવનારા GPS ડેટાની પ્રક્રિયા કરે છે અને અક્ષાંશ અને રેખાંશ કાઢે છે:

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

આ સ્નિપેટમાં, પ્રોગ્રામ તપાસે છે કે આવનારો ડેટા અપેક્ષિત GPS સિગ્નલ સાથે મેળ ખાય છે કે નહીં. જો તે મેળ ખાય છે, તો તે ઇનપુટ સ્ટ્રિંગમાંથી અક્ષાંશ અને રેખાંશ મૂલ્યો કાઢે છે અને તેમને સીરિયલ મોનિટર પર છાપે છે.

છેલ્લે, કોડમાં સીરિયલ કનેક્શન દ્વારા આવતા નવા ડેટાને સંભાળવા માટે એક વિભાગ શામેલ છે:

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

આ ફંક્શન સીરિયલ પોર્ટમાંથી આવતા અક્ષરો વાંચે છે અને તેમને inputString માં ઉમેરે છે. એકવાર ન્યૂલાઇન અક્ષર શોધાય છે, તે stringComplete ફ્લેગને સાચું સેટ કરે છે, જે સૂચવે છે કે ડેટાની સંપૂર્ણ સ્ટ્રિંગ પ્રાપ્ત થઈ છે.

પ્રદર્શન / શું અપેક્ષા રાખવી

કોડ અપલોડ કરીને અને Arduino ચલાવ્યા પછી, તમારે સીરિયલ મોનિટરમાં અક્ષાંશ અને રેખાંશ મૂલ્યો છપાયેલા જોવા જોઈએ. ઉપગ્રહ સિગ્નલો અસરકારક રીતે મેળવવા માટે GPS મોડ્યુલને આકાશનો સ્પષ્ટ દૃશ્ય છે તેની ખાતરી કરવી મહત્વપૂર્ણ છે. જો મોડ્યુલને સિગ્નલ ન મળે, તો તે માન્ય કોઓર્ડિનેટ્સ પ્રદર્શિત કરી શકશે નહીં (વિડિયોમાં 02:30 પર).

સામાન્ય મુશ્કેલીઓમાં વાયરિંગ ભૂલો, અપૂરતો પાવર સપ્લાય અને નબળું ઉપગ્રહ સ્વાગત શામેલ છે. જો તમને કોઈ સમસ્યા આવે તો આ પાસાઓનું નિવારણ કરવાનું સુનિશ્ચિત કરો.

વિડિયો ટાઇમસ્ટેમ્પ્સ

  • 00:00 - પરિચય
  • 02:30 - વાયરિંગ સૂચનાઓ
  • 05:00 - કોડ સમજૂતી
  • 08:15 - GPS કાર્યક્ષમતાનું પ્રદર્શન

છબીઓ

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
ભાષા: 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;
        }
    }
}

તમને જોઈતી વસ્તુઓ

સંસાધનો અને સંદર્ભો

હજી સુધી કોઈ સંસાધનો નથી.

ફાઇલો📁

અન્ય ફાઇલો

  • 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