Merge branch 'main' into hindi_quiz

pull/249/head
Jim Bennett 4 years ago committed by GitHub
commit 8718fef3ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,247 @@
# रास्पबेरी पाई
[रास्पबेरी पाई](https://raspberrypi.org) एक सिंगल-बोर्ड कंप्यूटर है। आप कई तरह के उपकरणों और पारिस्थितिक तंत्रों का उपयोग करके सेंसर और एक्ट्यूएटर जोड़ सकते हैं, और इन पाठों के लिए [ग्रोव](https://www.seeedstudio.com/category/Grove-c-1003.html) नामक हार्डवेयर पारिस्थितिकी तंत्र का उपयोग कर सकते हैं। आप अपने पाई को कोड करेंगे और पायथन का उपयोग करके ग्रोव सेंसर तक पहुंचेंगे।
![एक रास्पबेरी पाई 4](../../../../images/raspberry-pi-4.jpg)
***रास्पबेरी पाई 4. माइकल हेन्ज़लर / [विकिमीडिया कॉमन्स](https://commons.wikimedia.org/wiki/Main_Page) / [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)***
## सेट अप
यदि आप अपने आईओटी हार्डवेयर के रूप में रास्पबेरी पाई का उपयोग कर रहे हैं, तो आपके पास दो विकल्प हैं - आप इन सभी पाठों और कोड के माध्यम से सीधे पाई पर काम कर सकते हैं, या आप दूरस्थ रूप से 'हेडलेस' पाई से कनेक्ट करके अपने कंप्यूटर से कोड कर सकते हैं।
शुरू करने से पहले, आपको ग्रोव बेस हैट को अपने पाई से कनेक्ट करना होगा।
### टास्क - सेटअप
अपने पाई पर ग्रोव बेस हैट स्थापित करें और पाई को कॉन्फ़िगर करें
1. ग्रोव बेस हैट को अपने पाई से कनेक्ट करें। हैट का सॉकेट पाई पर सभी जी.पी.आई.ओ पिनों पर फिट बैठता है, पाई पर मजबूती से बैठाने के लिए सभी तरह से पिन को नीचे की ओर खिसकायें। यह पाई के ऊपर बैठता है उसे ढकते हुए।
![ग्रोव हैट फिट करना](../../../../images/pi-grove-hat-fitting.gif)
1. तय करें कि आप अपने पाई को कैसे प्रोग्राम करना चाहते हैं, और नीचे दिए गए संबंधित अनुभाग पर जाएं:
* [सीधे अपने पाई पर काम करें](#सीधे-अपने-पाई-पर-काम-करें)
* [पाई को कोड करने के लिए रिमोट एक्सेस](#पाई-को-कोड-करने-के-लिए-रिमोट-एक्सेस)
### सीधे अपने पाई पर काम करें
यदि आप सीधे अपने पाई पर काम करना चाहते हैं, तो आप रास्पबेरी पाई ओएस के डेस्कटॉप संस्करण का उपयोग कर सकते हैं और अपने सभी आवश्यक टूल्स इंस्टॉल कर सकते हैं।
#### टास्क - सीधे अपने पाई पर काम करें
विकास के लिए अपना पाई सेट करें।
1. अपना पाई सेट करने के लिए [रास्पबेरी पाई सेटअप गाइड](https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up) में दिए गए निर्देशों का पालन करें, इसे कीबोर्ड/माउस/मॉनिटर से कनेक्ट करें, अपने वाईफाई या ईथरनेट नेटवर्क से कनेक्ट करें और सॉफ्टवेयर को अपडेट करें। जिस ओएस को आप इंस्टॉल करना चाहते हैं वह **Raspberry Pi OS (32 bit)** है, एस.डी. कार्ड इमेज के लिए रास्पबेरी पाई इमेजर इसे अनुशंसित ओएस (Recommended OS) के रूप में चिह्नित करता है।
ग्रोव सेंसर और एक्चुएटर्स का उपयोग करके पाई को प्रोग्राम करने के लिए, आपको डिवाइस कोड, और ग्रोव हार्डवेयर के साथ इंटरैक्ट करने वाले विभिन्न लाइब्रेरीज़ और उपकरणों को लिखने की अनुमति देने के लिए एक एडीटर स्थापित करने की आवश्यकता होगी।
1. एक बार आपका पाई रीबूट हो जाने के बाद, शीर्ष मेनू बार पर **Terminal** आइकन पर क्लिक करके टर्मिनल लॉन्च करें, या *Menu -> Accessories -> Terminal* चुनें
1. ओएस और स्थापित सॉफ़्टवेयर अद्यतित है यह सुनिश्चित करने के लिए निम्न आदेश चलाएं:
```sh
sudo apt update && sudo apt full-upgrad --yes
```
1. ग्रोव हार्डवेयर के लिए सभी आवश्यक लाइब्रेरीज़ को स्थापित करने के लिए निम्न आदेश चलाएँ:
```sh
curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | sudo bash -s -
```
पायथन की शक्तिशाली विशेषताओं में से एक [पिप पैकेज](https://pypi.org) स्थापित करने की क्षमता है - ये अन्य लोगों द्वारा लिखे गए और इंटरनेट पर प्रकाशित कोड के पैकेज हैं। आप अपने कंप्यूटर पर एक कमांड के साथ एक पिप पैकेज स्थापित कर सकते हैं, फिर उस पैकेज को अपने कोड में उपयोग कर सकते हैं। यह ग्रोव इंस्टाल स्क्रिप्ट उन पिप पैकेजों को स्थापित करेगा जिनका उपयोग आप पायथन से ग्रोव हार्डवेयर के साथ काम करने के लिए करेंगे।
1. या तो मेनू का उपयोग करके या टर्मिनल में निम्न कमांड चलाकर पाई को रिबूट करें:
```sh
sudo reboot
```
1. एक बार पाई रीबूट हो जाने के बाद, टर्मिनल को फिर से लॉन्च करें और [विजुअल स्टूडियो कोड (वीएस कोड)](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) स्थापित करने के लिए निम्न आदेश चलाएं - यह वह संपादक है जिसका उपयोग आप अपने डिवाइस कोड को पायथन में लिखने के लिए करेंगे।
```sh
sudo apt install code
```
एक बार यह इंस्टॉल हो जाने के बाद, वीएस कोड शीर्ष मेनू से उपलब्ध होगा।
>💁 यदि आपके पास कोई पसंदीदा टूल है, तो आप इन पाठों के लिए किसी भी पायथन आईडीई या संपादक का उपयोग करने के लिए स्वतंत्र हैं, लेकिन पाठ वीएस कोड के उपयोग के आधार पर निर्देश देंगे।
1. पाइलेंस स्थापित करें। यह वीएस कोड के लिए एक एक्सटेंशन है जो पायथन भाषा समर्थन प्रदान करता है। वीएस कोड में इस एक्सटेंशन को स्थापित करने के निर्देशों के लिए [पायलेंस एक्सटेंशन डॉक्यूमेंटेशन](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance&WT.mc_id=academic-17441-jabenn) देखें।
### पाई को कोड करने के लिए रिमोट एक्सेस
पीआई पर सीधे कोडिंग करने के बजाय, इसे आप 'हेडलेस' चला सकते है यानी कि बिना कीबोर्ड/माउस/मॉनिटर जोड़े, और विजुअल स्टूडियो कोड का उपयोग करके अपने कंप्यूटर से कॉन्फ़िगर और कोड कर सकते है।
#### पाई ओएस सेट करें
दूरस्थ रूप से कोड करने के लिए, पीआई ओएस को एसडी कार्ड पर इंस्टॉल करना होगा।
##### टास्क - पाई ओएस सेट करें
हेडलेस पाई ओएस सेट करें।
1. [रास्पबेरी पाई ओएस सॉफ्टवेयर पेज](https://www.raspberrypi.org/software/) से **Raspberry Pi Imager** डाउनलोड करें और इसे इंस्टॉल करें
1. यदि आवश्यक हो तो एडेप्टर का उपयोग करके अपने कंप्यूटर में एक एसडी कार्ड डालें
1. रास्पबेरी पाई इमेजर लॉन्च करें
1. रास्पबेरी पाई इमेजर से, **Chosse OS** बटन चुनें, फिर *Raspberry Pi OS (Other)* चुनें, उसके बाद *Raspberry Pi OS Lite (32-bit)*
![रास्पबेरी पाई ओएस लाइट के साथ रास्पबेरी पाई इमेजर चयनित](../../../../images/raspberry-pi-imager.png)
> रास्पबेरी पाई ओएस लाइट रास्पबेरी पाई ओएस का एक संस्करण है जिसमें डेस्कटॉप यूआई या यूआई आधारित उपकरण नहीं हैं। हेडलेस पाई के लिए इनकी आवश्यकता नहीं होती है और यह इंस्टाल को छोटा और बूट अप समय को तेज बनाता है।
1. **CHOOSE OS** बटन चुनें, फिर अपना एसडी कार्ड चुनें
1. `Ctrl+Shift+X` दबाकर **Advanced Options** लॉन्च करें। एसडी कार्ड में इमेज किए जाने से पहले ये विकल्प रास्पबेरी पाई ओएस के कुछ पूर्व-कॉन्फ़िगरेशन की अनुमति देते हैं।
1. **Enable SSH** चेक बॉक्स चेक करें, और `pi` उपयोगकर्ता के लिए पासवर्ड सेट करें। यह वह पासवर्ड है जिसका उपयोग आप बाद में पाई में लॉग इन करने के लिए करेंगे।
1. यदि आप वाईफाई पर पाई से कनेक्ट करने की योजना बना रहे हैं, तो **Configure WiFi** चेक बॉक्स को चेक करें, और अपना वाईफाई SSID और पासवर्ड दर्ज करें, साथ ही अपने वाईफाई देश का चयन करें। यदि आप ईथरनेट केबल का उपयोग करेंगे तो आपको ऐसा करने की आवश्यकता नहीं है। सुनिश्चित करें कि जिस नेटवर्क से आप कनेक्ट हैं वह वही है जिससे आपका कंप्यूटर भी कनेक्ट है।
1. **Set locale settings** चेक बॉक्स चेक करें, और अपना देश और समय क्षेत्र सेट करें
1. ** SAVE** बटन चुनें
1. एसडी कार्ड में ओएस लिखने के लिए ** WRITE** बटन चुनें। यदि आप macOS का उपयोग कर रहे हैं, तो आपको अपना पासवर्ड दर्ज करने के लिए कहा जाएगा क्योंकि डिस्क इमेज लिखने वाले अंतर्निहित टूल को इस कार्ये के लिए विशेषाधिकार प्राप्त करने की आवश्यकता होती है।
ओएस एसडी कार्ड पर लिखा जाएगा, और एक बार पूरा हो जाने पर ओएस द्वारा इजेक्ट किया जाएगा, और आपको सूचित किया जाएगा। अपने कंप्यूटर से एसडी कार्ड निकालें, इसे पाई में डालें और पाई को पावर दें।
#### पाई से जुड़ें
अगला कदम पाई को दूरस्थ रूप से एक्सेस करना है। आप इसे `ssh` का उपयोग करके कर सकते हैं, जो macOS, Linux और Windows के नवीनतम संस्करणों पर उपलब्ध है।
##### टास्क - पाई से कनेक्ट करें
पाई को दूरस्थ रूप से एक्सेस करें।
1. टर्मिनल या कमांड प्रॉम्प्ट लॉन्च करें, और पाई से कनेक्ट करने के लिए निम्न आदेश दर्ज करें:
```sh
ssh pi@raspberrypi.local
```
यदि आप Windows पर पुराने संस्करण का उपयोग कर रहे हैं जिसमें `ssh` स्थापित नहीं है, तो आप OpenSSH का उपयोग कर सकते हैं। आप [ओपन एसएसएच इंस्टॉलेशन डॉक्यूमेंटेशन](https://docs.microsoft.com//windows-server/administration/openssh/openssh_install_firstuse?WT.mc_id=academic-17441-jabenn) में इंस्टॉलेशन निर्देश पा सकते हैं।
1. यह आपके पाई से जुड़ना चाहिए और पासवर्ड मांगना चाहिए।
`<hostname>.local` का उपयोग करके अपने नेटवर्क पर कंप्यूटर खोजने में सक्षम होना Linux और Windows के लिए एक नया फ़ीचर है। यदि आप Linux या Windows का उपयोग कर रहे हैं और आपको होस्टनाम नहीं मिलने के बारे में कोई त्रुटि मिलती है, तो आपको ZeroConf नेटवर्किंग को सक्षम करने के लिए अतिरिक्त सॉफ़्टवेयर स्थापित करने की आवश्यकता होगी (जिसे Apple द्वारा Bonjour भी कहा जाता है):
1. यदि आप Linux का उपयोग कर रहे हैं, तो अवही को निम्न कमांड का उपयोग करके स्थापित करें:
```sh
sudo apt-get install avahi-daemon
```
1. यदि आप Windows का उपयोग कर रहे हैं, तो ZeroConf को सक्षम करने का सबसे आसान तरीका [विंडोज़ के लिए बोनजोर प्रिंट सर्विसेज](http://support.apple.com/kb/DL999) स्थापित करना है। आप उपयोगिता का नया संस्करण प्राप्त करने के लिए [Windows के लिए आईट्यून्स](https://www.apple.com/itunes/download/) भी इंस्टॉल कर सकते हैं (जो स्टैंडअलोन उपलब्ध नहीं है)।
> 💁 यदि आप `raspberrypi.local` का उपयोग करके कनेक्ट नहीं कर सकते हैं, तो आप अपने पाई के आईपी ​​​​एड्रेस का उपयोग कर सकते हैं। आईपी ​​​​एड्रेस प्राप्त करने के कई तरीकों के निर्देशों के लिए [रास्पबेरी पाई आईपी एड्रेस डॉक्यूमेंटेशन](https://www.raspberrypi.org/documentation/remote-access/ip-address.md) देखें।
1. रास्पबेरी पाई इमेजर एडवांस्ड ऑप्शंस में आपके द्वारा सेट किया गया पासवर्ड दर्ज करें
#### Pi पर सॉफ़्टवेयर कॉन्फ़िगर करें
एक बार जब आप पीआई से जुड़ जाते हैं, तो यह सुनिश्चित करने की ज़रूरत है कि आपका ओएस अप्डेटेड है, और ग्रोव हार्डवेयर के साथ बातचीत करने वाले विभिन्न लाइब्रेरीज़ और उपकरणों को स्थापित/इंस्टॉल करें।
##### कार्य - Pi पर सॉफ़्टवेयर कॉन्फ़िगर करें
पूर्व-स्थापित पाई सॉफ्टवेयर को कॉन्फ़िगर करें और ग्रोव लाइब्रेरीज़ स्थापित करें।
1. अपने `ssh` सत्र से, अद्यतन करने के लिए निम्नलिखित कमांड चलाएँ और फिर पाई को रिबूट करें:
```sh
sudo apt update && sudo apt full-upgrade --yes && sudo reboot
```
पाई को अपडेट और रीबूट किया जाएगा। Pi के रीबूट होने पर `ssh` सत्र समाप्त हो जाएगा, इसलिए इसे लगभग 30 सेकंड के लिए छोड़ दें और फिर से कनेक्ट करें।
1. फिर से जुड़े `ssh` सत्र से, ग्रोव हार्डवेयर के लिए सभी आवश्यक लाइब्रेरीज़ स्थापित करने के लिए निम्न आदेश चलाएँ:
```sh
curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | sudo bash -s -
```
पायथन की शक्तिशाली विशेषताओं में से एक [पिप पैकेज](https://pypi.org) स्थापित करने की क्षमता है - ये अन्य लोगों द्वारा लिखे गए कोड के पैकेज हैं और इंटरनेट पर प्रकाशित होते हैं। आप अपने कंप्यूटर पर एक कमांड के साथ एक पिप पैकेज स्थापित कर सकते हैं, फिर उस पैकेज को अपने कोड में उपयोग कर सकते हैं। यह ग्रोव इंस्टाल स्क्रिप्ट उन पिप पैकेजों को स्थापित करेगा जिनका उपयोग आप पायथन से ग्रोव हार्डवेयर के साथ काम करने के लिए करेंगे।
1. निम्न आदेश चलाकर पाई को रीबूट करें:
```sh
sudo reboot
```
पाइ के रीबूट होने पर `ssh` सत्र समाप्त हो जाएगा। पुन: कनेक्ट करने की कोई आवश्यकता नहीं है।
#### रिमोट एक्सेस के लिए वीएस कोड कॉन्फ़िगर करें
एक बार पाई कॉन्फ़िगर हो जाने के बाद, आप अपने कंप्यूटर से विजुअल स्टूडियो कोड (वीएस कोड) का उपयोग करके इससे जुड़ सकते हैं - यह एक मुफ्त डेवलपर टेक्स्ट एडिटर है जिसका उपयोग आप अपने डिवाइस कोड को पायथन में लिखने के लिए करेंगे।
##### कार्य - रिमोट एक्सेस के लिए वीएस कोड कॉन्फ़िगर करें
आवश्यक सॉफ़्टवेयर स्थापित करें और दूरस्थ रूप से अपने पाई से कनेक्ट करें।
1. [वीएस कोड प्रलेखन](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) का पालन करके अपने कंप्यूटर पर वीएस कोड स्थापित करें।
1. आवश्यक घटकों को स्थापित करने के लिए [एसएसएच दस्तावेज़ीकरण का उपयोग कर वीएस कोड रिमोट डेवलपमेंट](https://code.visualstudio.com/docs/remote/ssh?WT.mc_id=academic-17441-jabenn) में दिए गए निर्देशों का पालन करें।
1. समान निर्देशों का पालन करते हुए, VS कोड को पाइ से कनेक्ट करें
1. कनेक्ट होने के बाद, [पाइलेंस एक्सटेंशन](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance&WT.mc_id=academic-17441-jabenn) इंस्टॉल करने के लिए [मैनेजिंग एक्सटेंशन](https://code.visualstudio.com/docs/remote/ssh#_managing-extensions?WT.mc_id=academic-17441-jabenn) निर्देशों का पालन करें।
## हैलो वर्ल्ड
एक नई प्रोग्रामिंग भाषा या तकनीक के साथ शुरू करते समय यह पारंपरिक है कि हम एक छोटे से एप्लिकेशन का निर्माण करें जो हैलो वर्ल्ड प्रिंट करता हो - यह दिखाने के लिए कि सभी टूल्स सही तरीके से कॉन्फ़िगर किए गए हैं
पाई के लिए हैलो वर्ल्ड ऐप यह सुनिश्चित करेगा कि आपके पास पायथन और विजुअल स्टूडियो कोड सही तरीके से स्थापित है।
यह ऐप `नाइटलाइट` नामक फ़ोल्डर में होगा, और नाइटलाइट एप्लिकेशन बनाने के लिए इस असाइनमेंट के बाद के हिस्सों में हैलो वर्ल्ड को अलग-अलग कोड के साथ फिर से उपयोग किया जाएगा।
### कार्य - हैलो वर्ल्ड लिखना
हेलो वर्ल्ड ऐप बनाएं।
1. वीएस कोड लॉन्च करें, या तो सीधे पीआई पर, या अपने कंप्यूटर पर और रिमोट एसएसएच एक्सटेंशन का उपयोग करके पाई से कनेक्ट करें
1. *Terminal -> New Terminal* या `` CTRL+` `` दबाकर VS कोड टर्मिनल लॉन्च करें। यह `pi` उपयोगकर्ताओं की होम निर्देशिका के लिए खुलेगा।
1. अपने कोड के लिए एक निर्देशिका बनाने के लिए निम्नलिखित कमांड चलाएँ, और उस निर्देशिका के अंदर `app.py` नामक एक पायथन फ़ाइल बनाएँ:
```sh
mkdir nightlight
cd nightlight
touch app.py
```
1. इस फोल्डर को VS कोड में खोलें *File -> Open...* का चयन करें और *नाइटलाइट* फोल्डर का चयन करें, फिर **ओके** दबाएं
![वी.एस. कोड ओपन डायलॉग जो नाइटलाइट फोल्डर दिखा रहा है](../../../../images/vscode-open-nightlight-remote.png)
1. वीएस कोड एक्सप्लोरर से `app.py` फ़ाइल खोलें और निम्नलिखित कोड जोड़ें:
```python
print('Hello World!')
```
`print` फ़ंक्शन कंसोल पर जो कुछ भी पास किया जाता है उसे प्रिंट करता है।
1. वीएस कोड टर्मिनल से, अपना पायथन ऐप चलाने के लिए निम्नलिखित चलाएँ:
```sh
python3 app.py
```
> 💁 इस कोड को चलाने के लिए आपको स्पष्ट रूप से `python3` को कॉल करने की आवश्यकता है, यदि आपके पास Python 3 (नवीनतम संस्करण) के अलावा Python 2 भी स्थापित है। यदि ऐसा है, तो `python` को कॉल करने से Python 3 के बजाय Python 2 का उपयोग किया जाएगा
आपको निम्न आउटपुट देखना चाहिए:
```output
pi@raspberrypi:~/nightlight $ python3 app.py
Hello World!
```
> 💁 आप इस कोड को [code/pi](code/pi) फोल्डर में पा सकते हैं।
😀 आपका 'हैलो वर्ल्ड' प्रोग्राम सफल रहा!

@ -0,0 +1,12 @@
# माइक्रोकंट्रोलर और सिंगल-बोर्ड कंप्यूटर की तुलना और अंतर करें
## निर्देश
इस पाठ में माइक्रोकंट्रोलर और सिंगल-बोर्ड कंप्यूटर शामिल थे। उनकी तुलना और तुलना करने के लिए एक तालिका बनाएं, और कम से कम 2 कारणों पर ध्यान दें कि आप सिंगल-बोर्ड कंप्यूटर पर माइक्रोकंट्रोलर का उपयोग क्यों करेंगे, और कम से कम 2 कारणों से आप माइक्रोकंट्रोलर पर सिंगल-बोर्ड कंप्यूटर का उपयोग क्यों करेंगे।
## रूब्रिक
| मानदंड | अनुकरणीय | पर्याप्त | सुधार की जरूरत |
| -------- | ------------- | -------- | ----------------- |
| माइक्रोकंट्रोलर की तुलना सिंगल-बोर्ड कंप्यूटर से करने के लिए एक टेबल बनाएं | कई मदों की सही तुलना और विषमता के साथ एक सूची बनाई | केवल कुछ वस्तुओं के साथ एक सूची बनाई | केवल एक आइटम के साथ आने में सक्षम था, या तुलना और इसके विपरीत करने के लिए कोई आइटम नहीं था |
| एक के ऊपर एक प्रयोग करने के कारण | माइक्रोकंट्रोलर के लिए 2 या अधिक कारण और सिंगल-बोर्ड कंप्यूटर के लिए 2 या अधिक कारण प्रदान करने में सक्षम था | माइक्रोकंट्रोलर के लिए केवल 1-2 कारण और सिंगल-बोर्ड कंप्यूटर के लिए 1-2 कारण प्रदान करने में सक्षम था | माइक्रोकंट्रोलर या सिंगल-बोर्ड कंप्यूटर के लिए 1 या अधिक कारण प्रदान करने में असमर्थ था |

@ -1,9 +0,0 @@
# Dummy File
This file acts as a placeholder for the `translations` folder. <br>
**Please remove this file after adding the first translation**
For the instructions, follow the directives in the [translations guide](https://github.com/microsoft/IoT-For-Beginners/blob/main/TRANSLATIONS.md) .
## THANK YOU
We truly appreciate your efforts!

@ -0,0 +1,206 @@
# লোকেশন ট্র্যাকিং
![A sketchnote overview of this lesson](../../../../sketchnotes/lesson-11.jpg)
> স্কেচনোটটি তৈরী করেছেন [Nitya Narasimhan](https://github.com/nitya)। বড় সংস্করণে দেখার জন্য ছবিটিতে ক্লিক করতে হবে।
## লেকচার-পূর্ববর্তী কুইজ
[লেকচার-পূর্ববর্তী কুইজ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/21)
## সূচনা
কৃষকের কাছ থেকে গ্রাহকের কাছে খাবার পৌঁছানোর মূল প্রক্রিয়াটি হল ট্রাক, জাহাজ, বিমান বা অন্যান্য বাণিজ্যিক পরিবহণ যানবাহনে পণ্য বাক্স লোড করা এবং খাদ্য সরবরাহ করা - এটি সরাসরি গ্রাহকের কাছে বা কেন্দ্রীয় হাব বা গুদামে সরবরাহ করা যেতে পারে। খামার থেকে গ্রাহক পর্যন্ত পুরো end-to-end process বা প্রক্রিয়াটি "সরবরাহ চেইন" (ব্যবসায়িক ইংরেজি ভাষায় - *supply chain* ) নামে পরিচিত একটি প্রক্রিয়ার অংশ। অ্যারিজোনা স্টেট ইউনিভার্সিটির W. P. Carey School of Business এর নীচের ভিডিওটিতে সরবরাহ চেইনের ধারণা এবং কীভাবে এটি আরও বিশদভাবে পরিচালনা করা হয় সে সম্পর্কে আলোচনা করা হয়েছে।
[![What is Supply Chain Management? A video from Arizona State University's W. P. Carey School of Business](https://img.youtube.com/vi/Mi1QBxVjZAw/0.jpg)](https://www.youtube.com/watch?v=Mi1QBxVjZAw)
> 🎥 ভিডিও দেখার জন্য উপরের ছবিতে ক্লিক করতে হবে।
আইওটি ডিভাইস যুক্ত করা আমাদের সাপ্লাই চেইনে প্রচন্ডরকমের উন্নতি করতে পারে, আমাদেরকে আইটেমগুলি কোথায় রয়েছে তা পরিচালনা করার সুযোগ দেয়, পরিবহন এবং পণ্যগুলি হ্যান্ডলিংয়ের আরও ভাল পরিকল্পনা করা এবং সমস্যার দ্রুত প্রতিক্রিয়া জানানোর মাধ্যমে কার্যক্রমে উন্নতি ঘটায়।
ট্রাকের মতো বিশাল যানবাহনের বহর পরিচালনা করার সময়, প্রতিটি যানবাহন একটি নির্দিষ্ট সময়ে কোথায় তা জানা থাকা দরকার। যানবাহনগুলিতে জিপিএস সেন্সর লাগানো যেতে পারে যা - তাদের অবস্থান আইওটি সিস্টেমে প্রেরণ করে, মালিকদেরকে গাড়ির অবস্থান জানায়, তারা যে পথটি নিয়েছে তা দেখতে এবং তারা কখন তাদের গন্তব্যে পৌঁছাবে তা জানাতে পারে। বেশিরভাগ যানবাহন ওয়াইফাই কভারেজের বাইরে কাজ করে, তাই তারা এই জাতীয় ডেটা প্রেরণে সেলুলার নেটওয়ার্কগুলি ব্যবহার করে। কখনও কখনও জিপিএস সেন্সরগুলো আরও জটিল আইওটি ডিভাইসে যেমন ইলেক্ট্রনিক লগ বুকে তৈরি করা হয়। চালকরা কাজের সময় স্থানীয় আইন মেনে চলে তা নিশ্চিত করার জন্য এই ডিভাইসগুলি ট্রাক কতক্ষণ ট্রানজিটে ছিল সেটিও পর্যন্ত ট্র্যাক করে।
এই পাঠে আমরা গ্লোবাল পজিশনিং সিস্টেম (জিপিএস) সেন্সর ব্যবহার করে কীভাবে কোন যানবাহনের অবস্থান ট্র্যাক করা যায় তা শিখব।
এই লেসনে আমরা দেখতে যাচ্ছি:
* [সংযুক্ত যানবাহনসমূহ](#সংযুক্ত-যানবাহনসমূহ)
* [ভূ-স্থানাংক](#ভূ-স্থানাংক)
* [Global Positioning Systems (GPS)](#global-positioning-systems-gps)
* [জিপিএস সেন্সর ডেটা গ্রহণ](#জিপিএস-সেন্সর-ডেটা-গ্রহণ)
* [NMEA GPS data](#nmea-gps-data)
* [GPS sensor data ডিকোড করা](#GPS-sensor-data-ডিকোড-করা)
## সংযুক্ত যানবাহনসমূহ
পণ্য পরিবহনের ক্ষেত্রে *সংযুক্ত যানবাহনসমূহ* এর ক্ষেত্রে আইওটি আমূল পরিবর্তন আনছে। কেন্দ্রীয় আইটি সিস্টেম এর সাথে এই যানগুলির অবস্থান সম্পর্কিত তথ্য এবং অন্যান্য সেন্সর ডেটা সংযুক্ত রয়েছে। এখানে রয়েছে বিস্তৃত সুবিধা, যেমন:
* লোকেশন ট্র্যাকিং - যানবাহন যেকোন সময় কোথায় রয়েছে তা আমরা চিহ্নিত করতে পারি, আমরা এখানে -
* যখন কোন গাড়ি আনলোডিং জন্য আসতে থাকে, কর্মকর্তা-কর্মচারীরা আগেই তা জানতে পারেন এবং যথাযথ প্রস্তুতি নিতে পারেন।
* চুরি হওয়া গাড়ি সনাক্ত করা যায়।
* ট্রাফিক সমস্যার সাথে অবস্থান এবং রুটের ডেটা একত্রিত করে বিশ্লেষণ করা যায় যাতে মাঝপথে রাস্তা পরিবর্তন করার দরকার হলে দ্রুত নির্দেশনা দেয়া যায়।
* কর সংক্রান্ত নিয়ম সহজেই মানা যায়। কিছু দেশ সরকারী রাস্তায় চালিত মাইলেজের পরিমাণ উপর নির্ভর করে যানবাহন এর উপর করারোপ করে (যেমন - [New Zealand এর RUC](https://www.nzta.govt.nz/vehicles/licensing-rego/road-user-charges/)), তাই কোন যানবাহন কখন পাবলিক রাস্তায় আর কখন ব্যক্তিগত রাস্তায় থাকছে তা জেনে রাখলে, বকেয়া করের গণনা সহজ হয়।
* গাড়ির সমস্যা হলে সেই পরিস্থিতিতে রক্ষণাবেক্ষণ কর্মীদের কোথায় পাঠাতে হবে তা দ্রুত জানা যায়।
* ড্রাইভার টেলিমেট্রি - বিভিন্ন বিষয়, যেমনঃ চালকরা গতির সীমা মেনে চলছে, উপযুক্ত গতিতে চালাচ্ছে, তাড়াতাড়ি এবং দক্ষতার সাথে ব্রেক করেছেন এবং নিরাপদে গাড়ি চালাচ্ছেন তা নিশ্চিত করা যায়। সংযুক্ত যানবাহনগুলিতে ঘটনা রেকর্ড করার জন্য ক্যামেরা থাকতে পারে। এটিকে ইন্স্যুরেন্সের সাথে যুক্ত করা যেতে পারে, ভাল ড্রাইভারের জন্য অতিরিক্ত সুবিধা দেওয়া যায়।
* ড্রাইভারদের যথাযথ কর্মঘন্টা নিশ্চিতকরণ - ড্রাইভারদের ইঞ্জিন চালু এবং বন্ধ করার সময়ের উপর ভিত্তি করে কেবল তাদের জন্য আইনীভাবে অনুমোদিত সময় পর্যন্ত গাড়ি চালানো নিশ্চিত করতে হবে কেননা অনেক দেশেই এই শ্রমিক আইন যথাযথভাবে মানতে হয়।
এই সুবিধাগুলি একত্রিত করা যায় - উদাহরণস্বরূপ, ড্রাইভাররা যদি তাদের অনুমতিপ্রাপ্ত ড্রাইভিং সময়ের মধ্যে তাদের গন্তব্যে পৌঁছাতে না পারে তবে রুট পরিবর্তন করে দেয়া যাবে। এগুলি অন্যান্য যানবাহন-ভিত্তিক টেলিমেট্রির সাথেও মিলিত হতে পারে, যেমন তাপমাত্রা-নিয়ন্ত্রিত ট্রাকগুলির তাপমাত্রার ডেটা - যদি তাদের বর্তমান রুটের তাপমাত্রায় পণ্য রাখা না যায় তবে যানবাহনগুলিকে অন্য রুটে পাঠাতে হবে।
> 🎓 লজিস্টিকস (LOGISTICS) হল এক জায়গা থেকে অন্য জায়গায় পণ্য পরিবহণের প্রক্রিয়া, যেমন ফার্ম বা সুপারমার্কেটে এক বা একাধিক গুদামের মাধ্যমে পণ্য পরিবহন করা। একজন কৃষক থেকে একটি ট্রাকের উপর ভর করে কোন ফসল, যেমনঃ টমেটো একটি কেন্দ্রীয় গুদামে সরবরাহ করা হয় এবং সুপার মার্কেটে সরবরাহ করার সময় বিভিন্ন ধরণের পণ্যের মিশ্রণ থাকতে পারে দ্বিতীয় ট্রাকে ।
যানবাহন ট্র্যাকিংয়ের মূল উপাদান হল জিপিএস - সেন্সর যা পৃথিবীর যে কোন জায়গায় অবস্থান নির্ধারণ করতে পারে। এই পাঠে আমরা কীভাবে একটি জিপিএস সেন্সর ব্যবহার করব তা শিখতে শুরু করব।
## ভূ-স্থানাংক
কম্পিউটারের স্ক্রিনে পিক্সেল ধরে ধরে আঁকতে যেভাবে তার স্থানাঙ্কগুলি ব্যবহার করা যায় তার অনুরূপ Geospatial coordinates বা ভূ-স্থানাংক পৃথিবীর পৃষ্ঠের পয়েন্টগুলি সংজ্ঞায়িত করতে ব্যবহৃত হয়। একক পয়েন্টের জন্য, আমাদের ২টি অক্ষ রয়েছে। উদাহরণস্বরূপ, মার্কিন যুক্তরাষ্ট্রের ওয়াশিংটনের রেডমন্ডের মাইক্রোসফ্ট ক্যাম্পাসটি 47.6423109, -122.1390293 এ অবস্থিত।
### অক্ষাংশ ও দ্রাঘিমাংশ
পৃথিবী একটি গোলক , একটি ত্রি-মাত্রিক বৃত্ত। এর কারণে, পয়েন্টগুলিকে 360 ডিগ্রিতে ভাগ করে গণনা করা হয় যা বৃত্তের জ্যামিতির সমান । অক্ষাংশ উত্তর থেকে দক্ষিণে ডিগ্রি সংখ্যার পরিমাপ করে, দ্রাঘিমাংশ পূর্ব থেকে পশ্চিমে ডিগ্রির সংখ্যা পরিমাপ করে।
> 💁 বৃত্ত 360 ডিগ্রিতে বিভক্ত হওয়ার মূল কারণটি কেউ আসলে জানে না। এখানে [degree (angle) - Wikipedia](https://wikipedia.org/wiki/Degree_(angle)) কিছু সম্ভাব্য কারণ দেয়া হয়েছে।
![Lines of latitude from 90° at the North Pole, 45° halfway between the North Pole and the equator, 0° at the equator, -45° halfway between the equator and the South Pole, and -90° at the South Pole](../../../../images/latitude-lines.png)
অক্ষাংশ এমন রেখা ব্যবহার করে পরিমাপ করা হয় যা পৃথিবীটিকে প্রদক্ষিণ করে এবং নিরক্ষরেখার (equator) সাথে সমান্তরালভাবে চলে, উত্তর এবং দক্ষিণ গোলার্ধ প্রতিটিকে 90° তে বিভক্ত করে। নিরক্ষীয় (equator) স্থান হলো 0°, উত্তর মেরু 90°, এটি 90° উত্তর হিসাবেও পরিচিত এবং দক্ষিণ মেরুটি -90° বা 90° দক্ষিণে রয়েছে।
দ্রাঘিমাংশ পূর্ব এবং পশ্চিম পরিমাপকৃত ডিগ্রির সংখ্যা হিসাবে পরিমাপ করা হয়। দ্রাঘিমাংশের 0° কে বলা হয় *প্রাইম মেরিডিয়ান* এবং এটি 1884 সালে নির্ধারিত হয় যা উত্তর থেকে দক্ষিণ মেরু পর্যন্ত একটি রেখা যেটি কিনা [British Royal Observatory in Greenwich, England](https://wikipedia.org/wiki/Royal_Observatory,_Greenwich) এর মধ্যে দিয়ে যায়।
![Lines of longitude that go from -180° to the west of the Prime Meridian, to 0° on the Prime Meridian, to 180° east of the Prime Meridian](../../../../images/longitude-meridians.png)
> 🎓 মেরিডিয়ান একটি কাল্পনিক সরল রেখা যা উত্তর মেরু থেকে দক্ষিণ মেরুতে গিয়ে একটি অর্ধবৃত্ত গঠন করে ।
একটি বিন্দুর দ্রাঘিমাংশ পরিমাপ করার জন্য, আমরা প্রাইম মেরিডিয়ান থেকে অন্য মেরিডিয়ান পর্যন্ত মধ্যবর্তী নিরক্ষীয় অঞ্চলের ডিগ্রির সংখ্যা পরিমাপ করি। দ্রাঘিমাংশ -180° বা 180° পশ্চিম থেকে প্রাইম মেরিডিয়ানে 0° হয়ে 180° বা 180° পূর্ব দিকে যায়। 180° এবং -180° একই বিন্দু যা অ্যান্টিমেরিডিয়ান বা 180-তম মেরিডিয়ান হিসেবে পরিচিত। এটি প্রাইম মেরিডিয়ান থেকে পৃথিবীর বিপরীত দিকে একটি মেরিডিয়ান।
> 💁 অ্যান্টিমেরিডিয়ান এবং আন্তর্জাতিক তারিখ রেখার মধ্যে বিভ্রান্ত হওয়ার দরকার নেই। যদিও দুটিই প্রায় একই অবস্থানে রয়েছে, তবে তারিখ রেখা কোনও সরল রেখা নয় এবং ভূ-রাজনৈতিক সীমানার আশেপাশে এটি পরিবর্তিত হয়।
✅ কিছু গবেষণা করা যাক: আমাদের বর্তমান অবস্থানের অক্ষাংশ এবং দ্রাঘিমাংশ সন্ধান করার চেষ্টা করি।
### Degrees, minutes and seconds বনাম decimal degrees
ঐতিহাসিকভাবে, অক্ষাংশ এবং দ্রাঘিমাংশের ডিগ্রিগুলির পরিমাপটি sexagesimal সংখ্যায়ন বা বেস -60 ব্যবহার করে সম্পন্ন করা হত। এটি দ্বারা প্রাচীন ব্যাবিলিয়ানরা সময় এবং দূরত্বের প্রথম পরিমাপ এবং রেকর্ডিং করেছিলেন এবং তাদের দ্বারা ব্যবহৃত একটি সংখ্যায়ন ব্যবস্থা এটি । আমরা প্রতিদিন উপলব্ধিও করিনা ,অথচ sexagesimal পদ্ধতি ব্যবহার করি - ঘন্টাকে 60 মিনিট এবং মিনিটকে 60 সেকেন্ডে ভাগ করে।
দ্রাঘিমাংশ এবং অক্ষাংশকে ডিগ্রি, মিনিট এবং সেকেন্ডে পরিমাপ করা হয়, এক মিনিটের ডিগ্রির 1/60 এবং 1 সেকেন্ডটি 1/60 মিনিট হয়।
উদাহরণস্বরূপ, নিরক্ষীয় (equator) অঞ্চলে:
* 1° অক্ষাংশ হলো **111.3 কিলোমিটার**
* 1 মিনিট অক্ষাংশ হলো 111.3/60 = **1.855 কিলোমিটার**
* 1 সেকেন্ড অক্ষাংশ হলো 1.855/60 = **0.031 কিলোমিটার**
The symbol for a minute is a single quote, for a second it is a double quote. 2 degrees, 17 minutes, and 43 seconds for example, would be written as 2°17'43". Parts of seconds are given as decimals, for example half a second is 0°0'0.5".
এক মিনিটের প্রতীক হলো একটি একক উদ্ধৃতি চিহ্ন (') এবং এক সেকেন্ডের জন্য এটি দ্বি-উদ্ধৃতি চিহ্ন (")। 2 ডিগ্রি, 17 মিনিট এবং 43 সেকেন্ড কে 2°17'43"হিসাবে লেখা হবে। সেকেন্ডের অংশগুলি দশমিক হিসাবে দেওয়া হয়, উদাহরণস্বরূপ অর্ধেক সেকেন্ডকে 0° 0'0.5" লেখা হয়।
কম্পিউটার বেস -60 স্নগখ্যাপদ্ধতিতে কাজ করে না, তাই বেশিরভাগ কম্পিউটার সিস্টেমে জিপিএস ডেটা ব্যবহার করার সময় এই সমন্বয়গুলিকে দশমিক ডিগ্রি হিসাবে দেওয়া হয়। উদাহরণস্বরূপ, 2° 17'43" হল 2.295277 - ডিগ্রি চিহ্নটি সাধারণত বাদ দেওয়া হয়।
একটি পয়েন্টের জন্য স্থানাঙ্কগুলি সর্বদা `অক্ষাংশ,দ্রাঘিমাংশ (latitude,longitude) ` হিসাবে দেওয়া হয়, সুতরাং মাইক্রোসফ্ট ক্যাম্পাসের আগের উদাহরণটিতে তার অবস্থান 47.6423109, -122.117198 এ রয়েছে:
* অক্ষাংশ 47.6423109 (47.6423109 নিরক্ষীয় অঞ্চল থেকে কত ডিগ্রি উত্তরে রয়েছে )
* দ্রাঘিমাংশ -122.1390293 (122.1390293 প্রাইম মেরিডিয়ান থেকে কত ডিগ্রি পশ্চিমে রয়েছে).
![The Microsoft Campus at 47.6423109,-122.117198](../../../../images/microsoft-gps-location-world.png)
## Global Positioning Systems (GPS)
জিপিএস সিস্টেমগুলি একাধিক উপগ্রহ ব্যবহার করে আমাদের অবস্থান সনাক্ত করতে পৃথিবী প্রদক্ষিণ করে । আমরা সম্ভবত এটি না জেনেও জিপিএস সিস্টেমগুলি ব্যবহার করেছি - অ্যাপল মানচিত্র বা গুগল ম্যাপের মতো আমাদের ফোনে একটি ম্যাপিং অ্যাপে আমাদের অবস্থান সন্ধান করতে বা Uber বা Lyft এর মতো আমাদের রাইডটি কোথায় রয়েছে তা দেখতে অথবা আমাদের গাড়িতে স্যাটেলাইট নেভিগেশন (স্যাট-ন্যাভ) ব্যবহার করার ক্ষেত্রে ।
> 🎓 'স্যাটেলাইট নেভিগেশন (স্যাট-ন্যাভ)' এ ব্যবহৃত উপগ্রহগুলো জিপিএস স্যাটেলাইট !
জিপিএস সিস্টেমগুলি বেশ কয়েকটি উপগ্রহ যা প্রতিটি উপগ্রহের বর্তমান অবস্থান এবং একটি সঠিক টাইমস্ট্যাম্প সহ একটি সংকেত প্রেরণ করে কাজ করে। এই সংকেতগুলি রেডিও তরঙ্গ এর মাধ্যমে প্রেরণ করা হয় এবং জিপিএস সেন্সরে একটি অ্যান্টেনার দ্বারা সনাক্ত করা হয়। একটি জিপিএস সেন্সর এই সংকেতগুলি সনাক্ত করবে এবং বর্তমান সময়ের পরিমাপটি ব্যবহার করে উপগ্রহ থেকে সেন্সরটি পৌঁছাতে কত সময় লেগেছে তা নির্ণয় করে। রেডিও তরঙ্গগুলির গতি অবিচ্ছিন্ন থাকার কারণে, জিপিএস সেন্সর স্যাটেলাইট থেকে সেন্সরটি কতটা দূরে রয়েছে তা নির্ধারণের জন্য প্রেরণ করা টাইমস্ট্যাম্পটি ব্যবহার করতে পারে। প্রেরিত পজিশনের সাথে কমপক্ষে 3 টি উপগ্রহের উপাত্তগুলিকে একত্রিত করে, জিপিএস সেন্সরটি পৃথিবীতে তার অবস্থান নির্ধারণ করতে সক্ষম হয়।
> 💁 জিপিএস সেন্সরগুলির রেডিও তরঙ্গগুলি সনাক্ত করতে অ্যান্টেনার প্রয়োজন। অন-বোর্ড জিপিএস সহ ট্রাক এবং গাড়িতে তৈরি অ্যান্টেনা সাধারণত উইন্ডশীল্ড বা ছাদে অবস্থিত - যা একটি ভাল সংকেত পাওয়ার জন্য যথেষ্ট । যদি আমরা একটি পৃথক জিপিএস সিস্টেম ব্যবহার করি, যেমন স্মার্টফোন বা আইওটি ডিভাইস, তবে আমাদের এটি নিশ্চিত করতে হবে যে জিপিএস সিস্টেম বা ফোনে থাকা অ্যান্টেনার সাথে আকাশের উন্মুক্ত যোগাযোগ থাকতে পারবে।
![By knowing the distance from the sensor to multiple satellites, the location be calculated](../../../../images/gps-satellites.png)
জিপিএস উপগ্রহগুলি সেন্সরের উপরে নির্দিষ্ট স্থানে অবস্থিত নয়, বরং এরা পৃথিবী প্রদক্ষিণ করছে। সুতরাং অবস্থানের ডেটাতে সমুদ্র স্তর থেকে উচ্চতার পাশাপাশি অক্ষাংশ এবং দ্রাঘিমাংশ অন্তর্ভুক্ত রয়েছে।
জিপিএসে মার্কিন সেনা দ্বারা প্রয়োগ করা নির্ভুলতার সীমাবদ্ধতা থাকত, যেখানে নির্ভুলতা প্রায় 5 মিটারের মধ্যে সীমাবদ্ধ থাকে। এই সীমাবদ্ধতাটি 2000 ্সালে উঠিয়ে নেয়া হয় এবং প্রায় ৩০ সেন্টিমিটার পর্যন্ত এক্যুরেট মান পাওয়া যেত। তবে সিগন্যালের সাথে বিভিন্ন ইন্টারফেরেন্স বা সমস্যার কারণে এই নির্ভুলতা র্জন করা সর্বদা সম্ভব হয় না।
✅ আমাদের যদি স্মার্ট ফোন থাকে তবে ম্যাপিং অ্যাপটি চালু করে দেখতে পারি আমাদের অবস্থানটি কতটা সঠিক। আরও সঠিক অবস্থান পেতে একাধিক উপগ্রহ দ্বারা সনাক্ত করার জন্য অল্প সময় নিতে পারে।
> 💁 উপগ্রহগুলিতে atomic clock রয়েছে যা অবিশ্বাস্যরূপে নির্ভুল, তবে তারা পৃথিবীতে পারমাণবিক ঘড়ির তুলনায় একদিনে 38 মাইক্রোসেকেন্ড (0.0000038 সেকেন্ড) হেরফের করে এবং সময়টি ধীরে ধীরে বেড়ে যায়। পৃথিবীর ঘূর্ণনের চেয়ে দ্রুত ভ্রমণ করায় এই ঘটনা ঘটে যা আইনস্টাইনের বিশেষ এবং সাধারণ আপেক্ষিকতার ত্বত্তে অনুমান করা হয়েছিলো এবং সময়ের এই হেরফেরই আইন্সটাইনের তত্ত্ব প্রমাণ করে। আক্ষরিক অর্থেই জিপিএস স্যাটেলাইটে সময় ধীর হয়ে যায় ।
মার্কিন যুক্তরাষ্ট্র, রাশিয়া, জাপান, ভারত, ইইউ এবং চীন সহ বেশ কয়েকটি দেশ এবং রাজনৈতিক ইউনিয়ন জিপিএস সিস্টেমগুলি বিকাশ ও স্থাপন করেছে। আধুনিক জিপিএস সেন্সর দ্রুত এবং আরও নির্ভুল ভাবে কাজ করতে পারে।
> 🎓 প্রতিটি ডেপ্লয়মেন্টে উপগ্রহের যে গুচ্ছ পাঠানো হয়, তাদেরকে 'constellations' বলা হয়।
## জিপিএস সেন্সর ডেটা গ্রহণ
বেশিরভাগ জিপিএস সেন্সর UART এর মাধ্যমে জিপিএস ডেটা প্রেরণ করে।
> ⚠️ UART বিষয়টি [project 2, lesson 2](../../../../2-farm/lessons/2-detect-soil-moisture/README.md#universal-asynchronous-receiver-transmitter-uart) এ বর্ণনা করা হয়েছে।
আমরা জিপিএস ডেটা পেতে আমাদের আইওটি ডিভাইসে একটি জিপিএস সেন্সর ব্যবহার করতে পারি।
### কাজ - জিপিএস সেন্সর কানেক্ট করে ডেটা গ্রহণ
আমাদের আইওটি ডিভাইস ব্যবহার করে জিপিএস ডেটা গ্রহণ করতে নিম্নের প্রাসঙিক গাইডের মাধ্যমে কাজ শুরু করি:
* [Arduino - Wio Terminal](wio-terminal-gps-sensor.md)
* [Single-board computer - Raspberry Pi](pi-gps-sensor.md)
* [Single-board computer - Virtual device](virtual-device-gps-sensor.md)
## NMEA GPS data
আমরা যখন আমাদের কোড রান করি, তখন দেখতে পেতাম যে আউটপুটটিতে কিছু হযবরল, অর্থহীন ডেটা রয়েছে । এটি আসলে স্ট্যান্ডার্ড জিপিএস ডেটা এবং এর অর্থ রয়েছে।
জিপিএস সেন্সরগুলি NMEA 0183 স্ট্যান্ডার্ড ব্যবহার করে, NMEA বার্তায় আউটপুট দেয়। NMEA এর পূর্ণরূপ [National Marine Electronics Association](https://www.nmea.org), মার্কিন যুক্তরাষ্ট্র ভিত্তিক বাণিজ্য সংস্থা যা সামুদ্রিক ইলেকট্রনিক্সের মধ্যে যোগাযোগের জন্য মান নির্ধারণ করে।
> 💁 এই স্ট্যান্ডার্ডটি মালিকানাধীন এবং কমপক্ষে ২০০০ মার্কিন ডলারে বিক্রি হয়, তবে এ সম্পর্কে পর্যাপ্ত তথ্য জনসাধারণের কাছে আছে যে স্ট্যান্ডার্ডটির বেশিরভাগ অংশই বিপরীত ইঞ্জিনিয়ারড (reverse engineered) হয়েছে এবং ওপেন সোর্স ও অন্যান্য অ-বাণিজ্যিক কোডে তাই ব্যবহার করা যেতে পারে।
এই বার্তাগুলি টেক্সট-ভিত্তিক। প্রতিটি বার্তায় একটি *বাক্য* থাকে যা একটি `$` চিহ্ন দিয়ে শুরু হয়, তারপরে বার্তাটির সোর্স বোঝানোর জন্য ২টি বর্ণ (উদাহরণস্বরূপ মার্কিন যুক্তরাষ্ট্রের জিপিএস সিস্টেমের জন্য GP, রাশিয়ান জিপিএস সিস্টেম GLONASS এর জন্য GN) এবং 3 টি বর্ণ থাকে বার্তার ধরণটি নির্দেশ করতে। বার্তাটির বাকি অংশ কমা দ্বারা আলাদা করা থাকে এবং একটি new line দিয়ে তা শেষ হয়।
প্রাপ্ত বার্তার কয়েকটি প্রকার হল:
| প্রকার | বর্ণনা |
| ---- | ----------- |
| GGA | GPS Fix Data যা জিপিএস সেন্সর থেকে latitude, longitude, and altitude এর তথ্য গ্রহণের পাশাপাশি কতটি স্যাটেলাইট ব্যবহার করে এই তথ্য নেয়া হয়েছে তাও জানায় |
| ZDA | লোকাল টাইমজোন সহ বর্তমান সময় এবগ তারিখও জানায় |
| GSV | দৃশ্যমান স্যাটেলাইটের তথ্যাবলি - যেসকল স্যাটেলাইট এর সাথে জিপিএস সেন্সর যুক্ত থাকে |
> 💁 জিপিএস ডেটাতে টাইমস্ট্যাম্প অন্তর্ভুক্ত রয়েছে, সুতরাং আমাদের আইওটি ডিভাইসটি কোনও এনটিপি সার্ভার বা অভ্যন্তরীণ রিয়েল-টাইম ক্লকের উপর নির্ভর না করে কোন জিপিএস সেন্সর থেকে সময় পেতে পারে।
GGA টাইপের ম্যাসেজে অবস্থান নির্দেশ করার জন্য নির্দিষ্ট ফর্ম্যাট ব্যবহার করে যা হলো `(dd)dmm.mmmm` যার সাথে একটি একক অক্ষর ব্যবহার করে বর্তমান অবস্থান এর দিক অন্তর্ভুক্ত করা হয়। এই বিন্যাসে `d` হলো ডিগ্রি ,` m` এবং সেকেন্ডকে মিনিটের দশমিক হিসাবে দেখানো হয় ; উদাহরণস্বরূপ - 2° 17'43" কে 217.716666667 - 2 ডিগ্রি , 17.716666667 মিনিট হিসাবে দেখানো হবে।
দিকনির্দেশক বর্ণ `N` অথবা `S` হবে অক্ষাংশের জন্য এবং `E` বা `W` হবে দ্রাঘিমাংশের জন্য। উদাহরণস্বরূপ, 2°17'43" অক্ষাংশে দিকনির্দেশক বর্ণ হবে `N` এবং -2°17'43" হলে তখন তা হতো `S`.
উদাহরণস্বরূপ - একটি NMEA sentence হলোঃ `$GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67`
* অক্ষাংশ বোঝানো হচ্ছে `4738.538654,N` অংশে, যা পরিবর্তিত হয়ে 47.6423109 হচ্ছে ডেসিমাল সংখ্যাপদ্ধতিতে। `4738.538654` হলো 47.6423109 এবং এর দিক `N` (north বা উত্তর), তাই এটি ধ্বনাত্মক অক্ষাংশ।
* দ্রাঘিমাংশ বোঝানো হচ্ছে `12208.341758,W` অংশে, যা পরিবর্তিত হয়ে -122.1390293 হচ্ছে ডেসিমাল সংখ্যাপদ্ধতিতে। `12208.341758` হলো 122.1390293°, এবং এর দিক `W` (west বা পশ্চিম), তাই এটি ঋণাত্মক দ্রাঘিমা।
## GPS sensor data ডিকোড করা
সরাসরি NMEA data ব্যবহারের পরিবর্তে তা উপযোগী ফরম্যাটে পরিবর্তন করা উচিত। NMEA ফরম্যাটের বার্তাগুলি থেকে দরকারী ডেটা বের করতে আমরা একাধিক ওপেন-সোর্স লাইব্রেরি ব্যবহার করতে পারি।
### কাজ - GPS sensor data ডিকোড করা
আমাদের আইওটি ডিভাইসটি ব্যবহার করে জিপিএস সেন্সর ডেটা ডিকোড করতে নিম্নের যেকোন একটি উপযোগী গাইডের মাধ্যমে কাজ শুরু করি:
* [Arduino - Wio Terminal](wio-terminal-gps-decode.md)
* [Single-board computer - Raspberry Pi/Virtual IoT device](single-board-computer-gps-decode.md)
---
## 🚀 চ্যালেঞ্জ
আমাদের নিজেদের বানানো NMEA decoder থাকলে কেমন হয় ? থার্ড পার্টি লাইব্রেরির উপর নির্ভর না করেই, নিজেদের প্রয়োজনের ডেটা গ্রহণের জন্য কী ডিকোডার বানাতে পারি? চেষ্টা করে দেখা যাক !
## লেকচার-পরবর্তী কুইজ
[লেকচার-পরবর্তী কুইজ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/22)
## রিভিউ ও স্ব-অধ্যয়ন
* ভূ-স্থানাংকের ব্যাপারে আরো জানতে [Geographic coordinate system - Wikipedia](https://wikipedia.org/wiki/Geographic_coordinate_system)পড়ি ।
* অন্য মহাজাগতিক বস্তুর Prime Meridians সম্পর্কে জানতে [Prime Meridian page on Wikipedia](https://wikipedia.org/wiki/Prime_meridian#Prime_meridian_on_other_planetary_bodies) পড়ি।
* ইউরোপীয় ইউনিয়ন, জাপান, রাশিয়া, ভারত এবং মার্কিন যুক্তরাষ্ট্রের মতো বিভিন্ন বিশ্ব সরকার এবং রাজনৈতিক ইউনিয়নগুলির বিভিন্ন বিভিন্ন জিপিএস সিস্টেমগুলি গবেষণা করি।
## এসাইনমেন্ট
[অন্যান্য জিপিএস ডেটা পর্যালোচনা করা](assignment.bn.md)

@ -0,0 +1,15 @@
# অন্যান্য জিপিএস ডেটা পর্যালোচনা করা
## নির্দেশাবলী
আমাদের জিপিএস সেন্সর থেকে আসা NEMA বাক্যগুলিতে লোকেশন ছাড়াও অন্যান্য ডেটা রয়েছে। অতিরিক্ত ডেটা অনুসন্ধান করে আইওটি ডিভাইসে তা ব্যবহার করি।
উদাহরণস্বরূপ - আমরা কী বর্তমান তারিখ এবং সময় পেতে পারি? আমরা যদি কোন মাইক্রোকন্ট্রোলার ব্যবহার করি, তবে যেভাবে পূর্বের প্রজেক্টে এনটিপি সিগন্যাল ব্যবহার করেছি সেটাকে ব্যবহার করে জিপিএস ডেটা দ্বারা ঘড়ি সেট করা যাবে? আমরা কি উচ্চতা (সমুদ্রতল থেকে আমাদের উচ্চতা) বা বর্তমান গতি পেতে পারি?
আমরা যদি ভার্চুয়াল আইওটি ডিভাইস ব্যবহার করে থাকি, তবে NMEA sentences এর ডেটা [nmeagen.org](https://www.nmeagen.org) থেকে পেতে পারি।
## এসাইনমেন্ট মূল্যায়ন মানদন্ড
| ক্রাইটেরিয়া | দৃষ্টান্তমূলক (সর্বোত্তম) | পর্যাপ্ত (মাঝারি) | উন্নতি প্রয়োজন (নিম্নমান) |
| --------- | ------------------ | -------------- | -------------------- |
| আরো বেশি GPS data সংগ্রহ করা | টেলিমেট্রি হিসাবে বা আইওটি ডিভাইস সেট আপ এর মাধ্যমে আরো জিপিএস ডেটা পেতে এবং ব্যবহার করতে সক্ষম | আরো বেশি GPS data পেতে সক্ষম হলেও ব্যবহার করতে ব্যার্থ|আরো বেশি GPS data পেতে ব্যার্থ |

@ -1,9 +0,0 @@
# Dummy File
This file acts as a placeholder for the `translations` folder. <br>
**Please remove this file after adding the first translation**
For the instructions, follow the directives in the [translations guide](https://github.com/microsoft/IoT-For-Beginners/blob/main/TRANSLATIONS.md) .
## THANK YOU
We truly appreciate your efforts!

@ -0,0 +1,24 @@
# ফার্ম থেকে ফ্যাক্টরি তে পরিবহন - আইওটি দ্বারা খাদ্য সরবরাহ ট্র্যাক করা
অনেক কৃষকই বিক্রয় করার জন্য খাদ্য উৎপাদন করে - হয় তারা বাণিজ্যিক কৃষক যারা তাদের উত্থিত সমস্ত কিছু বিক্রি করে বা তারা জীবিকা নির্বাহী কৃষক যারা তাদের প্রয়োজন এর অতিরিক্ত অংশ বিক্রি করে। একরকম খাবার খামার থেকে ভোক্তার কাছে পৌঁছাতে হবে এবং এটি সাধারণত খামার থেকে হাব বা প্রসেসিং প্লান্ট, তারপরে স্টোরগুলিতে পরিবহনের উপর নির্ভর করে। উদাহরণস্বরূপ, একজন কৃষক টমেটো সংগ্রহ করবেন, বাক্সগুলিতে প্যাক করবেন, বাক্সগুলিকে একটি ট্রাকের মধ্যে লোড করবেন এবং প্রসেসিং প্ল্যানেটে পৌঁছে দেবেন। টমেটোগুলি এর পরে বাছাই করা হবে এবং সেখান থেকে প্রক্রিয়াজাত খাবার, খুচরা বিক্রয়, বা রেস্তোঁরাগুলিতে গ্রাহকদের কাছে সরবরাহ করা হবে
আইওটি ডিভাইস এর মাধ্যমে ট্রানজিটেও খাবারগুলি ট্র্যাক করা যায়, যা এই সরবরাহ শৃঙ্খলায় (supply chain) সহায়তা করতে পারে - চালকদের কোথায় যাওয়া উচিত তা নিশ্চিত করা, যানবাহনের অবস্থানগুলি পর্যবেক্ষণ করা এবং যানবাহনগুলি পৌঁছানোর সময় সতর্কতা অবলম্বন করা যাতে খাবারটি দ্রুত আনলোড করা যায় এবং যত তাড়াতাড়ি সম্ভব প্রক্রিয়াজাতকরণের জন্য প্রস্তুত করা সম্ভব হয়।
> 🎓 *সরবরাহ শৃঙ্খলা* বা *Supply chain* হলো কিছু তৈরি এবং সরবরাহ করার ক্রিয়াকলাপ। উদাহরণস্বরূপ, টমেটো চাষের ক্ষেত্রে, সাপ্লাই চেইনে বীজ, মাটি, সার এবং জলের সরবরাহ, একটি কেন্দ্রীয় হাবের দ্বারা টমেটো বিতরণ, সুপার মার্কেটের স্থানীয় হাবগুলিতে পরিবহন, পৃথক সুপার মার্কেটে পরিবহন, প্রদর্শনীতে প্রদর্শন করা, তারপরে বিক্রি করা হয় একজন ভোক্তার কাছে যিনি তা খেতে বাড়িতে নিয়ে যান। প্রতিটি পদক্ষেপই এখানে সাপ্লাই চেইনের অংশ।
> 🎓 সাপ্লাই চেইনের পরিবহণের অংশকে বলা হয় *logistics*
এই চারটি পাঠে, আমরা দেখবো কীভাবে খাদ্য (ভার্চুয়াল) ট্রাকে বোঝাই করে খাবারের তদারকির মাধ্যমে সরবরাহের চেইনের উন্নতি করতে ইন্টারনেট অফ থিংস প্রয়োগ করা যায়, যেখানে যানবাহনের গন্তব্যস্থলে পৌঁছানো পর্যন্ত ট্র্যাক করা হয়। আমরা জিপিএস ট্র্যাকিং, জিপিএস ডেটা কীভাবে সংরক্ষণ এবং ভিজ্যুয়ালাইজ করব এবং কীভাবে কোন ট্রাক তার গন্তব্যস্থলে পৌঁছালে ঠিকমতো তার ব্যাপারে জানানো যায় তা শিখবো।
> 💁 এই লেসনগুলোতে আমরা কিছু ক্লাউড রিসোর্স ব্যবহার করবো। এখানে সবগুলো প্রজেক্ট সম্পূর্ণ না হলেও, আমাদেরকে [প্রজেক্ট ক্লীন-আপ](../translations/clean-up.bn.md) করতে হবে।
## পাঠসমূহ
1. [লোকেশন ট্র্যাকিং](../lessons/1-location-tracking/translations/README.bn.md)
1. [লোকেশন ডেটা সংরক্ষণ](../lessons/2-store-location-data/translations/README.bn.md)
1. [লোকেশন ডেটা প্রদর্শন](../lessons/3-visualize-location-data/translations/README.bn.md)
1. [জিওফেন্স](../lessons/4-geofences/translations/README.bn.md)
## ক্রেডিট
♥️ ভালোবাসার সাথে প্রতিটি অধ্যায় লিখেছেন [Jen Looper](https://github.com/jlooper) এবং [Jim Bennett](https://GitHub.com/JimBobBennett) ।

@ -85,7 +85,7 @@
| 08 | [ফার্ম](../2-farm) | উদ্ভিদকে ক্লাউডে সংযুক্ত করা | ক্লাউড এবং ক্লাউড-হোস্ট করা আইওটি পরিষেবাগুলি সম্পর্কে জ্ঞান অর্জন এবং কীভাবে আমাদের উদ্ভিদটিকে পাবলিক এমকিউটিটি ব্রোকারের পরিবর্তে ক্লাউডে সংযুক্ত করতে হবে তা শেখা | [উদ্ভিদকে ক্লাউডে সংযুক্ত করা](../2-farm/lessons/4-migrate-your-plant-to-the-cloud/translations/README.bn.md) |
| 09 | [ফার্ম](../2-farm) | অ্যাপ্লিকেশন লজিককে ক্লাউডে স্থানান্তর | ক্লাউডে কীভাবে অ্যাপ্লিকেশন লজিক লিখতে হবে যাতে তা আইওটি ম্যাসেজের প্রতিক্রিয়া জানাতে পারে তা শেখা| [অ্যাপ্লিকেশন লজিককে ক্লাউডে স্থানান্তর](../2-farm/lessons/5-migrate-application-to-the-cloud/translations/README.bn.md) |
| 10 | [ফার্ম](../2-farm) | উদ্ভিদের নিরাপত্তা নিশ্চিতকরণ | আইওটি তে নিরাপত্তা সম্পর্কে জানা এবং Key ও Certificate এর সাহায্যে আমাদের উদ্ভিদটিকে কীভাবে সুরক্ষিত রাখা যায় তা শেখা | [উদ্ভিদের নিরাপত্তা নিশ্চিতকরণ](../2-farm/lessons/6-keep-your-plant-secure/translations/README.bn.md) |
| 11 | [পরিবহন](../3-transport) | Location tracking | আইওটি ডিভাইসে জিপিএস লোকেশন ট্র্যাকিং শেখা | [Location tracking](../3-transport/lessons/1-location-tracking/README.md) |
| 11 | [পরিবহন](../3-transport) | লোকেশন ট্র্যাকিং | আইওটি ডিভাইসে জিপিএস লোকেশন ট্র্যাকিং শেখা | [লোকেশন ট্র্যাকিং](../3-transport/lessons/1-location-tracking/translations/README.bn.md) |
| 12 | [পরিবহন](../3-transport) | Store location data | পরবর্তী সময়ে বিশ্লেষণ বা চিত্রভিত্তিক ডেটা প্রদর্শন (Visualization) এর জন্য আইওটি ডেটা কীভাবে স্টোর করা যায় তা জানা | [Store location data](../3-transport/lessons/2-store-location-data/README.md) |
| 13 | [পরিবহন](../3-transport) | Visualize location data |মানচিত্রে অবস্থানের ডেটা প্রদর্শন করা এবং মানচিত্রগুলি কীভাবে ২টি মাত্রায় বাস্তব ত্রিমাত্রিক বিশ্বের উপস্থাপন করে সে সম্পর্কে জ্ঞান অর্জন | [Visualize location data](../3-transport/lessons/3-visualize-location-data/README.md) |
| 14 | [পরিবহন](../3-transport) | Geofences | Geofences সম্পর্কে জানা এবং কীভাবে এটি ব্যবহার করে সাপ্লাই চেইনের বিভিন্ন পর্যায়ের বাহনগুলো যখন গন্তব্যের কাছাকাছি পৌঁছায় তখন এলার্ট দেয়া যায় তা শেখা | [Geofences](../3-transport/lessons/4-geofences/README.md) |

Loading…
Cancel
Save