Jump to content
Авторизация на форуме ×

Телеграфный маяк на SI5351 и Arduino Uno


UN8G

Recommended Posts

Собрал сегодня по незамысловатой схеме от RA3TLB.

Вот как работает -

Вот сам код для Arduino


/*
 * Si5351 CW Radio Beacon 
 * 
 * by Alexey Igonin (RA3TLB)  01.2021
 * https://www.youtube.com/savage19nnn
 * savage19nnn@gmail.com
 * 
 */

#include "si5351.h"
#include "Wire.h"


// RF output frequency
#define RF_FREQ 50105.69

// cw dot length in ms
#define CW_DOT_LEN 60

Si5351 si5351;

const uint8_t cwSymbTab[][5] = {
  {1, 2},             // 0  A
  {2, 1, 1, 1},       // 1  B
  {2, 1, 2, 1},       // 2  C
  {2, 1, 1},          // 3  D
  {1},                // 4  E
  {1, 1, 2, 1},       // 5  F
  {2, 2, 1},          // 6  G
  {1, 1, 1, 1},       // 7  H
  {1, 1},             // 8  I
  {1, 2, 2, 2},       // 9  J
  {2, 1, 2},          // 10 K
  {1, 2, 1, 1},       // 11 L
  {2, 2},             // 12 M
  {2, 1},             // 13 N
  {2, 2, 2},          // 14 O
  {1, 2, 2, 1},       // 15 P
  {2, 2, 1, 2},       // 16 Q
  {1, 2, 1},          // 17 R
  {1, 1, 1},          // 18 S
  {2},                // 19 T
  {1, 1, 2},          // 20 U
  {1, 1, 1, 2},       // 21 V
  {1, 2, 2},          // 22 W
  {2, 1, 1, 2},       // 23 X
  {2, 1, 2, 2},       // 24 Y
  {2, 2, 1, 1},       // 25 Z
  {2, 2, 2, 2, 2},    // 26 0
  {1, 2, 2, 2, 2},    // 27 1
  {1, 1, 2, 2, 2},    // 28 2
  {1, 1, 1, 2, 2},    // 29 3
  {1, 1, 1, 1, 2},    // 30 4
  {1, 1, 1, 1, 1},    // 31 5
  {2, 1, 1, 1, 1},    // 32 6
  {2, 2, 1, 1, 1},    // 33 7
  {2, 2, 2, 1, 1},    // 34 8
  {2, 2, 2, 2, 1}     // 35 9
};


void cwSendSym(uint16_t len)
{
  si5351.output_enable(SI5351_CLK0, 1);
  digitalWrite(LED_BUILTIN,HIGH);
  delay(len);
  si5351.output_enable(SI5351_CLK0, 0);  
  digitalWrite(LED_BUILTIN,LOW);
}


void cwTxChar(char ch)
{
    uint8_t cwSym;
    uint8_t tabIndex;
    
    tabIndex = 255;
    if ((ch >= 65) && (ch <= 90))  tabIndex = ch - 65;  // A - Z
    if ((ch >= 97) && (ch <= 122)) tabIndex = ch - 97;  // a - z
    if ((ch >= 48) && (ch <= 57))  tabIndex = ch - 22;  // 0 - 9

    if (tabIndex == 255)
    {
      delay(CW_DOT_LEN * 3);
      return;
    }
    
    for(byte i = 0; i < 5; i++) 
    {
      cwSym = cwSymbTab[tabIndex][i];
      if      (cwSym == 1) cwSendSym(CW_DOT_LEN);
      else if (cwSym == 2) cwSendSym(CW_DOT_LEN * 3);
      else continue;
      delay(CW_DOT_LEN);
    }

    delay(CW_DOT_LEN * 2);
}


void cwTx(char* msg)
{
  for(byte i = 0; i < strlen(msg); i++) cwTxChar(msg[i]);
}


//==============================================================================

void setup()
{
  bool i2c_found;

  pinMode(LED_BUILTIN,OUTPUT);
  Serial.begin(115200);

  i2c_found = si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, 0);
  if(!i2c_found)
  {
    Serial.println("si5351 not found on I2C bus!");
    while(1)
    {
      digitalWrite(LED_BUILTIN,HIGH);
      delay(200);
      digitalWrite(LED_BUILTIN,LOW);
      delay(100);
    }
  }
  
  si5351.update_status();
  si5351.drive_strength(SI5351_CLK0, SI5351_DRIVE_8MA);
  si5351.set_correction(80000, SI5351_PLL_INPUT_XO);
  si5351.set_freq(RF_FREQ * 100000ULL, SI5351_CLK0);
  si5351.output_enable(SI5351_CLK0, 0);
}

void loop()
{
  cwTx("VVV DE UN8G/B UN8G/B MN83kf MN83kf VVV ");
  delay(2 * 1000);
}

Разумеется, частоту, позывной можно под себя подредактировать.

Сигнал не очень чистый на выходе, т.к. он там не совсем синусоидальной формы. Наверное, есть смысл поставить ФНЧ, но с этим я еще не разбирался.

В принципе, при небольшой доработке можно спокойно замастрячить передатчик для охоты на лис. Причем можно сделать и на 3.5 МГц и на 144 МГц. Разница будет только в усилителе мощности и согласовании антенны.

Себестоимость такой поделки реально очень низкая. Несколько долларов.

  • Нравится 8
Link to comment
Share on other sites

  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...