mercredi 25 mai 2016

Balise chasse au renard UHF 433MHz

Le but est d'avoir une balise minuscule pour la chasse au renard.

A base de "Transmitter Module 433MHZ TX5" acheté sur ebay.
Il s'agit d'un TX 433 MHz, à base d'un quartz 13,560MHz et d'un SYN115 (PLL*32).






Ce TX 433MHz fait de l'ASK, et pour mes applications le tout ou rien ne m’intéresse pas, car je vais chercher la balise avec un portatif UHF en FM comme par exemple à l'aide mon récepteur de radiosonde (https://f4egx.blogspot.fr/2011/03/desensibilisons-un-puxing-px-777-uhf.html)

Elle va émettre constamment. Attention, il ne faudra pas mettre d'antenne performante sur la balise, car c'est uniquement en dessous de 1mW de p.a.r qu'on a le droit d'émettre constamment. Avec les 10 mW p.a.r. on ne doit pas dépasser un coefficient d’utilisation de 10%.

Il faut donc moduler en FM l'indicatif de la balise. Le signal BF proviendra d'un arduino.
Je vais jouer sur le quartz 13,560MHz, avec une varicap.  Je sors mes fonds de tiroirs.


une capa de 8,2pF sur la patte du quartz
Une BBY31, anode à la masse, cathode à la capa de 8,2pF
une 910k (non critique, à ajuster en fonction de la BF) sur la cathode de la BBY31
VDD et DATA sont relié ensemble
La partie délicate, le fil de BF provenant de l'arduino mini pro
Fil d'alimentation et BF sur l'arduino mini pro
 
le TX-5 est collé sur l'arduino
Il faut maintenant programmer les arduino, avec un convertisseur USB série 3,3 de chez sparkfun (FTDI)
voici le programme (provisoire, à vous de le modifier):

/*
  Fox-Hunting UHF beacon F4EGX
  en mettant à GND pin 2 on envoie MO au début
  PIN 3 à GND = E
  PIN 4 à GND = I
  PIN 5 à GND = S
  PIN 6 à GND= H si MO active au début, sinon A
  PIN 7 à GND = 5 si MO active au début, sinon R

  TX sur OUTPUT PIN 12 (non cablé)
  Tone sur OUTPUT PIN 13
 */
int beep=800; // Hz tonalitée

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(2, INPUT_PULLUP); //MO
  pinMode(3, INPUT_PULLUP); //E
  pinMode(4, INPUT_PULLUP); //I
  pinMode(5, INPUT_PULLUP); //S
  pinMode(6, INPUT_PULLUP); //H ou A
  pinMode(7, INPUT_PULLUP); //5 ou R
 
  pinMode(12, OUTPUT); //TX
  pinMode(13, OUTPUT); //tone
}


void dih(void){
  digitalWrite(12, HIGH);   // turn the TX on (HIGH is the voltage level)
  tone(13,beep);
  delay(125);
  noTone(13);
  digitalWrite(12, LOW);   // turn the TX on (HIGH is the voltage level)
  digitalWrite(13, LOW);   // turn the TX on (HIGH is the voltage level)
  delay(125);
  }


void dah(void){
  digitalWrite(12, HIGH);   // turn the TX on (HIGH is the voltage level)
  tone(13,beep);
  delay(375);
  noTone(13);
  digitalWrite(12, LOW);   // turn the TX on (HIGH is the voltage level)
  digitalWrite(13, LOW);   // turn the TX on (HIGH is the voltage level)
  delay(125);
  }

void space(void){
  delay(500);
}

// the loop function runs over and over again forever
void loop() {
// MO
if(digitalRead(2)==LOW){
  dah();
  dah();
  space();
  dah();
  dah();
  dah();
  space();
  }
 
// E
if(digitalRead(3)==LOW){
  dih();
  space();
  }
 
// I
if(digitalRead(4)==LOW){
  dih();
  dih();
  space();
  }
 
// S
if(digitalRead(5)==LOW){
  dih();
  dih();
  dih();
  space();
  }
 
// H
if(digitalRead(6)==LOW && digitalRead(2)==LOW){
  dih();
  dih();
  dih();
  dih();
  space();
  }
 
// 5
if(digitalRead(7)==LOW && digitalRead(2)==LOW){
  dih();
  dih();
  dih();
  dih();
  dih();
  space();
   }
 
// A
if(digitalRead(6)==LOW && digitalRead(2)==HIGH){
  dih();
  dah();
  space();
  }
 
// R
if(digitalRead(7)==LOW && digitalRead(2)==HIGH){
  dih();
  dah();
  dih();
  space();
   }

  delay(1000);              // wait for a second
}


Il ne reste plus qu'à cabler quel indicatif la balise doit émettre en mettant à la masse PIN2, PIN3,PIN4,PIN5 ou PIN6 (cf programme).
J'alimente le circuit avec deux ou 3 piles LR6 en série.

Aucun commentaire:

Enregistrer un commentaire