0% encontró este documento útil (0 votos)
65 vistas5 páginas

GPS RF433

Este documento describe el desarrollo de un sistema de posicionamiento que utiliza un módulo GPS, Arduino y un transmisor y receptor RF433 para transmitir la latitud y longitud desde un globo aerostático. El sistema captura la posición del GPS, la codifica en Arduino y la transmite vía RF433. El receptor decodifica la señal y muestra la información en un LCD. El sistema logra transmitir con éxito la posición pero podría mejorarse optimizando el código y usando hardware de mejor calidad.

Cargado por

José Lanza
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
65 vistas5 páginas

GPS RF433

Este documento describe el desarrollo de un sistema de posicionamiento que utiliza un módulo GPS, Arduino y un transmisor y receptor RF433 para transmitir la latitud y longitud desde un globo aerostático. El sistema captura la posición del GPS, la codifica en Arduino y la transmite vía RF433. El receptor decodifica la señal y muestra la información en un LCD. El sistema logra transmitir con éxito la posición pero podría mejorarse optimizando el código y usando hardware de mejor calidad.

Cargado por

José Lanza
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

PROTOTIPO DE SISTEMA DE POSICIONAMIENTO UTILIZANDO ARDUINO

INTRODUCCIÓN

Este informe muestra el desarrollo que se le dio al transmisor RF433 con la finalidad de
transmitir información de posicionamiento, utilizando un módulo gps (skylab SKM53) y
Arduino para implementar la comunicación entre ambos dispositivos.

La finalidad de este proyecto es la de transmitir información de posicionamiento de un globo


aerostático, saber la localización del globo cada cierto tiempo y tener una locación aproximada
de su aterrizaje.

COMPONENTES

- Arduino Uno
- Arduino Nano
- Modulo gps skylab SKM53
- Transmisor y receptor RF433MHz para Arduino
- Fuente de alimentación
- Modulo LCD

PROCEDIMIENTO

Una vez lograda la comunicación entre ambos módulos de comunicación RF433, se le adapto
un módulo gps al trasmisor, de este modo la información enviada seria información de
localización (latitud y longitud).

Luego de realizar el acople del módulo gps se desarrolló un código para, lograr enviar la
información obtenida del gps a través del transmisor RF433.
Para la parte del receptor se utilizó un Arduino nano en donde también fue acoplado el
modulo receptor RF433, y para mostrar la información de posicionamiento se le puso también
un módulo LCD.

RESULTADOS

Se logro captar la información de posicionamiento del módulo GPS, la información que se


capta es la longitud y la latitud, esta información es procesada por el Arduino y es enviada por
el Transmisor RF433 en una modulación ASK, el receptor de igual forma capta esta
información, demodula y lo muestra en el LCD.

Imagen: Funcionamiento del Receptor RF433.

CONCLUSIONES

Se logra desarrollar el módulo de comunicación para el globo de manera satisfactoria pero la


comunicación es algo lenta se podría mejorar optimizando el código y utilizando módulos de
mejor calidad.

Utilizando un LCD con tecnología SPI se podría mejorar y reducir el cableado en el prototipo.

La impresión en el LCD se muestra de vez en cuando de forma desfazada, esto por el tipo de
impresión que de desarrolla en el Arduino nano.
ANEXOS

CÓDIGO TRANSMISOR
#include <TinyGPS.h> // Libreria de manejo del GPS

#include <SoftwareSerial.h> // Libreria de manejo de comunicacion serial alterna

#include <RH_ASK.h> // incluye libreria RadioHead.h

#include <SPI.h> // incluye libreria SPI necesaria por RadioHead.h

RH_ASK rf_driver; // crea objeto para modulacion por ASK

long lat, lon; // Variables auxiliares para lectura de longitud y latitud

float LAT, LON;

float LAT1, LON1;// Variables auxiliares para latitud y longitud con punto decimal

char charLAT [15];

char charLON [15];

char buf1[16];

char buf2[16];

