Micrófono de palma YAESU
Nube de cenizas Volcán Puyehue NOAA 19 at 12 Jun 2011 18:16:22 GMT
Nube de cenizas Volcán Puyehue NOAA 19 at 12 Jun 2011 18:16:22 GMT
NOAA 19 northbound 54W at 12 Jun 2011 18:16:22 GMT on 137.10MHz, MSA enhancement, Normal projection, Channel A: 2 (near infrared), Channel B: 4 (thermal infrared)
Transmisión de prueba ATV en 1.2Ghz
Hoy al fin pudimos hacer un pequeño ensayo de ATV en 1.2Ghz. con buenos resultados, el próximo paso es armar una antena para el receptor e intentar recibir las imágenes a distancia.
Puesta a punto, ajustes y primer transmisión ATV (Amateur television) de prueba en 1.2Ghz. LU4FHJ LU7FIA y LU6FPJ  Transmisión en VSB (Vestigial Side Band - banda lateral vestigial)
Software (pic 16f84) y hardware radio baliza
La radiobaliza fue la primera de una serie de experimentos que realizamos junto con el grupo "Rosario Vuela", Claudio LU7FQP, Guillermo LU5FGA y Willy LU7FIA. 
En el primer vuelo logramos que llegue a unos 150 metros de altura y recibimos reportes de estaciones que escucharon la radio baliza desde Arteaga, Casilda, San Nicolás y Villa Ramallo.  Mauro nos escuchó con una radio FM (88-108Mhz.) modificada.
Algunos de los presentes la noche que hicimos la primer prueba, fue el 30 de Abril de 2009:
Circuito radiobaliza.(Fe de erratas unir la pata 4 del PIC con la 14)
Radiobaliza (Handy Yaesu FT-23r)
Código fuente de la radiobaliza:
/////////////////////////////////////////////////////////////////////////////////
//
//    BALIZA IDENTIFICADORA EN CODIGO MORSE LU6FPJ - LU4FHJ
//     
//    MICRO: 16F84A        ROSARIO 09/04/09         
//                      
/////////////////////////////////////////////////////////////////////////////////
 
// 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 & _WDT_OFF & _XT_OSC & _PWRTE_ON}
#pragma CLOCK_FREQ  4000000
unsigned char morse;
unsigned  char frec;
unsigned  char wpm; 
unsigned  int       frecuencia=1000; // desde 400 HZ hasta 1000 HZ
unsigned const char palabrasxm=10;   // 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[200]={
                                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  = -úúú-
                                00000000b,//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 --úú
                                00000001b,//091  [                  No usado
                                00000001b,//092  \                  No usado 
                                00000001b,//093  ]                  No usado
                                00000001b,//094  ^                  No usado
                                01001101b,//095  _ úú--ú-
                                00000001b,//096  `                  No usado 
                                00000101b,//097  a ú-
                                00011000b,//098  b -úúú
                                00011010b,//099  c -ú-ú
                                00001100b,//100  d -úú
                                00000010b,//101  e ú
                                00010010b,//102  f úú-ú
                                00001110b,//103  q --ú
                                00010000b,//104  h úúúú
                                00000100b,//105  i úú
                                00010111b,//106  j ú---
                                00001101b,//107  k -ú-
                                00010100b,//108  l ú-úú
                                00000111b,//109  m --
                                00000110b,//110  n -ú
                                00001111b,//111  o ---
                                00010110b,//112  p ú--ú
                                00011101b,//113  q --ú-
                                00001010b,//114  r ú-ú
                                00001000b,//115  s úúú
                                00000011b,//116  t -
                                00001001b,//117  u úú-
                                00010001b,//118  v úúú-
                                00001011b,//119  w ú--
                                00011001b,//120  x -úú-
                                00011011b,//121  y -ú--
                                00011100b,//122  z --úú
                                00000001b,//123  {                  No usado
                                00000001b,//124  |                  No usado
                                00000001b,//125  }                  No usado
                                00000001b,//126  ~                  No usado
                                00000001b //127                    No usado
                               };
