# জিপিএস ডেটা ডিকোড করা - ভার্চুয়াল IoT হার্ডওয়্যার এবং রাস্পবেরি পাই এই পাঠের এই অংশে, আপনি রাস্পবেরি পাই বা ভার্চুয়াল IoT ডিভাইস দ্বারা জিপিএস সেন্সর থেকে পড়া NMEA বার্তাগুলি ডিকোড করবেন এবং অক্ষাংশ ও দ্রাঘিমাংশ বের করবেন। ## জিপিএস ডেটা ডিকোড করা যখন কাঁচা NMEA ডেটা সিরিয়াল পোর্ট থেকে পড়া হয়, তখন এটি একটি ওপেন সোর্স NMEA লাইব্রেরি ব্যবহার করে ডিকোড করা যেতে পারে। ### কাজ - জিপিএস ডেটা ডিকোড করা ডিভাইসটি প্রোগ্রাম করুন যাতে এটি জিপিএস ডেটা ডিকোড করতে পারে। 1. `gps-sensor` অ্যাপ প্রকল্পটি খুলুন যদি এটি ইতিমধ্যে খোলা না থাকে। 1. `pynmea2` পিপ প্যাকেজ ইনস্টল করুন। এই প্যাকেজে NMEA বার্তা ডিকোড করার কোড রয়েছে। ```sh pip3 install pynmea2 ``` 1. `app.py` ফাইলে নিম্নলিখিত কোডটি ইমপোর্টে যোগ করুন `pynmea2` মডিউল ইমপোর্ট করার জন্য: ```python import pynmea2 ``` 1. `print_gps_data` ফাংশনের বিষয়বস্তু নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন: ```python msg = pynmea2.parse(line) if msg.sentence_type == 'GGA': lat = pynmea2.dm_to_sd(msg.lat) lon = pynmea2.dm_to_sd(msg.lon) if msg.lat_dir == 'S': lat = lat * -1 if msg.lon_dir == 'W': lon = lon * -1 print(f'{lat},{lon} - from {msg.num_sats} satellites') ``` এই কোডটি `pynmea2` লাইব্রেরি ব্যবহার করে UART সিরিয়াল পোর্ট থেকে পড়া লাইনটি পার্স করবে। যদি বার্তার বাক্য প্রকার `GGA` হয়, তবে এটি একটি পজিশন ফিক্স বার্তা এবং এটি প্রক্রিয়াকৃত হয়। বার্তা থেকে অক্ষাংশ এবং দ্রাঘিমাংশের মানগুলি পড়া হয় এবং NMEA `(d)ddmm.mmmm` ফরম্যাট থেকে দশমিক ডিগ্রিতে রূপান্তরিত করা হয়। `dm_to_sd` ফাংশন এই রূপান্তরটি করে। এরপর অক্ষাংশের দিকটি পরীক্ষা করা হয়, এবং যদি অক্ষাংশ দক্ষিণ হয়, তবে মানটি একটি ঋণাত্মক সংখ্যায় রূপান্তরিত হয়। একইভাবে, যদি দ্রাঘিমাংশ পশ্চিম হয়, তবে এটিও ঋণাত্মক সংখ্যায় রূপান্তরিত হয়। অবশেষে, স্থানাঙ্কগুলি কনসোলে প্রিন্ট করা হয়, সাথে অবস্থান নির্ধারণে ব্যবহৃত স্যাটেলাইটের সংখ্যাও দেখানো হয়। 1. কোডটি চালান। যদি আপনি একটি ভার্চুয়াল IoT ডিভাইস ব্যবহার করছেন, তবে নিশ্চিত করুন যে CounterFit অ্যাপটি চালু রয়েছে এবং জিপিএস ডেটা পাঠানো হচ্ছে। ```output pi@raspberrypi:~/gps-sensor $ python3 app.py 47.6423109,-122.1390293 - from 3 satellites ``` > 💁 আপনি এই কোডটি [code-gps-decode/virtual-device](../../../../../3-transport/lessons/1-location-tracking/code-gps-decode/virtual-device) ফোল্ডারে বা [code-gps-decode/pi](../../../../../3-transport/lessons/1-location-tracking/code-gps-decode/pi) ফোল্ডারে খুঁজে পেতে পারেন। 😀 আপনার জিপিএস সেন্সর প্রোগ্রাম ডেটা ডিকোডিং সহ সফল হয়েছে! --- **অস্বীকৃতি**: এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়বদ্ধ থাকব না।