RF приемник и датчики

ishimcity
Offline
Зарегистрирован: 24.01.2012

Уважаемые друзья, помогите плиз разобраться с модулем, суть вопроса такова, купил приемничек на 433мгц 

Out = DATA , собственно есть датчики движения, дыма и т д, как можно  отлавливать сигналы с датчиков?

Когда запускаю через Serial идут много данных вовремя срабатвывания одно из датчиков показания меняються но я даже не успеваю увидеть какие коды, собственно как отловить код того или иного датчика, пробвал через библиотеку VirtualWire , приемник вообще не регистрирует данные с датчиков! Уже всю голову сломал! Заранее спасибо! 

ustas
Offline
Зарегистрирован: 12.03.2012

ну.. тут все просто и сложно одновременно.

Хотя и нет ссылки на даташит, но очень похоже на то, что есть у меня.

Этот приемничек может принимать сигналы на частоте 433МГц (на самом деле чуток меньше, но не суть), закодированные OOK (on-off-кодирование). 

Принцип приема тут достаточно "простой" - вешаете выход с приемника на D2 и настраиваете обработчик прерывания. Фиксируете времена изменения сигнала и дальше пытаетесь понять, что же приняли.

Вот тут я описывал свой опыт работы с датчиками Oregon и подобным приемником: http://habrahabr.ru/post/165747/

VirtualWire в данном случае совершенно не подходит - эта библиотека предполагает наличие двух ардуин (одна с приемником, другая с передатчиком) и она обеспечивает взаимодействие этих ардуин между собой. Фактически она организует тот самый "виртуальный провод" (при этом собственно сами передаваемые сигналы и их кодирование скрывается от пользователя).

ishimcity
Offline
Зарегистрирован: 24.01.2012

Вот спасибо! Теперь знаю куда рыть!!!

ishimcity
Offline
Зарегистрирован: 24.01.2012

Все перепробвал и Ваш код и ничего ((( что за ерунда такая

Мининова
Offline
Зарегистрирован: 08.06.2012

Поздравляю с почином на хабре, спасибо за статью =)

ustas
Offline
Зарегистрирован: 12.03.2012

ishimcity пишет:

Все перепробвал и Ваш код и ничего ((( что за ерунда такая

В моем коде работа только с датчиками Oregon (более того, используется только один протокол). У Вас, судя по всему, совсем другие датчики - их протокол надо сначала понять и реализовать его обработку. Так что не все так просто. Но принцип - тот же.

Кстати, Вы уверены, что у вас датчики именно на 433МГц и используют модуляцию ASK? (чтобы правильно ответить на этот вопрос нужно или найти полную документацию на них или вскрыть, найти микросхему, которая отвечает за передачу данных, найти на нее даташит и уже там найти параметры).

 

Мининова пишет:

Поздравляю с почином на хабре, спасибо за статью =)

Спасибо на добром слове :)

ishimcity
Offline
Зарегистрирован: 24.01.2012

Понял! Вечером вскрою гляну что к чему !

ustas
Offline
Зарегистрирован: 12.03.2012

У меня дома нашлось три беспроводных датчика движения от одной охранной системы.

Датчики производства PARADOX - я их вскрыл и совершенно спокойно нашел модуль передатчика и он оказался как раз нужного типа. Дальше просто проверил, что его сигналы принимаются - взял RF-приемник, запитал его, на выход подключил осциллограф и после этого сделал, чтобы датчик сработал (у меня для этого было достаточно нажать микропереключатель внутри датчика - сразу полетела кодовая посылка, сообщающая, что "датчик вскрыт"). Эта кодовая посылка послушно отобразилась на экране осциллографа - бинго!

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

Еще (из логики работы охранной системы) точно знаю, что есть еще кодовая посылка, сообщающая о низком заряде батареи и, собственно, о том, что обнаружено движение.

ishimcity
Offline
Зарегистрирован: 24.01.2012

Ну вроде победил почти сей девайс ) Суть такова все датчики на чипе HS1527 , нашел даташит разобрался и с помощью библиотеки RC-Switch подцепил девайсы, теперь приемничек получает коды от датчиков!

ustas
Offline
Зарегистрирован: 12.03.2012

Покажиете код? у меня эта библиотека вообще ничего показать не захотела :(

ishimcity
Offline
Зарегистрирован: 24.01.2012

Держи

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();
int ledPin = 13; // светодиод будет тут
void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // приемник на pin 2 (DATA) 
  pinMode(ledPin,OUTPUT);
}

void loop() {
  if (mySwitch.available()) {
    
    int value = mySwitch.getReceivedValue();
    
    if (value == 0) {
      Serial.print("Ошибка приемка кода");
    } else {
      Serial.print("Принял код ");
      Serial.print( mySwitch.getReceivedValue() );

    }
    if (mySwitch.getReceivedValue() == 6133332) {   // 6133332 - код датчика двери
      digitalWrite(ledPin,HIGH); // если код код получен зажигаем светодиод
    } else {
      digitalWrite(ledPin,LOW); // если ничего то молчим
    }
  }
    mySwitch.resetAvailable();
  }

Все это здорово но хочеться большего ))) у меня китайская система сигнализации , хочу чтобы она помимо GSM еще пуляла по WiFI и это все повешать на малину!

