# GPS ডেটা পড়ুন - Wio Terminal এই পাঠের এই অংশে, আপনি আপনার Wio Terminal-এ একটি GPS সেন্সর যোগ করবেন এবং এর থেকে মান পড়বেন। ## হার্ডওয়্যার Wio Terminal-এর জন্য একটি GPS সেন্সর প্রয়োজন। আপনি যে সেন্সরটি ব্যবহার করবেন তা হলো [Grove GPS Air530 সেন্সর](https://www.seeedstudio.com/Grove-GPS-Air530-p-4584.html)। এই সেন্সরটি একাধিক GPS সিস্টেমের সাথে সংযোগ স্থাপন করতে পারে দ্রুত এবং সঠিক অবস্থান নির্ধারণের জন্য। সেন্সরটি দুটি অংশ নিয়ে গঠিত - সেন্সরের মূল ইলেকট্রনিক্স এবং একটি বাহ্যিক অ্যান্টেনা যা একটি পাতলা তারের মাধ্যমে সংযুক্ত থাকে, যা স্যাটেলাইট থেকে রেডিও তরঙ্গ গ্রহণ করে। এটি একটি UART সেন্সর, তাই এটি UART-এর মাধ্যমে GPS ডেটা পাঠায়। ### GPS সেন্সর সংযুক্ত করুন Grove GPS সেন্সরটি Wio Terminal-এর সাথে সংযুক্ত করা যেতে পারে। #### কাজ - GPS সেন্সর সংযুক্ত করুন GPS সেন্সর সংযুক্ত করুন। ![একটি Grove GPS সেন্সর](../../../../../translated_images/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.bn.png) 1. Grove কেবলের এক প্রান্ত GPS সেন্সরের সকেটে প্রবেশ করান। এটি শুধুমাত্র একটি নির্দিষ্ট দিকেই প্রবেশ করবে। 1. Wio Terminal আপনার কম্পিউটার বা অন্য পাওয়ার সাপ্লাই থেকে সংযোগ বিচ্ছিন্ন অবস্থায়, Grove কেবলের অন্য প্রান্তটি Wio Terminal-এর স্ক্রিনের দিকে তাকালে বাম পাশের Grove সকেটে সংযুক্ত করুন। এটি পাওয়ার বোতামের সবচেয়ে কাছের সকেট। ![বাম পাশের সকেটে সংযুক্ত Grove GPS সেন্সর](../../../../../translated_images/wio-gps-sensor.19fd52b81ce58095d5deb3d4e5a1fdd88818d76569b00b1f0d740c92dc986525.bn.png) 1. GPS সেন্সরটি এমনভাবে স্থাপন করুন যাতে সংযুক্ত অ্যান্টেনার আকাশের দিকে দৃশ্যমানতা থাকে - আদর্শভাবে একটি খোলা জানালার পাশে বা বাইরে। অ্যান্টেনার পথে কিছু না থাকলে পরিষ্কার সিগনাল পাওয়া সহজ হয়। 1. এখন আপনি Wio Terminal-কে আপনার কম্পিউটারের সাথে সংযুক্ত করতে পারেন। 1. GPS সেন্সরের দুটি LED রয়েছে - একটি নীল LED যা ডেটা প্রেরণের সময় ঝলকানি দেয় এবং একটি সবুজ LED যা স্যাটেলাইট থেকে ডেটা গ্রহণ করার সময় প্রতি সেকেন্ডে ঝলকানি দেয়। Wio Terminal চালু করার সময় নিশ্চিত করুন যে নীল LEDটি ঝলকানি দিচ্ছে। কয়েক মিনিট পর সবুজ LEDটি ঝলকানি দেবে - যদি না দেয়, তাহলে হয়তো অ্যান্টেনার অবস্থান পরিবর্তন করতে হতে পারে। ## GPS সেন্সর প্রোগ্রাম করুন এখন Wio Terminal-কে সংযুক্ত GPS সেন্সর ব্যবহার করার জন্য প্রোগ্রাম করা যেতে পারে। ### কাজ - GPS সেন্সর প্রোগ্রাম করুন ডিভাইসটি প্রোগ্রাম করুন। 1. PlatformIO ব্যবহার করে একটি নতুন Wio Terminal প্রকল্প তৈরি করুন। এই প্রকল্পটির নাম দিন `gps-sensor`। `setup` ফাংশনে সিরিয়াল পোর্ট কনফিগার করার জন্য কোড যোগ করুন। 1. `main.cpp` ফাইলের শীর্ষে নিম্নলিখিত include নির্দেশনা যোগ করুন। এটি একটি হেডার ফাইল অন্তর্ভুক্ত করে যা বাম পাশের Grove পোর্টকে UART-এর জন্য কনফিগার করার ফাংশন সরবরাহ করে। ```cpp #include ``` 1. এর নিচে, নিম্নলিখিত কোড যোগ করুন যা UART পোর্টের সাথে একটি সিরিয়াল পোর্ট সংযোগ ঘোষণা করে: ```cpp static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0); ``` 1. কিছু অভ্যন্তরীণ সিগনাল হ্যান্ডলারকে এই সিরিয়াল পোর্টে পুনঃনির্দেশ করার জন্য কোড যোগ করতে হবে। `Serial3` ঘোষণার নিচে নিম্নলিখিত কোড যোগ করুন: ```cpp void SERCOM3_0_Handler() { Serial3.IrqHandler(); } void SERCOM3_1_Handler() { Serial3.IrqHandler(); } void SERCOM3_2_Handler() { Serial3.IrqHandler(); } void SERCOM3_3_Handler() { Serial3.IrqHandler(); } ``` 1. `setup` ফাংশনে যেখানে `Serial` পোর্ট কনফিগার করা হয়েছে তার নিচে, নিম্নলিখিত কোড ব্যবহার করে UART সিরিয়াল পোর্ট কনফিগার করুন: ```cpp Serial3.begin(9600); while (!Serial3) ; // Wait for Serial3 to be ready delay(1000); ``` 1. `setup` ফাংশনে এই কোডের নিচে, Grove পিনকে সিরিয়াল পোর্টের সাথে সংযুক্ত করার জন্য নিম্নলিখিত কোড যোগ করুন: ```cpp pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT); ``` 1. `loop` ফাংশনের আগে নিম্নলিখিত ফাংশন যোগ করুন যা GPS ডেটা সিরিয়াল মনিটরে পাঠায়: ```cpp void printGPSData() { Serial.println(Serial3.readStringUntil('\n')); } ``` 1. `loop` ফাংশনে, নিম্নলিখিত কোড যোগ করুন যা UART সিরিয়াল পোর্ট থেকে পড়ে এবং সিরিয়াল মনিটরে আউটপুট প্রিন্ট করে: ```cpp while (Serial3.available() > 0) { printGPSData(); } delay(1000); ``` এই কোডটি UART সিরিয়াল পোর্ট থেকে পড়ে। `readStringUntil` ফাংশনটি একটি টার্মিনেটর ক্যারেক্টার পর্যন্ত পড়ে, এই ক্ষেত্রে একটি নতুন লাইন। এটি একটি সম্পূর্ণ NMEA বাক্য পড়বে (NMEA বাক্যগুলি একটি নতুন লাইন ক্যারেক্টার দিয়ে শেষ হয়)। যতক্ষণ না UART সিরিয়াল পোর্ট থেকে ডেটা পড়া যায়, এটি পড়া হয় এবং `printGPSData` ফাংশনের মাধ্যমে সিরিয়াল মনিটরে পাঠানো হয়। যখন আর ডেটা পড়া যায় না, তখন `loop` 1 সেকেন্ড (1,000ms) বিলম্ব করে। 1. কোডটি Wio Terminal-এ বিল্ড এবং আপলোড করুন। 1. আপলোড করার পর, আপনি সিরিয়াল মনিটর ব্যবহার করে GPS ডেটা পর্যবেক্ষণ করতে পারেন। ```output > Executing task: platformio device monitor < --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at http://bit.ly/pio-monitor-filters --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $BDGSA,A,1,,,,,,,,,,,,,,,*0F $GPGSV,1,1,00*79 $BDGSV,1,1,00*68 ``` > 💁 আপনি এই কোডটি [code-gps/wio-terminal](../../../../../3-transport/lessons/1-location-tracking/code-gps/wio-terminal) ফোল্ডারে খুঁজে পেতে পারেন। 😀 আপনার GPS সেন্সর প্রোগ্রাম সফল হয়েছে! --- **অস্বীকৃতি**: এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই।