GSM/GPRS/GPS Shield(B) ব্যবহার পদ্ধতি(পর্ব-১: জিপিএস ডেটা রিভিভ করা)
GSM/GPRS/GPS Shield(B) নামক আরডুইনো শিল্ডটি তৈরী করা হয়েছে SIM808 এর উপর ভিত্তি করে। SIM808 একাধারে একটি জিপিএস,জিএসএম এবং জিপিআরএস মডিউল। এই ধরনের মডিউল প্রয়োজন হয় ভিটিএস(ভেহিকল ট্র্যাকিং সিস্টেম)বা যেকোনো ধরনের ট্র্যাকার তৈরীতে। SIM808 ব্লুটুথ কমিউনিকেশনও সাপোর্ট করে। শিল্ডের সাথে একই প্যাকেজেই দেওয়া থাকে একটি জিএসএম অ্যান্টেনা, একটি ৯ ভোল্টের ডিসি অ্যাডাপ্টার, একটি জিপিএস অ্যান্টেনা ও তার সহায়ক একটি আরএফ টু ফিমেল এসএমএ অ্যাডাপটার কেবল, এবং একটি ব্লুটুথ অ্যান্টেনা। অর্থ্যাৎ, এই শিল্ড ব্যবহারের জন্য আলাদা করে কোনো পাওয়ার সাপ্লাই বা অ্যান্টেনা কেনার প্রয়োজন নেই। এই শিল্ডটি ইউজার্ট কমিউনিকেশনের মাধ্যমে আরডুইনোর সাথে ডেটা আদান-প্রদান করে।উপযুক্ত AT command পাঠানোর মাধ্যমে আমরা এই মডেম থেকে জিপিএস ডেটা রিসিভ করতে পারব। এই এক্সপেরিমেন্টে আমরা দেখব কিভাবে এই শিল্ড ব্যবহার করে NMEA ফরম্যাটে জিপিএস ডেটা রিসিভ করা যায়।
প্রয়োজনীয় যন্ত্রপাতি | পরিমাণ | প্রোডাক্ট লিংক |
GSM/GPRS/GPS Shield(B) | ১ | এখানে ক্লিক করুন |
Arduino UNO -R3 | ১ | এখানে ক্লিক করুন |
সার্কিটঃ
১)শিল্ডটিকে আরডুইনোর উপর বসান।
২)ভোল্টেজ রেফারেন্স হিসেবে ৫ ভোল্ট সিলেক্ট করুন।
৩)GPS চিহ্নিত স্থানে আর এফ টু এসএমএ অ্যাডাপ্টার কেবলটি কানেক্ট করুন।
৪)জিপিএস অ্যান্টেনাকে চিত্রের মতো করে সংযোগ দিন।
৫)UART select সুইচকে D0/D1 চিহ্নিত পাশে রাখুন।
৬)শিল্ডটি সম্পর্কে এবার খুবই গুরুত্বপূর্ণ তথ্য দিচ্ছি। শিল্ডটিতে আসলে Tx ও Rx উল্টো লেখা হয়েছে। SIMRx চিহ্নিত রেইলগুলো আসলে মডিউলের Tx পিন এবং SIMTx চিহ্নিত রেইলগুলো আসলে মডিউলের Rx পিন। মাঝখানের রেইলের চারটি পিন ডান থেকে যথাক্রমে আরডুইনোর 0,1,2,3 এর সাথে সংযুক্ত। আমাদের কোড অনুযায়ী আমাদেরকে হলুদ জাম্পারদুটি সেট করতে হবে। আমাদের এই এক্সপেরিমেন্টের কোডে আমরা আরডুইনোর সফটওয়্যার সিরিয়াল লাইব্রেরি ব্যবহার করেছি। তাই চিত্রে যেভাবে দেখানো হয়েছে সেভাবে হলুদ জাম্পার দুটির সাহায্যে মডিউলের Tx পিনকে আরডুইনোর 2 এবং মডিউলের Rx পিনকে আরডুইনোর 3 নং পিনে কানেক্ট করতে হবে।
৭)এবার ৯ ভোল্ট ডিসি পাওয়ার অ্যাডাপটারটি দিয়ে শিল্ডটিতে পাওয়ার দিতে হবে।
৮)ডিসি অ্যাডাপ্টারটিকে শিল্ডে সংযুক্ত করার পর শিল্ডের PWRKEY চিহ্নিত পুশ বাটনটি আনুমানিক তিন সেকেন্ডের জন্য প্রেস করে রাখতে হবে। Net চিহ্নিত লাল এলইডি দ্রুত জ্বলানেভা শুরু করবে।
***জিপিএস মডিউলগুলো খোলা আকাশের নিচে কাজ করার উপযোগী। জিপিএস অ্যান্টেনাটিকে অবশ্যই জানালার বাইরে বের করে রাখতে হবে।
জিপিএস ডেটা সম্পর্কিত কিছু কথাঃ
আমাদের ব্যবহৃত শিল্ডটি যে ফরম্যাটে জিপিএস ডেটা রিসিভ করে তার নাম হল NMEA (National Marine Electronics Association) ডেটা ফরম্যাট। NMEA ডেটা বিভিন্ন রকমের হয়ে থাকে। এগুলোকে বলা হয় NMEA sentence. একেকটি NMEA sentence একেক ধরনের তথ্য বহন করে, তাই সেন্টেন্সগুলোর ফরম্যাটও আলাদা। যেমন যেসকল NMEA sentect $GPGGA দিয়ে শুরু হয় সেগুলো GPS মডিউল যে স্থানে থাকে সেই স্থানের latitude, longitude, Altitude, সেই স্থানের UTC সময়, কয়টি স্যাটেলাইটের সাথে মডিউলটি কানেক্টেড হতে পেরেছে ইত্যাদি বেশকিছু তথ্য বহন করে। NMEA sentence সম্পর্কে বিস্তারিত জানতে এইখানে দেখুন।
কোডঃ নিচের কোডটি কম্পাইল করুন এবং আরডুইনোতে আপলোড করুন।
/* SIM808 AT command response display and $GPGGA NMEA sentence extraction code */ #include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // RX, TX int i=0; String a,b,hour,minute,second,latdegree,latminute,latsecond,latdirection,longdegree,longminute,longdirection,fixstatus,numberofsatellite,HDP,Altitude,hog,CGPSINF; void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } // set the data rate for the SoftwareSerial port mySerial.begin(9600); } void loop() { // run over and over if(mySerial.available()){ a=mySerial.readString(); delay(1000); if(a.indexOf("+CGPSINF: 2")>0) { Serial.println(a); hour=a.substring(27,29); minute=a.substring(29,31); second=a.substring(31,33); latdegree=a.substring(38,40); latminute=a.substring(40,47); latdirection=a.substring(48,49); longdegree=a.substring(51,53); longminute=a.substring(53,60); longdirection=a.substring(61,62); fixstatus=a.substring(63,64); numberofsatellite=a.substring(65,66); HDP=a.substring(67,71); Altitude=a.substring(72,80); hog=a.substring(80,87); Serial.print(CGPSINF); Serial.println(); Serial.print("Time="); Serial.print(hour); Serial.print(":"); Serial.print(minute); Serial.print(":"); Serial.print(second); Serial.print(" "); Serial.print("UTC"); Serial.println(); Serial.print("Latitude="); Serial.print(latdegree); Serial.print(" deg "); Serial.print(latminute); Serial.print("'"); Serial.print(" "); Serial.print(latdirection); Serial.println(); Serial.print("Longitude="); Serial.print(longdegree); Serial.print(" deg "); Serial.print(longminute); Serial.print("'"); Serial.print(" "); Serial.print(longdirection); Serial.println(); Serial.print("Fix Quality="); if(fixstatus=="0"){ Serial.println("Invalid"); } else if(fixstatus=="1") { Serial.println("GPS fix"); } Serial.println(); Serial.print("Number of satellite="); Serial.print(numberofsatellite); Serial.println(); Serial.print("Horizontal delusion of position="); Serial.print(HDP); Serial.println(); Serial.print("Altitude, Meters, above mean sea level="); Serial.print(Altitude); Serial.println(); Serial.print("Height of geoid (mean sea level) above WGS8 ellipsoid="); Serial.print(hog); Serial.println(); } else{ Serial.println(a); } } if (Serial.available()) { mySerial.write(Serial.read()); } }
এই কোডটি সিরিয়াল মনিটরের মাধ্যমে আপনার কাছ থেকে SIM808 এর AT command গ্রহন করবে এবং AT command এর রেসপন্স সিরিয়াল মনিটরে দেখাবে।
GSM/GPRS/GPS Shield(B) এর মাধ্যমে জিপিএস ডেটা রিসিভ করার জন্য আপনাকে অবশ্যই SIM808 এর জিপিএস AT command লিস্ট অনুসারে AT command পাঠাতে তবে।
AT command পাঠানো।
শুরুতে সিরিয়াল মনিটরের মাধ্যমে AT+CGPSPWR=1 কমান্ডটি পাঠান।এটি জিপিএস মডিউলকে on করবে।
তারপর AT+CGPSRST=1 পাঠান। এবার জিপিএস মডিউলটি রিসেট হবে।
এবার AT+CGPSSTATUS=? টাইপ করে রেসপন্স দেখুন। রেসপন্স চার ধরনের হতে পারে।
1)Location Unknown: GPS module চালু হয়নি।
2)Location Not fix: GPS module চালু হয়েছে কিন্তু কোনো স্যাটেলাইটের সাথে যুক্ত হতে পারেনি। এই অবস্থাতেও উক্ত মডিউল থেকে কোনো 3)ডেটা পাওয়া যাবে না।
4)Location 2D fix: জিপিএস মডিউল যে স্থানে আছে তার Latitude ও longitude জানা যাচ্ছে।
Location 3D fix: জিপিএস মডিউল যে স্থানে আছে তার Latitude , Altitude ও longitude জানা যাচ্ছে।
আমাদের এক্সপেরিমেন্টের সময় আমাদের জিপিএস মডিউলটি 3D fixed ছিল।
এভাবে AT command list অনুসারে যেকোনো AT command টাইপ করে জিপিএস মডিউলের রেসপন্স দেখা সম্ভব। তবে এই কোডটি বিশেষভাবে লেখা হয়েছে $GPGGA টাইপ NMEA sentence থেকে বিভিন্ন তথ্য আলাদা করে দেখানোর জন্য। SIM808 এর GPS AT command list থেকে আমরা জানি $GPGGA NMEA sentence রিসিভ করার জন্য প্রয়োজনীয় AT command হলঃ
AT+CGPSINF=2
এই AT command পাঠানোর সাথে সাথে জিপিএস মডিউলের পাঠানো NMEA sentence এবং সেই NMEA sentence থেকে প্রাপ্ত বিভিন্ন তথ্য আলাদা আলাদাভাবে সিরিয়াল মনিটরে প্রদর্শিত হবে।
এই কোডে শুধুমাত্র $GPGGA টাইপের NMEA sentence থেকে তথ্য বের করার ব্যবস্থা রাখা হয়েছে। কোডে পরিবর্তনের মাধ্যমে অন্যান্য টাইপের (যেমনঃ $GPGLL, $GPGSA,$GPGSV ইত্যাদি)NMEA ডেটা থেকেও তথ্য বের করা যাবে।