Estoy usando un módulo SIM908 en una placa personalizada y tengo problemas para obtener la ubicación del GPS. Todo lo demás funciona en el módulo. Puedo enviar SMS, hacer llamadas y enviar y recibir datos de una página web. Pero el GPS no parece funcionar. Estoy usando la almohadilla de la antena directamente en el chip con una antena pasiva.
Cuando llamo a AT+GPSSTATUS?
recibo Location Unknown
sin importar lo que haga. Probé esto al aire libre con vista clara al cielo. Esperaba que al menos diera Location Not Fix
, pero Location Unknown
parece indicar que el GPS no está encendido, aunque llamo a AT+CGPSPWR=1
y AT+CGPSRST=0
y obtengo "OK" casi siempre. Algunas veces, ha devuelto ERROR GPS READY
, que no puedo encontrar en ninguna parte de las hojas de datos, pero supongo que se debe a que no se ha reiniciado el SIM908 al probar el nuevo código.
He publicado mi código de prueba a continuación. ¿Me estoy perdiendo algo?
// DDDR initializations (not included)
// UART Initialization
uart0_init(UART_BAUD_SELECT(UART_BAUDRATE, F_CPU));
sei();
_delay_ms(500);
// GSM Power on
PORTD |= (1<<PORTD3);
_delay_ms(1100);
PORTD &= ~(1<<PORTD3);
_delay_ms(2300);
UWriteString("AT");
// Returns: "AT" and "OK"
// So far all good
_delay_ms(1000);
// GPS Power on
UWriteString("AT+CGPSPWR=1\r");
// Returns "OK"
_delay_ms(10000);
UWriteString("AT+CGPSRST=0\r"); // Have tried with =1 with no luck
// Returns "OK"
_delay_ms(10000);
// VERY LONG DELAY
_delay_ms(30000);
_delay_ms(30000);
_delay_ms(30000);
_delay_ms(30000);
_delay_ms(30000);
_delay_ms(30000);
// GPS STATUS
UWriteString("AT+CGPSSTATUS?\r");
// Returns: "Location Unknown"
_delay_ms(10000);
UWriteString("AT+CGPSINF=2\r");
// Returns: "2,160745,0.000000,N,0.000000,E,0,0,99.989998,187.000000,M,-187.000000,M,,0000