En règle générale, un module GPS peut prendre quelques minutes pour obtenir le temps de première correction (TTFF), voire plus si vous vous trouvez dans des zones bâties (+ 20 minutes). En effet, l’almanach doit être téléchargé à partir de satellites avant qu’un repère GPS puisse être acquis et seule une petite partie de l’almanach est envoyée dans chaque mise à jour GPS.
GPS assisté accélère considérablement cette opération en téléchargeant les éphémérides, l’almanach, l’heure précise et l’état des satellites sur le réseau, ce qui permet d’obtenir un TTTF plus rapide, en quelques secondes. C’est très similaire au fonctionnement du GPS sur un smartphone.
Le BerryGPS-GSM prend en charge le GPS assisté. La vidéo ci-dessous montre une comparaison entre le GPS assisté et normal.
- Le GPS assisté prend 19 secondes pour obtenir une solution
- Le GPS normal prend 8min 22Sec pour obtenir une position

Les deux composants principaux du BerryGPS-GSM sont :
Le SARA-U201 peut être configuré pour télécharger les données d’assistance GPS, puis les transmettre au module GPS. Ces deux composants se parlent via i2c.
Ces données d’assistance sont téléchargées par le modem SARA-U201 (pas le Pi), donc le modem doit créer une connexion PDP (Packet Data Protocol) interne.
Une fois la connexion PDP établie, le SARA-U201 contactera les serveurs uBlox AssitNow et téléchargera les dernières données d’assistance. Un jeton valide est nécessaire pour effectuer cela, tous les BerryGPS-GSM ont ce jeton préconfiguré.

