কোড অনুসন্ধান

আরডুইনোর সাথে ইউ-ব্লক্স নিও-৬ এবং নিও-৭ জিপিএস মডিউল থেকে জিপিএস লোকেশন获取 করুন

আরডুইনোর সাথে ইউ-ব্লক্স নিও-৬ এবং নিও-৭ জিপিএস মডিউল থেকে জিপিএস লোকেশন获取 করুন

এই প্রকল্পটি দেখায় কিভাবে একটি U-blox Neo-6M বা Neo-7M GPS মডিউলকে Arduino-এর সাথে সংযুক্ত করে অবস্থান ডেটা (অক্ষাংশ এবং দ্রাঘিমাংশ) পাওয়া যায়। এই সাশ্রয়ী মডিউলগুলি, যা অনলাইনে সহজেই পাওয়া যায়, আপনার প্রকল্পগুলিতে GPS কার্যকারিতা যোগ করার একটি সহজ উপায় প্রদান করে। Neo-7M-এর স্বতন্ত্র নীল LED (ভিডিওতে 02:53-এ) GPS ফিক্স সংকেত দেয়, যা সিগন্যাল অর্জন নিশ্চিত করার জন্য একটি সুবিধাজনক বৈশিষ্ট্য।

gps_neo-6m_neo-7m-1

GPS মডিউল এবং Arduino ব্যবহার করে কিছু প্রকল্পের ধারণা এখানে দেওয়া হলো:

  • GPS ট্র্যাকার: অবস্থান ডেটা লগ করুন এবং এটি একটি মানচিত্রে প্রদর্শন করুন।
  • জিওক্যাশিং টুল: নির্দিষ্ট স্থানাঙ্কে নেভিগেট করুন।
  • স্বয়ংক্রিয় যানবাহন নেভিগেশন: একটি রোবট বা ড্রোন গাইড করুন।
  • আবহাওয়া স্টেশন: আবহাওয়ার রিডিংয়ে অবস্থান ডেটা যোগ করুন।
  • বন্যপ্রাণী ট্র্যাকিং: প্রাণীর চলাচল পর্যবেক্ষণ করুন।
gps_neo-6m_neo-7m-4

হার্ডওয়্যার/কম্পোনেন্ট

  • Arduino Uno (বা সামঞ্জস্যপূর্ণ বোর্ড)
  • U-blox Neo-6M বা Neo-7M GPS মডিউল
  • জাম্পার তার
  • USB কেবল
  • (ঐচ্ছিক) বাহ্যিক অ্যান্টেনা এবং SMA সংযোগকারী
gps_neo-6m_neo-7m-3

ওয়্যারিং গাইড

gps_neo-6m_neo-7m-2-wiring

ওয়্যারিং সহজ (ভিডিওতে 10:39-এ):

%%WIRING%%

  • GPS VCC থেকে Arduino 3.3V
  • GPS GND থেকে Arduino GND
  • GPS TX থেকে Arduino পিন 3 (কোডে RX হিসাবে সংজ্ঞায়িত)
  • GPS RX থেকে Arduino পিন 4 (কোডে TX হিসাবে সংজ্ঞায়িত)

মনে রাখবেন, TX RX-এর সাথে সংযুক্ত হয় এবং বিপরীতটিও (ভিডিওতে 11:10-এ)। ভিডিওটি আরও দেখায় কিভাবে সংযোগের জন্য সাধারণ জাম্পার তার ব্যবহার করতে হয় (ভিডিওতে 10:24-এ)।

কোড ব্যাখ্যা

এই প্রকল্পটি TinyGPS++ লাইব্রেরি ব্যবহার করে। Arduino IDE-এর লাইব্রেরি ম্যানেজারের মাধ্যমে এটি ডাউনলোড এবং ইনস্টল করুন। প্রয়োজনীয় কোড সমন্বয়গুলি হলো সফটওয়্যার সিরিয়াল পিন সংজ্ঞা এবং বড রেট (ভিডিওতে 07:00-এ):


#include <TinyGPS++.h>
#include <SoftwareSerial.h>

static const int RXPin = 3, TXPin = 4;
static const uint32_t GPSBaud = 9600; // U-blox মডিউলের জন্য ডিফল্ট

RXPin এবং TXPin ভেরিয়েবলগুলি GPS মডিউলের সাথে সংযুক্ত Arduino পিনগুলি সংজ্ঞায়িত করে। U-blox মডিউলগুলির জন্য ডিফল্ট বড রেট 9600। কোডের মূল অংশ হলো GPS থেকে সিরিয়াল ডেটা পড়া এবং TinyGPS++ লাইব্রেরি ব্যবহার করে এটি পার্স করা (ভিডিওতে 08:03-এ):


