Форум

Радиолюбительский форум.

Если у Вас возникли вопросы, задавайте их на форуме.

В сети

Пользователей: 125
Из них просматривают:
Аналоги: 49. Даташиты: 35. Инструкции: 4. Новости: 4. Остальное: 6. Программы: 1. Производители: 2. Профиль пользователя: 4. Теги: 1. Форум: 19.
Участников: 2
Гостей: 123

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

Просмотр этой темы: 

 1 анонимных пользователей
Радио-маяк на Arduino
Технический Директор
Зарегистрирован:
08.02.2009 21:08
Из: Днестровск
Сообщений: 2520
Не в сети
Радио-маяк на основе Arduino. Подключаем антенну (провод длиною 15 метров из окна к дереву «стреляет» до 1 км) к цифровому выводу D9, заливаем скетч и Arduino начинает выдавать в эфир телеграфом сообщение «VVV CQ CQ CQ DX DE BEACON BAND 40M 8000KHZ» на основной частоте 8 МГц. Так как перед антенной нет полосового фильтра, то сигнал будет слышен на высших гармониках, а это: 16, 24, 32 МГц и так далее, вплоть до УКВ диапазона и чуть выше. Мощность такого маяка составляет единицы миливатт.
Автономно работающий маяк, позволяет оценить прохождение радиоволн в конкретное время суток, отметить точные азимуты на корреспондентов, для последующего использования, в частности в соревнованиях.
Маячок был опробован, показал хорошую работу, красивый и чистый сигнал.
Скетч подойдёт для любой платы Arduino:
// Arduino simply CW beacon
// (c) 2012 Max Klimenko
// emaster [at] mail.ru
// <a href="http://max-ter.livejournal.com/571.html" title="http://max-ter.livejournal.com/571.html" rel="nofollow">http://max-ter.livejournal.com/571.html</a>

// It sends beacon at 8 MHz from pin D9

// Beacon message
const char message[] = "VVV CQ CQ CQ DX DE BEACON BAND 40M 8000KHZ";

// Period of single point (ms)
const int point_time 80;

// Carrier frequency divider.
// Carrier freq. (MHz) = 16 / (2 * (1 + freq_div))
const unsigned char freq_div 1;

//////////////////////////////////////////////////////////////////
struct s_abc
{
        
char letter;
        
char sign[7];
};

const 
s_abc abc[] = {
        
'A',".-"'B',"-..."'W',".--"'G',"--."'D',"-.."
        
'E',"."'V',"...-"'Z',"--.."'I',"..",
        
'J',".---"'K',"-.-"'L',".-.."'M',"--"'N',"-."
        
'O',"---"'P',".--."'R',".-."'S',"...",
        
'T',"-"'U',"..-"'F',"..-."'H',"...."'C',"-.-."
        
'Q',"--.-"'Y',"-.--"'X',"-..-"'1',".----",
        
'2',"..---"'3',"...--"'4',"....-"'5',"....."
        
'6',"-...."'7',"--..."'8',"---.."'9',"----.",
        
'0',"-----"'.',"......"',',".-.-.-"':',"---..."
        
';',"-.-.-."'(',"-.--.-"'`',".----.",
        
'"',".-..-."'-',"-....-"'/',"-..-."'?',"..--.."
        
'!',"--..--"'@',".--.-."'\',"..-.-" };

unsigned char abc_size sizeof(abc) / sizeof(abc[0]);

void setup()
{
  
PORTB 0;
  
DDRB |= 1<<1;
  
  
OCR1A freq_div;
  
TCCR1A 0x48;
  
TCCR1B 0x09;
  
  
pinMode(13OUTPUT);
  
digitalWrite(13HIGH);   // set the LED on
}

void send_letter(char l)
{
  if (
== ' ')
  {
    
delay(point_time 7);
    return;
  }
  
  
unsigned char idx 255;
  for (
unsigned char i 0abc_sizei++)
    if (
abc[i].letter == l)
    {
      
idx i;
      break;
    }
    
  if (
idx == 255) return;
  
  const 
char *abc[idx].sign;
  
  for (
unsigned char c 0s[c] != 0c++)
  {
    
char q s[c];
    
    
DDRB |= 1<<1;
    
digitalWrite(13HIGH);   // set the LED on
    
    
if (== '.'delay(point_time);
    else 
delay(point_time 3);
    
    
DDRB &= ~(1<<1);
    
digitalWrite(13LOW);   // set the LED off
    
    
delay(point_time);
  }

  
delay(point_time 2);
}

void loop()
{
  for (
int n 0message[n] != 0n++)
    
send_letter(message[n]);
  
  
delay(2000);
}

В следующем скетче, можно легко менять частоту передачи из предложенных 15-ти вариантов. В отличии от предыдущего маячка, этот не выдаёт сообщение, а только повторяющийся прерывистый сигнал:
/*
The 16 MHz clock is divided by 10 (that is, 1.6 MHz) and that is used to toggle pin 9 at that rate,
giving a frequency of 800 KHz, since one toggle turns the output on, and second toggle turns it off.

If you hold the Arduino near an AM radio tuned to around 800 KHz you should hear a hissing toggling on
and off (like Morse code) as the carrier is turned on and off for 0.5 / 0.3 second intervals.
*/

const byte ANTENNA 9;

void setup()
{
  
// set up Timer 1
  
TCCR1A bit (COM1A0);               // toggle OC1A on Compare Match
  
TCCR1B bit (WGM12) | bit (CS10);   // CTC, no prescaler
  
OCR1A =  1;                          // compare A register value to 10 (zero relative)
}

void loop()
{
  
pinMode (ANTENNAOUTPUT);
  
delay (500);
  
pinMode (ANTENNAINPUT);
  
delay (300);
}

/*
The OCR1A variable is related to the frequency.
The OCR1A variable is one less than the actual divisor.
OCR1A - Frequency
15 - 500 khz
14 - ~530 khz
13 - ~570 khz
12 - ~610 khz
11 - ~670 khz
10 - ~730 khz
9 - 800 khz
8 - ~890 khz
7 - 1000 khz
6 - ~1140 khz
5 - ~1330 khz
4 - 1600 khz
3 - 2000 khz
2 - ~2670 khz
1 - 4000 khz
0 - 8000 khz *would not recommend this setting

The formula is (16÷(OCR1A+1)÷2)×1000 = frequency in khz
*/

Конкретно этот маяк выставлен на основную 4 МГц и его высшие гармоники чередуются с частотой 4 МГц, то есть сигнал слышен на 8, 12, 16, 20, 24, 28 МГц и так далее, до УКВ диапазона.

Прикреплённый файл:



gif  Радио-маяк 8 МГц на Arduino.GIF (20.88 KB)
290_6587454622909.gif 444X440 px


Отредактировано пользователем Kosmonavt 23.12.2023 23:57:39
Отредактировано пользователем Kosmonavt 24.12.2023 0:08:05


Поиск по форуму


Расширенный поиск

Разное

Интересно

Канифоль можно изготовить самому, собрав в лесу сосновую (не еловую!) смолу и перетопив ее в консервной банке.