Hola muy buenas noches.
Me encuentro realizando un proyecto con un ARDUINO MEGA 2560, en el cual utilizo varios módulos como el RTC (Reloj de tiempo real), Un Micro SDcard, un GPS Neo M8N, y un modulo SIM800L, mi idea es obtener los datos del modulo GPS y con la Ayuda del RTC obtener valores de Tiempo y la fecha que es para los nombres de los diferentes archivos .txt que se generaran cada día en el SD card. Ahora mi duda por cual abro este Foro es por que deseo enviar estos datos a un servidor, pero no se por donde empezar. Adquirí el modulo SIM800L para poder enviar los datos por medio de GSM/GPRS pero no tengo idea de como hacerlo. En mi idea el SD es para poder censar los datos aun cuando el SIM800L no tenga señal y enviarlos después.
No te puedo ayudar con lo del envio de datos al servidor (aunque si decirte que hay cientos de artículos en la red que te pueden orientar) pero si hacerte una observación.
Si tienes el módulo GPS que te devuelve la hora con precisión (y que además integra un RTC en tu caso) ¿para qué el módulo RTC extra?
Entiendo que
pero ese dato ya te lo entrega el GPS junto con la longitud y latitud.
Te recomiendo que leas a fondo la hoja de datos del GPS ya que tienes uno de grado profesional y es una pena que no aproveches todas sus capacidades.
Saludos
Un saludos Gatul realmente estuve usando el reloj super preciso, pero llegue a dos posibles soluciones una funciono a medias, y la otra no la ejecute, si no que por que tenia el modulo RTC hay sin usar se me dio por usarlo pero realmente, tu opinión jugo muy bien.
-
Ya había usado el reloj UTC antes, en que entrega en los datos del GPS, pero este reloj tiene un retraso respecto al mío de UTC-5, mediante código pude solucionar la hora, pero la fecha realmente fue un martirio y lo deje.
-
Mi otra idea era tomar los valores crudos y cuando lleguen al servidor poder arreglarlos, ya que solo me servirán de registros en mi SDcard en el caso de que en mi idea con el modulo SIM800L no tenga señal.
Realmente no sabia que existía un retraso por lo que me hace desconfiar de la precisión de la hora con el modulo RTC. Incluso guardando memoria en caso de que la necesite. Aplicando la idea 2. Lo que comento ahora es de la parte de la creación de un servidor guardarlo y luego extraerlo cuando lo necesite los datos desde cualquier parte por medio del modulo SIM800L.
Para el punto 1, hay alguna librería para convertir de UTC a local pero también lo puedes hacer utilizando RtcLib con la salvedad que, si corresponde, tienes que hacer el ajuste de verano (DST) manualmente.
En tu caso que es UTC-5 sería algo así
DateTime tiempoUTC (anio, mes, dia, hs, min, seg);
DateTime tiempoLocal = tiempoUTC - TimeSpan(0, 5, 0, 0);
o abreviado
DateTime tiempoLocal = DateTime(anio, mes, dia, hs, min, seg) - TimeSpan(0, 5, 0, 0);
luego lo utilizas así, por ej.
int anioLocal = tiempoLocal.year();
int diaLocal = tiempoLocal.day();
Asumimos que anio, mes, dia, hs, min, seg son variables int que contienen los valores convertidos de los datos que lees del GPS para año, mes, día, horas, minutos y segundos, respectivamente y que están en tiempo UTC.
anio puede ser de 4 cifras (p.e. 2022) o de 2 cifras referenciadas al año 2000 (p.e. 22).
Los parámetros para la función TimeSpan() son: semanas, horas, minutos y segundos, en ese orden.
Al restar 5 horas a tiempoUTC lo ajustas a tu huso horario y, por supuesto, ajusta la fecha si corresponde.
Por caso, el UTC 01/01/2022 01:23:45 tras el ajuste hubiese sido 31/12/2021 20:23:45 que fue tu día y hora local en ese momento.
Si por ejemplo quisieras pasarlo a mi hora local (UTC-3) harías
DateTime tiempoLocal = tiempoUTC - TimeSpan(0, 3, 0, 0);
Y si quisieras pasar al huso UTC+3, simplemente sumas en lugar de restar.
Una preciosura! ![]()
Lo del ajuste del horario de verano tampoco es tan complicado, a partir de X fecha restas 4 o restas 5 pasada Y fecha.
Tu otra opción, la 2, también es buena, guardar todo en UTC y hacer la conversión al leer los datos del servidor.
Para que veas que no es mala idea, en los archivos de GPS's Garmin en formato .gpx, los datos de fecha/hora están en UTC, los programas como MapSource o BaseCamp, sin embargo, te muestran los datos en hora local, o sea que la conversión la hacen los programas.
Saludos
Moderador:
Abre un tema general y ve agotando cada duda que tengas. Lo tuyo es un proyecto pero todos lo son, asi que no debe ir a proyectos por una parte pero si evacuar todas las consultas en el mismo tema y no ir abriendo 5 hilos porque te caeré con un doble posteo que es sancionable.
Raro lo que comentas sobre el momento en que tomas las muestras. Para mi el momento de las muestras son el que se hicieron y no el que llega a un servidor, el servidor solo es el reflejo de lo medido por tu microcontrolador. De todos modos es tu decisión. Si lo sabes tu, no importará para los demás.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.