Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ojeda DH
Ojeda DH
Satélite-Estación Terrena en la
Banda de Ultra Alta Frecuencia
(UHF) para la Transmisión Digital
de Datos.
por
Hernán Ojeda Delgado
Tesis sometida como requisito parcial para
obtener el grado de
MAESTRÍA EN CIENCIA Y TECNOLOGÍA
DEL ESPACIO
en el
Instituto Nacional de Astrofísica, Óptica y
Electrónica
Marzo 2019
Tonantzintla, Puebla
Bajo la supervisión de:
Dr. Celso Gutiérrez Martínez
Investigador Titular INAOE
©INAOE 2019
El autor otorga al INAOE el permiso de
reproducir y distribuir copias parciales o
totales de esta tesis.
RESUMEN
E
n el contexto de las comunicaciones entre una estación terrena y un sa-
télite pequeño en el espacio, existe la necesidad de conocer la manera
en que éste está operando. En este sentido al subsistema encargado de
obtener, controlar y comunicar la información se le conoce como telemetría;
siendo el intercambio de información donde se emplean radioenlaces en las
bandas de ultra alta frecuencia (UHF) para la transmisión de señales de tele-
metría y tele-comando, así como la transferencia de datos provenientes de sen-
sores remotos. En este trabajo de tesis, se propone el estudio y realización de
un subsistema mínimo transmisor; el cual recibe datos de telemetría y estable-
ce un enlace satélite-tierra con subsistema receptor. El subsistema transmisor
procesa los datos de sensores y los codifica hacia el protocolo de comunicación
AX.25. Los datos son transmitidos al subsistema receptor mediante una porta-
dora de comunicaciones en la banda de 430 − 440MHz. Este trabajo es parte de
la investigación y desarrollo de satélites pequeños experimentales, en el mar-
co del posgrado en Ciencia y Tecnología del Espacio del Instituto Nacional de
Astrofísica, Óptica y Electrónica (INAOE).
AGRADECIMIENTOS
P
or la oportunidad de realizar mis estudios de maestría,por los espacios
brindados así como el apoyo alimenticio brindado,a cada una de las per-
sonas que forman parte del instituto que me brindaron su apoyo a largo
de mis estudios de maestría.
A todos ustedes agradezco por haber sido parte del el jurado de este trabajo
de tesis,por el tiempo brindado para la revisión de este trabajo, por todos los
comentarios y sugerencias que fueron de ayuda para el desarrollo de esta mis-
ma.
DEDICATORIA
Por enseñarme a ser constante y disciplinado, por todos los cuidados que me
han brindado, por siempre darme animo,darme palabras de apoyo y sus con-
sejos, por ser el ejemplo de vida para mi; padres sin ustedes no hubiera sido
posible terminar mi trabajo de tesis.
Compañeros y amigos
M.C. Jacobo Meza Pérez y a M.C. Alfredo Torres Fórtiz por sus comentarios
y críticas, por todo el apoyo brindado y por toda la contribución que hicieron a
este trabajo de tesis.
Gracias a todos.
Índice general
Índice de figuras x
1 Introducción 1
1.1 Propuesta de tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.1 Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.2 Objetivos específicos . . . . . . . . . . . . . . . . . . . . . 2
1.3 Estructura del documento . . . . . . . . . . . . . . . . . . . . . . 2
6 Conclusiones 67
Bibliografía 69
A Apéndice 73
Índice de figuras
Tabla 4.1 Las sietes capas del modelo de referencia OSI [16]. . . . . . 30
Tabla 4.2 Modelo de máquina de estados finitos AX.25 [17]. . . . . . 31
Tabla 4.3 Trama UI del protocolo AX.25. . . . . . . . . . . . . . . . . 32
Tabla 4.4 Campos de dirección de origen (56 bits). . . . . . . . . . . . 33
Tabla 4.5 Campos de dirección de destino (56 bits). . . . . . . . . . . 34
Tabla 4.6 Definiciones de PID en un paquete de AX.25 [17]. . . . . . 35
Tabla 4.7 Características de la verificación de redundancia cíclica del
protocolo AX.25. . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
INTRODUCCIÓN
Para conocer la posición del nanosatélite, este recibirá señales GPS y las con-
vertirá en datos de posición que podrá retransmitir hacia la estación terrena
mediante el enlace de radiofrecuencia. El subsistema procesará los datos GPS
y los convertirá en datos numéricos mediante el protocolo AX.25. Los datos de
posición serán transmitidos a la estación terrena mediante una portadora de
comunicaciones en la banda de radioaficonados, específicamente en la banda
de 430-440MHz.
1.2. Objetivos
1.2.1. Objetivo general
Desarrollar de un esquema para comunicación satélite-estación terrena de
señales digitales utilizando el protocolo AX.25 en satélites pequeños (TubeSat,
CubeSat).
2 1. Introducción
L
os sistemas satélitales constan de diferentes elementos, los cuales traba-
jando en conjunto hacen posible la transmisión de información desde
el espacio hacia la tierra. Generalmente, la información es: voz, audio,
vídeo y datos digitales. Este tipo de información se denomina banda base. En
un sistema de radio frecuencia inalámbrico, la transmisión de señal de baja
frecuencia, requiere una señal portadora de RF, la cual se modula por la infor-
mación a transmitir [14]. En este capitulo se describirá de manera general un
enlace satelite-tierra, y cada uno de los elementos que lo conforman y algunos
de los formatos de modulación empleados para la transmisión de la informa-
ción.
4 2. Esquema general de un enlace satélite-estación terrena en la banda UHF
donde:
dφ
ωM (t) = = 2πf c + θ ′ (t) (2.6)
dt
1 ′
f M (t) = f c + θ (t) (2.7)
2π
La modulación de fase (PM) se refiere al esquema que cambia a φ(t) mo-
dificando la fase θ(t), mientras la modulación de frecuencia (FM) describe al
esquema que cambia a φ(t) mediante la modificación de la frecuencia instan-
tánea [22].
(
A cos(2πf t) para 1
S1,2 (t) = (2.8)
0 para 0
Para la modulación ASK el ancho de banda mínimo necesario esta dado por
(
A cos(2πf 1 t + Φ1 ) para 1
S1,2 (t) = (2.10)
A cos(2πf 2 t + Φ2 ) para 0
donde:
f 1,2 = f c ± sm (t)∆f
f 1,2 (t) es la forma de onda binaria con variación de frecuencia
A es la amplitud de la señal portadora [V ]
Φ1,2 (t) son las fases inciales en t = 0
12 2. Esquema general de un enlace satélite-estación terrena en la banda UHF
L
a evolución de la tecnología y los avances científicos han permitido la
construcción y diseño de satélites cada vez más pequeños. Estos avances
han permitido el desarrollo de satélites pequeños llamados nanosatéli-
tes y picosatélites. Todo esto se basa en el concepto de la elaboración de com-
ponentes e instrumentos cada vez de menor tamaño. Esto significa un menor
costo con el objeto de facilitar el acceso al espacio de misiones espaciales de
naturaleza variada.
En este capítulo se describirán los sistemas de satelites pequeños, su funcio-
namiento y conceptos relacionados con éstos, se describen también las carac-
terísticas de las señales GPS y los protocolos utilizados por los mismas para su
transmisión por el espacio, debido a que éstas son utilizadas en el contexto de
trabajo de tesis.
En México, existen ciertas bandas de frecuencia que han sido asignadas con
propósitos de comunicación espacial por la UIT (Unión Internacional de Tele-
comunicaciones), para el enlace descendente y ascendente las bandas utilizadas
son de 144 − 146MHz y 432 − 438MHz respectivamente[14]. Específicamente
la banda de 432 − 438MHz se conoce como banda de 70cm la cual es utilizada
por satélites amateurs y por algunos satélites de observación de la tierra [21].
Ejemplos de estas bandas se muestran en la tabla 3.2.
Bandas para
Símbolos Nombre Gama de frecuencias Subdivisión métrica aficionados por
satélite
VLF Very Low Frequency 3 a 30 kHz Ondas miriamétricas
LF Low Frequency 30 a 300 kHz Ondas kilométricas
MF Medium Frequency 300 kHz a 3 MHz Ondas hectométricas
7,000-7,100 kHz
18,068-18,168 kHz
HF High Frequency 3 a 30 MHz Ondas decamétricas 21,000-21,450 kHz
24,890-24,990 kHz
28-29.7 MHz
VHF Very High Frequency 30 a 300 MHz Ondas métricas 144-146 MHz
UHF Ultra High Frequency 300 MHz a 3 GHz Ondas decimétricas 432-438 MHz
SHF Super High Frequency 3 a 30 GHz Ondas centimétricas
47-47.2 GHz
76-77.5 GHz
77.5-78 GHz
78-79GHz
EHF Extremely High Frequency 30 a 300 GHz Ondas milimétricas 79-81 GHz
134-136 GHz
136-141 GHz
241-248 GHz
248-250 GHz
– NA 300 a 3000 GHz Ondas decimilimétricas
f L1 = 154f 0 = 1575.42MHz
(3.1)
f L2 = 120f 0 = 1227.60MHz
Las señales de GPS la integran tres componentes:
Figura 3.3: Generación de las portadoras L1 y L2 así como los codigos C/A y P apartir
de la frecuencia fundamental f 0 = 10.23MHz [5, 6].
(
A cos(2πf c t + Φ1 ) para 1
S1,2 (t) = (3.2)
A cos(2πf c t + Φ2 ) para 0
(
A cos(2πf c t) para 1
S1,2 (t) = (3.3)
−A cos(2πf c t) para 0
Figura 3.6: Comparación de una señal de banda estrecha con una señal de espectro de
propagación de espectro disperso. La señal de banda estrecha se suprime cuando se
transmite espectro expandido [7].
Posicionamiento absoluto
Cuando hablamos de posicionamiento absoluto nos referimos al caso de un
solo receptor operando en modo autónomo, es decir, la función típica de na-
vegación, calculando las coordenadas del receptor sobre la superficie terrestre
con base en las mediciones de distancia que realiza a los satélites y mostrando
estas coordenadas sin ningún tipo de corrección [30].
Efecto multitrayectoria
Dilución de la precisión
Posicionamiento Diferencial
Muchos errores son los que afectan la medición de distancia de los satéli-
tes, estos errores pueden ser completamente eliminados o reducidos cuando
es necesario incrementar la precisión de la posición. A esto se le conoce como
posicionamiento diferencial, el cual consiste en obtener los datos satélitales en
forma simultánea por dos receptores, uno de los cuales es ubicado en una posi-
ción conocida y otro en una posición variable. Los errores de propagación de la
señal afectan de manera similar a dos estaciones no muy alejadas entre sí, que
utilizan los mismos satélites. Esto es así porque la distancia entre los receptores
sobre la superficie terrestre resulta muy pequeña comparada con la distancia
en la que se localizan los satélites [30, 33].
L
a arquitectura de comunicación es la disposición, o configuración, de sa-
télites y estaciones terrestres en un sistema espacial, y la red de enlaces
de comunicación que transfieren información entre ellos.
El modelo presenta una estructura basada en capas. De acuerdo con este pro-
30 4. Protocolo de transmisión de datos AX.25
Tabla 4.1: Las sietes capas del modelo de referencia OSI [16].
Capa Función
Segmentos Gestión de enlace
Enlace de datos(2) Enlace de datos de datos
Multicanalizador de enlace
Física
Física(1)
Radio
La razón por la que este proyecto se basa en el protocolo AX.25 es por com-
patibilidad, y puede ser usado en la banda de frecuencias ultra altas (UHF).
Además, el protocolo es ampliamente utilizado en proyectos de satélites pequeños[42][20].
Secuencia de
Bandera Dirección Dirección Identificador Bandera
Bits de Campo de verificación
de de de de protocolo de
Control Información de trama
Inicio Destino Origen (PID) fin
(FCS)
8 Bits 56 Bits 56 Bits 8 Bits 8 Bits 2048 Bits 16 Bits 8 Bits
4.3.1. Banderas
Las banderas de inicio y de fin identifican el comienzo y el final de la trama.
Las dos banderas ocupan un octeto y tienen el mismo patrón; comienzan con
un cero, seguido de seis unos y después otro cero (011111110).
4.3.2. Dirección
El campo de dirección identifica tanto la fuente de la trama, como su destino.
La dirección de destino consiste de los distintivos de llamada y del identifica-
4.3. Estructura del protocolo AX.25 33
Los distintivos de llamada están conformados por seis letras mayúsculas, nú-
meros o espacios en formato ASCII. Si la señal de llamada es menor que seis
caracteres, éste se completa con espacios en blanco en formato ASCII. Todos los
caracteres en los campos de dirección son desplazados a la izquierda un bit, sin
implicar que la información se pierda debido a que el bit más significativo no
es utilizado. Los seis caracteres del distintivo de llamada son colocados en los
primeros seis octetos del campo (C1 a C6), como se muestra en las tablas 4.4 y
4.5.
El campo de control puede tener una longitud de uno a dos octetos y man-
tiene la información de control de el flujo de la transmisión. Este campo es
utilizado en la trama de información (Trama I), trama de supervisión (Trama S)
y trama no numerada (Trama U).
Para las tramas UI, el campo de control tiene un octeto de longitud y siempre
tiene el valor binario: 00000011 [40].
4.3.5. Información
El campo de información puede tomar cualquier valor entre 0-2048 bits (0-
256 bytes). Este campo puede llevar cualquier tipo de datos, y no es evaluado
por el protocolo.
Para el calculo del CRC, el mensaje M(x) son todos los bits entre la bande-
ra de inicio y el campo FCS. El resto r(x) se calcula de la siguiente manera:
r(x) = xn M(x)/G(x), donde n es el grado del generador polinomial y G(x) el ge-
nerador polinomial. La trama que será transmitida antes de agregar la bandera
de fin será: T (x) = x16 M(x) − r(x).
E
l diseño y construcción de satélites pequeños en los últimos años ha si-
do de gran interés para instituciones publicas, centros universitarios y
de investigación. Su facilidad de diseño, el tiempo de construcción y el
bajo costo, en comparación con un satélite industrial, han sido las principales
ventajas para la realización de misiones espaciales de baja complejidad.
Sensores: Este modulo presenta la primera etapa del transmisor. Los sen-
sores de variantes físicas y de posicionamiento GPS proporcionan la in-
formación que se transmitirá a tierra.
Convertidor AX.25 basado en ARDUINO: El programa ARDUINO cuenta
con una interfaz gráfica para realizar la programación, compilación de
transferencia de programas, es la segunda etapa del transmisor. La table-
ta ARDUINO MEGA 2560 mostrada en la figura 5.2 es la encargada de
procesar los datos de los sensores; es decir procesa los datos recibidos por
los sensores y los codifica hacia el protocolo AX.25. Este proceso se lleva
a cabo mediante la programación del ARDUINO MEGA. En el Apéndice
A.1 se,incluye el código de programación. Una vez que se obtiene la tra-
ma AX.25 en forma de pulsos, se envía al transmisor. Los pulsos modulan
una portadora de 433.92MHz en formato digital ASK.
5.1. Bloque transmisor 41
figura 5.10.
Banderas
int tail[]={0,1,1,1,1,1,1,0};
Dirección
int source_addC1[]={0,1,0,0,0,0,0,0};
int source_addC2[]={0,1,0,0,0,0,0,0};
int source_addC3[]={0,1,0,0,0,0,0,0};
int source_addC4[]={0,1,0,0,0,0,0,0};
int source_addC5[]={0,1,0,0,0,0,0,0};
int source_addC6[]={0,1,0,0,0,0,0,0};
int source_addSSID[]={0,1,1,0,0,0,0,1};
Bits de control
Bits de control
int control[]={0,0,0,0,0,0,1,1};
Identificador de protocolo
Para este caso el valor que debe tomar es 11110000 en binario, el cual indica
que no hay protocolo de capa 3 implementado (ver tabla 4.6), como se muestra
en la tabla 5.6.
Identificador de protocolo
int control[]={1,1,1,1,0,0,0,0};
Información
En esta sección será ingresada la información recolectada por los sensores,
como ya se mencionó en secciones anteriores, el protocolo AX.25 no hace nin-
gún tipo de verificación sobre este campo y puede tomar cualquier valor entre
0 − 2048 bits.
6. Comunicación serial
Trama AX.25
Campo Valor
Bandera de inicio 01111110
C1 01000000
C2 01000000
C3 01000000
Dirección C4 01000000
de C5 01000000
destino
C6 01000000
SSID 01100000
C1 01000000
C2 01000000
C3 01000000
Dirección C4 01000000
de C5 01000000
origen
C6 01000000
SSID 01100001
Control 00000011
PID 11110000
000000000010011
000000001100010
000000000000100
Información 000000000001010
000011111100010
000000000010110
000000000011111
FCS 0111010011000101
Bandera de fin 01111110
Receptor GPS: Este modulo presenta la primera etapa del bloque trans-
misor. El receptor GPS recibe las tramas de posicionamiento. El modulo
GPS entrega los datos serie la tableta ARDUINO MEGA con una velociad
de 9600 bps.
Subsistema de potencia: Para el bloque transmisor se diseño un subsistema
de potencia que consiste de dos baterías de: 3.7V y corriente de 2600mAh,
conectadas en serie para voltaje total de 7.4V y corriente de 2600mAh. Es-
te subsistema alimenta a la tableta ARDUINO MEGA y todos los demás
módulos del bloque transmisor (receptor GPS, inversor 74LS04, modula-
dor TX-SAW). El bloque transmisor puede trabajar de forma autónoma,
con el propósito de realizar pruebas a distancia.
Convertidor de protocolo basado en ARDUINO: Como se menciono en la
sección 5.1, la tableta ARDUINO UNO recibe la información de los sen-
sores; en este caso el receptor GPS y la codifica al protocolo AX.25.
Acondicionamiento de señal: En esta sección se adecua la señal para que
esta cuente con una forma apta para su transmisión, en la sección 5.1 se
describe el proceso de acondicionamiento.
Transmisor modulador ASK: Finalmente una vez adecuada la señal de da-
tos esta es enviada al modulador ASK para su transmisión en UHF.
En la figura 5.27 se muestra el bloque transmisor con todos los módulos que
lo integran. En la figura 5.28 el bloque transmisor en pruebas de funcionamien-
to a distancia.
5.4. Aplicación experimental: transmisión de posicionamiento GPS 63
CONCLUSIONES
E
n conclusión, la propuesta del estudio y la realización del sistema míni-
mo transmisor, tuvo como objetivo el envió de datos de telemetría así
como de sensores a través de un enlace de comunicaciones, utilizando
el formato de modulación ASK con una portadora RF en UHF a 433.92MHz.
En particular, se estudió la estructura del protocolo de comunicación AX.25.
Asimismo, se realizó la programación y codificación de sus tramas, tomando
en cuenta las características establecidas por el protocolo.
[1] S. P. Álvarez, “Software para analisis del presupuesto de enlace para co-
municaciones vía satélite,” 2004.
[2] A. LEICK, GPS SATELITTE SURVEYING. JOHN WILEY & SONS, 2004.
[7] S. Bible, “Spread spectrum - it’s not just for breakfast anymore!,” 2014.
[17] W. A. Beech, D. E. Nielsen, and J. Taylor, “Ax.25 link access protocol for
amateur packet radio,” techreport, Tucson Amateur Packet Radio Corpo-
ration, July 1998.
[37] I. Ali and A. Agarwal, “Next generation cdma technology,” Elixir Interna-
tional Journal, 2013.
[39] ublox AG, “The gps dictionary,” tech. rep., ublox, 2010.
[42] F. George and S. Billeter, “Ax.25 telemetry and telecommand transfer fra-
mes format,” techreport 1, Swiss Space Center EPFL, Mar. 2015.
APÉNDICE
26 void setup ( )
27 {
74 A. Apéndice
28 // I n i c i a m o s comunicacion s e r i a l con PC
31 S e r i a l . begin ( 9600 ) ;
32 // I n i c i a m o s l a comucion s e r i a l con GPS NEO−6M
33 S e r i a l 1 . begin ( 9600 ) ; // I n i c i a m o s e l puerto s e r i e d e l gps
34 // I n i c i a m o s comunicacion con r e p e c i o n
35 S e r i a l 2 . begin ( 1200 ) ;
36 }
37
38 void loop ( ) //Run over and over
39 {
40 bool newdata = f a l s e ;
41 unsigned long s t a r t = m i l l i s ( ) ;
42 // Cada 5 segundos e x i s t e a c t u a l i z a c i o n
43 while ( m i l l i s ( ) − s t a r t < 5000 )
44 {
45 i f ( Serial1 . available ( ) )
46 {
47 char c = S e r i a l 1 . read ( ) ;
48 i f ( gps . encode ( c ) )
49 {
50 newdata = t r u e ;
51 break ; // uncomment t o p r i n t new data immediately !
52 }
53 }
54 }
55
56 i f ( newdata )
57 {
58 gps . f _ g e t _ p o s i t i o n (& l a t i t u d e , &l o n g i t u d e ) ;
59 gps . c r a c k _ d a t e t i m e (& year ,&month,&day ,& hour ,& minute ,& second
,& hundredths ) ;
60
61 Serial . println
("−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
;
62 S e r i a l . p r i n t ( " L a t i t u d / Longitud : " ) ;
63 Serial . print ( latitude , 5) ;
64 Serial . print ( " , " ) ;
65 Serial . println ( longitude , 5 ) ;
66 S e r i a l . p r i n t ( " Fecha : " ) ; S e r i a l . p r i n t ( day , DEC) ; S e r i a l .
print ( " / " ) ;
67 S e r i a l . p r i n t ( month , DEC) ; S e r i a l . p r i n t ( " / " ) ; S e r i a l .
p r i n t l n ( ye a r ) ;
68 S e r i a l . p r i n t ( " Hora : " ) ; S e r i a l . p r i n t ( hour , DEC) ; S e r i a l .
print ( " : " ) ;
69 S e r i a l . p r i n t l n ( minute , DEC) ;
70
71 package [ 0 ] = latitude ;
72 package [ 1 ] = l o n g i t u d e *−1 ;
73 package [ 2 ] = day ;
74 package [ 3 ] = month ;
75
75 package [ 4 ] = ye a r ;
78 package [ 5 ] = hour ;
79 package [ 6 ] = minute ;
80 ax25 ( package ) ; // Manda todo e l paquete de
informacon a l a funcion para conformar l a trama ax . 2 5
81
82 }
83 }
84
85 // Funcion para conformar l a trama AX. 2 5
86 void ax25 ( f l o a t package [ ] )
87 {
88 //−−−−−−−−−−−−−−−−−−−−CONFORMACION DE LA TRAMA AX
.25−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//
89
90 //HEAD FLAG ( Bandera de i n c i o ) BIN:01111110 HEX: 0 x7E
91
92 i n t head [ ] = { 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 } ;
93
94 //ADRESSS ( D i r e c c i o n de o r i g e n y d e s t i n o ) D e s t i n a t i o n Adress (HEX
: 4 0 , 4 0 , 4 0 , 4 0 , 4 0 , 4 0 , 6 0 ) Source Adress ( 4 0 , 4 0 , 4 0 , 4 0 , 4 0 , 4 0 , 6 1 )
95
96 int des_addC1 [ ] = { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ;
97 int des_addC2 [ ] = { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ;
98 int des_addC3 [ ] = { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ;
99 int des_addC4 [ ] = { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ;
100 int des_addC5 [ ] = { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ;
101 int des_addC6 [ ] = { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ;
102 int des_addSSID [ ] = { 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 } ;
103
104 int source_addC1 [ ] = { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ;
105 int source_addC2 [ ] = { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ;
106 int source_addC3 [ ] = { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ;
107 int source_addC4 [ ] = { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ;
108 int source_addC5 [ ] = { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ;
109 int source_addC6 [ ] = { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ;
110 int source_addSSID [ ] = { 0 , 1 , 1 , 0 , 0 , 0 , 0 , 1 } ;
111
112 //CONTROL ( 8 ) ( Determina que t i p o de trama s e e s t a u t i l i z a n d o en
e s t e c a s o UI frame ) BIN:00000011 HEX: 0 x03
113
123 i n t num=package [ 0 ] ;
126 i n t j =14 ;
127 do
128 {
129 l a t i t u d e _ b i n a r i o [ j ] = num%2 ;
130 num=num/2 ;
131 j − −;
132 } while (num != 0 ) ;
133
134 int longitude_binario [ ] = { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 } ;
135 num=package [ 1 ] ;
136 j =14 ;
137 do
138 {
139 l o n g i t u d e _ b i n a r i o [ j ] = num%2 ;
140 num=num/2 ;
141 j − −;
142 } while (num != 0 ) ;
143
144 int day_binario [ ] = { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 } ;
145 num=package [ 2 ] ;
146 j =14 ;
147 do
148 {
149 d a y _ b i n a r i o [ j ] = num%2 ;
150 num=num/2 ;
151 j − −;
152 } while (num != 0 ) ;
153
154 i n t month_binario [ ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ;
155 num=package [ 3 ] ;
156 j =14 ;
157 do
158 {
159 month_binario [ j ] = num%2 ;
160 num=num/2 ; ;
161 j − −;
162 } while (num != 0 ) ;
163
164
165 int year_binario [ ] { 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 } ;
166 num=package [ 4 ] ;
167 j =14 ;
168 do
169 {
170 y e a r _ b i n a r i o [ j ] = num%2 ;
171 num=num/2 ;
172 j − −;
173 } while (num != 0 ) ;
174
176 num=package [ 5 ] ;
179 j =14 ;
180 do
181 {
182 h o u r _ b i n a r i o [ j ] = num%2 ;
183 num=num/2 ;
184 j − −;
185 } while (num != 0 ) ;
186
187
188 i n t m i n u t e _ bi n a r i o [ ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ;
189 num=package [ 6 ] ;
190 j =14 ;
191 do
192 {
193 m i n u t e _ b i n a r i o [ j ] = num%2 ;
194 num=num/2 ;
195 j − −;
196 } while (num != 0 ) ;
197
198 //FCS ( 1 6 ) ( Frame check sequence : asegura que l a trama no fue
corrompida durante l a t r a n s m i s i o n )
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
199
200 f o r ( i n t i =0 ; i <=232 ; i ++)
201 {
202 i f ( i >= 0 && i <=7 )
203 {
204 paqueteFCS [ i ]= des_addC1 [ i ] ;
205 }
206 e l s e i f ( i >= 8 && i <=15 )
207 {
208 paqueteFCS [ i ]= des_addC2 [ i −8 ] ;
209 }
210 e l s e i f ( i >= 16 && i <=23 )
211 {
212 paqueteFCS [ i ]= des_addC3 [ i −16 ] ;
213 }
214 e l s e i f ( i >= 24 && i <=31 )
215 {
216 paqueteFCS [ i ]= des_addC4 [ i −24 ] ;
217 }
218 e l s e i f ( i >= 32 && i <=39 )
219 {
220 paqueteFCS [ i ]= des_addC5 [ i −32 ] ;
221 }
222 e l s e i f ( i >= 40 && i <=47 )
223 {
224 paqueteFCS [ i ]= des_addC6 [ i −40 ] ;
225 }
226 e l s e i f ( i >= 48 && i <=55 )
78 A. Apéndice
227 {
230 paqueteFCS [ i ]= des_addSSID [ i −48 ] ;
231 }
232 e l s e i f ( i >=56 && i <=63 )
233 {
234 paqueteFCS [ i ]= source_addC1 [ i −56 ] ;
235 }
236 e l s e i f ( i >=64 && i <=71 )
237 {
238 paqueteFCS [ i ]= source_addC2 [ i −64 ] ;
239 }
240 e l s e i f ( i >=72 && i <=79 )
241 {
242 paqueteFCS [ i ]= source_addC3 [ i −72 ] ;
243 }
244 e l s e i f ( i >=80 && i <=87 )
245 {
246 paqueteFCS [ i ]= source_addC4 [ i −80 ] ;
247 }
248 e l s e i f ( i >=88 && i <=95 )
249 {
250 paqueteFCS [ i ]= source_addC5 [ i −88 ] ;
251 }
252 e l s e i f ( i >=96 && i <=103 )
253 {
254 paqueteFCS [ i ]= source_addC6 [ i −80 ] ;
255 }
256 e l s e i f ( i >=104 && i <=111 )
257 {
258 paqueteFCS [ i ]= source_addSSID [ i −104 ] ;
259 }
260 e l s e i f ( i >=112 && i <=119 )
261 {
262 paqueteFCS [ i ]= c o n t r o l [ i −112 ] ;
263 }
264 e l s e i f ( i >=120 && i <=127 )
265 {
266 paqueteFCS [ i ]=PID [ i −120 ] ;
267 }
268 e l s e i f ( i >=128 && i <=142 )
269 {
270 paqueteFCS [ i ]= l a t i t u d e _ b i n a r i o [ i −128 ] ;
271 }
272 e l s e i f ( i >=143 && i <=157 )
273 {
274 paqueteFCS [ i ]= l o n g i t u d e _ b i n a r i o [ i −143 ] ;
275 }
276 e l s e i f ( i >=158 && i <=172 )
277 {
278 paqueteFCS [ i ]= d a y _ b i n a r i o [ i −158 ] ;
279 }
79
333 }
336 }
337
338
339
363 int t a i l [ ] = { 0 ,1 ,1 ,1 ,1 ,1 ,1 ,0 } ;
364
365 //−−−−−−−−−−−−−−−−−−−−FIN DE CONFORMACION DE LA TRAMA AX
.25−−−−−−−−−−−−−−−−−−−−−−//
366
367
407 i n t elementos16= s i z e o f ( c o n t r o l ) / s i z e o f ( c o n t r o l [ 0 ] ) ;
408 e n v i a r ( c o n t r o l , elementos16 ) ;
409
410 i n t elementos17= s i z e o f ( PID ) / s i z e o f ( PID [ 0 ] ) ;
411 e n v i a r ( PID , elementos17 ) ;
412
413 i n t elementos18= s i z e o f ( l a t i t u d e _ b i n a r i o ) / s i z e o f ( l a t i t u d e _ b i n a r i o
[0 ] ) ;
414 e n v i a r ( l a t i t u d e _ b i n a r i o , elementos18 ) ;
415
416 i n t elementos19= s i z e o f ( l o n g i t u d e _ b i n a r i o ) / s i z e o f (
longitude_binario [0 ] ) ;
417 e n v i a r ( l o n g i t u d e _ b i n a r i o , elementos19 ) ;
418
419 i n t elementos20= s i z e o f ( d a y _ b i n a r i o ) / s i z e o f ( d a y _ b i n a r i o [ 0 ] ) ;
420 e n v i a r ( d ay_bin ario , elementos20 ) ;
421
422 i n t elementos21= s i z e o f ( month_binario ) / s i z e o f ( month_binario [ 0 ] ) ;
423 e n v i a r ( month_binario , elementos21 ) ;
424
425 i n t elementos22= s i z e o f ( y e a r _ b i n a r i o ) / s i z e o f ( y e a r _ b i n a r i o [ 0 ] ) ;
426 e n v i a r ( y e a r _ b i n a r i o , elementos22 ) ;
427
428 i n t elementos23= s i z e o f ( h o u r _ b i n a r i o ) / s i z e o f ( h o u r _ b i n a r i o [ 0 ] ) ;
429 e n v i a r ( hour_bi na ri o , elementos23 ) ;
430
431 i n t elementos24= s i z e o f ( m i n u t e _ b i n a r i o ) / s i z e o f ( m i n ut e _ b i n a r i o [ 0 ] )
;
82 A. Apéndice
439 i n t elementos26= s i z e o f ( t a i l ) / s i z e o f ( t a i l [ 0 ] ) ;
440 e n v i a r ( t a i l , elementos26 ) ;
441
442
443 de la y ( 10000 ) ;
444 Serial . println ( ) ;
445 }
446
447 // Funcion para conformar l a trama AX. 2 5
448 void e n v i a r ( i n t cadena [ ] , i n t elementos )
449 {
450
13 void setup ( )
14 {
83
15 // I n i c i a m o s l a comunicacion s e r i a l
16 S e r i a l . begin ( 9600 ) ;
19 S e r i e 2 . begin ( 1200 ) ;
20 }
21