ustas
Offline
Зарегистрирован: 12.03.2012

все равно не взлетает :( дайте ссылку на библиотеку, может, я не туда смотрю?

хотя по коду видно, что я ту же библиотеку использую: http://code.google.com/p/rc-switch/

Но не работает :(.. правда, у меня приемник похуже.. шумит сильно :(

Вот осциллограмма, когда ничего не передается:

Зато когда идет передача, все хорошо:

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

ishimcity
Offline
Зарегистрирован: 24.01.2012

К стати на вашей библиотеке я тоже несмог ничего получить вот только на этой библиотеке заработало! Ссылку Вы верно дали я качал отуда!

ishimcity
Offline
Зарегистрирован: 24.01.2012

У меня еще вопрос а Вы незадумывались сделать самостоятельно беспроводные датчики?

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Не могу заставить заработать такой модуль :(

Как проверить его работоспособность?

Подключил к D2 запустил скетч из примера RC Switch и тишина.

Источники сигнал - сигнализация для авто, брелок для шлакбаума, Oregon датчик температуры. Все на 433Мгц

 

 

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

sav13 пишет:

Источники сигнал - сигнализация для авто, брелок для шлакбаума, Oregon датчик температуры. Все на 433Мгц

(стучит кулаком себе по лбу, кромко скандируя) М-О-Д-У-Л-Я-Ц-И-Я :)

то что на них написано что 433Мгц, это еще ничего не значит...

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Puhlyaviy пишет:

(стучит кулаком себе по лбу, кромко скандируя) М-О-Д-У-Л-Я-Ц-И-Я :)

то что на них написано что 433Мгц, это еще ничего не значит...

Ну какой такой модуляция? Там ВЧ часть примитивнейшая

У большинства устройств OOK - есть сигнал "1", нет "0"

Я так понимаю, что если я на D2 подключил приемник и посадил на 0-е прерывание обработчик, то он должен срабатываит при любом появлении несущей 433мгц?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

sav13 пишет:

Ну какой такой модуляция? Там ВЧ часть примитивнейшая

Разный модуляция :) OOK/ASK большинство, но не у всех. Что воозвращает нас к началу этого поста. Берем молоток, расколачиваем все нафиг и читаем спецификации чего и с чем мы пытаемся соединять.. Я тоже думал примерно как вы, с полгода назад, пока не расковырял небольшую кучку того что насобирали китайские изобретатели... узнал много нового и интересного... к тому же приемник бы сначал проверить чем нибуть известным, что он вообще работает..

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Puhlyaviy пишет:

Разный модуляция :) OOK/ASK большинство, но не у всех. Что воозвращает нас к началу этого поста. Берем молоток, расколачиваем все нафиг и читаем спецификации чего и с чем мы пытаемся соединять.. Я тоже думал примерно как вы, с полгода назад, пока не расковырял небольшую кучку того что насобирали китайские изобретатели... узнал много нового и интересного... к тому же приемник бы сначал проверить чем нибуть известным, что он вообще работает..

Нужно считать температуру с Oregon-датчика.

Загрузил пример - тишина.

Загрузил RCswitch - тишина

Написал простейший обработчик прерываний на данный датчик - идет куча разнообразной информации (м.б. помех). Подскажите, может есть для такой задачи датчики получше?

the_wall
Offline
Зарегистрирован: 06.06.2013

Может кто подскажет как программно воздействуя на 433Mhz RF Transmitter Module, изменять его дальность действия. Т.е. сегодня мне надо передовать информацию на 20 метров, завтра на 50, а послезавтра через 100. 

