16 KiB
GPS ഡാറ്റ വായിക്കുക - Raspberry Pi
ഈ പാഠത്തിന്റെ ഈ ഭാഗത്ത്, നിങ്ങൾ നിങ്ങളുടെ Raspberry Pi-ലേക്ക് GPS സെൻസർ ചേർത്തു, അതിൽ നിന്നുള്ള മൂല്യങ്ങൾ വായിക്കും.
ഹാർഡ്വെയർ
Raspberry Pi-ക്ക് ഒരു GPS സെൻസർ ആവശ്യമാണ്.
നിങ്ങൾ ഉപയോഗിക്കുന്ന സെൻസർ Grove GPS Air530 സെൻസർ ആണ്. ഈ സെൻസർ വ്യത്യസ്ത GPS സിസ്റ്റങ്ങളുടെ കൂടിയുള്ള കണക്ഷൻ മുഖേന വേഗവും കൃത്യവുമായ ഫിക്സിനെ സാധ്യമാക്കുന്നു. സെൻസ് രണ്ടുഭാഗങ്ങളായി നിർമ്മിച്ചിരിക്കുന്നു - സെൻസറിന്റെ മൗലിക ഇലക്ട്രോണിക്സ്, കൂടാതെ വിവിധ ഉപഗ്രഹങ്ങളിൽ നിന്നുള്ള റേഡിയോ തരംഗങ്ങൾ പകരുന്നതിനായി തമ്പർതിയുള്ള വയർ വഴി ബന്ധിപ്പിച്ച ഉള്ളേതായി ഒരു പുറംഅന്തേന.
ഇത് UART സെൻസർ ആണ്, അതിനാൽ GPS ഡാറ്റ UART വഴി അയക്കും.
GPS സെൻസർ കണക്റ്റ് ചെയ്യുക
Grove GPS സെൻസർ Raspberry Pi-യുമായി കണക്റ്റ് ചെയ്യാൻ കഴിയും.
ചുമതല - GPS സെൻസർ കണക്റ്റ് ചെയ്യുക
GPS സെൻസർ കണക്റ്റ് ചെയ്യുക.
-
Grove കേബിളിന്റെ ഒരു അറ്റം GPS സെൻസറിലെ സോക്കറ്റിലേക്ക് ഇറയ്ക്കുക. ഇത് ഒരേയൊരു രീതിയിൽ മാത്രം പോകും.
-
Raspberry Pi പവർ ഓഫ് ചെയ്തിരിക്കുന്നപ്പോൾ, Grove കേബിളിന്റെ മറ്റേ അറ്റം Grove Base ഹാറ്റിൽ Pi-യോട് ചേർന്ന UART സോക്കറ്റിലെ UART എന്ന് അടയാളപ്പെടുത്തിയ ഭാഗത്തു കണക്റ്റ് ചെയ്യുക. ഈ സോക്കറ്റ് മധ്യനില റോയിൽ, SD കാർഡ് സ്ലോട്ടിന് ഏറ്റവും അടുത്തുള്ള പക്കിലാണുള്ളത്, USB പോർട്ടുകളും ഇതർനെറ്റ് സോക്കറ്റുകളുമുള്ള മറുവശമല്ല.
-
GPS സെൻസറിന്റെ അറ്റേന ആകാശത്തിനായി കാണാൻ കഴിയുന്നിടത്ത്, ഉദാഹരണത്തിന് ഒരു തുറന്ന ജനാലക്കപ്പം അല്ലെങ്കിൽ പുറത്തേക്ക്, വച്ചിടുക. അന്തേനയ്ക്ക് തടസ്സമില്ലാതെ സിഗ്നലുകൾ സ്വീകരിക്കുന്നത് എളുപ്പമാണ്.
GPS സെൻസർ പ്രോഗ്രാം ചെയ്യുക
Raspberry Pi ഇപ്പോൾ GPS സെൻസർ ഉപയോഗിക്കുന്നതിനായി പ്രോഗ്രാം ചെയ്യാൻ കഴിയും.
ചുമതല - GPS സെൻസർ പ്രോഗ്രാം ചെയ്യുക
ഉപ്പകരണം പ്രോഗ്രാം ചെയ്യുക.
-
Pi-യെ പവറപ്പിച്ച് ബൂട്ട് ആകുന്നതിന് കാത്തിരിക്കുക
-
GPS സെൻസറിന് രണ്ട് LEDകൾ ഉണ്ട് - ഡാറ്റ പ്രക്ഷേപണം നടക്കുമ്പോൾ തിളക്കുന്ന നീല LED, ഉപഗ്രഹങ്ങളിൽ നിന്നും ഡാറ്റ സ്വീകരിക്കുമ്പോൾ ഓരോ സെക്കന്റ് ഇടവിട്ട് തിളക്കുന്ന പച്ച LED. Pi പവർ ചെയ്യുമ്പോൾ നീല LED തിളക്കുന്നത് ഉറപ്പാക്കുക. കുറച്ച് മിനിറ്റുകൾക്കുശേഷം പച്ച LED തിളക്കും - ഇല്ലെങ്കിൽ, antenne സ്ഥാനം മാറ്റേണ്ടിവരും.
-
VS കോഡ് ആരംഭിക്കുക, Pi-ലോ അല്ലെങ്കിൽ Remote SSH എക്സ്റ്റൻഷൻ വഴി കണക്റ്റ് ചെയ്ത്.
⚠️ ആവശ്യമെങ്കിൽ പാഠം 1 ൽ VS കോഡ് സെറ്റപ്പ് ചെയ്യുന്നതും ആരംഭിക്കുന്നതും സംബന്ധിച്ച നിർദേശങ്ങൾ കാണാം.
-
ബ്ളൂടൂത്ത് പിന്തുണയുള്ള പുതിയ Raspberry Pi മോഡലുകളിൽ, ബ്ളൂടൂത്ത് ഉപയോഗിക്കുന്ന സീരിയൽ പോർട്ടിന്റെയും Grove UART പോർട്ടിന്റെയും ഇടയിൽ ഒരു ഗാര്യഭദം ഉണ്ടാകാം. ഇത് പരിഹരിക്കാൻ:
-
VS കോഡ് ടർമിനലിൽ
nanoഎന്ന ടെക്സ്റ്റ് എഡിറ്റർ ഉപയോഗിച്ച്/boot/config.txtഫയൽ എഡിറ്റ് ചെയ്യുക:sudo nano /boot/config.txtഈ ഫയൽ VS കോഡ് സ്റ്റാൻഡേർഡ് പരിധിയിൽ എഡിറ്റ് ചെയ്യാനാകില്ല, കാരണം
sudoഅനുമതികൾ ആവശ്യമാണ്. VS കോഡ് ഈ അനുമതി സാധാരണയായി നൽകാറില്ല. -
ഫയലിന്റെ അവസാനം പോകുവാൻ കേഴ്സർ കീകൾ ഉപയോഗിക്കുക, പിന്നെ താഴെ കാണുന്ന കോഡ് കോപ്പി ചെയ്ത് ഫയലിന്റെ അവസാനം പേസ്റ്റ് ചെയ്യുക:
dtoverlay=pi3-miniuart-bt dtoverlay=pi3-disable-bt enable_uart=1നിങ്ങളുടെ ഉപകരണത്തിന് സാധാരണ കീബോർഡ് ഷോർട്ട്കട്ടുകൾ ഉപയോഗിച്ച് പേസ്റ്റ് ചെയ്യാം (
Ctrl+vവിൻഡോസ്, ലിനക്സ്, Raspberry Pi OS,Cmd+vmacOS). -
ഈ ഫയൽ സേവ് ചെയ്ത്
nanoനിന്നു പുറത്തുവരാൻCtrl+xഅമർത്തുക. മാറ്റം സേവ് ചെയ്യാമോ എന്ന് ചോദിച്ചാൽyഅമർത്തുക, ശേഷം/boot/config.txtoverwrite ചെയ്യുന്നതിന്enterഅമർത്തുക.പിശക് സംഭവിച്ചാൽ സേവ് ചെയ്യാതെയുള്ള പുറത്തുവരാൻ കഴിയും, പിന്നെ വീണ്ടും ശ്രമിക്കുക.
-
nano ഉപയോഗിച്ച്
/boot/cmdline.txtഫയൽ ഇതുപോലെ എഡിറ്റ് ചെയ്യുക:sudo nano /boot/cmdline.txt -
ഈ ഫയലിൽ കമാൻഡ് ലൈൻ കീ/വാല്യു വാക്യങ്ങൾ സ്പേസ് കൊണ്ട് വേർതിരിച്ചിരിക്കുന്നു.
consoleഎന്ന് തുടങ്ങുന്ന ഏത് കീ/വാല്യു ഊം ചരങ്ങൾ നീക്കം ചെയ്യുക. അവ സാധാരണ ഇങ്ങനെ വരും:console=serial0,115200 console=tty1കേഴ്സർ കീ ഉപയോഗിച്ച് അവിടെ പോകുക, പിന്നെ സാധാരണ
delഅല്ലെങ്കിൽbackspaceകീകൾ ഉപയോഗിച്ച് നീക്കംചെയ്യുക.ഉദാഹരണത്തിന് നിങ്ങളുടെ പഴയ ഫയൽ ഇങ്ങനെയാണ്:
console=serial0,115200 console=tty1 root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwaitപുതിയ പതിപ്പ് ഇങ്ങനിരിക്കും:
root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait -
മുകളില് പറയുന്ന പോലെ ഈ ഫയൽ സേവ് ചെയ്ത് nano നിന്നു പുറത്തുവരുക
-
Pi റീബൂട്ട് ചെയ്ത്, പിന്നെ Pi വീണ്ടും ബൂട്ടായ ശേഷം VS കോഡിൽ വീണ്ടും കണക്റ്റ് ചെയ്യുക.
-
-
ടർമിനലിൽ നിന്നും
piഉപയോക്തൃ ഹോം ഡയറക്ടറിയിൽgps-sensorഎന്ന ഫോൾഡർ സൃഷ്ടിക്കുക. ഈ ഫോൾഡറിൾapp.pyഎന്ന ഫയൽ ഉണ്ടാക്കുക. -
ഈ ഫോൾഡർ VS കോഡിൽ തുറക്കുക
-
GPS മോഡ്യൂൾ UART വഴി സീരിയൽ പോർട്ട് വഴി ഡാറ്റ അയയ്ക്കുന്നു. നിങ്ങളുടെ Python കോഡിൽ നിന്ന് സീരിയൽ പോർട്ട് ഉപയോഗിച്ച് ആശയവിനിമയം നടത്താൻ
pyserialപിപ് പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യുക:pip3 install pyserial -
താഴ்கണ്ട കോഡ് നിങ്ങളുടെ
app.pyഫയലിൽ ചേർക്കുക:import time import serial serial = serial.Serial('/dev/ttyAMA0', 9600, timeout=1) serial.reset_input_buffer() serial.flush() 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)ഈ കോഡ്
pyserialപിപ് പാക്കേജിലെserialമോഡ്യൂൾ ഇറക്കുമതി ചെയ്യുന്നു. പിന്നെ/dev/ttyAMA0സീരിയൽ പോർട്ടുമായി കണക്റ്റ് ചെയ്യുന്നു - ഇത് Grove Pi Base ഹാറ്റ് അതിന്റെ UART പോർട്ടിന് ഉപയോഗിക്കുന്ന സീരിയൽ പോർട്ട് വിലാസമാണ്. പിന്നെ ഈ സീരിയൽ കണക്ഷനിൽ നിലവിലുള്ള ഡാറ്റയൊക്കെ നീക്കം ചെയ്യുന്നു.പിന്നാലെ
print_gps_dataഎന്ന ഒരു ഫംഗ്ഷൻ നിർവ്വചിച്ചിരിക്കുന്നു, ഇത് പാസ്സായ ലൈനിനെ കൺസോളിൽ പ്രിന്റ് ചെയ്യുന്നു.പിന്നീട് കോഡ് സ്ഥിരമായി ലൂപിൽ പെട്ടെന്ന് തിരിച്ച് സീരിയൽ പോർട്ടിൽ നിന്ന് എത്ര_LINES_ അടിസ്ഥാനവുമുള്ള നമ്പറിലേക്കുൽ എഴുത്തുകൾ വായിച്ച്, ഓരോ ലൈനിനും
print_gps_dataഫംഗ്ഷൻ വിളിക്കുന്നു.എല്ലാ ഡാറ്റയും വായിച്ചതിനു ശേഷം ലൂപ് 1 സെക്കൻഡ് ഉറങ്ങും, പിന്നെ വീണ്ടും ശ്രമിക്കും.
-
ഈ കോഡ് റൺ ചെയ്യുക. GPS സെൻസറിന്റെ raw output താഴെപോലെയായിരിക്കും കാണുന്നത്:
$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നിങ്ങളുടെ കോഡ് നിർത്തി വീണ്ടും ആരംഭിക്കുമ്പോൾ താഴെ പറയുന്ന പിശകുകളിൽ ഏതെങ്കിലും ലഭിക്കുന്ന പക്ഷം, നിങ്ങളുടെ while ലൂപ്പിലേക്ക്
try - exceptബ്ലോക്ക് ചേർക്കുക.UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 0: invalid start byte UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf1 in position 0: invalid continuation bytewhile True: try: line = serial.readline().decode('utf-8') while len(line) > 0: print_gps_data() line = serial.readline().decode('utf-8') # ആദ്യ ബൈറ്റ് വായിക്കുന്നത് ഒരു അക്ഷരത്തിന്റെ നടുവിലായിരിക്കാനുള്ള യാദൃച്ഛിക സാധ്യതയുണ്ട്. # മറ്റൊരു പൂർണ്ണ വരി വായിച്ച് തുടരുക. except UnicodeDecodeError: line = serial.readline().decode('utf-8') time.sleep(1)
💁 ഈ കോഡ് code-gps/pi ഫോൾഡറിൽ കണ്ടെത്താവുന്നതാണ്.
😀 നിങ്ങളുടെ GPS സെൻസർ പ്രോഗ്രാം വിജയകരമായി നടന്നു!
ഡിസ്ക്ലെയിമര്: ഈ പ്രമാണം AI വിവര്ത്തന സേവനം Co-op Translator ഉപയോഗിച്ച് വിവര്ത്തനം ചെയ്തിരിക്കുന്നു. നാം സതീസ്ക്തതയ്ക്ക് ശ്രമിക്കുന്നതിനിടയിലും, ഓട്ടോമാറ്റിക് വിവര്ത്തനങ്ങളില് പിഴവുകള് അല്ലെങ്കില് അസ്ഥിരതകള് ഉണ്ടായിരിക്കാം എന്നാണ് ദയവായി മനസിലാക്കേണ്ടത്. അസല് ഭാഷയിലെ പ്രമാണം പ്രസക്തമായ നിലവിലുള്ള ഉറവിടമായിട്ട് കണക്കാക്കണം. നിര്ണായക വിവരങ്ങള്ക്കായി, പ്രൊഫഷണല് മാനുഷിക വിവര്ത്തനം ശുപാര്ശ ചെയ്യപ്പെടുന്നു. ഈ വിവര്ത്തനത്തിന്റെ ഉപയോഗത്തില് നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകള്ക്കും പിഴവുകള്ക്കുമുള്ള ഉത്തരവാദിത്വം ഞങ്ങള്ക്കില്ല.

