четверг, 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

среда, 17 марта 2010 г.

AVR. Программатор Громова и PonyProg.

Один из простейших программаторов для AVR это конечно программатор им.Громова.
Имхо, оптимальный вариант для начинающих.
Да, есть и более простые варианты аля 5 проводов в LPT, но не стоит рисковать. LPT порт создание весьма нежное, и спалить его как два байта об асфальт, особенно втыкая туда собственный шедевр электроники, в который еще периодически тыкаешь паяльником :)


Итак программатор Громова. К PC подключается через COM порт, который гораздо труднее спалить, что уже хорошо. Минимум деталей - 7 резисторов и 3 диода. Работает с популярным софтом для прошивки МК типа UniProF и Avrdude...


А вот с PonyProg2000 - болт! Придется пораскинуть мозгами...
Собственно раскидывать-то там особо нечего, всего делов - сравнить схемы Громова и оригинального программатора от Пони. Схемы см. ниже, все ясно как белый день.
Скажу только пару слов за транзистор.
При дефолтных настройках интерфейса в ПониПрог сигнал на ногу RESET контроллера приходит инверсный (т.е. в состоянии покоя "0", при прошивке "1"), получается смешно - МК не шьется, зато в момент прошивки запускается. А фигли нам кабанам - ставим галку Invert Reset в настройках и ... очередной болт, всегда "0". В принципе при таком раскладе МК шьется, но чтобы его запустить надо отключать программатор от схемы. Утомительно. Короче, убираем галку Invert Reset, а инвертируем транзистором.
Вот и все. Enjoy камрадес! :)


ЗЫ. Возможно бага с Invert Reset исключительно в моей версии ПониПрога, другие не пробовал.
ЗЗЫ. И не забывайте, что PonyProg фузы отображает с точностью до наоборот, нежели атмеловские даташиты ;)

Оригинальная схема от Громова


Измененная для PonyProg

пятница, 5 марта 2010 г.

Кто есть ху - 2. Кодовое ограничение.

Кодовое ограничение - довольно серьезное понятие из Теории Информации.
...ну пожалуй этого достаточно...

Кто есть ху. SaraceNN.


Это типа ник такой. Самые хитрые уже перевели и порылись в википедии.
И думают "хрен ли сарацин?".
Да вот и хрен его знает. Нее, не араб и не мусульманин, просто слово нравится )
Кому посчастливилось в детстве быть ребенком, наверняка помнят клевый английский сериал про Робина Гуда ("Робин из Шервуда" вроде как), начиста сносивший крышу школьным и дворовым соратникам, заставлявший с утра до вечера сражаться на палках и изобретать луки из того же материала и случайных бельевых веревок.
О чем я... А, да! Так вот, все мальчишки (а дифченки подавно) тащились от самого Робина(в исполнении Майкла Прайеда), а я наперекор всем балдел от сарацина Назира.
Суровый такой мэн, молчаливый и вдумчивый, короче весь в меня :D
Ну а NN это географически сложилось.

Пуск блин!

Блоги у всех, блоги. Плюнуть уже некуда - обязательно в чей-нито блог попадешь.
Ну вот еще один.
"Хелло Ворлд" вообщем.