SoftwareSerial ss(2,3); // Pines usados para comunicacion con el GPS (RXD = 2, TXD = 3)

TinyGPS GPS; // Declaracion de cabecera para la funcion GPS

void setup(){

ss.begin(9600); // Velocidad de comunicacion del GPS (Segun hoja de datos)

Serial.begin(9600); // Velocidad de comunicacion con la computadora

rf_driver.init(); // inicializa objeto con valores por defecto

void loop(){

lectura_serial(); // Lectura de la informacion del GPS

conversion();

rf_driver.send((uint8_t*)charLAT, strlen(charLAT));// funcion para envio del mensaje

delay(2000);

rf_driver.send((uint8_t*)charLON, strlen(charLON));// funcion para envio del mensaje

rf_driver.waitPacketSent(); // espera al envio correcto

delay(3000); // demora de 1 segundo entre envios

void conversion(){

LAT1 = LAT/1000000; // Latitud en grados con diez decimales

LON1 = LON/1000000; // Longitud en grados con diez decimales

dtostrf(LAT1,13, 6, buf1);

Serial.println(buf1);

dtostrf(LON1,13, 6, buf2);

Serial.println(buf2);

String strLAT;

String strLON;

strLAT += buf1;

strLON += buf2;

Serial.println(strLAT);
Serial.println(strLON);

strLAT.toCharArray(charLAT, 14);

strLON.toCharArray(charLON, 14);

Serial.println(charLAT);

Serial.println(charLON);

void lectura_GPS(){

bool newdata = false; // Variable auxiliar para ingreso de datos

unsigned long start = millis(); // Variable auxiliar para refresh y update datos

while (millis() - start < 1000){ // Update de lectura cada segundo

if (feedgps ()){newdata = true;} // Validacion de datos en la pila

if (newdata){informacion_gps(GPS);} // Ingreso de datos

bool feedgps(){

while (ss.available()){ // Mientras exista informacion en la pila de datos

if (GPS.encode(ss.read())) // Validacion de existencia de datos en la pila de datos

return true;

return 0;

void informacion_gps(TinyGPS &GPS)

GPS.get_position(&lat, &lon); // Byte de datos de latitud y longitud

LAT = lat; // Adquicion de datos en decimales

LON = lon; // Adquicion de datos en decimales

feedgps(); // Sin esta funcion, puede causarse un error de suma

void lectura_serial(){

GPS.get_position(&lat, &lon); // Adquicion de datos de latitud y longitud

lectura_GPS(); // Funcion de rutina de lectura del GPS

Serial.print("Latitud : ");

Serial.print(LAT/1000000,10); // Latitud en grados con diez decimales

Serial.print(" :: Longitud : ");

Serial.println(LON/1000000,10); // Longitud en grados con diez decimales

}
CÓDIGO RECEPTOR

#include <RH_ASK.h> // incluye libreria RadioHead.h

#include <SPI.h> // incluye libreria SPI necesaria por RadioHead.h

#include <LiquidCrystal.h>

RH_ASK rf_driver; // crea objeto para modulacion por ASK

LiquidCrystal lcd (13,12,10,9,8,7);

void setup(){

rf_driver.init(); // inicializa objeto con valores por defecto

Serial.begin(9600); // inicializa monitor serie a 9600 bps

lcd.begin(16,2);

lcd.setCursor(1 ,0);

lcd.print("LAT= ");

lcd.setCursor(1,1);

lcd.print("LON= ");

void loop(){

uint8_t buf[13]; // espacio para almacenar mensaje recibido

uint8_t buflen = sizeof(buf); // longitud del buffer de mensaje

if (rf_driver.recv(buf, &buflen)) // si existen datos correctos recibidos

Serial.print("MENSAJE DE RECEPCION: "); // imprime Mensaje:

Serial.println((char*)buf); // imprime buffer de mensaje

for (int i=0;i<=1;i++){

lcd.setCursor(5,i);

lcd.print((char*)buf);

delay(1000);

También podría gustarte