Ви не увійшли.
Сторінки 1
NoName, внимательней пожалуйста к моему первому посту - внимательней!
Да потому-что, я вам еще раз объясняю, то что МК генерирует меандр, это вообще нештатный режим контроллера, потому-что использования 16 битного таймера при постоянной составляющей одной инструкции дает 100 загрузку и лишь прерываниями мы исполняем смену этой-же самой инструкции на такую-же, только с другим периодом. Ни о какой НЧ модуляции и речи быть не может!
Мы здесь можем только изменить частоту генератора меандра, скважность и включить или выключить с разным периодом времени. И на этом ВСЕ!!!
Чувствую вы вообще не представляйте что такое CW-модуляция.
Настоящая морзянка ни-когда и не чем не модулировалась, это простая несушка.
Хотите на бытовом приемнике "пищалку" в 1кГц, ставьте в него соответствующий НЧ-генератор и подключайте к АМ-детектору.
Arduino не всесильна и вам не будет по щучьему велению модулировать АМ с НЧ сигналом в 1 кГц.
Во-первых, на голом МК сделать это не получиться.
Во-вторых, повторюсь - все можно услышать на бытовой приемник, если вас не устраивает непромодулированный сигнал (пи-пи не 1кГц), паяйте на приемник свой гетеродин (навесным монтажом дело 5 минут). И пи-пи для вас будет любой частоты + сможете принимать радиолюбителей в SSB.
Принципы CW-модуляции надеюсь вам не надо разъяснять?
А зачем его всем принимать? А если серьезно, вам не достаточно, что сигнал промодулирован CW-модуляцией?
Принцип вышеописанного маяка заключается в обычном генераторе прямоугольных (меандр) импульсов, от 16 битного таймера, до половины тактовой частоты, включаемый и выключаемый на определенный промежуток времени (точка-тире-пробел).
МК-ы в принципе нечего другого на своих ногах генерировать не могут, у них всего 2 состояния - высокий и низкий логический уровень. Это не ЦАП!
Стало быть и генерировать на голом МК мы ничего другого кроме меандра не сможем, а значит кроме CW нам не чего не светит.
Нет, есть конечно DDS-генераторы работающие на i2c, их можно использовать как самостоятельно, так и с помощью смесителя подмешивать НЧ, можно задействовав сразу несколько ног, выдавать по таблице ШИМ-импульс каждой ноги в определенный момент и с определенной скважностью, получиться синус, только очень низкой частоты.
Главный вопрос - ЗАЧЕМ?
Для передачи НЧ есть готовые трансиверы, для приема готовые приемники.
Мы эти маяком добились максимальной простоты, повторяемости, автономности и миниатюрности.
Например ATtiny13 в корпусе ssop8, размером меньше ногтя мизинца может генерировать CW с мощностью 20mW.
Без всяких доп.модулей, без обвязки, без отдельных передатчиков или генераторов - ВОТ В ЧЕМ ИЗЮМИНКА!
Как видите, принял.
А так ни что не мешать, поставить узкую "керамика" по второй ПЧ, или давить боковую полосу и слушать в SSB.
Для ленивых есть дегены.
С реализацией проблем нет.
Словил, на бытовой приемник, на расстояние 2-х километров.
Тут интерес больше развлекательно-познавательный.
Есть масса готовых GPS/GSM-трекеров, есть Arduino-шилды с GPS/GSM/SD-слотом на борту, есть приемники и передатчики на 433 MHz,
но это все тленно перед голым Arduino и 10 сантиметровым куском провода с одной стороны и бытовым приемником с другой.
Зато законно наблюдать за своим чадом, за домашним питомцем или автомобилем.
Это QRPp CW-маяк, работающий на 160/80/40-метровом диапазоне. Автор скетча Клименко Максим.
Есть желание доработать этот скетч для вставки GPS-координат в текст посылки и параллельного логирования координат и времени фиксации на SD-карту.
Что скажите господа?
// Arduino simply CW beacon
// (c) 2012 Max Klimenko
// emaster [at] mail.ru
// 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(13, OUTPUT);
digitalWrite(13, HIGH); // set the LED on
}
void send_letter(char l)
{
if (l == ' ')
{
delay(point_time * 7);
return;
}
unsigned char idx = 255;
for (unsigned char i = 0; i < abc_size; i++)
if (abc[i].letter == l)
{
idx = i;
break;
}
if (idx == 255) return;
const char *s = abc[idx].sign;
for (unsigned char c = 0; s[c] != 0; c++)
{
char q = s[c];
DDRB |= 1<<1;
digitalWrite(13, HIGH); // set the LED on
if (q == '.') delay(point_time);
else delay(point_time * 3);
DDRB &= ~(1<<1);
digitalWrite(13, LOW); // set the LED off
delay(point_time);
}
delay(point_time * 2);
}
void loop()
{
for (int n = 0; message[n] != 0; n++)
send_letter(message[n]);
delay(2000);
}
Предлагаю народными усилиями собрать базу мобильных телефонов, соответствующих следующим требованиям:
- цена не более 1000 руб.
- доступность "в магазине через дорогу", актуальность (не снятая с производства).
- UART интерфейс (TTL 5V для Arduino или LVTTL 3.3V для Arduino Pro Mini или Raspberry Pi) с поддержкой AT (Hayes) - команд.
Сторінки 1