14 KiB
ការអានទិន្នន័យ GPS - Raspberry Pi
ក្នុងផ្នែកនេះនៃមេរៀន អ្នកនឹងបន្ថែមឧបករណ៍សំយោគ GPS ទៅកាន់ Raspberry Pi របស់អ្នក ហើយអានតម្លៃពីវា។
ហា៊ដវែរមេ
Raspberry Pi ត្រូវការឧបករណ៍សំយោគ GPS។
ឧបករណ៍ដែលអ្នកនឹងប្រើគឺ ឧបករណ៍ Grove GPS Air530។ ឧបករណ៍នេះអាចភ្ជាប់ទៅប្រព័ន្ធ GPS ជាច្រើនសម្រាប់កំណត់ទីតាំងយ៉ាងលឿន និងត្រឹមត្រូវ។ ឧបករណ៍ត្រូវបានបង្កើតពី 2 ផ្នែក - អេឡិចត្រូនិចមេនៃឧបករណ៍ និងអង់តែនាខាងក្រៅភ្ជាប់ដោយខ្សែតូចមួយដើម្បីទទួលរលកកាំរស្មីពីផ្កាយយោង។
នេះជាឧបករណ៍ UART ដូច្នេះវាបញ្ចូនទិន្នន័យ GPS តាមរយៈ UART។
ភ្ជាប់ឧបករណ៍ GPS
ឧបករណ៍ Grove GPS អាចភ្ជាប់ទៅកាន់ Raspberry Pi។
ជំនួយ - ភ្ជាប់ឧបករណ៍ GPS
ភ្ជាប់ឧបករណ៍ GPS។
-
បញ្ចូលចុងខ្លះមួយនៃខ្សែ Grove ទៅក្នុងប្រអប់នៅលើឧបករណ៍ GPS។ វានឹងភ្ជាប់តែនៅផ្នែកមួយទេ។
-
នៅពេលដែល Raspberry Pi មិនមានថាមពល សូមភ្ជាប់ចុងខ្វះនៃខ្សែ Grove ទៅប្រអប់ UART ដែលសម្គាល់ជា UART នៅលើ Grove Base hat ដែលភ្ជាប់ទៅ Pi។ ប្រអប់នេះមានទីតាំងនៅជួរមកណាត់ផ្នែកកណ្ដាល ផ្នែកក្បែរស្លុតកាបូសេអេស ឆ្វេងពីគ្មានចំពោះសំណុំប៊ក USB និងប្រអប់អ៊ីធើណិត។
-
ដាក់ឧបករណ៍ GPS ដើម្បីអង់តែនាខាប់ផ្គត់ផ្គង់ឲ្យអាចមើលឃើញមេឃបាន - ល្អបើនៅក្បែរបង្អួចបើក ឬនៅខាងក្រៅ។ វាងាយស្រួលក្នុងការ សំឡេងសញ្ញាកាន់តែច្បាស់ដោយគ្មានអ្វីនៅចន្លោះអង់តែនា។
ពិប្រតិការឧបករណ៍ GPS
Raspberry Pi ឥឡូវនេះអាចត្រូវបានបង្កើតកម្មវិធីដើម្បីប្រើឧបករណ៍ GPS ដែលភ្ជាប់។
ជំនួយ - ពិប្រតិការឧបករណ៍ GPS
បង្កើតកម្មវិធីសម្រាប់ឧបករណ៍។
-
បើកភ្លើង Pi ហើយរង់ចាំឲ្យវាបើករួច។
-
ឧបករណ៍ GPS មាន LED 2ដែល - LED ពណ៌ខៀវដែលភ្លឺបញ្ចាំងពេលទិន្នន័យត្រូវបានបញ្ជូន និង LED ពណ៌បៃតងដែលភ្លឺបញ្ចាំងរៀងរាល់វិនាទីពេលទទួលទិន្នន័យពីផ្កាយ។ សូមប្រាកដថា LED ខៀវភ្លឺពេលបើក Pi។ បន្ទាប់ពីពេលខ្លះ LED បៃតងនឹងភ្លឺ - ប្រសិនបើមិនបាន សូមតំរូវផ្លាស់ទីអង់តែនា។
-
បើក VS Code ម្តងទៀត ឬភ្ជាប់ជាមួយជំនួយ Remote SSH extension។
⚠️ អ្នកអាចយោងទៅ ការណែនាំក្នុងការតម្លើង និងបើក VS Code នៅមេរៀនទី 1 ប្រសិនបើត្រូវការ។
-
ជាមួយនឹងកំណែថ្មីនៃ Raspberry Pi ដែលគាំទ្រ Bluetooth មានជម្លោះរវាងច្រកស៊េរីដែលប្រើសម្រាប់ Bluetooth និងច្រកស៊េរីដែល Grove UART ប្រើ។ ដើម្បីដោះស្រាយបញ្ហានេះ សូមធ្វើដូចតទៅ៖
-
ពី Terminal របស់ VS Code កែប្រែឯកសារ
/boot/config.txtដោយប្រើnanoដែលជាកម្មវិធីកែសម្រួលអត្ថបទក្នុង Terminal ដោយប្រើពាក្យបញ្ជាដូចខាងក្រោម៖sudo nano /boot/config.txtឯកសារនេះមិនអាចកែប្រែដោយ VS Code ទេ ព្រោះអ្នកត្រូវតែប្រើសិទ្ធិ
sudoដែលមានសិទ្ធិខ្ពស់។ VS Code មិនដំណើរការនេះទេ។ -
ប្រើក្តារចុចដើម្បីរុករកទៅចុងចុងឯកសារ បន្ទាប់មកចម្លងកូដខាងក្រោម ហើយបិទបញ្ចូលនៅចុងឯកសារ៖
dtoverlay=pi3-miniuart-bt dtoverlay=pi3-disable-bt enable_uart=1អ្នកអាចបិទបញ្ចូលដោយប្រើកត្តាចុចដូចធម្មតាសម្រាប់ឧបករណ៍របស់អ្នក (
Ctrl+vនៅលើ Windows, Linux ឬ Raspberry Pi OS,Cmd+vនៅលើ macOS)។ -
រក្សាទុកឯកសារនិងចេញពី nano ដោយចុច
Ctrl+x។ ចុចyនៅពេលមានសំណួរថាតើអ្នកចង់រក្សាទុក buffer ដែលបានកែប្រែរួចឬនៅបន្ទាប់មកចុចenterដើម្បីបញ្ជាក់ថាចង់លើសរសេរ/boot/config.txt។ប្រសិនបើអ្នកមានកំហុស អ្នកអាចចាកចេញដោយមិនរក្សាទុក ហើយធ្វើជំហាននេះម្តងទៀត។
-
កែប្រែឯកសារ
/boot/cmdline.txtប្រើ nano ដោយប្រើពាក្យបញ្ជាដូចខាងក្រោម៖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 របស់អ្នកឡើងវិញ បន្ទាប់មកភ្ជាប់ឡើងវិញនៅក្នុង VS Code ពេល Pi បានបើកឡើងវិញ។
-
-
ពី Terminal បង្កើតថតថ្មីមួយក្នុងថតផ្ទះអ្នកប្រើ
piឈ្មោះថាgps-sensor។ បង្កើតឯកសារមួយនៅក្នុងថតនេះឈ្មោះថាapp.py។ -
បើកថតនេះនៅក្នុង VS Code
-
មូឌុល GPS ផ្ញើទិន្នន័យ UART តាមច្រកស៊េរីមួយ។ តម្លើងបណ្ណាល័យ Pip
pyserialដើម្បីទំនាក់ទំនងជាមួយច្រកស៊េរីពីកូដ Python របស់អ្នក៖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)កូដនេះនាំចូលមូឌុល
serialពីបណ្ណាល័យ Pippyserial។ វាភ្ជាប់ទៅកាន់ច្រកស៊េរី/dev/ttyAMA0- ដែលជាអាសយដ្ឋានច្រកស៊េរីដែល Grove Pi Base Hat ប្រើសម្រាប់ច្រក UART របស់វា។ វាប្រលូតទិន្នន័យដែលមានស្រាប់ពីការតភ្ជាប់ច្រកស៊េរីនេះ។បន្ទាប់មកមានមុខងារ
print_gps_dataដែលបោះពុម្ពអត្ថបទដែលបានបញ្ជូនទៅកាន់ console។បន្ទាប់មកកូដធ្វើដំណើរជាអនន្តភាព អានបន្ទាត់អត្ថបទច្រើនដែលអាចពីច្រកស៊េរីនៅក្នុងរាល់វដ្ដហាត់។ វាហៅមុខងារ
print_gps_dataសម្រាប់បន្ទាត់នីមួយៗ។បន្ទាប់ពីអានទិន្នន័យទាំងអស់រួច វាដំណេីរកំណត់ ១ វិនាទី ហើយព្យាយាមម្ដងទៀត។
-
ដំណើរការកូដនេះ។ អ្នកនឹងឃើញលទ្ធផលដើមពីឧបករណ៍ GPS ប្រហែលដូចខាងក្រោម៖
$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ប្រសិនបើអ្នកទទួលបានកំហុសពីមួយក្នុងចំណោមនេះពេលបញ្ឈប់និងចាប់ផ្តើមកូដឡើងវិញ សូមបន្ថែមប្លុក
try - exceptទៅក្នុងរង្វិល while របស់អ្នក។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។ ខណៈពេលដែលពួកយើងខិតខំសម្រាប់ភាពត្រឹមត្រូវ សូមដឹងថាបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាម្ចាស់របស់វាគួរត្រូវបានពិចារណាជាអ្នកផ្គត់ផ្គង់ព័ត៌មានស្របច្បាប់។ សម្រាប់ព័ត៌មានសំខាន់ សូមផ្ដល់អាទិភាពការបកប្រែដោយមនុស្សជំនាញ។ ពួកយើងមិនទទួលខុសត្រូវចំពោះការយល់ខុស ឬការបកស្រាយខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។

