mercredi 6 avril 2016

test RTTY BEACON du module NTX2B V1.1

                                               DÉBUT D'UNE SÉRIE PROGRAMMATION ARDUINO
                                               =========================================
/*test RTTY BEACON du module NTX2B
*/
//définir la pin de sortie vers NTX2B
#define RADIOPIN 9
//définir les bibliothèques
#include <string.h>
#include <util/crc16.h>
//définir la taille du texte à transmettre en balise
char datastring[80];

void setup(){
  pinMode(RADIOPIN,OUTPUT);
  Serial.begin(9600);
}

void loop(){
  snprintf(datastring,80,"$$$$$F6AGV-11,RTTY,TEST,BEACON"); //placer le texte dans datastring
  unsigned int CHECKSUM=gps_CRC16_checksum(datastring); //calcul du checksum pour ce texte
  char checksum_str[6];
  sprintf(checksum_str,"*%04X\n",CHECKSUM);
  strcat(datastring,checksum_str);
  rtty_txstring(datastring);
  
  }

void rtty_txstring(char*string){
  //envoyer des caractéres d'un octet de 8 bits (byte)
 
  char c;
  c=*string++;
 
  while (c !='\0'){
    rtty_txbyte(c);
    c=*string++;
    }
    }
  
 void rtty_txbyte(char c){
   //envoyer chaque bit d'un caractére
   //le LSB est transmit en premier
   //chaque octet est précédé d'un zéro (start)
   //chaque octet est suivi d'un ou deux un (stop)
   int i;
   rtty_txbit(0);  //start bit
   //envoyer les bits avec LSB en premier
  
   for (i=0;i<7;i++) { //
   if(c&1) rtty_txbit(1);
   else rtty_txbit(0);
  
   c = c>>1;
   }
   rtty_txbit(1); //stop bit
   rtty_txbit(1); //stop bit
  
   }
  
   void rtty_txbit (int bit) {
     if (bit) { 
       // high
       analogWrite(RADIOPIN,110);
      }
     else {
       // low
       analogWrite(RADIOPIN,100);
      }
     
      delayMicroseconds(10000);
      delayMicroseconds(10150);
      /* pour 300 bauds (3370)
      pour 50 bauds (20150)
      */
      }
     
      uint16_t gps_CRC16_checksum (char*string){
        size_t i;
        uint16_t crc;
        uint8_t c;
     
      crc = 0xFFFF;
      //calcul du checksum les deux premiers $$ ne comptent pas
      for(i=2; i <strlen(string);i++) {
        c=string[i];
        crc=_crc_xmodem_update (crc, c);
       }
      
       return crc;
      }
     
      ---------------------------------------
D'après source UPU : UKHAS
From : Alain F6AGV - BHAF