четверг, 18 марта 2010 г.

AVR. Комнатная Охота на лис.

Справка из Википедии.
«Охота на лис» или спортивная радиопеленгация также известна под аббревиатурой ARDF (Amateur Radio Direction Finding). «Охота на лис» — это состязание между спортсменами, которые с помощью карты местности, компаса и радиоприемника с направленной антенной (3,5 МГц и 144 МГц, он же - "пеленгатор") должны найти 5 радиопередатчиков в лесу, на пересеченной местности. Цель состязания — найти заданное количество «лис» за наименьшее время.


Как-то раз, после N-й бутылки пива:), пришла идея показать собственным детям, что есть охота на лис. Как писали раньше в официальных спортивных документах "в целях развития технического творчества молодежи и пропаганды здорового образа жизни".
(Вообще говоря данный вид спорта ни капли не зрелищный, и соревнования мало кому интересны, кроме самих участников. Короче, как любительские ралли, только со зрелищностью еще хуже).

Дык вот. Значит надо передатчик и приемник, и чтоб это все работало хотя бы в пределах квартиры. И чтоб все это сделать и настроить, нужно много чего, и главное - время. А с ним, как всегда, полная задница. Идея зависла...
Долго ли коротко ли, но заливая прошивку в какой-то очередной свитч, вдруг подумалось - а нафига?
В наше время, когда "космические корабли бороздят просторы большого театра":), проще и быстрее все сделать программным путем.

Ладно, хорош лирики, пора к делу.
Сердце "лисы"(а также голову, лапы и хвост) решено сделать из ATtiny2313, просто потому что давно валялась без дела.
Частота выбрана 1Мгц. Фуфель полный, согласен неглядя, но! Это СВ(MW) диапазон, который есть в любой китайской мыльнице за 100р, и прием ведется на магнитную антенну - а это тоже фуфельная, но направленность.
Короче для игрушки потянет. Осталось попробовать.
Схема проще некуда.



















Программа еще проще.
На таймере 0 запускаем генератор несущей. Но неплохо бы промодулировать это звуковой частотой. Ок, модулятор сделаем из таймера 1.
Неплохо бы еще вместо непрерывного писка выдавать что-то осмысленное. Пусть это будет CQ телеграфом. И еще светодиодом мигать в такт:) Итак, вот окончательный вариант.
(Писал на скорую руку, и даж сейчас заметил некоторые ляпы, но править пока не буду, потому что работает)
#define F_CPU 4000000L
#define N 1
//timers prescaler
#define F_MOD 1000
//F tone modulation Hz
#define F_CARR 1000000L
//F carrier Hz
#define F_PULSE 1
//F pulse Hz
#define C_MOD ((F_CPU/(2*N*F_MOD)) - 1)
#define C_CARR ((F_CPU/(2*N*F_CARR)) - 1)

#include <avr/io.h>
#include <avr/interrupt.h>

unsigned char Atone = 1;
unsigned char Apulse = 1;
int Kpulse = 0;
unsigned char Ipulse = 0;
unsigned int cod[] = {500,170,170,170,500,170,170,500,500,170,500,170,170,170,500,500};

ISR(TIMER1_COMPA_vect){
Kpulse++;
Atone = Atone ^ 1;
if(Kpulse >= cod[Ipulse]){
Apulse = Apulse ^ 1;
PORTD ^= (1<<PD4);
Kpulse = 0;
if(++Ipulse > 15){
Ipulse = 0;
}
}
if(Apulse == 1 && Atone == 1){
TCCR0B = (1<<CS00);
}
else{
TCCR0B &= (~(1<<CS00));
}
}

int main(void){
DDRD = (1<<DD5) (1<<DD4);
PORTD = (0<<PD5) (1<<PD4);

TCCR0A = (1<<COM0B0) (1<<WGM01);
OCR0A = C_CARR; //freq=Fclk/(2*N*(1+ocr0a))
TCCR0B = (1<<CS00);


OCR1A = C_MOD;
TIMSK = 1<<OCIE1A;
TCCR1B = (1<<WGM12) (1<<CS10);
sei();

while(1){
}
return 0;
}

Писано на С, компилировано WinAVR.

Итоги.
1. Конкретно с "охотой на лис" - болт. Мощность мизерная, частота низкая, пришлось припаять метровую антенну чтоб хоть как-то излучалось.

2. Диапазон зашумлен дальше некуда, в офисе вообще глухо, в квартире лучше - дальность 1-2 метра:) Возможно на природе метров 10 и получится.
Плюс ко всему на 1МГц вещает толи Маяк толи Радио России, так что частоту лучше сдвинуть.
Вобщем поиск лисы больше похож на поиск жучков и закладок - надо бегать по квартире и слушать где появится сигнал, а там уже постепенно локализовывать.
Как оказалось задача не из простых - сигнал распространяется по электропроводке, арматуре и проч. - много ложных целей! :)

3. И главное. Дети два дня с визгом по очереди носились по квартире в поисках пищаще-мигающей коробочки с антенной, пока не кончилась фантазия где ее можно спрятать:) И азарт слегка поутих...
Но время от времени вспоминают, выкапывают из груды игрушек, и все начинается снова...
Короче, считаю что несмотря на свою смехотворность, дивайс с задачей справился на все сто.

зы. Детям 5 и 2 года. Про лис и охоту не вкурили. Они называют это "Поиском Бомбы" :D

4 комментария:

  1. Ну ты матерый человечище :-)
    Я со своими чисто теоретическими программными настроениями (когда 100% знания заключено в коде, а не в железках) просто офигел от такого...
    Может, тебе на Хабрахабре зарегистрироваться, там побольше народу заценили бы :-)

    ОтветитьУдалить
  2. Да ладна ка...))) А количество народу пока не актуально. Пока цель - чиста свои мыслишки записывать, чтоб не забывались. А то понимаешь скалероз...)

    ОтветитьУдалить
  3. Блин, облажался на картинке - конденсаторы по 22p !!!

    ОтветитьУдалить
  4. При правильно настроенной антенне слышен на расстоянии до 1 км.
    http://www.nick-biryukov.narod.ru/page23.html

    ОтветитьУдалить