Alumnos de escuelas primarias porteñas jugaron a través de un equipo de
radiocomunicación una partida con chicos que están en Antártida. En la
ciudad, las movidas se decidían por voto.
La nota completa:
http://www.pagina12.com.ar/diario/sociedad/3-7313-2002-07-06.html
Ajedrez por radio
Baliza en la banda de 70 cm. (432.075 Mhz)
Se encuentra en funcionamiento la baliza en la frecuencia 432.075 Mhz. (Banda de 70cms)
La misma emite en CW con 5 W y antena omni a 8 mts de altura.-
Se encuentra ubicada en el QTH de LU7FIA, FF97PB.-
La baliza en UHF es otro servicio a la comunidad de radioaficionados del grupo 147.415 Mhz.-
Sería muy bueno tener en Rosario balizas en todas las bandas, dado la utilidad de las mismas.-
En la actualidad tenemos las siguientes balizas activas desde Rosario:
10 mts: baliza en CW, 28.197 Mhz. LU5FB Circulo de Radioaficionados de Rosario.
6 mts: baliza en CW. 50.067 Mhz. LU5FB Circulo de Radioaficionados de Rosario
2mts: baliza en CW. 144.055 Mhz LU5FB Circulo de Radioaficionados de Rosario
2mts: baliza multimodo interactiva: CW, SSTV, PKT y FONIA 144.980 Mhz LU1FBT, LU4FHJ, LU6FPJ Grupo 147.415 Mhz.
70 Cm: baliza en CW. 432.075 Mhz, LU7FIA. Grupo 147415 Mhz.-
Planes y proyectos para un futuro proximo...
Estamos viendo la posibilidad de activar una baliza en 1296 Mhz banda de 23 cm.-
Con respecto a la nueva baliza en 432.075 Mhz por favor enviar informes de recepcion a:
lu7fia@hotmail.com
Indicando lugar de recepcion, equipos y antenas utilizados.
Muy amables.-
Willy. LU7FIA
Charla NOAA y TLT
Recepcionando satélites Orbcomm
Prueba de recepción satélites Orbcomm en 137.800Mhz:
Recepcionando OrbComm con handy chino Baofeng UV-200
Según se puede ver en el programa Orbitron los satélites Orbcomm son bastantes:
Con cualquier equipo que recepcione en 137 / 138 Mhz. se pueden escuchar, y como son tantos se pueden escuchar casi en cualquier momento del día o de la noche.
Instalando el software Orbcomm Plotter se puede ver bastante información en pantalla:
Charla sobre RX de imágenes APT NOAA
Estimados todos, el día sábado 18 a las 10h. junto con el amigo Carlos Bettiol LU1FBT brindaremos una pequeña charla muy básica sobre recepción de imágenes APT de satélites NOAA.
Simplemente es contar nuestra experiencia en la recepción de estas
imágenes, Nada técnico ni complicado ya que sólo somos aficionados.
Que
software, antena y receptor usar y tal vez algún que otro dato.
Esencialmente para dar a conocer esta posibilidad que tenemos dentro de nuestro
hobby ciencia, e incentivar al que no conoce o tiene ganas de aprender / experimentar un poco
más sobre la materia.
La charla será en el campo de antenas del Radio Club Rosario LU4FM, calle Batlle y Ordóñez 3202, y por supuesto libre y gratuita.
La
invitación es abierta a cualquier interesado en participar, sea o no
radioaficionado. Estamos esperando la confirmación de un experto en meteorología, que en caso de poder concurrir hablará sobre como interpretar las imágenes meteorológicas.
Desde ya muchas gracias por la atención y la difusión.
Saludos cordiales.
Frecuencia repetidora LU4FM 145.390Mhz -600
Actualización 15/08/2012
Globo y radiobaliza
El amigo y espero que muy pronto colega Luciano Oitana me envió por mail la foto que logró recibir en SSTV del globo de AMSAT y de la radiobaliza interactiva.
¡Felicitaciones Luciano y gracias por escribir!
Actualización 26/5/2012
Daniel LU6FAF desde la ciudad de Casilda envía su foto:
Contador Geiger casero
En Marzo del 2011, luego del tan mentado tsunami en Japón, fueron tema de
conversación en la frecuencia terremotos, tsunamis y lo que se decía en
los medios sobre la radiación. Es así que surgió como una especie de
inquietud y desafío tratar de armar un contador geiger casero.
Carlos LU4FHJ se puso manos a la obra
desarrollando desde cero el circuito de un contador Geiger.
Lo más complicado del proyecto era conseguir los tubos Geiger, previamente había hablado con Nacho Herrera (Radio escucha de nuestra frecuencia) quien se ofreció amablemente a pedir unos tubos Rusos CI-3BG que encontramos a buen precio en e-bay. Ese modelo de tubo (CI-3BG) es el mismo que se utilizó en Chernóbil en 1986 luego del accidente en la central nuclear.
Unos 15 o 20 días después, llegaron en perfecto estado desde Ucrania diez tubos que habíamos pedido, y para el 20 de Abril más o menos ya estaba listo nuestro detector de partículas.
En el video que adjunto debajo se puede ver una prueba que hicimos con dos mechas de farol tipo “sol de noche” las cuales suelen tener torio.
Otra prueba que hicimos fue con electrodos de una máquina de soldar TIG, los electrodos con contenido de torio permiten una mayor capacidad de corriente, mejor iniciación y estabilidad del arco.
Llamamos a las ferreterías más grandes de la ciudad tratando de conseguir electrodos con 3% de torio pero no los pudimos conseguir en ningún lugar. Sólo conseguimos los que tienen 2% y casi no marcaban nada en nuestro instrumento.
ATV 1.2Ghz Fail
Repetidor banda cruzada experimental con pic 16f84a
Con la simple intención de aprender experimentando, decidí armar un repetidor banda cruzada UHF / VHF. aprovechando algunos componentes que dejó el amigo Charly LU1FBT (rezago de la radio baliza interactiva) más otros componentes reciclados y un PIC 16f84a que tenía por ahí.
Para la recepción uso un handy Yaesu FT-50r y para transmisión una base Yaesu FT-2400. (RX 434,415Mhz - TX 147.415Mhz.) tiene beep de cortesía, identificación en CW y anti-poncho. Para evitar desarmar el handy, utilicé una fotoresistencia (LDR) sobre el led del mismo, detectando de esa forma la señal portadora cuando alguien emite. (Para evitar usar audio)
Radiobaliza multimodo e interactiva: Algunos reportes.
Estas son algunas fotos que llegaron por mail, a todos muchas gracias por enviarlas y esperamos recibir muchas más.
Desde la ciudad de Villa Gobernador Gálvez LU9FQR:
Desde Coronel Domínguez (30km aprox.) LU8FJH:
Desde la ciudad de Pérez LU1FNR:
Mauro Montenegro desde zona norte:
Paraje Las hacheras- Impenetrable Chaqueño...
Paraje Las hacheras- Impenetrable Chaqueño... (Por Willy LU7FIA)
El 12 de Abril llegue a Castelli donde tenia que hacer varios tramites, sin
tiempo para descansar y después de 13 horas de viaje, me dedique a resolverlos lo antes posible para poder llegar hasta Las hacheras,
a unos 100 Km. al norte , en el mismo
día.
La idea era pasar a buscar una vieja Land Rover Santana por el mecánico
para llevarla y ponerla en servicio en La casa de la
pediatría rural (en el paraje Las hacheras) pero el vehículo no estaba
terminado y me demore unas horas mas...
Finalmente opte por buscar la Toyota Hilux... pero también tenia
inconvenientes, finalmente compre una batería nueva y una vez
instalada partí hacia el monte, previo paso por Miraflores, a unos 50 Km. al
norte y por ruta pavimentada. Allí en Miraflores
me hicieron "dedo" tres personas que viajaban al norte, subieron
todos los bolsos y salimos hacia Las Hacheras, este tramo
es por camino de tierral en muy mal estado y si llueve es intransitable...
igual decidí partir.
Tarde algo mas de una hora en llegar al paraje, y me dirigí hacia la casa de la
pediatría rural donde me esperaban dos albañiles
compañeros de trabajo, en el silencio y la magia del monte...
Después de tomar tres mates y cuando ya caía la noche me dispuse a montar las
antenas!!!, es que deseaba estar al aire cuanto
antes desde la zona G... Por lo que pude averiguar ,nunca antes hubo una
estación de radioaficionado desde este lugar...
Me trepe a la torre de 36 mts y colgué los dipolos para 15, 20 y 40 m además de
una vertical para 28 mhz... De noche y en una
absoluta oscuridad no convenía conectar los coaxiles y demás detalles...
A la mañana siguiente prepare la estación- Kenwood TS 450 S, fuente de
alimentación, batería, notboock, interface, base de VHF
y termine de acomodar las antenas con sus respectivos coaxiles... al rato ya
estaba en el aire...
No hay ruido en las bandas!!! pero las estaciones llegan s9 más treinta!!
Sabia que debía aprovechar los cuatro primeros días para estar activo en radio,
dado que luego llegaría el grupo de 11 personas
que yo tenia que ir a buscar a Castelli, 5 cineastas con todos los equipos y 6
compañeros de La Higuera ONG, tres médicos y
algunos colaboradores (entre ellos mi viejo,el Coco) y a partir de allí ya no
había tiempo para la radio.
Realicé unos cuantos qsos en 10, 20 y 40 mts con estaciones de varias provincias argentinas y DX, la antena de 15 mts fue destruida por chanchos moros que andaban por ahí...
Hacia actividad de radio en los tiempos libres, mientras trabajaba en la construcción y preparaba la logística para las actividades programadas en los días siguientes.
Chagas: un asesino silencioso... enfermedad de la pobreza.
Durante los ocho días siguientes se rodó un documental sobre la actividad que desarrolla La Higuera en el área de salud de la región 5 de la provincia del Chaco (impenetrable), proyecto PAICRA (pediatría ambulatoria itinerante para comunidades rurales y aisladas) asistencia medica y lucha contra el mal de Chagas...
El material registrado mientras se atendía en los diferentes parajes, mas entrevistas y visitas a familias que viven (sobreviven) muy adentro del monte y aisladas de todo, paisajes, lo cotidiano, la vida del grupo humano en la estadía y otras vivencias difíciles de describir se convertirán finalmente en un documental de 30 minutos encargado por la red Al Jazzera a una productora local, el mismo estará listo para el 31 de Mayo y además de dar a conocer el problema del Chagas, recauda fondos destinados a combatir la enfermedad.
Se atendió en seis parajes en un radio de 80 Km. con epicentro en Las hacheras, se recorrieron mas de 1400 Km. en el monte, con tres vehículos, se realizaron análisis de sangre, electrocardiogramas, se suministro medicamentos y se atendieron 70 pacientes.
En parte de la geografía recorrida no hay señal de telefonía celular, parte del trabajo se realizo comunicándose a través de cuatro handys... es decir: cuando ninguna infraestructura de servicios comerciales funciona... la radio, la que nosotros hacemos y practicamos,
sigue funcionando.
Lamentablemente no pude dedicarme a estar activo en las bandas durante los días de trabajo, una gran cantidad de responsabilidades y actividad, mucho movimiento de gente y vehículos, transporte de equipos, tramites, preparación de medicamentos y programas, desayuno, almuerzo y cena para 12 personas, la lluvia, falta de duchas, trabajos en la construcción de La casa de la Pediatría Rural, y tantas cosas mas no dejan tiempo para operar la estación de radio.
Pero "la radio" estuvo presente.-
Las estaciones contactadas:
Mas de 90 QSOs, en fonía y algunos pocos en SSTV.
Provincias Argentinas: Santa Fe, Santiago del Estero, San Luis, Salta, Mendoza, San Juan, La Rioja, Catamarca, Tucuman, Formosa, Chaco, Buenos aires, Entre Rios, Cap federal,Cordoba.
DX: Paraguay, Rusia, Ukrania, Inglaterra, Escocia, Canadá, USA, Camerún, Chile, Venezuela, España, Brasil, Chipre, Eslovaquia, Italia.
SSTV: LU1JY, LU1FVN, VE3YCO,PY2RPD.
A siete Km. del paraje La Armonía (a unos 40 KM mas al Norte de Las Hacheras) necesitan algún tipo de comunicación debido al aislamiento total (no hay señal de celular), la idea es instalar una estación de VHF completa para que puedan comunicarse.
El mismo caso en cercanías del paraje Los Rosales.- Visite también algunas familias que están totalmente incomunicadas.
El grupo de Radio Solidaria 147.415 Mhz se propone en lo posible de instalarle una estación de radio para suplir el aislamiento.
Quienes puedan donar bases de VHF o equipos de Banda Ciudadana, fuentes, antenas o cualquier accesorio para dichas instalaciones por favor comunicarse con LU6FPJ Facundo Fernández.
Un abrazo.-
Willy.-
LU7FIA
Radioafición, la aventura del conocimiento y el aprendizaje
Actualización 6/40/2014: Código fuente de la baliza:
/////////////////////////////////////////////////////////////////////////////////
//
// BALIZA IDENTIFICADORA EN CODIGO MORSE LU6FPJ - LU4FHJ
//
// MICRO: 16F877A ROSARIO 25/04/12
//
// NUEVA VERSION + DTMF modificado para 16F877A
//
//
// INCORPORADOS 2 x VOICE CHIP APR9600
//
//
/////////////////////////////////////////////////////////////////////////////////
// RB 0
// RB 1
// RB 2
// RB 3
// RB 4
// RB 5
// RB 6
// RB 7
// RA 0 TX
// RA 1 TONO
// RA 2
// RA 3
// RA 4
asm{
__FUSES _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _PWRTE_ON & _WDT_ON & _HS_OSC
}
//Timing settings
#pragma CLOCK_FREQ 20000000
//------------------------------------------------------------------------------
char PORTC@0x07;
char PORTD@0x08;
char PORTE@0x09;
char PIR1@0x0C;
char RCSTA@0x18;
char TXREG@0x19;
char RCREG@0x1A;
char ADRESH@0x1e;
char ADCON0@0x1f;
char CCPR1L@0x15;
char CCPR2L@0x1b;
char direc@0x20;
char valor@0x21;
//------------------------------------------------------------------------------
unsigned char aux;
unsigned char aux1;
unsigned char aux2;
unsigned char cursor1;
unsigned char cursor2;
unsigned char morse;
unsigned char frec;
unsigned char wpm;
unsigned int gx; // variables globales multiproposito
unsigned char gbx;
unsigned char gbt;
unsigned int frecuencia=1000; // desde 400 HZ hasta 1000 HZ
unsigned const char palabrasxm=12; // desde 4 palabras por minuto
//---------------------------TABLA MORSE----------------------------------------
//
//El primer uno a la izquierda es un marcador que no se reproduce
//
//a partir del mismo de izquierda a derecha 1=raya(DA) 0=punto (DI)
const unsigned char Table[59]={
00000001b,//032 espacio interpalabra 7 units
01101011b,//033 ! -ú-ú--
01010010b,//034 " ú-úú-ú
00111011b,//035 # --ú-- para usar la ¥
10001001b,//036 $ úúú-úú-
00000001b,//037 % No usado
00101000b,//038 & ú-úúú Wait
01011110b,//039 ' ú----ú
00110110b,//040 ( -ú--ú
01101101b,//041 ) -ú--ú-
00000001b,//042 * No usado
00101010b,//043 + ú-ú-ú
01110011b,//044 , --úú--
01100001b,//045 - -úúúú-
01010101b,//046 . ú-ú-ú-
00110010b,//047 / -úú-ú
00111111b,//048 0 -----
00101111b,//049 1 ú----
00100111b,//050 2 úú---
00100011b,//051 3 úúú--
00100001b,//052 4 úúúú-
00100000b,//053 5 úúúúú
00110000b,//054 6 -úúúú
00111000b,//055 7 --úúú
00111100b,//056 8 ---úú
00111110b,//057 9 ----ú
01111000b,//058 : ---úúú
01101010b,//059 ; -ú-ú-ú
00000001b,//060 < No usado
00110001b,//061 = -úúú-
00000001b,//062 > No usado
01001100b,//063 ? úú--úú
01011010b,//064 @ ú--ú-ú
00000101b,//065 A ú-
00011000b,//066 B -úúú
00011010b,//067 C -ú-ú
00001100b,//068 D -úú
00000010b,//069 E ú
00010010b,//070 F úú-ú
00001110b,//071 G --ú
00010000b,//072 H úúúú
00000100b,//073 I úú
00010111b,//074 J ú---
00001101b,//075 K -ú-
00010100b,//076 L ú-úú
00000111b,//077 M --
00000110b,//078 N -ú
00001111b,//079 O ---
00010110b,//080 P ú--ú
00011101b,//081 Q --ú-
00001010b,//082 R ú-ú
00001000b,//083 S úúú
00000011b,//084 T -
00001001b,//085 U úú-
00010001b,//086 V úúú-
00001011b,//087 W ú--
00011001b,//088 X -úú-
00011011b,//089 Y -ú--
00011100b //090 Z --úú
};
//------------------------FIN TABLA MORSE---------------------------------------
const unsigned char dtmf [16]={
'D',//
'1',//
'2',//
'3',//
'4',//
'5',//
'6',//
'7',//
'8',//
'9',//
'0',//
'*',//
'#',//
'A',//
'B',//
'C' //
};
//------------------------------------------------------------------------------
//
// FUNCIONES DE MANEJO DE DISPLAY
//
//------------------------------------------------------------------------------
void lcd_byte(char data,char control)
{char low,high;
low=data&15;
low=low<<4;
high=data&240;
if (control!=2){if(control==1){set_bit(high,2);set_bit(low,2);}
PORTD=high;
delay_ms(1);
set_bit(PORTD,3);
delay_ms(1);
clear_bit(PORTD,3);
delay_ms(1);
PORTD=low;
delay_ms(1);
set_bit(PORTD,3);
delay_ms(1);
clear_bit(PORTD,3);
delay_ms(1);
}
if (control==2){
PORTD=data;
delay_ms(1);
set_bit(PORTD,3);
delay_ms(1);
clear_bit(PORTD,3);
delay_ms(1);
}
}
void lcd_reset(void)
{
lcd_byte( 00001100b,0 ); // Display On/Off
lcd_byte( 00011000b,0 ); // Display Shift
lcd_byte( 00000001b,0 ); // Clear Display
lcd_byte( 00000110b,0 ); // Entry Mode Set
lcd_byte( 00101000b,0 ); // Funtion Set 4 bits 2 lines
lcd_byte( 00000010b,0 ); // Return Home
lcd_byte( 10000000b,0 ); // Set DD Ram Address
}
void lcd_init(void)
{
delay_ms(250);
delay_ms(250);
lcd_byte( 00110000b,2 );
delay_ms(5);
lcd_byte( 00110000b,2 );
delay_ms(1);
lcd_byte( 00110000b,2 );
lcd_byte( 00100000b,2 );
}
void mensaje (char mens)
{
char i=0;
// if(mens<20){lcd_reset();}
if(mens<20){ lcd_byte( 00000001b,0 ); // Clear Display
}
//else {lcd_byte( 10101000b,0 );}
// const char *SAMPLE ="0123456789ABCDEF------------------------0123456789ABCDEF";
const char *texto1 =" BIENVENIDO inicializando...";
const char *texto2 =" RADIOBALIZA ";
const char *texto7 =" CORTE ";
const char *texto8 =" VOICE ";
const char *texto9 =" PSK ";
const char *texto10=" SSTV ";
const char *texto11=" ID CW ";
const char *texto20=" ~ ";
if(mens==1 ){while(texto1 [i]!=0){lcd_byte(texto1 [i++],1);}}
if(mens==2 ){while(texto2 [i]!=0){lcd_byte(texto2 [i++],1);}}
if(mens==3 ){while(texto3 [i]!=0){lcd_byte(texto3 [i++],1);}}
if(mens==4 ){while(texto4 [i]!=0){lcd_byte(texto4 [i++],1);}}
if(mens==5 ){while(texto5 [i]!=0){lcd_byte(texto5 [i++],1);}}
if(mens==6 ){while(texto6 [i]!=0){lcd_byte(texto6 [i++],1);}}
if(mens==7 ){while(texto7 [i]!=0){lcd_byte(texto7 [i++],1);}}
if(mens==8 ){while(texto8 [i]!=0){lcd_byte(texto8 [i++],1);}}
if(mens==9 ){while(texto9 [i]!=0){lcd_byte(texto9 [i++],1);}}
if(mens==10){while(texto10[i]!=0){lcd_byte(texto10[i++],1);}}
if(mens==11){while(texto11[i]!=0){lcd_byte(texto11[i++],1);}}
if(mens==20){while(texto20[i]!=0){lcd_byte(texto20[i++],1);}}
}
void numero( int num )
{
lcd_byte( 10110100b,0 );//old value 10101101==45
// lcd_byte( '0' + (num/1000),1);
// lcd_byte( '0' + (num%1000)/100,1);
// lcd_byte( ',',1);
// lcd_byte( '0' + (num%100)/10,1);
lcd_byte( '0' + (num/100),1);
lcd_byte( '0' + (num%100)/10,1);
lcd_byte( '0' + (num%10),1);
}
//------------------------------------------------------------------------------
//
// FUNCIONES DE TIEMPO
//
//------------------------------------------------------------------------------
unsigned char segundosDTMF(unsigned int seg)
{
unsigned char stex1=255;
unsigned char stex2=255;
unsigned char dper=0;
unsigned int sdaux;
cursor1=0;
lcd_byte( 00000010b,0 ); // Return Home
mensaje(20);
lcd_byte( 00000010b,0 ); // Return Home
sdaux=seg+1;
seg=seg*20;
aux=0;
aux1=255;
aux2=0;
for(gx=0;gx<seg;gx++){
if(gx%20==0){
sdaux=sdaux-1;
if(dper==0){numero(sdaux);}
if(dper==1){mensaje(2);}
dper=dper-(dper>0);
}
clear_wdt();
delay_ms(50);
aux=(PORTB&10001111b);
if(aux>127){
aux1=aux&00001111b;
stex1=dtmf[aux1];
if(stex1!=stex2){
if(cursor1==16){
cursor1=0;
lcd_byte( 00000010b,0 ); // Return Home
mensaje(20);
lcd_byte( 00000010b,0 ); // Return Home
}
cursor2=128+cursor1;
lcd_byte(cursor2,0 );
lcd_byte(stex1,1);
cursor1++;
}
stex2=stex1;
}
else {
stex1=255;
stex2=255;
}
if((aux1>0)&&(aux1<6)){
if(aux2==0){return (aux1);}
}
if((aux1==9)&&(aux2==0))
{
aux2=20;
aux1=255;
}
aux2=aux2-(aux2>0);
if(aux1==5){
aux1=255;
if(aux2>0){mensaje(3);dper=15;}
aux2=0;
}
if(aux1==6){
aux1=255;
if(aux2>0){mensaje(4);dper=15;}
aux2=0;
}
if(aux1==7){
aux1=255;
if(aux2>0){mensaje(5);dper=15;}
aux2=0;
}
if(aux1==8){
aux1=255;
if(aux2>0){mensaje(6);dper=15;}
aux2=0;
}
}
aux1=0;
return 0;
}
unsigned char segundosff(unsigned int seg)
{
unsigned char stex1=255;
unsigned char stex2=255;
unsigned int sfaux;
unsigned char fper=0;
cursor1=0;
lcd_byte( 00000010b,0 ); // Return Home
mensaje(20);
lcd_byte( 00000010b,0 ); // Return Home
sfaux=seg+1;
seg=seg*20;
aux=0;
aux1=255;
aux2=0;
for(gx=0;gx<seg;gx++){
if(gx%20==0){
sfaux=sfaux-1;
if(fper==0){numero(sfaux);}
if(fper==1){mensaje(2);}
fper=fper-(fper>0);
}
clear_wdt();
delay_ms(50);
aux=(PORTB&10001111b);
if(aux>127){
aux1=aux&00001111b;
stex1=dtmf[aux1];
if(stex1!=stex2){
if(cursor1==16){
cursor1=0;
lcd_byte( 00000010b,0 ); // Return Home
mensaje(20);
lcd_byte( 00000010b,0 ); // Return Home
}
cursor2=128+cursor1;
lcd_byte(cursor2,0 );
lcd_byte(stex1,1);
cursor1++;
}
stex2=stex1;
}
else {
stex1=255;
stex2=255;
}
if((aux1==9)&&(aux2==0))
{
aux2=20;
aux1=255;
}
aux2=aux2-(aux2>0);
if(aux1==5){
aux1=255;
if(aux2>0){mensaje(3);fper=15;}
aux2=0;
}
if(aux1==6){
aux1=255;
if(aux2>0){mensaje(4);fper=15;}
aux2=0;
}
if(aux1==7){
aux1=255;
if(aux2>0){mensaje(5);fper=15;}
aux2=0;
}
if(aux1==8){
aux1=255;
if(aux2>0){mensaje(6);fper=15;}
aux2=0;
}
}
aux1=0;
return 0;
}
unsigned char segundosr(unsigned int seg)
{
seg=seg*20;
for(gx=0;gx<seg;gx++){
clear_wdt();
delay_ms(50);
aux=(PORTB&10001111b);
if(aux>127){
aux=aux&00001111b;
return (aux);}
}
aux=0;
return 0;
}
void segundosf(unsigned int seg)
{
seg=seg*10;
for(gx=0;gx<seg;gx++){
clear_wdt();
delay_ms(100);
}
}
void micropausa(void)
{
delay_us(frec);
delay_us(frec);
delay_us(frec);
delay_us(frec);
delay_us(frec);
}
void pausa (unsigned char c)
{
gbt=wpm;
for(gbx=0;gbx<c;gbx++)
{
clear_wdt();
while(gbt>0){
PORTA=1;
PORTA=1;
PORTA=1;
PORTA=1;
micropausa();
PORTA=1;
PORTA=1;
PORTA=1;
PORTA=1;
micropausa();
PORTA=1;
PORTA=1;
PORTA=1;
PORTA=1;
micropausa();
PORTA=1;
PORTA=1;
PORTA=1;
PORTA=1;
micropausa();
PORTA=1;
PORTA=1;
PORTA=1;
PORTA=1;
micropausa();
PORTA=1;
PORTA=1;
PORTA=1;
PORTA=1;
micropausa();
PORTA=1;
PORTA=1;
PORTA=1;
gbt--;
asm{nop}
micropausa();
PORTA=1;
micropausa();
}
}
}
void punto()
{
gbt=wpm;
while(gbt>0){
PORTA=3;
PORTA=3;
PORTA=3;
PORTA=3;
micropausa();
PORTA=1;
PORTA=1;
PORTA=1;
PORTA=1;
micropausa();
PORTA=3;
PORTA=3;
PORTA=3;
PORTA=3;
micropausa();
PORTA=1;
PORTA=1;
PORTA=1;
PORTA=1;
micropausa();
PORTA=3;
PORTA=3;
PORTA=3;
PORTA=3;
micropausa();
PORTA=1;
PORTA=1;
PORTA=1;
PORTA=1;
micropausa();
PORTA=3;
PORTA=3;
PORTA=3;
gbt--;
asm{nop}
micropausa();
PORTA=1;
micropausa();
}
pausa(1);
}
void raya()
{
gbt=3*wpm;
while(gbt>0){
PORTA=3;
PORTA=3;
PORTA=3;
PORTA=3;
micropausa();
PORTA=1;
PORTA=1;
PORTA=1;
PORTA=1;
micropausa();
PORTA=3;
PORTA=3;
PORTA=3;
PORTA=3;
micropausa();
PORTA=1;
PORTA=1;
PORTA=1;
PORTA=1;
micropausa();
PORTA=3;
PORTA=3;
PORTA=3;
PORTA=3;
micropausa();
PORTA=1;
PORTA=1;
PORTA=1;
PORTA=1;
micropausa();
PORTA=3;
PORTA=3;
PORTA=3;
gbt--;
asm{nop}
micropausa();
PORTA=1;
micropausa();
}
pausa(1);
}
void codec(unsigned char letra)
{
unsigned char c=7,x;
letra=letra&0x7F;
morse=Table[letra-0x20];
if(morse==0){morse=1;}
while(morse<0x80){morse=morse<<1;c--;}
morse=morse<<1;
// ú 1 unidad de tiempo
// - 3 unidades de tiempo
// gap intra caracter 1 unidad de tiempo
// gap entre caracteres 3 unidades de tiempo
// gap entre palabras 7 unidades de tiempo
//
// cada punto o raya termina con un gap de 1 para encadenarlo
// con el siguiente simbolo del caracter
// por eso agrego un gap de 2 al final para completar los 3
// luego de cada caracter
//
// de la misma manera agrego 4 para completar los 7 entre palabras
//
if(c==0){pausa(4);} //3 del gap de la ultima letra mas 4 = 7
else {
for(x=0;x<c;x++){if(morse<0x80){punto();} else {raya();}
morse=morse<<1;
}
pausa(2);
}
}
void codecc(unsigned char cletra)
{
if(cletra==0x20){
codec(cletra);
codec(cletra);
codec(cletra);
codec(cletra);
codec(cletra);
}
else {
codec(cletra);
}
}
void tx_morse(unsigned const char *texto)
{
unsigned char x=0;
cursor1=0;
cursor2=0;
lcd_byte( 00000010b,0 ); // Return Home
mensaje(20);
lcd_byte( 00000010b,0 ); // Return Home
while(texto[x]!=0){
codecc(texto[x]);
if(cursor1==16){
cursor1=0;
lcd_byte( 00000010b,0 ); // Return Home
mensaje(20);
lcd_byte( 00000010b,0 ); // Return Home
}
lcd_byte(texto[x],1);x++;
cursor1++;
}
}
void inicio_var(void)
{
frec=20000/frecuencia;
frec=frec*5;
gx=frec*40/1000; //periodo del loop (T*4)
gx=palabrasxm*frec;
wpm=30000/gx;
if(wpm>85){wpm=85;}
if(frec<100){frec=100;}
}
void power_on(void)
{
PORTA=5;
clear_wdt();
delay_ms(250);
clear_wdt();
PORTA=1;
delay_ms(250);
clear_wdt();
}
void power_off(void)
{
clear_wdt();
delay_ms(250);
clear_wdt();
delay_ms(250);
clear_wdt();
PORTA=0;
}
//******************************************************************************
void sstv(void)
{
mensaje(10);
power_on();
clear_bit(PORTB,6);
clear_wdt();
delay_ms(250);
clear_wdt();
delay_ms(250);
clear_wdt();
delay_ms(250);
set_bit (PORTB,6);
segundosf(40);
power_off();
}
//******************************************************************************
void psk(void)
{
mensaje(9);
power_on();
clear_bit(PORTB,4);
clear_wdt();
delay_ms(250);
clear_wdt();
delay_ms(250);
clear_wdt();
delay_ms(250);
set_bit (PORTB,4);
segundosf(18);
power_off();
}
//******************************************************************************
void voice(void)
{
mensaje(8);
power_on();
clear_bit(PORTB,5);
clear_wdt();
delay_ms(250);
clear_wdt();
delay_ms(250);
clear_wdt();
delay_ms(250);
set_bit (PORTB,5);
segundosf(11);
power_off();
}
//******************************************************************************
void callsign(void)
{
mensaje(11);
power_on();
tx_morse("VVV LU1FBT ");
tx_morse("LU4FHJ LU6FPJ ");
tx_morse("FF97QB ");
power_off();
}
//******************************************************************************
void callqap(void)
{
mensaje(7);
power_on();
tx_morse(" QAP ");
power_off();
}
//******************************************************************************
void main(void)
{
unsigned char maux=2;
cursor1=0;
cursor2=0;
//------------------------------------------------------------------------------
//
// SETEO DE PUERTOS
//
//------------------------------------------------------------------------------
asm
{
bsf STATUS,RP0
movlw b'10000110'
movwf ADCON1
movlw b'00000000'
movwf TRISD
bcf STATUS,RP0
}
set_bit( STATUS, RP0 );
set_tris_a( 00000000b );
set_tris_b( 10001111b );
OPTION_REG= 11111111b;
clear_bit( STATUS, RP0 );
PORTA=0;
PORTD=0;
PORTB=01110000b;
clear_wdt();
inicio_var();
lcd_init();
lcd_reset();
mensaje(1);
segundosf(2);
mensaje(2);
segundosf(2);
callsign();
mensaje(2);
while(1){
if(segundosDTMF(180)!=0){maux=aux1;}
if(maux==1){callqap();segundosff(300);maux=2;}
if(maux==2){voice() ;}
if(maux==3){psk() ;}
if(maux==4){sstv() ;}
if(maux==5){callsign();}
mensaje(2);
maux++;if(maux>5){maux=2;}
}
}









