Подключение трансивера на CC1101 к Arduino
- Войдите на сайт для отправки комментариев
Чт, 28/06/2012 - 13:28
Доброго времени суток! Заказал себе 2 модуля трансивера на базе CC1101 (вот viewitem.eim.ebay.ru/2PCS--Wireless-RF-Transceiver-Module-433Mhz-CC1101-CC1100-/260915767551/item) и немного не понимаю, как их подключить.
1) Модули 3.3в, нужен преобразователь уровней. Можно просто воспользоваться делителем напряжения для линий из дуины в модуль (Slave In, Slave Select, Clock, Vcc) и напрямую подключить линию из модуля в дуину (slave out)?
2)Совсем не понял как посылать и принимать данные, всяческое изменения регистров, SmartRF Studio и прочее далеки от моего понимания :-(
Если кто-нибудь знает как работать с этой штукой (или CC1100, они почти аналогичны), подскажите? Заранее спасибо.
Промучился с этой штукой, почти ничего не добился, хотябы подключил и работает (отсылает статус-байты)
Чтобы сконфигурировать ее, получил значения с SmartRF Studio, загнал в массив [адресс][значение]
Чтобы записать, надо "наложить на адресс маску 0х00, а чтобы считать 0х80". Наложить маску - это как. Насколько я понял из даташита, то первый байт отправляемый по СПИ дожен выглядеть так [байт чтения\записи][байт одиночная запись\бурст запись][адресс]. 0-запись, 1 - чтение; 0-1 байт, 1-бурст. Т.о для чтения одного байта надо к его адресу прибавить 0x80, для записи одного - 0x00, для бурст соответсвенно 0xC0 и 0x40.
Вот так я делаю:
По идее, должен отсылать - но никак, токопотребление не возрастает. ЧТо я неправильно делаю?
До сих пор не получил результат. Как бы получается записывать регистры, вроде все понял, но постоянно статус-байт возвращает "TX FIFO has underflowed. Acknowledge with SFTX". Как-то получалось, что возвращалось и режим TX, RX, Fast Tx ready, но редко. В основном TX FIFO has underflowed.
Ставлю длина пакета фиксированная, 1 байт, Ограничения TX FIFO тоже 1 байт. Даташит утверждает, что Underflowed возникает при кол-ве байт ниже ограничения. Но ведь я записываю туда байты. Пишу:
SPI.transfer(0x3F | 0x40);
SPI.transfer(байт);
А все равно underflowed. В чем может быть причина? Я неправильно пишу в регистры?
Кажется что-то есть... По прежнему пишет "TX FIFO underflowed", но судя по току (16мА, как раз ток передачи при 0Дб) передача идет. Что немного странно. Идет и с фиксированной, и с переменной длиной пакета.
Код (пока что кривой и отладочный):
#include <SPI.h> // ================ комманды =========== #define SRES 0x30 #define SFSTXON 0x31 #define SXOFF 0x32 #define SCAL 0x33 #define SRX 0x34 #define STX 0x35 #define SIDLE 0x36 #define SWOR 0x38 #define SPWD 0x39 #define SFRX 0x3A #define SFTX 0x3B #define SWORRST 0x3C #define SNOP 0x3D /============ выводы к которым SPI подключен========== #define MISO 50 #define MOSI 51 #define Clock 52 #define SS 53 //Выбор "раба". Нужно к 0 прижимать //============================== void setup(){ //Все понятно. Настройка СПИ и Сериал Serial.begin(9600); pinMode(50, INPUT); pinMode(51, OUTPUT); pinMode(52, OUTPUT); pinMode(53, OUTPUT); pinMode(49, INPUT); SPI.setBitOrder(MSBFIRST); SPI.setClockDivider(SPI_CLOCK_DIV8); SPI.setDataMode(SPI_MODE0); SPI.begin(); //====================================== Stroble(SRES); //перезагружаем Stroble(SIDLE);//в ждущий режим //========== Настройки =============== /* Взяты из Smart RF. 433Mhz, 1.2 kBaud, 16Mhz кварц, модуляция GFSK, фиксированная длина пакета 1 байт Вывожу в десятичном виде, чтобы не приписывать "0x" к каждому значению */ byte RegConfig[] = { //50 elements Last adress 49 41, 46, 6, 7, 211, 145, 34, //переменная длина пакета - 64 4, 1, 0, 0, 12, 0, 16, 167, 98, 37, 131, 19, 34, 248, 98, 7, 48, 24, 29, 28, 199, 0, 176, 135, 107, 251, 182, 16, 233, 42, 0, 31, 65, 0, 89, 127, 63, 136, 49, 9, 0, 4 }; //Пишем в регистры for (byte _i=0; _i<=49; _i++){ digitalWrite(SS,LOW); WrReg(_i, RegConfig[_i]); digitalWrite(SS,HIGH); } Stroble(SIDLE); //Ждущий режим Stroble(SFTX); //Очищаем буфер Stroble(SFSTXON); //Запускаем синтезатор частоты delay(100); //======================================= } void loop(){ digitalWrite(SS,LOW); //Прижимаем ногу к земле while(digitalRead(MISO)==HIGH); //Ждем ответа delay(1); SPI.transfer(0x3F | 0x40); //Комманда на запись в TX FIFO SPI.transfer(4); // Данные SPI.transfer(2);// Данные SPI.transfer(3);// Данные SPI.transfer(5);// Данные SPI.transfer(6);// Данные digitalWrite(SS,HIGH); //Отпускаем ногу Serial.println(RdReg(0x3A), DEC); //Выводим кол-во байт в ТХ Фифо Status(Stroble(STX)); //Запускаем передачу строблом STX и выводим статус байт. всегда пишет андерфловед Serial.println(RdReg(0x3A), DEC); //Опять выводим кол-во байт в ТХ фифо и убеждаемся, что число уменьшилось на число байт в пакете, или 0 - если длина пакета переменная delay(1); Stroble(SFTX); //Очищаем ТХ фифо. Выкидываем все лишнее delay(1); Serial.println ("-----------------------"); //ХЗ. delay(10); } Stroble(SIDLE); //Ждущий режим delay(1000); } ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// //Тут расшифровываем статус байт void Status(byte _ST){ byte _Val=0; _Val = _ST & 240; _Val= _Val >> 4; _ST= _ST & 14; _ST = _ST >> 1; Serial.println("============================"); if (_ST == 0) {Serial.println ("IDLE");} if (_ST == 1) {Serial.println ("RX");} if (_ST == 2) {Serial.println ("TX");} if (_ST == 3) {Serial.println ("Fast TX ready");} if (_ST == 4) {Serial.println ("Frequency synthesizer calibration is running");} if (_ST == 5) {Serial.println ("PLL is settling");} if (_ST == 6) {Serial.println ("RX FIFO has overflowed. Read out any useful data, then flush the FIFO with SFRX"); } if (_ST == 7) {Serial.println ("TX FIFO has underflowed. Acknowledge with SFTX"); } Serial.print ("bytes available "); Serial.println (_Val, DEC); Serial.println("============================"); } //Выполняем команду byte Stroble (byte _Stroble){ byte _R; digitalWrite(SS,LOW); //ногу к земле while(digitalRead(MISO)==HIGH); //Ждем отклик delay(1); _R = SPI.transfer(_Stroble); //Пишим комманду digitalWrite(SS,HIGH); //отпускаем ногу return _R; } //Пишим в регистры void WrReg (byte _Adr, byte _Val){ //все аналогично digitalWrite(SS,LOW); while(digitalRead(MISO)==HIGH); delay(1); SPI.transfer(_Adr | 0x40); //Пишим адрес и маску бурст записи SPI.transfer(_Val); //Пишим значения digitalWrite(SS,HIGH); } //Читаем с регистра. Только 1 байт пока byte RdReg(byte _Adr){ byte _V=0; digitalWrite(SS,LOW); while(digitalRead(MISO)==HIGH); delay(1); SPI.transfer(_Adr | 0xC0); _V = SPI.transfer(0); digitalWrite(SS,HIGH); return _V; }Странно, я его почти не менял с предыдущего раза. А тут возьми и заработай. Я только не 1 байт стал писать, а МНОГО!
можно узнать чем все закончилось ?
Спасибо за код, помог начать разбираться с таким же устройством. Появились вопросы:
- У CC1101 согласно документации 47 регистров для конфигурирования (address 0 to address 0x2E), вы записываете 50.
- Строки кода 134-136 вообще выполняются когда-либо?
- В цикле перед вызовом WrReg вывод SS прижимается, внутри WrReg он прижимается еще раз и так же повторно вы его подтягиваете внутри функции и после выхода из нее.
- Вы устанавливаете BURST бит, но при этом используете single access. Смысл?
Вдруг кому еще интересно - есть резульат! Все попытки пообщаться с устройством через готовую SPI (
#include <SPI.h>) библиотеку успехом не увенчались - получаемые данные ничего общего с тем, что ожидалось, не имели. Сегодня решил руками реализовать протокол по даташиту, благо там все элементарно. И вуаля! Девайс отвечает именно теми данными, которые описаны в даташите. Пока реализована только возможность чтения из регистров, но дальше уже все тривиально! Почему не работает стандартный SPI посмотрю, как только придет логический анализатор.//Pins for Arduino NANO #define CSN 10 //aka SS #define MOSI 11 #define MISO 12 #define SCK 13 #define READ_SINGLE 0x80 #define WRITE_SINGLE 0x00 // :) #define SRES 0x30 // Reset chip. #define SFSTXON 0x31 // Enable and calibrate frequency synthesizer (if MCSM0.FS_AUTOCAL=1). If in RX (with CCA):Go to a wait state where only the synthesizer is running (for quick RX / TX turnaround). #define SCAL 0x33 // Calibrate frequency synthesizer and turn it off. SCAL can be strobed from IDLE mode without setting manual calibration mode (MCSM0.FS_AUTOCAL=0) #define SRX 0x34 // Enable RX. Perform calibration first if coming from IDLE and MCSM0.FS_AUTOCAL=1. #define SIDLE 0x36 // Exit RX / TX, turn off frequency synthesizer and exit Wake-On-Radio mode if applicable. byte strobe(byte _cmd, bool _SEND_ONE_BYTE_ONLY) { digitalWrite(CSN, LOW); while(digitalRead(MISO) == HIGH); //After pulling CSn, one should always wait for the MISO to go low (CHIP_RDYn), before writing the address header. for(int _i=7; _i>=0; _i--) { digitalWrite(MOSI, bitRead(_cmd, _i)); digitalWrite(SCK, HIGH); digitalWrite(SCK, LOW); } digitalWrite(MOSI, LOW); if (_SEND_ONE_BYTE_ONLY == 1) { byte _ret = 0; for(int _i=7; _i>=0; _i--) { digitalWrite(SCK, HIGH); bitWrite(_ret, _i, digitalRead(MISO)); digitalWrite(SCK, LOW); } digitalWrite(CSN, HIGH); return _ret; } } byte readSingle(byte _addr) { return strobe(_addr | READ_SINGLE, 1); } byte writeSingle(byte _addr, byte _val) { strobe(_addr | WRITE_SINGLE, 0); return strobe(_val, 1); } void setup() { // put your setup code here, to run once: Serial.begin(115200); pinMode(CSN, OUTPUT); pinMode(MOSI, OUTPUT); pinMode(MISO, INPUT); pinMode(SCK, OUTPUT); digitalWrite(CSN, LOW); digitalWrite(MOSI, LOW); digitalWrite(SCK, LOW); digitalWrite(CSN, HIGH); digitalWrite(CSN, LOW); // Strobe CSn low / high. delayMicroseconds(10); digitalWrite(CSN, HIGH); // Hold CSn high for at least 40 μs relative to pulling CSn low delayMicroseconds(100); digitalWrite(CSN, LOW); // Pull CSn low and wait for SO to go low (CHIP_RDYn). while(digitalRead(MISO) == HIGH); Serial.println("CHIP_RDYn"); Serial.println(strobe(SRES, 1), HEX);// Issue the SRES strobe on the SI line. // SW reset done. Serial.println(strobe(SIDLE, 1), HEX); // TEST Serial.println(readSingle(0x04), HEX); // Результат 0xD3 - чётко по даташиту! Serial.println(readSingle(0x03), HEX); // Читаем 0x07 Serial.println(writeSingle(0x03, 15), HEX); // Пишем 15 (0x0F - 1 байт на передачу, 64 на прием) Serial.println(readSingle(0x03), HEX); // Проверяем, что записалось } void loop() { // put your main code here, to run repeatedly: }UPDATE.
По поводу SPI думаю, что все банально - так делать нельзя просто:
177SPI.transfer(_Adr | 0x40);//Пишим адрес и маску бурст записи178SPI.transfer(_Val);//Пишим значенияТаким образом мы делаем два отдельных посыла, а не один из адреса и значения, поэтому и получаем фигню. Как будет время, перепишу обратно код на использование SPI библиотеки - использование аппаратных возможностей все же лучше, чем софтовая их реализация. Но для понимания работы SPI было интересно. Ваш Капитан Очевидность.
Короче, я в тупике - сплошной секс слепых в крапиве. Информации куча, но поймать сигнал от беспроводного датчика погодной станции не удается. Все, что я вижу, это скачки RSSI в момент передачи. Прерывание на прием пакета не срабатывает. Оно с какой то радости срабатывает при инициализации. Код ниже. Если кто-то может хоть что-то подсказать, буду рад. И еще - библиотека SPI работать так и отказалась - остался на софт реализации протокола.
По поводу SPI думаю, что все банально - так делать нельзя просто:
177SPI.transfer(_Adr | 0x40);//Пишим адрес и маску бурст записи178SPI.transfer(_Val);//Пишим значенияТаким образом мы делаем два отдельных посыла, а не один из адреса и значения, поэтому и получаем фигню.
Это одно и то же. SPI не предполагает каких либо сигналов между двумя посылами.
Вероятнее всего, Вы просто не угадали с режимом: в SPI масса настроек (скорость, порядок следования битов, фаза синхросигнала, по какому фронту происходит запись и чтение). Коль изучили дэйташит на девайс, сможете понять, какого именно режима он требует, и установить в этот режим SPI контроллер Ардуино.
Между может и не предполагает, а вот в начале и конце посылки меняется уровень CSN, а этого как раз и не требуется. Настроек у SPI не такая уж и масса, и на первый взгляд там нет того, что требуется. Да и это пока что далеко не первоочередная дазача. Проблема в том, что CC1101 в принципе не хочет делать того, что мне нужно. Вернее, я не знаю, как его заставить - слишком большое количество настроек и нюансов. :(
Пока есть конкретный вопрос - я не понимаю, почему у меня дергается каждый при запуске скетча функция, привязанныя к внешнему прерыванию. В чем причина - не пойму.
Покурив даташиты (все ссылки на найденную литературу по CC1101 можной найти в самом начале скатча), был найден режим синхронной передачи данных, который выдает сырые полученные данные. Так как данные из эфира он получает постоянно - эфир зашумлен, был сделан своебразный фильтр по уровню принемаемого сигнала - учитывать уровень не менее, чем -60дБм. Значение чисто эмпирическое. Но фигня в том, что данные вылупляются со скоростью 500кбод. Это значение взято с потолка, так как неизвестен ни тип модуляции, ни символьная скорость передачи, ни длина посылов, ни, тем более, используемый протокол. Какая именно используется скорость передачи буду как-то выяснять эксперементально. Без этого пытаться расшифровать полученные данные бесполезно. Код ниже, опять же - принимаются любые мысли по тому, как упростить задачу.
UPD. Метод научного тыка - так себе. Стоило утащить датчик на свое место на балкон, как фильтр в -60 отсек полезный сигнал, а повышение чуствительности приводит к тому, что идет постоянный прием мусора. Надо что-то с этим делать.. А вот что?....
Чтобы боле менее чтото понять в данных сделайте вывод на ногу GPIO2 например, там уже подключаете логанализатор и расшифровываете посылки помех.
Если вы сами не знаете что принимать поэтому такой результат.
С логическим анализатором все стало еще хуже.. )))) Разобрал датчик погодной станции, прицепился к пину data и прицепился к пинам GDO0 и GDO2 девайса.
Наблюдаю следующую картину:
0 - DATA передатчика
1 - GDO2 - Serial Clock CC1101
2 - GDO0 - Serial Data CC1101
Что то я вообще корелляции не наблюдаю.. Кто в лес, а кто по дрова..
Код инициализации выложите СС1101
какая частота и модуляция? Там у СС1101 может быть кварц стоять не точный, поэтому возможны сдвиги по частоте. Нужен приемник для проверки http://phreakerclub.com/1394
http://phreakerclub.com/forum/showthread.php?t=56
Привет! В статье написаны вроде бы очевидные вещи, которые повторяют все из начала даташита девайса. Мне только неясно, откуда автор взял, что "Самое главное что регистры нужно записывать в порядке выдаваемом этой программой, а не как следовало бы из человеческой логики, начиная с нулевого))" - я такую инфу в даташите не видел, а если еще участь, что автор пишет "Задержки взял заведомо очень большие чтоб не читать мануал))" - то есть большая вероятность, что он ошибается.
Мой код можно найти выше в ветке в моих сообшениях. У меня задача just for fun поймать сигнал от погодной станции. Какая частота и модуляция - доподлинно неизвестно. Частота - в районе 433МГц, вчера по косвенным признакам выяснил, что модуляция ASK/OOK. Осталось выяснить символьную скорость, какие значения бит синхронизации и пр. Всеволновый приемник был заказан уже, - жду))). Оптимизм не теряю, думаю, что рано или поздно я эту хрень дожму! ))))
Тогда попробуйте эту конфигурацию трансивера, модуляция амплитудная на частоте автосигналок. Проверяем трансивер послав пакет с пульта автосигнализации, только работающие в АМ модуляции, например томагавк, ценмакс и т.д.
const unsigned char config_433_ook[]= { IOCFG0, 0x40, //Конфигурация вывода GDO0, Инвертирование логического уровня: низкий = "1", высокий = "0" IOCFG2, 0x0D, //Конфигурация вывода GDO2, Инвертирование логического уровня: низкий = "1", высокий = "0" FIFOTHR, 0x47, //Пороги RX FIFO и TX FIFO PKTCTRL1, 0x04, //Управление автоматикой пакета PKTCTRL0, 0x32, //Управление автоматизацией пакетов FSCTRL1, 0x06, //Управление синтезатором частоты FSCTRL0, 0x00, //Управление синтезатором частоты FREQ2, 0x10, // FREQ1, 0xB0, // FREQ0, 0xAD, //433.943634 MGz MDMCFG4, 0x87, //ширину диапазона фильтра канала MDMCFG3, 0x32, //Мантисса пользовательской скорости символов MDMCFG2, 0xB8, //Вид модуляции радиосигнала OOK MDMCFG1, 0x20, MDMCFG0, 0x00, DEVIATN, 0x04, MCSM2, 0x07, //Конфигурация конечного автомата управления радио MCSM1, 0x30, //Конфигурация конечного автомата управления радио MCSM0, 0x18, //Конфигурация конечного автомата управления радио AGCTRL2, 0x07, //Управление АРУ AGCTRL1, 0x00, //Управление АРУ AGCTRL0, 0x91, //Управление АРУ FREND1, 0xB6, //Конфигурация внешнего RX FREND0, 0x11, //Конфигурация внешнего TX FSCAL3, 0xE9, //Калибровка синтезатора частоты FSCAL2, 0x2A, //Калибровка синтезатора частоты FSCAL1, 0x00, //Калибровка синтезатора частоты FSCAL0, 0x1F, //Калибровка синтезатора частоты TEST2, 0x81, //Установки различных тестов TEST1, 0x35, //Установки различных тестов TEST0, 0x09, //Установки различных тестов PATABLE, 0xC0 // };дефайны регистров
#define IOCFG2 0x00 // #define IOCFG1 0x01 // #define IOCFG0 0x02 // #define FIFOTHR 0x03 // #define SYNC1 0x04 // #define SYNC0 0x05 // #define PKTLEN 0x06 // #define PKTCTRL1 0x07 // #define PKTCTRL0 0x08 // #define ADDR 0x09 // #define CHANNR 0x0A // #define FSCTRL1 0x0B // #define FSCTRL0 0x0C // #define FREQ2 0x0D // #define FREQ1 0x0E // #define FREQ0 0x0F // #define MDMCFG4 0x10 // #define MDMCFG3 0x11 // #define MDMCFG2 0x12 // #define MDMCFG1 0x13 // #define MDMCFG0 0x14 // #define DEVIATN 0x15 // #define MCSM2 0x16 // #define MCSM1 0x17 // #define MCSM0 0x18 // #define FOCCFG 0x19 // #define BSCFG 0x1A // #define AGCTRL2 0x1B // #define AGCTRL1 0x1C // #define AGCTRL0 0x1D // #define WOREVT1 0x1E // #define WOREVT0 0x1F // #define WORCTRL 0x20 // #define FREND1 0x21 // #define FREND0 0x22 // #define FSCAL3 0x23 // #define FSCAL2 0x24 // #define FSCAL1 0x25 // #define FSCAL0 0x26 // #define RCCTRL1 0x27 // #define RCCTRL0 0x28 // #define FSTEST 0x29 // #define PTEST 0x2A // #define AGCTEST 0x2B // #define TEST2 0x2C // #define TEST1 0x2D // #define TEST0 0x2E // #define SRES 0x30 // Reset chip. #define SFSTXON 0x31 // Enable and calibrate frequency synthesizer (if MCSM0.FS_AUTOCAL=1). // If in RX/TX: Go to a wait state where only the synthesizer is // running (for quick RX / TX turnaround). #define SXOFF 0x32 // Turn off crystal oscillator. #define SCAL 0x33 // Calibrate frequency synthesizer and turn it off // (enables quick start). #define SRX 0x34 // Enable RX. Perform calibration first if coming from IDLE and // MCSM0.FS_AUTOCAL=1. #define STX 0x35 // In IDLE state: Enable TX. Perform calibration first if // MCSM0.FS_AUTOCAL=1. If in RX state and CCA is enabled: // Only go to TX if channel is clear #define SIDLE 0x36 // Exit RX / TX, turn off frequency synthesizer and exit // Wake-On-Radio mode if applicable #define SAFC 0x37 // Perform AFC adjustment of the frequency synthesizer #define SWOR 0x38 // Start automatic RX polling sequence (Wakeon-Radio) #define SPWD 0x39 // Enter power down mode when CSn goes high. #define SFRX 0x3A // Flush the RX FIFO buffer. #define SFTX 0x3B // Flush the TX FIFO buffer. #define SWORRST 0x3C // Reset real time clock. #define SNOP 0x3D // No operation. May be used to pad strobe commands to two #define PATABLE 0x3E //Запуск трансивера
spi_cs_am=0; cc_init_am(); delay_ms(1); spi_cs_am=1; delay_ms(5); spi_cs_am=0; cc_strobe_am(SRX); //включаем прием на СС1101 delay_ms(5); spi_cs_am=1;void cc_init_am(void) { char i; while(spi_miso); // ждём когда чип нам ответит, опустит miso for(i=0;i<64;i++) // запись 34 регистров из таблицы { spi_1_rw(config_433_ook[i]); asm("nop"); //задержка по даташииту } //————————————————— // тут можно было бы инициализировать paTable (см. мануал) // но для моих целей она не потребовалась. // поэтому сразу выдаю строб команду – переход в режим IDLE. delay_ms(5); cc_strobe_am(SIDLE); //return; } char cc_strobe_am(char strobe) { char status; while(spi_miso); status=spi_1_rw(strobe); delay_ms(1); return status; }Это код для pic18
Раньше увлекался я этим трансивером, сейчас SI4432 использую. Он мне больше нравиться, хотя бы потому что моща на передачу у него 100 мВт, размер и цена такая же. Не зря этот чип стоит в брелках Пандоры.
Привет! За пример спасибо! На выходных попробую найти время попробовать. Я еще кое-что раскопал, тоже может помочь.
По поводу чипа - я полный нуб в этом деле - занялся ардуиной просто ради интереса, а с ардуиной прикупил первое, что попалось на ebay по ключевому слову 433MHz. Я был уверен, что давно написаны библиотеки подо все, что можно и никак не ожидал, что нужно читать тонны литературы и даташитов + купить логический анализатор, купить всеволновый приемник.)))) Но так оказалось даже увлекательней - своебразный челендж - кто кого. Жена только недовольна, что я какой-то хренью занялся и еще засрал компьютерный стол змеиным клубком проводов.)))
Привет! Попробовал ваш вариант, сигнал не пойман, результата пока нет. Еще хуже, что подопытный умер. Работает если только пальцем зажать один из кондеров, расположенных вокруг кварца. Хрен его знает, что с ним приключилось, но в таком виде с ним как-то не очень общаться. Заказан новый (+SI4432) - так просто он от меня не отделается. ))) Ухожу на перерыв - пока буду ломать другие фигульки.)))
Добрый день!
пытаюсь получить сигнал с метеостанции LaCrosse Kweller s-8200 посредством радиомодуля CC1101. Пока безуспешно.
Известно, что частота сигнала 868.35 MHz. Модуляция скорее всего FSK. Параметров модуля много и еще не во всех разобрался,
но я так понимаю, что многие из них к передаче сигнала относятся. Подскажете, плиз, на какие параметры обращать внимание
чтобы сигнал принять.
обвязка модуля может быть под 433 мгц заточена и поэтому для приема на 868 мгц надо подносить поближе модуль.
И можете в девиацию частоты не попасть.
На самой плате модуля СС1101 868 написано.
Про характеристики передатчика и приёмника самой метеостанции можете чего-нить сказать?
Кроме того, что она на частоте 868.35 MHz работает.