La première étape consiste à configurer votre Pi pour utiliser un GPS. Si vous ne l’avez pas déjà fait, vous pouvez suivre ce guide.
Connectez-vous maintenant à la console série SARA-U201 sur /dev/ttyACM1
pi@raspberrypi ~ $ minicom -b 115200 -o -D /dev/ttyACM1
Faites un test rapide, tapez À et confirmez que vous obtenez d’accord comme réponse
Configurez un profil de connexion avec l’APN pour votre opérateur réseau, en utilisant le + UPSD commande (configuration des données du commutateur de paquets). Dans cet exemple, nous utilisons une SIM hologramme, donc l’APN serait un hologramme.
AT+UPSD=0,1, »hologramme »
La syntaxe de la commande ci-dessus est :
AT+UPSD=[profile_id],[param_tag], [param_val]
Nous utilisons le profil ‘0’
La balise de paramètre 1 est utilisée pour définir le nom APN
La valeur du paramètre est le nom APN
Les balises de paramètre 2 et 3 sont le nom d’utilisateur et le mot de passe, si vous devez définir ces valeurs, vous pouvez utiliser ces commandes.
AT+UPSD : 0,2, »nom d’utilisateur »
AT+UPSD : 0,3, »mot de passe »
Si vous utilisez une carte SIM Hologram, un nom d’utilisateur et un mot de passe ne sont pas nécessaires.
Nous allons maintenant créer une connexion à l’aide de la commande Packet Switch Data Action (UPSDA) ;
AT+UPSDA=0,3
AT+UPSDA=[profile_id],[action]
Nous utilisons le profil 0
Les deux actions qui nous intéressent sont ;
3 : activer ; active un contexte PDP avec le profil spécifié, en utilisant les paramètres courants
4: désactiver; désactive le contexte PDP associé au profil spécifié.
Si tout a fonctionné, vous devriez juste obtenir un d’accord réponse.
Vous pouvez utiliser le +UPSND commande pour lire les valeurs actuellement négociées sur le réseau, comme l’adresse IP et le DNS.
Ici, nous vérifions si le profil ‘0’ est actif. Si le profil est actif, la valeur de retour est 1, sinon c’est 0 ;
AT+UPSND=0,8
Pour vérifier l’adresse IP ;
AT+UPSND=0,0
Vérifiez l’entrée DNS 1 ;
AT+UPSND=0,1
Vérifiez l’entrée DNS 2 ;
AT+UPSND=0,2
Il est maintenant temps de configurer le mode d’assistance GPS.
Tout d’abord, nous allons activer le résultat de l’aide non sollicitée. Sans cela nous ne saurons pas si le GPS assisté a réussi ;
AT+UGIND=1
le +UGPS commande est utilisée pour contrôler le module GPS et le mode d’assistance. Voici sa syntaxe et ses options ;
AT+UGPS=[mode],[aid_mode],[GNSS_systems]
[mode]
0 : Désactivé
1 : Activé
[aid_mode]
0 (valeur par défaut) : pas d’aide
1 : aide locale automatique
2: AssistNow hors ligne
4: AssistNow en ligne
8 : AssistNow Autonomous
[GNSS_systems]
1 : GPS
2: SBAS
4: Galilée
8 : Beidou
16 : IMES
32 : QZSS
64 : GLONAS
Pour activer le GNSS sans aide et n’utiliser que le GPS, vous utiliseriez ;
AT+UGPS=1,0,1
Pour désactiver le GPS
AT+UGPS=0
Pour activer le GPS avec assistance en ligne, nous utilisons l’option 4 pour le mode d’aide. C’est ce qu’on appelle AssitNow Online.
AT+UGPS=1,4,1
Pour activer plusieurs modes GNSS, vous avez besoin de la somme algébrique des systèmes GNSS. Par exemple, pour activer l’assistance en ligne et utiliser GPAS+GLONAS, vous devez utiliser AT+UGPS=1,4,65. Il est préférable d’activer plusieurs systèmes GNSS (GPS+SBAS+GLONASS+Galileo) avec AT+UGPS=1,4,71.
Vous trouverez ci-dessous un exemple de sortie lors de l’activation du GPS assisté (AssitNow Online) ;
AT+UGPS=1,4,71
d’accord
+UUGIND: 0,71
+UUGIND: 4,0
+UUGIND est l’indication de résultat pour le +UGPS commander. Un résultat de 0 n’est pas une erreur
+UUGIND: 0,71 le 0 ici signifie aucune erreur lors de l’activation du GNSS multiple
+UUGIND: 4,0 Le 0 ici signifie aucune erreur lors du téléchargement des données d’assistance GPS à l’aide d’AssitNow Online.
Pour résumer, seules quatre commandes sont nécessaires pour faire fonctionner le GPS assisté ;
COMMANDER
AT+UPSD=0,1, »hologramme »
AT+UPSDA=0,3
AT+UGIND=1
AT+UGPS=1,4,71
LA DESCRIPTION
Définir l’APN
Se connecter à l’opérateur
Activer les messages d’erreur
Activer le GPS et utiliser le GPS assisté
Vous pouvez également configurer le GPS assisté depuis le terminal bash en utilisant les trois commandes ci-dessous. Comme nous ne regardons pas les réponses, il n’est pas nécessaire de configurer AT+UGIND=1 (activer les messages d’erreur)
pi@raspberrypi ~ $ echo -e « AT+UPSD=0,1, »hologramme »rn » > /dev/ttyACM1
pi@raspberrypi ~ $ echo -e « AT+UPSDA=0,3 » > /dev/ttyACM1
pi@raspberrypi ~ $ echo -e « AT+UGPS=1,4,71rn » > /dev/ttyACM1
Vous trouverez ci-dessous un exemple de la façon dont cela peut être fait à l’aide d’un script python.
#!/usr/bin/env python
import serial, time
port = "/dev/ttyACM1"
PAUSE = 0.1
def sendCommand(command):
command = command + "rn"
ser.write(command)
#ser.flush()
output = ser.read_until() # default is n
print "Command sent:", output.rstrip() #rstrip will remove any trailing new lines or carriage return, this makes the output more readable
response = ser.read_until()
#response = ser.read(80)
print "response", response
time.sleep(PAUSE)
ser = serial.Serial(port, baudrate = 115200, timeout = 0.2)
sendCommand("AT+UPSD=0,1,"hologram"") #Set APN
sendCommand("AT+UPSDA=0,3rn") #Activate connection to carrier
time.sleep(PAUSE+3) #Give the modem time to connect
sendCommand("AT+UGIND=1") #Activate the unsolicited aiding result
sendCommand("AT+UGPS=1,4,71") #Turn on GNSS with online assistance and use GPS+SBAS+GLONASS+Galileo
