Archives par étiquette : c#

Récupérer les coordonnées GPS de l’arduino sur une application PC (Visual Studio)

Mise à jour le 22/09/2017.Lorsque vous utilisez un Arduino, vous avez peut être besoin de récupérer des informations depuis celui ci sur votre PC.

 

Prérequis

Vous devez avoir Visual Studio installé sur votre PC. Si vous souhaitez reproduire notre article chez vous, il vous faudra également un arduino avec un système grove GPS afin de récupérer les trames GPGGA de celui ci.

Côté Arduino

Il faudra réaliser un montage très simple : reliez le 5v et gnd du module GPS à votre Arduino. Reliez ensuite la broche TX du GPS au pin D2 et la broche RX du GPS au pin D3 de l’arduino

Envoyez ensuite le programme Arduino suivant qui permettra de récupérer les trames GPGGA du GPS et qui les route vers le port série relié au PC

Côté PC : Création du projet Visual Studio

Lancez visual studio puis créez un nouveau projet Windows Forms Application. Vous verrez apparaître alors une fenêtre qui est la fenêtre de votre application.

Visual Studio Serial Port

Dans la boite à outils (toolbox), sélectionnez le composant SerialPort puis glissez-le  sur votre fenêtre. Vous le verrez apparaître en bas de l’écran.

Insérez également deux boutons (un pour Connecter, un pour déconnecter), un numericUpDown (pour préciser le port COM) et un textbox (qui affichera les données de l’arduino) dont l’option multiline est active.

En double cliquant sur un bouton, vous entrez dans le code de son événement de clic. C’est ici que l’on doit coder ce qui doit se produire quand on clique sur le bouton.

Voici le code permettant de se connecter ou déconnecter du port com de l’arduino :

Dans la connexion, on indique quel est le port à utiliser sous la forme d’une chaîne de caractères (Exemple : COM8) puis on ouvre la communication. Dans le bouton déconnecter, on ferme la connexion série.

Afin de récupérer les données envoyées depuis l’arduino vers le PC, on va s’abonner à un événement du port série.

SerialPort1_Receiving est l’événement qui indique que le port Série virtuel du PC a reçu des données. A chaque fois qu’il se déclenche, on va lire ces données puis les envoyer à la suite du texte déjà présent dans le textbox. Etant donné que la récupération sur le port série se passe sur un autre thread (processus) que celui de l’application, on ne peut pas directement mettre à jour l’interface graphique (afficher le texte) depuis l’évenement du port série sous peine d’avoir une erreur à l’exécution. On va donc passer depuis un délégué qui va se charger de transmettre l’information et mettre à jour l’interface graphique (partie avec le Delegate et méthode SetText).

Maintenant, nous allons récupérer indépendamment la latitude et la longitude et les afficher à l’écran.

Comme la communication série récupère les données par bribes, on doit donc recomposer les trames GPGGA pour pouvoir les traiter une à une. La fonction remplirTrame se charge de récupérer les données et reformer une trame GPGGA complète. Dès que la trame est complète, on va la traiter à l’aide de la fonction AfficherLatitudeLongitude pour découper la trame, récupérer les informations puis les convertir en affichage réutilisable.

separateur-redohm-001

Le code source en téléchargement

Code source complet du programme

.

Code source à télécharger

.

separateur-redohm-001

Pour utiliser l’application, réaliser le montage Arduino/GPS puis envoyer le programme de notre article sur le module GPS Grove. Connectez l’arduino au pc, lancez le programme GPS Localiser puis choisissez le port com correspondant à l’arduino. Cliquez sur connecter et attendez que les trames GPGGA apparaissent. Vous aurez alors la latitude et la longitude dès que le GPS aura accroché les satellites.

Réalisé par Steeve / Hervé

Retour au menu