//------------------------FIN TABLA MORSE---------------------------------------
void segundos(unsigned int seg)
{
 unsigned int x;
 for(x=0;x
                    delay_ms(250);
                    clear_wdt();
                    delay_ms(250);
                    clear_wdt();
                    delay_ms(250);
                    clear_wdt();
                    delay_ms(250);
                   }
}
void micropausa(void)
{
 delay_us(frec);
 delay_us(frec);
 delay_us(frec);
 delay_us(frec);
 delay_us(frec);
}
void pausa (unsigned char c)
{
 unsigned char t,x;
 t=wpm;
 
 for(x=0;x
      clear_wdt();
      while(t>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;
                 t--;
                 asm{nop}  
                 micropausa();
                 PORTA=1;
                 micropausa();
                } 
     }
}
void punto()
{
 unsigned char t;
 t=wpm;
 while(t>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;
            t--;
            asm{nop}  
            micropausa();
            PORTA=1;
            micropausa();
           } 
 pausa(1);
}
void raya() 
{ 
 unsigned char t;
 t=3*wpm;
 while(t>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;
            t--;
            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
                          }
          pausa(2);
         } 
}
void tx_morse(unsigned const char *texto)
{
 unsigned char x=0;
 while(texto[x]!=0){codec(texto[x]);x++;}
}
void inicio_var(void)
{
 unsigned int x,y;
 frec=20000/frecuencia;
 frec=frec*5;
 x=1200/palabrasxm;  //unidad de tiempo (duracion del punto) en mseg
 y=frec*40/1000;          //periodo del loop (T*4)       
 y=palabrasxm*frec; 
 wpm=30000/y;
 
 if(wpm>85){wpm=85;}
 if(frec<100){frec=100;}
 
}
void power_on(void)
{
 PORTA=1; 
 clear_wdt();
 delay_ms(250); 
 clear_wdt();
 delay_ms(250);
 clear_wdt(); 
}
void power_off(void)
{
 clear_wdt();
 delay_ms(250); 
 clear_wdt();
 delay_ms(250);
 clear_wdt();
 PORTA=0; 
}
//******************************************************************************
void main(void)
{   
 unsigned char x;
 set_bit( STATUS, RP0 );
 set_tris_a( 00000000b );
 set_tris_b( 00000000b );
 OPTION_REG= 11111111b;
 clear_bit( STATUS, RP0 );
 PORTA=0;
 
 clear_wdt();
 inicio_var();
 segundos(5);                    
 while(1){
          for(x=0;x<12;x++)
                           {power_on();
                            tx_morse("VVV ");
                            tx_morse("ROSARIO ");
                            tx_morse("VUELA   ");
                            power_off();
                            segundos(20);                    
                           }
          power_on();
          tx_morse("Beacon by LU4FHJ   LU6FPJ ");
          power_off();
          segundos(20);   
         }
}
Disparador USB para Canon con CHDK
Gracias al maravilloso software CHDK(Canon Hacker Development Kit), que agrega múltiples opciones a nuestra cámara de fotos (Sin tocar el firmware ya que se instala en la tarjeta de memoria)  se encuentra la posibilidad de correr pequeños "scripts" como el siguiente:
@title Botón remoto
while 1
  wait_click 1
  if is_key "remote" then shoot
wend
end
En una ferretería compré por $40 (Unos u$s10 aprox.) un timbre inalámbrico que funciona con dos pilas AA.
Luego una pequeña modificación al timbre:
De un viejo mother board que no funcionaba conseguí un conector USB que conecté donde estaba el parlante del timbre:
Y aquí el resultado:
Alguna de las cosas que se pueden hacer:
Nube de cenizas Volcán Puyehue NOAA 19 05 Jun 2011 14:50hs.
Nube de cenizas Volcán Puyehue NOAA 19 05 Jun 2011 14:50hs.
Imagen recibida con estación propia:
NOAA 19 northbound 83E at 05 Jun 2011 17:50:41 GMT on 137.10MHz, MSA enhancement, Normal projection, Channel A: 2 (near infrared), Channel B: 4 (thermal infrared)
NOAA 19 northbound 83E at 05 Jun 2011 17:50:41 GMT on 137.10MHz

 




