7.8 KiB
Citirea datelor GPS - Hardware IoT Virtual
În această parte a lecției, vei adăuga un senzor GPS la dispozitivul tău IoT virtual și vei citi valorile de la acesta.
Hardware Virtual
Dispozitivul IoT virtual va folosi un senzor GPS simulat, accesibil prin UART printr-un port serial.
Un senzor GPS fizic va avea o antenă pentru a recepționa undele radio de la sateliții GPS și pentru a converti semnalele GPS în date GPS. Versiunea virtuală simulează acest lucru, permițându-ți să setezi o latitudine și longitudine, să trimiți propoziții NMEA brute sau să încarci un fișier GPX cu locații multiple care pot fi returnate secvențial.
🎓 Propozițiile NMEA vor fi acoperite mai târziu în această lecție
Adăugarea senzorului în CounterFit
Pentru a folosi un senzor GPS virtual, trebuie să adaugi unul în aplicația CounterFit.
Sarcină - adaugă senzorul în CounterFit
Adaugă senzorul GPS în aplicația CounterFit.
-
Creează o nouă aplicație Python pe computerul tău într-un folder numit
gps-sensor
cu un singur fișier numitapp.py
și un mediu virtual Python, și adaugă pachetele pip CounterFit.⚠️ Poți consulta instrucțiunile pentru crearea și configurarea unui proiect Python CounterFit în lecția 1, dacă este necesar.
-
Instalează un pachet Pip suplimentar pentru a instala un shim CounterFit care poate comunica cu senzori bazați pe UART printr-o conexiune serială. Asigură-te că instalezi acest pachet dintr-un terminal cu mediul virtual activat.
pip install counterfit-shims-serial
-
Asigură-te că aplicația web CounterFit este pornită.
-
Creează un senzor GPS:
-
În caseta Create sensor din panoul Sensors, deschide meniul derulant Sensor type și selectează UART GPS.
-
Lasă Port setat la /dev/ttyAMA0.
-
Selectează butonul Add pentru a crea senzorul GPS pe portul
/dev/ttyAMA0
.
Senzorul GPS va fi creat și va apărea în lista de senzori.
-
Programează senzorul GPS
Dispozitivul IoT virtual poate fi acum programat pentru a folosi senzorul GPS virtual.
Sarcină - programează senzorul GPS
Programează aplicația senzorului GPS.
-
Asigură-te că aplicația
gps-sensor
este deschisă în VS Code. -
Deschide fișierul
app.py
. -
Adaugă următorul cod în partea de sus a fișierului
app.py
pentru a conecta aplicația la CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Adaugă următorul cod sub acesta pentru a importa câteva biblioteci necesare, inclusiv biblioteca pentru portul serial CounterFit:
import time import counterfit_shims_serial serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
Acest cod importă modulul
serial
din pachetul Pipcounterfit_shims_serial
. Apoi se conectează la portul serial/dev/ttyAMA0
- aceasta este adresa portului serial pe care senzorul GPS virtual îl folosește pentru portul său UART. -
Adaugă următorul cod sub acesta pentru a citi de la portul serial și a afișa valorile în consolă:
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)
Este definită o funcție numită
print_gps_data
care afișează linia transmisă către ea în consolă.Apoi, codul intră într-un ciclu infinit, citind cât mai multe linii de text de la portul serial în fiecare iterație. Apelează funcția
print_gps_data
pentru fiecare linie.După ce toate datele au fost citite, ciclul așteaptă 1 secundă, apoi încearcă din nou.
-
Rulează acest cod, asigurându-te că folosești un terminal diferit de cel în care aplicația CounterFit rulează, astfel încât aplicația CounterFit să rămână activă.
-
Din aplicația CounterFit, schimbă valoarea senzorului GPS. Poți face acest lucru în unul dintre următoarele moduri:
-
Setează Source la
Lat/Lon
și setează o latitudine, longitudine și numărul de sateliți folosiți pentru a obține fixarea GPS. Această valoare va fi trimisă o singură dată, așa că bifează caseta Repeat pentru ca datele să se repete la fiecare secundă. -
Setează Source la
NMEA
și adaugă câteva propoziții NMEA în caseta de text. Toate aceste valori vor fi trimise, cu o întârziere de 1 secundă înainte ca fiecare propoziție GGA (fixare poziție) nouă să poată fi citită.Poți folosi un instrument precum nmeagen.org pentru a genera aceste propoziții desenând pe o hartă. Aceste valori vor fi trimise o singură dată, așa că bifează caseta Repeat pentru ca datele să se repete la o secundă după ce toate au fost trimise.
-
Setează Source la fișier GPX și încarcă un fișier GPX cu locații de traseu. Poți descărca fișiere GPX de pe o serie de site-uri populare de hărți și drumeții, cum ar fi AllTrails. Aceste fișiere conțin locații GPS multiple ca traseu, iar senzorul GPS va returna fiecare locație nouă la intervale de 1 secundă.
Aceste valori vor fi trimise o singură dată, așa că bifează caseta Repeat pentru ca datele să se repete la o secundă după ce toate au fost trimise.
După ce ai configurat setările GPS, selectează butonul Set pentru a confirma aceste valori pentru senzor.
-
-
Vei vedea ieșirea brută de la senzorul GPS, ceva de genul:
$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
💁 Poți găsi acest cod în folderul code-gps/virtual-device.
😀 Programul senzorului GPS a fost un succes!
Declinare de responsabilitate:
Acest document a fost tradus folosind serviciul de traducere AI Co-op Translator. Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa maternă ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri.