7.7 KiB
Loe GPS-andmeid - Raspberry Pi
Selles õppetunni osas lisate Raspberry Pile GPS-sensori ja loete sellest väärtusi.
Riistvara
Raspberry Pi vajab GPS-sensorit.
Sensor, mida kasutate, on Grove GPS Air530 sensor. See sensor saab ühenduda mitme GPS-süsteemiga, et tagada kiire ja täpne asukoha määramine. Sensor koosneb kahest osast - sensori elektroonikast ja välisest antennist, mis on ühendatud õhukese juhtmega, et satelliitidelt raadiolaineid vastu võtta.
See on UART-sensor, mis edastab GPS-andmeid UART-i kaudu.
Ühendage GPS-sensor
Grove GPS-sensorit saab ühendada Raspberry Piga.
Ülesanne - ühendage GPS-sensor
Ühendage GPS-sensor.
-
Sisestage Grove-kaabli üks ots GPS-sensori pistikusse. Kaabel läheb sisse ainult ühes suunas.
-
Kui Raspberry Pi on välja lülitatud, ühendage Grove-kaabli teine ots Grove Base hatisse, UART-pistikusse, mis on tähistatud UART. See pistik asub keskmises reas, SD-kaardi pesa lähedal, USB-portide ja Etherneti pesa vastaspoolel.
-
Paigutage GPS-sensor nii, et ühendatud antennil oleks nähtavus taeva suunas - ideaalis avatud akna lähedal või väljas. Selgem signaal on kergemini saadaval, kui antenni ees pole takistusi.
Programmeerige GPS-sensor
Nüüd saab Raspberry Pi programmeerida kasutama ühendatud GPS-sensorit.
Ülesanne - programmeerige GPS-sensor
Programmeerige seade.
-
Lülitage Pi sisse ja oodake, kuni see käivitub.
-
GPS-sensoril on 2 LED-i - sinine LED, mis vilgub andmete edastamisel, ja roheline LED, mis vilgub iga sekund, kui satelliitidelt andmeid vastu võetakse. Veenduge, et sinine LED vilgub, kui Pi sisse lülitate. Mõne minuti pärast hakkab roheline LED vilkuma - kui ei, peate võib-olla antenni asukohta muutma.
-
Käivitage VS Code, kas otse Pi peal või ühenduge Remote SSH laienduse kaudu.
⚠️ Vajadusel saate viidata juhistele VS Code'i seadistamiseks ja käivitamiseks õppetunnis 1.
-
Uuematel Raspberry Pi versioonidel, mis toetavad Bluetoothi, on konflikt Bluetoothi jaoks kasutatava jadapordi ja Grove UART-pordi jadapordi vahel. Selle lahendamiseks tehke järgmist:
-
VS Code'i terminalist redigeerige faili
/boot/config.txtkasutadesnano, sisseehitatud terminali tekstiredaktorit, järgmise käsuga:sudo nano /boot/config.txtSeda faili ei saa VS Code'is redigeerida, kuna vajate
sudoõigusi, kõrgendatud luba. VS Code ei tööta selle loaga. -
Kasutage kursoriklahve, et liikuda faili lõppu, seejärel kopeerige allolev kood ja kleepige see faili lõppu:
dtoverlay=pi3-miniuart-bt dtoverlay=pi3-disable-bt enable_uart=1Kleepimiseks kasutage oma seadme tavalisi klaviatuuri otseteid (
Ctrl+vWindowsis, Linuxis või Raspberry Pi OS-is,Cmd+vmacOS-is). -
Salvestage fail ja väljuge nanost, vajutades
Ctrl+x. Vajutagey, kui küsitakse, kas soovite muudetud puhvri salvestada, ja vajutageenter, et kinnitada, et soovite faili/boot/config.txtüle kirjutada.Kui teete vea, saate väljuda ilma salvestamata ja korrata neid samme.
-
Redigeerige faili
/boot/cmdline.txtnanos järgmise käsuga:sudo nano /boot/cmdline.txt -
Selles failis on mitmeid võtme/väärtuse paare, mis on eraldatud tühikutega. Eemaldage kõik võtme
consolevõtme/väärtuse paarid. Need näevad tõenäoliselt välja umbes sellised:console=serial0,115200 console=tty1Kursoriklahvide abil saate liikuda nende kirjeteni ja kustutada need tavaliste
delvõibackspaceklahvidega.Näiteks, kui teie algne fail näeb välja selline:
console=serial0,115200 console=tty1 root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwaitUus versioon näeb välja selline:
root=PARTUUID=058e2867-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait -
Järgige ülaltoodud samme, et salvestada fail ja väljuda nanost.
-
Taaskäivitage oma Pi, seejärel ühenduge uuesti VS Code'iga, kui Pi on taaskäivitatud.
-
-
Terminalist looge
pikasutaja kodukataloogi uus kaust nimegagps-sensor. Looge selles kaustas fail nimegaapp.py. -
Avage see kaust VS Code'is.
-
GPS-moodul saadab UART-andmeid jadapordi kaudu. Installige
pyserialPip-pakett, et suhelda jadapordiga oma Python-koodist:pip3 install pyserial -
Lisage oma
app.pyfaili järgmine kood: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)See kood impordib
serialmoodulipyserialPip-paketist. Seejärel ühendub see jadaportiga/dev/ttyAMA0- see on Grove Pi Base Hati UART-pordi jadapordi aadress. Seejärel kustutab see kõik olemasolevad andmed sellest jadaportist.Järgmisena määratletakse funktsioon nimega
print_gps_data, mis prindib konsoolile rea, mis sellele edastatakse.Seejärel kood kordab lõputult, lugedes igas tsüklis jadaportist nii palju tekstiridu kui võimalik. See kutsub iga rea jaoks funktsiooni
print_gps_data.Kui kõik andmed on loetud, jääb tsükkel üheks sekundiks magama ja proovib uuesti.
-
Käivitage see kood. Näete GPS-sensori toorväljundit, mis näeb välja umbes selline:
$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*68Kui saate ühe järgmistest vigadest, kui peatate ja taaskäivitate oma koodi, lisage
try - exceptplokk oma while-tsüklisse.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') # There's a random chance the first byte being read is part way through a character. # Read another full line and continue. except UnicodeDecodeError: line = serial.readline().decode('utf-8') time.sleep(1)
💁 Selle koodi leiate kaustast code-gps/pi.
😀 Teie GPS-sensori programm oli edukas!
Lahtiütlus:
See dokument on tõlgitud, kasutades AI tõlketeenust Co-op Translator. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algkeeles tuleks lugeda autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valede tõlgenduste eest.