Araris
Offline
Зарегистрирован: 09.11.2012

Программно - никак. Аппаратно - менять напряжение питания от 3,5В до 12В. 

anneksiya81@yan...
Offline
Зарегистрирован: 02.12.2013

sav13 пишет:

Puhlyaviy пишет:

Разный модуляция :) OOK/ASK большинство, но не у всех. Что воозвращает нас к началу этого поста. Берем молоток, расколачиваем все нафиг и читаем спецификации чего и с чем мы пытаемся соединять.. Я тоже думал примерно как вы, с полгода назад, пока не расковырял небольшую кучку того что насобирали китайские изобретатели... узнал много нового и интересного... к тому же приемник бы сначал проверить чем нибуть известным, что он вообще работает..

Нужно считать температуру с Oregon-датчика.

Загрузил пример - тишина.

Загрузил RCswitch - тишина

Написал простейший обработчик прерываний на данный датчик - идет куча разнообразной информации (м.б. помех). Подскажите, может есть для такой задачи датчики получше?

Я новичок. в руках одна плата: ARDUINO mega r3. и данные приемник RF приемник 433мгц. короче все варианты перепробовал, не ловит сигнал. (пробовал на другие ножки толкать согласно спецификации ардуи: d3 c прерывание 1, D18 прерывание 5 и т.д. ) в ответ тишина. Тестил на двух китайских пультах  типа http://www.ebay.com/itm/Digital-Wireless-Remote-Control-Light-Lamp-Switch-Two-Way-Light-Color-White-/350907756538?pt=Home_Automation_Controls_Touchscreens&hash=item51b3bb6ffa и http://www.ebay.com/itm/E27-bulb-Screw-Wireless-Remote-Control-Light-Lamp-Bulb-holder-Socket-switch-T7-/111207848882?pt=Home_Automation_Controls_Touchscreens&hash=item19e4811bb2. Также на  датчиках от китайской gsm сигнализации, датчик беспроводной от метеостанции (http://www.dns-shop.ru/catalog/i127223/meteostanciya-ea2-bl503.html).. везде тишина. Блин не ужели приемник кривой.  Или все-таки руки..

Жду еще одна плата, надеюсь связь будет работать между платами.. на будущее хотелось знать. Есть ли "нормальные" RF приемники 433Мгц. дайте ссылку!

 

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

Уважемые форумчане, есть задачка связать это: http://www.ebay.com/itm/1-set-of-Spare-part-outdoor-unit-for-Professional-Wireless-Weather-Station-/331149543947?pt=AU_Decor_Furnishing&hash=item4d1a0d0a0b с ардуино и через gprs-шилд передать на веб-сайт.

Вопрос: есть вариант считать данные с метеостанции посредством ардуины?

carduino.ru
Offline
Зарегистрирован: 06.12.2011

Могу сказать что у меня с Oregon данный приемник работает 100%

imax
Offline
Зарегистрирован: 07.05.2014

Всем добрый день. Делаю небольшой проект, надо передать по воздуху код 4 бита и соответственно адрес еще 8 бит = 12 бит.

В качестве энкодера и декодера используются Holtek HT-12E и Holtek HT-12D, и передатчик с приемником RF 433 mhz  такого типа:

http://www.ebay.com/itm/RF-Wireless-Transmitter-and-Receiver-Link-Kit-Mo...

Проблема следующая, сигнал передается хорошо только с расстояния в 5см. чуть дальше ничего не ловит. Проверял осциллографом и заметил, что приемник постоянно генерирует импульсы (квадратная волна). как только приближаю приемник начинают проглядываться нужные мне импульсы из этой квадратной вольны, но все равно еще не ловит, и когда между передатчиком и приемником остаётся пару сантиметров, вижу точно такие же импульсы как на выходе из енкодера и все работает.

на выходе из энкодера

 

после приемника

помогите советом!

cudla1973
Offline
Зарегистрирован: 21.02.2013

ishimcity пишет:

Держи

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();
int ledPin = 13; // светодиод будет тут
void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // приемник на pin 2 (DATA) 
  pinMode(ledPin,OUTPUT);
}

void loop() {
  if (mySwitch.available()) {
    
    int value = mySwitch.getReceivedValue();
    
    if (value == 0) {
      Serial.print("Ошибка приемка кода");
    } else {
      Serial.print("Принял код ");
      Serial.print( mySwitch.getReceivedValue() );

    }
    if (mySwitch.getReceivedValue() == 6133332) {   // 6133332 - код датчика двери
      digitalWrite(ledPin,HIGH); // если код код получен зажигаем светодиод
    } else {
      digitalWrite(ledPin,LOW); // если ничего то молчим
    }
  }
    mySwitch.resetAvailable();
  }

