Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
GPS Android <-> PIC18F
- Claudius
Passionné- Messages : 260
- Âge : 69
- Enregistré en : septembre 2015
- Localisation : ELANCOURT (78 - YVELINES)
- Contact :
Re,
Allez, nous allons faire le calcul ensemble:
Informations de ton GPS: Latitude: 4550.72709 E + Long: 00502.32503 N
- De 4550.72709 on extrait 45° et 50.72709'; 50.72709' = (50.72709' / 60) = 0.8454515°
- De 00502.32503 on extrait 5° et 2.32503'; 2.32503' = (2.32503' / 60) = 0.0387505°
correspondant bien à la localisation de Google Earth: 45.8454515 + 5.0387505 que tu indiques => Ta localisation dans le département de l'Ain (à confirmer / infirmer )
Question: Je ne comprends pas le "alors que ma mesure me donne 40Kms plus au sud ??? et 1kms plus à L'ouest ?". Est-ce à dire que le GPS de ton mobile Android indique cette localisation ? Auquel cas, c'est ton GPS "maison" qui présente des problèmes ou que la trame GPGGA est mal décortiquée ?!..
NB: Si tu le souhaites, je peux publier une trace avec ta localisation exacte que je te ferai parvenir par message privé pour préserver ta vie privée et on verra bien l'exactitude ou non des calculs !...
@ "Pas aussi simple que la soluce GPS Android !": Bienvenu au club
Edit: S'il y a effectivement 40 kms de différence vers le sud, cela correspond à un écart de (40 / 111) = 0.36° sur la latitude et 1 km à l'ouest donne un écart de (1 / 111) * 0.707 = 0.006° sur la longitude (en considérant en 1ère approximation que la latitude est voisine de 45° car cos(45°) = sqrt(2) / 2 = 0.707 - cf. Méridien -> Propriétés)
Allez, nous allons faire le calcul ensemble:
Informations de ton GPS: Latitude: 4550.72709 E + Long: 00502.32503 N
- De 4550.72709 on extrait 45° et 50.72709'; 50.72709' = (50.72709' / 60) = 0.8454515°
- De 00502.32503 on extrait 5° et 2.32503'; 2.32503' = (2.32503' / 60) = 0.0387505°
correspondant bien à la localisation de Google Earth: 45.8454515 + 5.0387505 que tu indiques => Ta localisation dans le département de l'Ain (à confirmer / infirmer )
Question: Je ne comprends pas le "alors que ma mesure me donne 40Kms plus au sud ??? et 1kms plus à L'ouest ?". Est-ce à dire que le GPS de ton mobile Android indique cette localisation ? Auquel cas, c'est ton GPS "maison" qui présente des problèmes ou que la trame GPGGA est mal décortiquée ?!..
NB: Si tu le souhaites, je peux publier une trace avec ta localisation exacte que je te ferai parvenir par message privé pour préserver ta vie privée et on verra bien l'exactitude ou non des calculs !...
@ "Pas aussi simple que la soluce GPS Android !": Bienvenu au club
Edit: S'il y a effectivement 40 kms de différence vers le sud, cela correspond à un écart de (40 / 111) = 0.36° sur la latitude et 1 km à l'ouest donne un écart de (1 / 111) * 0.707 = 0.006° sur la longitude (en considérant en 1ère approximation que la latitude est voisine de 45° car cos(45°) = sqrt(2) / 2 = 0.707 - cf. Méridien -> Propriétés)
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
GPS Android <-> PIC18F
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
OK pour les calculs, mais cela ne repond pas à mes 2 questions..
bref, PB resolu ..
je me suis servi de U-CENTER qui affiche les trames GPGGA et aussi les coordonnees en degres
d'ou le bout de code (bien étalé !)
permettant de retouver les bonnes coordonnees et unites
je sors maintenant sur mon terminal les donnees "corrigées" au lieu des coordeonnees brutes NMEA
l'ecart Lat et Lon est maintenant < 10M, GPS à l'interieur à 1,5M d'une fenetre (sans ANTenne)
nota:
l'altitude coté U-Center est alt =234.3m (HAE)
et ALT=195m (MSL) trame NMEA .. mais c'est celle ci qui m'interesse (idem google earth)
bref, PB resolu ..
je me suis servi de U-CENTER qui affiche les trames GPGGA et aussi les coordonnees en degres
d'ou le bout de code (bien étalé !)
permettant de retouver les bonnes coordonnees et unites
Code : Tout sélectionner
UART1_Write_CText(" Long: ");
// UART1_Write_Text(Longitude);
// UART1_Write(TAB);
lon= atof(Longitude);
f1=lon/100.0;
f1=floor(lon/100.0);
f2=(lon/100)-f1;
lon=f1+f2*100/60;
fltToa (lon,txt,6);
UART1_Write_Text(txt);
UART1_Write(' ');UART1_Write(NSid);
UART1_Write(TAB);
je sors maintenant sur mon terminal les donnees "corrigées" au lieu des coordeonnees brutes NMEA
Code : Tout sélectionner
Init ADC1
Arme IT UART1 & UART2
BP1=1 ;BP2=1 ; EA1= 627
GPS NEO-6M : $GPGGA,130207.00,4550.72598,N,00502.32675,E,1,07,1.26,199.9,M,47.3,M,,*56
Trame GPS recue :
Utc: 130207.00 Long: 5.038765 N Latitude: 45.845403 E Altitude: 199.9 Satel.: 07 Fix: 1
Decodage Partiel OK
....
BP1=1 ;BP2=1 ; EA1= 625
GPS NEO-6M : $GPGGA,130527.00,4550.72219,N,00502.32313,E,1,07,1.55,196.0,M,47.3,M,,*5A
Trame GPS recue :
Utc: 130527.00 Long: 5.038715 N Latitude: 45.845355 E Altitude: 196.0 Satel.: 07 Fix: 1
Decodage Partiel OK
l'ecart Lat et Lon est maintenant < 10M, GPS à l'interieur à 1,5M d'une fenetre (sans ANTenne)
nota:
l'altitude coté U-Center est alt =234.3m (HAE)
et ALT=195m (MSL) trame NMEA .. mais c'est celle ci qui m'interesse (idem google earth)
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
GPS Android <-> PIC18F
- Claudius
Passionné- Messages : 260
- Âge : 69
- Enregistré en : septembre 2015
- Localisation : ELANCOURT (78 - YVELINES)
- Contact :
Ok, content pour toi que tu saches et confirmes ... où tu es à 10 mètres près ;-)
Sinon, entièrement d'accord avec le bout de code (qui pourrait être optimisé entre nous)
Sinon, entièrement d'accord avec le bout de code (qui pourrait être optimisé entre nous)
Code : Tout sélectionner
...
lon= atof(Longitude);
f1=lon/100.0;
f1=floor(lon/100.0);
f2=(lon/100)-f1;
lon=f1+f2*100/60;
...
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
GPS Android <-> PIC18F
GPS Android <-> PIC18F
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
j'ai testé pour vous, la libray Nmea de mikroC ..
dont le programme de test est prevu pour un 18F46K22
adapté à ma carte clicker2 PIC18F87J50
sans preciser le type de GPS ..d'ailleurs.
mais avec 19200 bauds et UART2 sur GPS
..avec sortie sur UART1 Display PC via PL2303 USB ( car mon LCD est en I2C et non //))
la librairie doit etre instalée via Tools , Package Manager
et validée (cochée) de meme que UART
le resultat sur ecran
à noter que LON et LAT sont en donnees brutes ! et que l'altitude n'y figure pas ?
C'est EASY avec la librairie , mais on n'apprend rien ! .. de ses propres echecs
dont le programme de test est prevu pour un 18F46K22
adapté à ma carte clicker2 PIC18F87J50
sans preciser le type de GPS ..d'ailleurs.
mais avec 19200 bauds et UART2 sur GPS
..avec sortie sur UART1 Display PC via PL2303 USB ( car mon LCD est en I2C et non //))
la librairie doit etre instalée via Tools , Package Manager
et validée (cochée) de meme que UART
Code : Tout sélectionner
// ********************************************************************************
// ******************** NMEA Library Example for Clicker2 ************************
// ********************************************************************************
//
// Setup:
// - GPS module should be connected to RG1 pin (UART2 RX)
// - Change the baud rate defined in preprocessor to match that of your GPS module
//
//*********************************************************************************
#define BAUD_RATE 19200 // was 9600
/* Begin LCD 2x16 mode connections
sbit LCD_RS at LATB4_bit;
sbit LCD_EN at LATB5_bit;
sbit LCD_D4 at LATB0_bit;
sbit LCD_D5 at LATB1_bit;
sbit LCD_D6 at LATB2_bit;
sbit LCD_D7 at LATB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD connections
*/
// Specific Clicker2 18F
// specific to Clicker2 PIC18F87J50
sbit LD1 at LATD4_bit;
sbit LD2 at LATE4_bit;
sbit LD1_Direction at TRISD4_bit;
sbit LD2_Direction at TRISE4_bit;
sbit RE6_FAULT at RE6_bit;
sbit RE5_SENSEL at LATE5_bit; // cde FET M1
sbit RJ5_Stat at RJ5_bit;
sbit RF6_VSENSE at RF6_bit; // mesure
sbit Led_Rouge at LATD4_bit;
sbit Led_Rouge_Directiont at TRISD4_bit;
sbit BP1 at RD7_bit;
sbit BP2 at RH3_bit;
sbit BP1_Direction at TRISD7_bit;
sbit BP2_Direction at TRISH3_bit;
sbit NMEA_IntFlag at RC2IF_bit; // NMEA Library RX Interrupt flag
char buffer[128]; // Primary buffer
char nmea[128]; // NMEA sentence
char rcvd = 0; // NMEA sentence received flag
void CRLF1();
void CRLF1()
{
UART1_Write(13);
UART1_Write(10);
}
void interrupt() {
NMEA_IntHandler();
}
// Callback function called on reception of NMEA sentence
void NMEA_DataReceived() {
rcvd = 1;
}
void DisplayData(char * caption, char * txt) {
UART1_Write_Text(caption);
UART1_Write(9);
UART1_Write_Text(txt);
CRLF1();
/*
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 1, caption);
Lcd_Out(2, 1, txt);
*/
Delay_ms(1000);
}
void Hardware_Init(void)
{
ANCON0=0xFD ; // AN1= analog
ANCON1=0xFF; // No analog on AN15--AN10
TRISA=0xFF;
TRISA2_bit=0; // output for UART asm TX output
TRISB=0xFF;
TRISD=0xFF;
TRISC=0xFF;
TRISG=0xFF;
TRISD6_bit=0;
BP1_Direction = 1; // Set direction for buttons
BP2_Direction = 1;
LD1_Direction = 0; // Set direction for LEDs
LD2_Direction = 0;
LD1 = 0; // turn off LEDs
LD2 = 0;
//PPS_Direction=1;
}
void main() {
char gps_data[20];
char tmp[2];
// ANSELB = 0;
// ANSELC = 0;
Hardware_Init() ;
// Lcd_Init();
// Lcd_Cmd(_LCD_CLEAR);
// Lcd_Cmd(_LCD_CURSOR_OFF);
UART1_Init(38400);
UART2_Init(BAUD_RATE);
NMEA_Init(&UART2_Read, buffer, sizeof(buffer));
RC2IE_bit = 1; // UART2 Interrupt Enable
PEIE_bit = 1; // Peripheral Interrupt Enable
GIE_bit = 1; // Global Interrupt Enable
UART1_Write_Text("Test NMEA library with clicker2 PIC18F87J50\r\n");
UART1_Write_Text("GPS NEO-6M sur RG1 & RG2 UART2 at 19200 bds\r\n");
UART1_Write_Text("Display via UART1 RC7 RC6 on TeraTeerm terminal 38400 bds\r\n");
CRLF1();
while(1) {
if (rcvd) {
strcpy(nmea, buffer); // double buffering
// If checksum is correct and sentence is GGA
if (NMEA_IsValid(nmea) && strstr(nmea, "$GPGGA")) {
// Display UTC time
NMEA_Split(gps_data, nmea, ',', 1);
DisplayData("UTC Time:", gps_data);
// Display latitude
NMEA_Split(gps_data, nmea, ',', 2);
NMEA_Split(tmp, nmea, ',', 3);
strcat(gps_data, tmp);
DisplayData("Latitude:", gps_data);
// Display longitude
NMEA_Split(gps_data, nmea, ',', 4);
NMEA_Split(tmp, nmea, ',', 5);
strcat(gps_data, tmp);
DisplayData("Longitude:", gps_data);
// Display fix quality
NMEA_Split(gps_data, nmea, ',', 6);
DisplayData("Fix quality:", gps_data);
// Display number of satellites
NMEA_Split(gps_data, nmea, ',', 7);
DisplayData("Num of sats:", gps_data);
CRLF1();
}
rcvd = 0;
}
}
}
/*
le resultat sur ecran
Code : Tout sélectionner
Test NMEA library with clicker2 PIC18F87J50
GPS NEO-6M sur RG1 & RG2 UART2 at 19200 bds
Display via UART1 RC7 RC6 on TeraTeerm terminal 38400 bds
UTC Time: 150447.00
Latitude: 4550.72523N
Longitude: 00502.32314E
Fix quality: 1
Num of sats: 10
UTC Time: 150455.00
Latitude: 4550.72499N
Longitude: 00502.32306E
Fix quality: 1
Num of sats: 09
à noter que LON et LAT sont en donnees brutes ! et que l'altitude n'y figure pas ?
C'est EASY avec la librairie , mais on n'apprend rien ! .. de ses propres echecs
GPS Android <-> PIC18F
Bonsoir
Ici le détail et format de la NMEA0183 par exemple
http://www.dossiers-techniques.fr/geolo ... -0183.html
Après les degrés ,c'est des décimales de degrés .Pour avoir le format minute secondes il nous faut passer en décimale au centième de seconde, donc diviser par 60 , c'est ce que fait Claudis .et la finalité que j'ai donné en #17 .C'est la norme NMEA0180
Donc affaire réglée la suite
A+
Ici le détail et format de la NMEA0183 par exemple
http://www.dossiers-techniques.fr/geolo ... -0183.html
Après les degrés ,c'est des décimales de degrés .Pour avoir le format minute secondes il nous faut passer en décimale au centième de seconde, donc diviser par 60 , c'est ce que fait Claudis .et la finalité que j'ai donné en #17 .C'est la norme NMEA0180
Donc affaire réglée la suite
A+
GPS Android <-> PIC18F
GPS Android <-> PIC18F
GPS Android <-> PIC18F
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
maï a écrit :Ici le détail et format de la NMEA0183 par exemple
http://www.dossiers-techniques.fr/geolo ... -0183.html
Merci, c'est bien l'info claire et détaillée que j'attendais pour comprendre cette syntaxe.
Aujourd'hui je test un autre GPS + COMPASS Ublox 7N
La partie GPS est quasi identhique au NE0-6M
GPS testé OK avec U-CENTER
COMPAS en I2C ... à suivre
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
GPS Android <-> PIC18F
bonjour
Il n'y pas de quoi Paul, très content que tu sois OK avec la NMEA .Puisque c'est une conversion,et que j'aime bien les conversions je suis assez tenté de faire cela en ASM , pour 18F, juste pour voir ...(performances)
Mais je dois finir ma commande de mes volets en analogique ,je posterais cela dans réalisation, Puis voir ma fille au Japon et de retour je mis colle
Allez
A+
Il n'y pas de quoi Paul, très content que tu sois OK avec la NMEA .Puisque c'est une conversion,et que j'aime bien les conversions je suis assez tenté de faire cela en ASM , pour 18F, juste pour voir ...(performances)
Mais je dois finir ma commande de mes volets en analogique ,je posterais cela dans réalisation, Puis voir ma fille au Japon et de retour je mis colle
Allez
A+
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 131 invités