# GPS ഡാറ്റ വായിക്കല്‍ - വര്‍ച്ച്വല്‍ ഐഒടി ഹാര്‍ഡ്വെയര്‍ പാഠത്തിന്റെ ഈ ഭാഗത്തില്‍, നിങ്ങൾ നിങ്ങളുടെ വർച്ച്വല്‍ ഐഒടി ഡിവൈസിലേക്ക് ഒരു GPS സെന്‍സര്‍ ചേർക്കുകയും അതിൽ നിന്നുള്ള മൂല്യങ്ങൾ വായിക്കുകയും ചെയ്യും. ## വര്‍ച്ച്വല്‍ ഹാര്‍ഡ്വെയര്‍ വർച്ച്വൽ ഐഒടി ഉപകരണത്തിൽ UART വഴി സീരിയൽ പോർട്ട് വഴി ആക്‌സസibile ആകുന്ന ഒരു സിമുലേറ്റഡ് GPS സെൻസർ ഉപയോഗിക്കും. ഭൗതിക GPS സെൻസർ GPS ഉപഗ്രഹങ്ങളിൽ നിന്ന് റേഡിയോ തരംഗങ്ങൾ പിടിക്കാൻ ഒരു ആൻടേനയുണ്ടാകുകയും GPS സിഗ്നലുകൾ GPS ഡാറ്റയാക്കി മാറ്റുകയും ചെയ്യും. വർച്ച്വൽ പതിപ്പ് ഇതിനെ സിമുലേറ്റ് ചെയ്യുന്നു, നിങ്ങൾക്ക് ഒരു ലാറ്റിറ്റ്യൂഡ്, ലോങ്ഗിറ്റ്യൂഡ് സജ്ജീകരിക്കാനോ, കച്ച media NMEA വാക്യങ്ങൾ അയക്കാനോ അല്ലെങ്കിൽ പര്യവേഷണാനുക്രമത്തിൽ തിരിച്ചുവരാൻ കഴിയുന്ന ഒരുപാടു സ്ഥിതികളുള്ള ഒരു GPX ഫയൽ അപ്‌ലോഡ് ചെയ്യാനോ അനുവദിക്കുന്നു. > 🎓 NMEA വാക്യങ്ങൾ ഈ പാഠത്തിൽ പിന്നീട് സംവരണം ചെയ്യുന്നതാണ് ### സെന്‍സര്‍ CounterFit-ലേക്ക് ചേർക്കുക ഒരു virtual GPS സെൻസർ ഉപയോഗിക്കാൻ, നിങ്ങൾക്കു CounterFit ആപ്പിൽ ഒന്നും ചേർക്കേണ്ടതാണ് #### ജോലി - സെൻസർ CounterFit-ലേക്ക് കൂടിക്കുക GPS സെൻസർ CounterFit ആപ്പിൽ ചേർക്കുക. 1. നിങ്ങളുടെ കംപ്യൂട്ടറിലെ `gps-sensor` എന്ന ഫോൾഡറിൽ ഒരു പുതിയ Python ആപ്പ് സൃഷ്ടിച്ച് അതിൽ `app.py` എന്ന ഒരു ഫയൽ പ്രാപ്തമാക്കി Python virtual environment സജ്ജമാക്കുകയും CounterFit പിപ് പാക്കേജുകൾ ചേർക്കുകയും ചെയ്യുക. > ⚠️ ആവശ്യമായി വന്നാൽ [പഠനത്തിൽ ബാഗ്ദാനീകമായി CounterFit Python പ്രൊജക്റ്റ് സജ്ജീകരിക്കുന്നതിന് ഉള്ള നിർദേശങ്ങളെ](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md) കാണുക. 1. UART അധിഷ്ഠിത സെൻസറുകളുമായി സീരിയൽ കണക്ഷനിലൂടെ സംസാരിക്കുന്ന CounterFit ഷിം ഇൻസ്റ്റാൾ ചെയ്യാൻ ഒരു അധിക പിപ് പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യുക. virtual environment പ്രവർത്തന സജ്ജമായ ടെർമിനലിൽ നിന്ന് ഇത് ഇൻസ്റ്റാൾ ചെയ്യുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക. ```sh pip install counterfit-shims-serial ``` 1. CounterFit വെബ് ആപ്പ് പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക 1. ഒരു GPS സെൻസർ സൃഷ്ടിക്കുക: 1. *Sensors* പാനലിലെ *Create sensor* ബോക്സിൽ *Sensor type* ബോക്സ് ഡ്രോപ്പ് ചെയ്ത് *UART GPS* തിരഞ്ഞെടുക്കുക. 1. *Port* ഐറ്റം */dev/ttyAMA0* ആയി അവഗണിക്കരുത് 1. `/dev/ttyAMA0` പോർട്ടിലേക്ക് GPS സെൻസർ സൃഷ്ടിക്കാൻ **Add** ബട്ടൺ അമർത്തുക ![The GPS sensor settings](../../../../../translated_images/ml/counterfit-create-gps-sensor.6385dc9357d85ad1.webp) GPS സെൻസർ സൃഷ്ടിച്ച ശേഷം സെൻസറുകളുടെ പട്ടികയിൽ കാണിക്കും. ![The GPS sensor created](../../../../../translated_images/ml/counterfit-gps-sensor.3fbb15af0a536756.webp) ## GPS സെൻസർ പ്രോഗ്രാം ചെയ്യുക വർച്ച്വൽ ഐഒടി ഉപകരണം ഇപ്പോൾ virtual GPS സെൻസർ ഉപയോഗിക്കാൻ പ്രോഗ്രാം ചെയ്യാം. ### ജോലി - GPS സെൻസർ പ്രോഗ്രാം ചെയ്യുക GPS സെൻസർ ആപ്പ് പ്രോഗ്രാം ചെയ്യുക. 1. `gps-sensor` ആപ്പ് VS Codeൽ തുറന്നിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക 1. `app.py` ഫയൽ തുറക്കുക 1. CounterFit-യുമായി ആപ്പ് ബന്ധിപ്പിക്കാൻ `app.py`യുടെ മുകളിൽ താഴെ കാണുന്ന കോഡ് ചേർക്കുക: ```python from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) ``` 1. ഈ കോഡിലേക്ക് താഴെ കാണുന്ന കോഡ് കൂട്ടിച്ചേർക്കുക, CounterFit സീരിയൽ പോർട്ട് ഉൾപ്പെടെ ചില ആവശ്യമായ ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യാൻ: ```python import time import counterfit_shims_serial serial = counterfit_shims_serial.Serial('/dev/ttyAMA0') ``` ഈ കോഡ് `counterfit_shims_serial` പിപ് പാക്കേജിൽ നിന്ന് `serial` മോഡ്യുവൾ ഇറക്കുമതി ചെയ്യുന്നുണ്ട്. പിറവിയിൽ `/dev/ttyAMA0` സീരിയൽ പോർട്ടുമായി കണക്ഷൻ സ്ഥാപിക്കുന്നു - ഇത് virtual GPS സെൻസറിന്റെ UART പോർട്ടിന്റെ സീരിയൽ പോർട്ടിന്റെ വിലാസമാണ്. 1. സീരിയൽ പോർട്ടിൽ നിന്നുള്ള മൂല്യങ്ങൾ വായിച്ച് കോൺസോളിൽ പ്രിന്റ് ചെയ്യാൻ താഴെ കാണുന്ന കോഡ് ചേർക്കുക: ```python def print_gps_data(line): print(line.rstrip()) while True: line = serial.readline().decode('utf-8') while len(line) > 0: print_gps_data(line) line = serial.readline().decode('utf-8') time.sleep(1) ``` `print_gps_data` എന്നു പേരുള്ള ഒരു ഫംഗ്ഷൻ നിർവചിച്ചിട്ടുണ്ട് ഇത് കിട്ടിയ ലൈൻ കോൺസോളിൽ പ്രിന്റ് ചെയ്യുന്നു. തുടർന്ന് കോഡ് അനന്തം ലൂപ്പിൽ പ്രവേശിച്ച്, സീരിയൽ പോർട്ടിൽ നിന്ന് സാധ്യമായത്ര ലൈൻ ടെക്സ്റ്റ് വായിക്കുന്നു. ഓരോ ലൈൻക്കും `print_gps_data` ഫംഗ്ഷൻ വിളിക്കുന്നു. എല്ലാ ഡാറ്റയും വായിച്ച ശേഷം ലൂപ്പ് 1 സെക്കൻഡ് സ്ലീപ്പ് ചെയ്ത് വീണ്ടും ശ്രമിക്കുന്നു. 1. ഈ കോഡ് റണ്ചെയ്യുക, CounterFit ആപ്പ് പ്രവർത്തിക്കുന്ന ടെർമിനലിന് വ്യത്യസ്തമായ മറ്റൊരു ടേർമിനൽ ഉപയോഗിക്കുന്നത് ഉറപ്പാക്കുക, അതിലൂടെ CounterFit ആപ്പ് തുടർച്ചയായി പ്രവർത്തിക്കട്ടെ. 1. CounterFit ആപ്പിൽ നിന്ന് GPS സെൻസറിന്റെ മൂല്യം മാറ്റുക. നിങ്ങൾക്ക് താഴെ പറയുന്ന മാർഗങ്ങളിലൊന്നിൽ ഇത് ചെയ്യാം: * **Source**-ന് `Lat/Lon` തിരഞ്ഞെടുക്കുക, ശേഷം স্পഷ്ടമായ latitude, longitude, GPS ഫിക്സിന് ഉപയോഗിച്ച ഉപഗ്രഹങ്ങളുടെ എണ്ണം സജ്ജമാക്കുക. ഈ മൂല്യം ഒരിക്കൽ മാത്രം അയയ്ക്കും, അതിനാൽ **Repeat** ബോക്സ് അടയാളപ്പെടുത്തുക, ഡാറ്റ ഓരോ സെക്കൻഡിലും ആവർത്തിക്കപ്പെടാൻ. ![The GPS sensor with lat lon selected](../../../../../translated_images/ml/counterfit-gps-sensor-latlon.008c867d75464fbe.webp) * **Source**-ന് `NMEA` തിരഞ്ഞെടുക്കുക, NMEA വാക്യങ്ങൾ ടെക്സ്റ്റ് ബോക്സിൽ ചേർക്കുക. ഈ മൂല്യങ്ങൾ കാബി പകുതിയോളം അയയ്ക്കും, ഓരോ പുതിയ GGA (പദവി ഫിക്‌സ്) വാക്യം വായിക്കുന്നതിന് മുമ്പ് 1 സെക്കൻഡ് വൈകിപ്പിക്കും. ![The GPS sensor with NMEA sentences set](../../../../../translated_images/ml/counterfit-gps-sensor-nmea.c62eea442171e17e.webp) ഈ വാക്യങ്ങൾ ഉണ്ടാക്കാൻ [nmeagen.org](https://www.nmeagen.org) പോലെയുള്ള ഒരു ടൂളിന്റെ സഹായം ഉപയോഗിക്കാം. ഒരു മാപ്പിൽ രേഖപ്പെടുത്തി ഈ വാക്യങ്ങൾ സൃഷ്ടിക്കാം. ഈ മൂല്യങ്ങൾ ഒരിക്കൽ മാത്രം അയയ്ക്കും, അതിനാൽ **Repeat** ബോക്സ് അടയാളപ്പെടുത്തുക, പൂർണ്ണമായ ഡാറ്റ അയച്ച ശേഷം ഓരോ സെക്കൻഡിലും ആവർത്തിക്കും. * **Source**-ന് GPX ഫയൽ തിരഞ്ഞെടുക്കുക, ട്രാക്ക് ലൊക്കേഷനുകൾ ഉള്ള GPX ഫയൽ അപ്‌ലോഡ് ചെയ്യുക. [AllTrails](https://www.alltrails.com/) പോലെ പ്രശസ്തമായ ഭൂപടം, ട്രക്കിംഗ് സൈറ്റുകളിൽ നിന്ന് GPX ഫയലുകൾ ഡൗൺലോഡ് ചെയ്യാം. ഈ ഫയലുകളിൽ ഒരു ട്രെയിലായി നിരവധി GPS സ്ഥലങ്ങൾ ഉണ്ടാകും, GPS സെൻസർ ഓരോ പുതിയ സ്ഥലം 1 സെക്കൻഡ് ഇടവേളയിൽ തിരികെ നൽകും. ![The GPS sensor with a GPX file set](../../../../../translated_images/ml/counterfit-gps-sensor-gpxfile.8310b063ce8a425c.webp) ഈ മൂല്യങ്ങൾ ഒന്നുപോലും ഒരിക്കൽ മാത്രം അയയ്ക്കും, എന്നാൽ **Repeat** ബോക്സ് സജീവമാക്കി ഒരു സെക്കൻഡ് ഇടവേളയ്ക്ക് ശേഷം ഡാറ്റ ആവർത്തിക്കാൻ കഴിയും. GPS ക്രമീകരണങ്ങൾ ക്രമീകരിച്ചതിന് ശേഷം സൃഷ്ടിച്ച മൂല്യങ്ങളുമായി സെൻസറിനെ സമർപ്പിക്കാൻ **Set** ബട്ടൺ തിരഞ്ഞെടുക്കുക. 1. GPS സെൻസറിൽ നിന്നുള്ള കച്ച മുകളിൽ തോന്നിയതുപോലെയുള്ള ഔട്ട്പുട്ട് നിങ്ങൾക്ക് കാണാം: ```output $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 ``` > 💁 നിങ്ങൾ ഈ കോഡ് [code-gps/virtual-device](../../../../../3-transport/lessons/1-location-tracking/code-gps/virtual-device) ഫോൾഡറിൽ കണ്ടെത്താവുന്നതാണ്. 😀 നിങ്ങളുടെ GPS സെൻസർ പ്രോഗ്രാം വിജയകരമായി പൂർത്തിയായി! --- **പരാമർശവും ഉത്തരവാദിത്വത്തിന്റെ ഒഴിവാക്കലും**: ഈ ഡോക്യുമെന്റ് AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. ഞങ്ങൾ കൃത്യത ഉറപ്പാക്കാൻ പരിശ്രമമല്ലെങ്കിലും, യാന്ത്രിക വിവർത്തനങ്ങളിൽ പിഴവുകൾ അല്ലെങ്കിൽ അശുദ്ധികൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കണേ. ഓറിയിജിനൽ പ്രമാണം അതിന്റെ മാതൃഭാഷയിൽ ഏറ്റവും വിശ്വസനീയമായ ഉറവിടമായി അംഗീകരിക്കണം. നിർണായക പാഠ്യ വിവരങ്ങൾക്ക് പ്രൊഫഷണൽ മാനുഷിക വിവർത്തനം നിർദ്ദേശിക്കുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിനാൽ ഉണ്ടായ ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾ അല്ലെങ്കിൽ ദ്വണ്ഢങ്ങളെക്കുറിച്ചും ഞങ്ങൾ ഉത്തരവാദിത്വം ഏറ്റെടുക്കില്ല.