Все это здорово но хочеться большего ))) у меня китайская система сигнализации , хочу чтобы она помимо GSM еще пуляла по WiFI и это все повешать на малину!

У меня пульт на 315 мгц и на нем четыре лампочки зал,кухня,спальня,ночник,и хотелось подключить другие пульты но только на 433мгц

долго бился пока не наткнулся на эту тему 

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableTransmit(10);
  mySwitch.enableReceive(0);  // приемник на pin 2 (DATA) 
  
}

void loop() {
  if (mySwitch.available()) {
    
    int value = mySwitch.getReceivedValue();
    
    if (value == 0) {
      Serial.print("Ошибка приемка кода");
    } else {
      Serial.print("Принял код ");
      Serial.print( mySwitch.getReceivedValue() );

    }
    if (mySwitch.getReceivedValue() ==7623952) {   // код кнопки пульта 1
      
     mySwitch.send(349488,24); // если код код получен зажигаем зал
    
    }
    if (mySwitch.getReceivedValue() ==7623940){// код кнопки пульта 1
      mySwitch.send(349632,24);//зажигаем спальню
  }
  if (mySwitch.getReceivedValue() ==7623937){// код кнопки пульта 1
  mySwitch.send(349452,24);//зажигаем кухню
  }
  if (mySwitch.getReceivedValue() ==7587088) {  // код кнопки пульта 2
      
     mySwitch.send(349488,24); 
  }
  if (mySwitch.getReceivedValue() ==7587076) {   // код кнопки пульта 2
      
     mySwitch.send(349452,24);
  }
  if (mySwitch.getReceivedValue() ==7587073) {  // код кнопки пульта 2
      
     mySwitch.send(349443,24);
    mySwitch.resetAvailable();
  }}}

код рабочий  вопрос в другом можно его как нибудь облегчить или нельзя 

Дядя Вова
Дядя Вова аватар
Offline
Зарегистрирован: 31.07.2014

Тима пишет:

Уважемые форумчане, есть задачка связать это: http://www.ebay.com/itm/1-set-of-Spare-part-outdoor-unit-for-Professional-Wireless-Weather-Station-/331149543947?pt=AU_Decor_Furnishing&hash=item4d1a0d0a0b с ардуино и через gprs-шилд передать на веб-сайт.

Вопрос: есть вариант считать данные с метеостанции посредством ардуины?

Тима, скажите Вам удалось решить эту задачку? Если да, то как? 

У меня метеостанция с таким же названием. Не удается расшифровать посылку. Пробовал скетчи для датчиков Оregon и пр. Не декодируют.

Длительности импульсов в сигнале - 500, 1000 и 1500 мкс

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

Нет. Тогда у меня был потенциальный заказ на метеостанцию. Но так получилось, что заказ отменили и дальше тему не изучал.

Дядя Вова
Дядя Вова аватар
Offline
Зарегистрирован: 31.07.2014

Тима пишет:

Нет. Тогда у меня был потенциальный заказ на метеостанцию. Но так получилось, что заказ отменили и дальше тему не изучал.

Понял. У меня же с WS2080 заработал скетч BetterWH2. Но он заточен под датчик WH2 - температура и влажность. Пока удалось вытащить только температуру

BetterWH2 Mod

pack|Bad|spacing Average 0x0 HEX/DEC 0x1 HEX/DEC 0x2 HEX/DEC 0x3 HEX/DEC 0x4 HEX/DEC 0x5 HEX/DEC  | Humi Temp

1|1 14901 14901| 0x44/68 0xA4/164 0x86/134 0x4C/76 0x0/0 |ID:0x44A 76% 64.3°F/17.8°C BAD

2|2 47966 31433| 0x44/68 0xA4/164 0x86/134 0x4C/76 0x0/0 |ID:0x44A 76% 64.3°F/17.8°C

TovBender
Offline
Зарегистрирован: 12.04.2015

cudla1973

подскажите по вашему скетчу    # 25

что за цифры в скобках строки 26, 30, 33, 37, 41.

от куда они ?

почемуто при передаче , в приемнике появляются совсем другие цифры,

с чем это связано и как поправить ??