// TinyGPS++ অবজেক্ট
TinyGPSPlus gps;

// GPS ডিভাইসে সিরিয়াল সংযোগ
SoftwareSerial ss(RXPin, TXPin);

// ... (লুপ ফাংশনের ভিতরে) ...
while (ss.available() > 0)
  if (gps.encode(ss.read()))
    displayInfo();

displayInfo() ফাংশনটি তখন বৈধ GPS ফিক্স পাওয়া গেলে অক্ষাংশ এবং দ্রাঘিমাংশ বের করে এবং প্রিন্ট করে (ভিডিওতে 09:07-এ):


void displayInfo()
{
  // ... অন্যান্য কোড ...

  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6); // 6 দশমিক স্থান সহ অক্ষাংশ
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6); // 6 দশমিক স্থান সহ দ্রাঘিমাংশ
  }
  // ... অন্যান্য কোড ...
}

লাইভ প্রকল্প/প্রদর্শন

ভিডিওটি (ভিডিওতে 12:29-এ) প্রকল্পটি কার্যকরভাবে দেখায়, যখন কোনো GPS সিগন্যাল থাকে না তখন প্রাথমিক "INVALID" আউটপুট দেখায় এবং ফিক্স অর্জনের পরে বৈধ স্থানাঙ্ক প্রদর্শন করে। Neo-7M-এর ঝলকানো নীল LED GPS সিগন্যালের ভিজ্যুয়াল নিশ্চিতকরণ প্রদান করে (ভিডিওতে 13:49-এ)।

GPS__451
GPS__451

অধ্যায়

  • [00:00] ভূমিকা এবং প্রকল্পের ওভারভিউ
  • [00:32] GPS মডিউলের বৈচিত্র্য (Neo-6M এবং Neo-7M)
  • [04:30] Arduino-তে GPS মডিউল ওয়্যারিং
  • [06:12] কোড ব্যাখ্যা এবং TinyGPS++ লাইব্রেরি
  • [10:07] বিস্তারিত ওয়্যারিং ব্যাখ্যা এবং TX/RX নীতি
  • [12:29] লাইভ প্রদর্শন এবং সিগন্যাল অর্জন

ছবি

GPS__451
GPS__451
gps_neo-6m_neo-7m-1
gps_neo-6m_neo-7m-1
gps_neo-6m_neo-7m-2-wiring
gps_neo-6m_neo-7m-2-wiring
gps_neo-6m_neo-7m-3
gps_neo-6m_neo-7m-3
gps_neo-6m_neo-7m-4
gps_neo-6m_neo-7m-4
155-Get GPS location from U-Blox Neo-6 and Neo-7 GPS modules with Arduino
ভাষা: C++
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
/*
 * Original library source: https://github.com/mikalhart/TinyGPSPlus
   This sample sketch demonstrates the normal use of a TinyGPSPlus object.
   It requires the use of SoftwareSerial, and assumes that you have a
   4800-baud serial GPS device hooked up on pins 3(rx) and 4(tx).

   Modified by Ahmad Shamshiri for Robojax.com 
   on September 09, 2018 at 20:20 in Ajax, Ontario, Canada
   Watch video instructions for this code:https://youtu.be/hbRpr1HbDf8
*/
static const int RXPin = 3, TXPin = 4;
static const uint32_t GPSBaud = 9600;

// The TinyGPS++ object
TinyGPSPlus gps;

// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);

void setup()
{
  Serial.begin(115200);
  ss.begin(GPSBaud);

  Serial.println(F("Robojax GPS Demo"));
  Serial.println(F("A simple demonstration of TinyGPS++ with an attached GPS module"));
  Serial.print(F("Testing TinyGPS++ library v. ")); Serial.println(TinyGPSPlus::libraryVersion());
  Serial.println(F("by Mikal Hart"));
  Serial.println();
}

void loop()
{

  // This sketch displays information every time a new sentence is correctly encoded.
  while (ss.available() > 0)
    if (gps.encode(ss.read()))
      displayInfo();

  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected: check wiring."));
    while(true);
  }
 delay(100);
}

void displayInfo()
{
  Serial.print(F("Location: ")); 
  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F("  Date/Time: "));
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(" "));
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.println();
}

সম্পদ ও রেফারেন্সসমূহ

ফাইলসমূহ📁

অন্যান্য ফাইলগুলি

  • 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