Ключевое ?лово

vk

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Железо для умного дома

ТЕМА: Прием сигналов 433/315мгц на esp8266

Прием сигналов 433/315мгц на esp8266 06 Сен 2016 20:39 #14409

  • rapid
  • rapid аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 109
  • Спасибо получено: 36
  • Репутация: 5
Ну просто он подтянут к земле, а так конечно можно другой.

upd: такой выбор пинов обусловлен возможностью задействования аппаратного spi. А пины для программного настраиваются отдельно
Последнее редактирование: 07 Сен 2016 08:24 от rapid.
Администратор запретил публиковать записи гостям.

Прием сигналов 433/315мгц на esp8266 07 Сен 2016 17:26 #14435

  • MSapogov
  • MSapogov аватар
  • Не в сети
  • Завсегдатай
  • Сообщений: 214
  • Спасибо получено: 37
  • Репутация: 5
rapid пишет:
Ну просто он подтянут к земле, а так конечно можно другой.

upd: такой выбор пинов обусловлен возможностью задействования аппаратного spi. А пины для программного настраиваются отдельно
1. Правильно ли я понял, что если в последней строчке
void cc1101_init(void) {                                  // Функция инициализации трансивера CC1101
  PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_GPIO15);
  gpio_output_set(0,0,BIT15,0);                                 //PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_GPIO15);
  GPIO_OUTPUT_SET(15, 0);     // Установить CSn в лог.0 // while(PINMISO);	               // Ждем сигнала готовности
  os_delay_us(500);                  // Ждем 100мкс
  SPI_WriteByte(SRES);             // Отправка строба сброс
  os_delay_us(100);                  // Ждем 100мкс
  int8_t qt;
  for (qt=0;qt<sizeof(config_433_ook);qt++) SPI_WriteByte(config_433_ook[qt]);
  SPI_WriteByte(SRX);      //Отправка строба приема // SPI_ReadByte(SNOP);
  GPIO_OUTPUT_SET(15, 1);    // Установить CSn в лог.1
}
поменять GPIO_OUTPUT_SET(15, 1); // Установить CSn в лог.1 на
GPIO_OUTPUT_SET(15, 0); // Установить CSn в лог.0
То Модуль перейдет в режим передачи сигнала с пина GDO0?
Или для режима передачи все будет по другому?

2. GDO2 - GPIO 5 (RX на ESP)
GDO0 - GPIO 4 (TX на ESP) ?

3. NRF24 radio setup options - включить Enable NRF24.

А то что-то даже прием не идет :-(
Последнее редактирование: 07 Сен 2016 17:41 от MSapogov.
Администратор запретил публиковать записи гостям.

Прием сигналов 433/315мгц на esp8266 07 Сен 2016 17:54 #14436

  • rapid
  • rapid аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 109
  • Спасибо получено: 36
  • Репутация: 5
Сигнал cs должен быть в нуле на время передачи байтов по SPI
Смена режима производится переинициализацией определенных регистров. Заходите в чат

upd: думаю, что для отладки таких вещей осциллограф нужен или логический анализатор.
Последнее редактирование: 07 Сен 2016 18:28 от rapid.
Администратор запретил публиковать записи гостям.

Прием сигналов 433/315мгц на esp8266 09 Сен 2016 18:53 #14477

  • MSapogov
  • MSapogov аватар
  • Не в сети
  • Завсегдатай
  • Сообщений: 214
  • Спасибо получено: 37
  • Репутация: 5
Немного осилил... Просто я пез проверки вставил Ваш последний код... А там частоты какие-то были не те...

Поставил регистры как в ардуино у меня работало. Что сейчас есть:
#define SRES 0x30
#define SRX 0x34
#define STX 0x35
#define SNOP 0x3D

#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

char config_433_ook[]={
IOCFG0, 0x00,
IOCFG2, 0x0D,
FIFOTHR, 0x47,
PKTCTRL0,0x32,
FSCTRL1, 0x06,
FSCTRL0, 0x00,
FREQ2, 0x10,
FREQ1, 0xB0,
FREQ0, 0x71,
MDMCFG4, 0xA7,
MDMCFG3, 0x32,
MDMCFG2, 0x30,
MDMCFG1, 0x22,
MDMCFG0, 0xF8,
MCSM2, 0x07,
MCSM1, 0x30,
MCSM0, 0x18,
AGCTRL2, 0x04,
AGCTRL1, 0x00,
AGCTRL0, 0x92,
FREND1, 0xB6,
FREND0, 0x11,
FSCAL3, 0xE9,
FSCAL2, 0x2A,
FSCAL1, 0x00,
FSCAL0, 0x1F,
TEST2, 0x81,
TEST1, 0x35,
TEST0, 0x09
};
void cc1101_init(void) { // Функция инициализации трансивера CC1101
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_GPIO15);
gpio_output_set(0,0,BIT15,0);
GPIO_OUTPUT_SET(15, 0); // Установить CSn в лог.0
os_delay_us(500); // Ждем 500мкс
SPI_WriteByte(SRES); // Отправка строба сброс
os_delay_us(100); // Ждем 500мкс
int8_t qt;
for (qt=0;qt<sizeof(config_433_ook);qt++) SPI_WriteByte(config_433_ook[qt]);
//SPI_WriteByte(SRX); //Отправка строба приема // SPI_ReadByte(SNOP);
SPI_WriteByte(STX); //Отправка строба передачи// SPI_ReadByte(SNOP);
GPIO_OUTPUT_SET(15, 1); // Установить CSn в лог.1
}

