আরডুইনোর সাথে ইউ-ব্লক্স নিও-৬ এবং নিও-৭ জিপিএস মডিউল থেকে জিপিএস লোকেশন获取 করুন
এই প্রকল্পটি দেখায় কিভাবে একটি U-blox Neo-6M বা Neo-7M GPS মডিউলকে Arduino-এর সাথে সংযুক্ত করে অবস্থান ডেটা (অক্ষাংশ এবং দ্রাঘিমাংশ) পাওয়া যায়। এই সাশ্রয়ী মডিউলগুলি, যা অনলাইনে সহজেই পাওয়া যায়, আপনার প্রকল্পগুলিতে GPS কার্যকারিতা যোগ করার একটি সহজ উপায় প্রদান করে। Neo-7M-এর স্বতন্ত্র নীল LED (ভিডিওতে 02:53-এ) GPS ফিক্স সংকেত দেয়, যা সিগন্যাল অর্জন নিশ্চিত করার জন্য একটি সুবিধাজনক বৈশিষ্ট্য।
GPS মডিউল এবং Arduino ব্যবহার করে কিছু প্রকল্পের ধারণা এখানে দেওয়া হলো:
- GPS ট্র্যাকার: অবস্থান ডেটা লগ করুন এবং এটি একটি মানচিত্রে প্রদর্শন করুন।
- জিওক্যাশিং টুল: নির্দিষ্ট স্থানাঙ্কে নেভিগেট করুন।
- স্বয়ংক্রিয় যানবাহন নেভিগেশন: একটি রোবট বা ড্রোন গাইড করুন।
- আবহাওয়া স্টেশন: আবহাওয়ার রিডিংয়ে অবস্থান ডেটা যোগ করুন।
- বন্যপ্রাণী ট্র্যাকিং: প্রাণীর চলাচল পর্যবেক্ষণ করুন।
হার্ডওয়্যার/কম্পোনেন্ট
- Arduino Uno (বা সামঞ্জস্যপূর্ণ বোর্ড)
- U-blox Neo-6M বা Neo-7M GPS মডিউল
- জাম্পার তার
- USB কেবল
- (ঐচ্ছিক) বাহ্যিক অ্যান্টেনা এবং SMA সংযোগকারী
ওয়্যারিং গাইড
ওয়্যারিং সহজ (ভিডিওতে 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-এ)।
অধ্যায়
- [00:00] ভূমিকা এবং প্রকল্পের ওভারভিউ
- [00:32] GPS মডিউলের বৈচিত্র্য (Neo-6M এবং Neo-7M)
- [04:30] Arduino-তে GPS মডিউল ওয়্যারিং
- [06:12] কোড ব্যাখ্যা এবং TinyGPS++ লাইব্রেরি
- [10:07] বিস্তারিত ওয়্যারিং ব্যাখ্যা এবং TX/RX নীতি
- [12:29] লাইভ প্রদর্শন এবং সিগন্যাল অর্জন
#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();
}
সম্পদ ও রেফারেন্সসমূহ
-
বাহ্যিকGet TinyGPSPlus (from GitHub)github.com
-
বাহ্যিকOfficial TinyGPSPlus Websitearduiniana.org
-
বাহ্যিকUblox websiteu-blox.com
ফাইলসমূহ📁
অন্যান্য ফাইলগুলি
-
GPS TinyGPSPlus NEO-7 DataSheetDatasheet 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.pdf1.73 MB