You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/it/3-transport/lessons/1-location-tracking/single-board-computer-gps-d...

3.5 KiB

Decodifica dei dati GPS - Hardware IoT Virtuale e Raspberry Pi

In questa parte della lezione, decodificherai i messaggi NMEA letti dal sensore GPS tramite il Raspberry Pi o il Dispositivo IoT Virtuale, ed estrarrai latitudine e longitudine.

Decodifica dei dati GPS

Una volta letti i dati NMEA grezzi dalla porta seriale, possono essere decodificati utilizzando una libreria NMEA open source.

Attività - decodifica dei dati GPS

Programma il dispositivo per decodificare i dati GPS.

  1. Apri il progetto dell'app gps-sensor se non è già aperto.

  2. Installa il pacchetto Pip pynmea2. Questo pacchetto contiene il codice per decodificare i messaggi NMEA.

    pip3 install pynmea2
    
  3. Aggiungi il seguente codice alle importazioni nel file app.py per importare il modulo pynmea2:

    import pynmea2
    
  4. Sostituisci il contenuto della funzione print_gps_data con il seguente:

    msg = pynmea2.parse(line)
    if msg.sentence_type == 'GGA':
        lat = pynmea2.dm_to_sd(msg.lat)
        lon = pynmea2.dm_to_sd(msg.lon)
    
        if msg.lat_dir == 'S':
            lat = lat * -1
    
        if msg.lon_dir == 'W':
            lon = lon * -1
    
        print(f'{lat},{lon} - from {msg.num_sats} satellites')
    

    Questo codice utilizzerà la libreria pynmea2 per analizzare la riga letta dalla porta seriale UART.

    Se il tipo di frase del messaggio è GGA, allora si tratta di un messaggio di fissaggio della posizione, che viene elaborato. I valori di latitudine e longitudine vengono letti dal messaggio e convertiti in gradi decimali dal formato NMEA (d)ddmm.mmmm. La funzione dm_to_sd esegue questa conversione.

    Viene quindi controllata la direzione della latitudine e, se la latitudine è a sud, il valore viene convertito in un numero negativo. Lo stesso vale per la longitudine: se è a ovest, viene convertita in un numero negativo.

    Infine, le coordinate vengono stampate sulla console, insieme al numero di satelliti utilizzati per ottenere la posizione.

  5. Esegui il codice. Se stai utilizzando un dispositivo IoT virtuale, assicurati che l'app CounterFit sia in esecuzione e che i dati GPS vengano inviati.

    pi@raspberrypi:~/gps-sensor $ python3 app.py 
    47.6423109,-122.1390293 - from 3 satellites
    

💁 Puoi trovare questo codice nella cartella code-gps-decode/virtual-device o nella cartella code-gps-decode/pi.

😀 Il tuo programma per il sensore GPS con decodifica dei dati è stato un successo!

Disclaimer (Avvertenza):
Questo documento è stato tradotto utilizzando il servizio di traduzione automatica Co-op Translator. Sebbene ci impegniamo per garantire l'accuratezza, si prega di tenere presente che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.