void ICACHE_FLASH_ATTR
startfunc(){
// start funs
SPI_Init();
cc1101_init(); // Настроить трансивер на 433.920 модуляция AM
}

void ICACHE_FLASH_ATTR
timerfunc(uint32_t timersrc) {

// timer funs every 30 second

if(timersrc%30==0)
{

cc1101_init(); // Настроить трансивер на 433.920 модуляция AM


}

}

void webfunc(char *pbuf) {

//os_sprintf(HTTPBUFF,"Hello world");

}
Если активирую прием, то после ресета или включения модуля - все работает...
Если активирую передачу, то модуль включает несущюю только после перепрошивки. После подачи питания или ресета передатчик не работает. Поэтому пришлось раскоментировать строчку инициализации каждые 30 секунд. Может что в временными задержками инициализации передачи не так.

Видимо нужно будет сделать 2 режима инициализации.
1 - прием
void cc1101_init_rx(void) { // Функция инициализации трансивера CC1101
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_GPIO15);
gpio_output_set(0,0,BIT15,0);
GPIO_OUTPUT_SET(15, 0); // Установить CSn в лог.0
os_delay_us(500); // Ждем 500мкс
SPI_WriteByte(SRES); // Отправка строба сброс
os_delay_us(100); // Ждем 500мкс
int8_t qt;
for (qt=0;qt<sizeof(config_433_ook);qt++) SPI_WriteByte(config_433_ook[qt]);
SPI_WriteByte(SRX); //Отправка строба приема // SPI_ReadByte(SNOP);
GPIO_OUTPUT_SET(15, 1); // Установить CSn в лог.1
2 - передача
void cc1101_init_tx(void) { // Функция инициализации трансивера CC1101
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_GPIO15);
gpio_output_set(0,0,BIT15,0);
GPIO_OUTPUT_SET(15, 0); // Установить CSn в лог.0
os_delay_us(500); // Ждем 500мкс
SPI_WriteByte(SRES); // Отправка строба сброс
os_delay_us(100); // Ждем 500мкс
int8_t qt;
for (qt=0;qt<sizeof(config_433_ook);qt++) SPI_WriteByte(config_433_ook[qt]);
SPI_WriteByte(STX); //Отправка строба передачи// SPI_ReadByte(SNOP);
GPIO_OUTPUT_SET(15, 1); // Установить CSn в лог.1
Так как если активировать передачу, то несущая излучается постоянно. (Проверял RTL-SDR USB спектрометром из USB DVB-TV приемника).

Коды от пульта, которые ардуина с этими-же ригистрами работала и принимала сигналы, ESP-шка не воспринимает в debug только
RC code 0.
RC protocol 3.
RC Delay 87.
RC Bit length 16.
или RC Bit length 18 или RC Bit length 13.

На спектре частота передатчика CC1101 - 433.91
частота пульта - 433.93

Видимо регистры установки частоты немного кривоваты :-(
Последнее редактирование: 09 Сен 2016 18:59 от MSapogov.
Администратор запретил публиковать записи гостям.
Спасибо сказали: rapid

Прием сигналов 433/315мгц на esp8266 25 Сен 2016 08:12 #14772

  • rapid
  • rapid аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 109
  • Спасибо получено: 36
  • Репутация: 5
Для уменьшения ложных срабатываний приемника CC1101 можно воспользоваться программируемым аттенюатором



При этом сместится динамический диапазон работы приемника, соответственно снизится чувствительность
Администратор запретил публиковать записи гостям.

Прием сигналов 433/315мгц на esp8266 25 Сен 2016 12:29 #14776

  • einas
  • einas аватар
  • Не в сети
  • Захожу иногда
  • Сообщений: 41
  • Спасибо получено: 13
  • Репутация: 1
Собрал беспроводный датчик температуры на 433 мгц. Использовал тини85 и DHT11. Прошивался 2-м протоколом. RC code в debug периодически меняется.Arduino показывает:
Received 12300 / 20bit Protocol: 1
Received 12300 / 20bit Protocol: 1
Received 11730 / 20bit Protocol: 1
Received 11730 / 20bit Protocol: 1
Esp показывает:
RC code 11730
RC protocol 1
RC Delay 399
RC Bit length 20

RC Sensor 1:
Temperature: -20.0 °C.
RC Sensor 2:
Humidity: 73.0 %.
настройки RC sens:
Mode: temperature Key: 11000
Timeout: sec.399
Mode: humidity Key: 12000
Timeout: sec.399
правилно я выставил ключи для отображения температур и влажности?
Администратор запретил публиковать записи гостям.
Модераторы: FlyRouter
Время создания страницы: 0.182 секунд

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.