RF приемник и датчики
- Войдите на сайт для отправки комментариев
Ср, 30/01/2013 - 21:55
Уважаемые друзья, помогите плиз разобраться с модулем, суть вопроса такова, купил приемничек на 433мгц

Out = DATA , собственно есть датчики движения, дыма и т д, как можно отлавливать сигналы с датчиков?
Когда запускаю через Serial идут много данных вовремя срабатвывания одно из датчиков показания меняються но я даже не успеваю увидеть какие коды, собственно как отловить код того или иного датчика, пробвал через библиотеку VirtualWire , приемник вообще не регистрирует данные с датчиков! Уже всю голову сломал! Заранее спасибо!
ну.. тут все просто и сложно одновременно.
Хотя и нет ссылки на даташит, но очень похоже на то, что есть у меня.
Этот приемничек может принимать сигналы на частоте 433МГц (на самом деле чуток меньше, но не суть), закодированные OOK (on-off-кодирование).
Принцип приема тут достаточно "простой" - вешаете выход с приемника на D2 и настраиваете обработчик прерывания. Фиксируете времена изменения сигнала и дальше пытаетесь понять, что же приняли.
Вот тут я описывал свой опыт работы с датчиками Oregon и подобным приемником: http://habrahabr.ru/post/165747/
VirtualWire в данном случае совершенно не подходит - эта библиотека предполагает наличие двух ардуин (одна с приемником, другая с передатчиком) и она обеспечивает взаимодействие этих ардуин между собой. Фактически она организует тот самый "виртуальный провод" (при этом собственно сами передаваемые сигналы и их кодирование скрывается от пользователя).
Вот спасибо! Теперь знаю куда рыть!!!
Все перепробвал и Ваш код и ничего ((( что за ерунда такая
Поздравляю с почином на хабре, спасибо за статью =)
Все перепробвал и Ваш код и ничего ((( что за ерунда такая
В моем коде работа только с датчиками Oregon (более того, используется только один протокол). У Вас, судя по всему, совсем другие датчики - их протокол надо сначала понять и реализовать его обработку. Так что не все так просто. Но принцип - тот же.
Кстати, Вы уверены, что у вас датчики именно на 433МГц и используют модуляцию ASK? (чтобы правильно ответить на этот вопрос нужно или найти полную документацию на них или вскрыть, найти микросхему, которая отвечает за передачу данных, найти на нее даташит и уже там найти параметры).
Поздравляю с почином на хабре, спасибо за статью =)
Спасибо на добром слове :)
Понял! Вечером вскрою гляну что к чему !
У меня дома нашлось три беспроводных датчика движения от одной охранной системы.
Датчики производства PARADOX - я их вскрыл и совершенно спокойно нашел модуль передатчика и он оказался как раз нужного типа. Дальше просто проверил, что его сигналы принимаются - взял RF-приемник, запитал его, на выход подключил осциллограф и после этого сделал, чтобы датчик сработал (у меня для этого было достаточно нажать микропереключатель внутри датчика - сразу полетела кодовая посылка, сообщающая, что "датчик вскрыт"). Эта кодовая посылка послушно отобразилась на экране осциллографа - бинго!
Как будет время - займусь расшифровкой команд, тогда можно будет и эти "бесполезные" (при хранении) датчики можно будет использовать.
Еще (из логики работы охранной системы) точно знаю, что есть еще кодовая посылка, сообщающая о низком заряде батареи и, собственно, о том, что обнаружено движение.
Ну вроде победил почти сей девайс ) Суть такова все датчики на чипе HS1527 , нашел даташит разобрался и с помощью библиотеки RC-Switch подцепил девайсы, теперь приемничек получает коды от датчиков!
Покажиете код? у меня эта библиотека вообще ничего показать не захотела :(
Держи
#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 и это все повешать на малину!
все равно не взлетает :( дайте ссылку на библиотеку, может, я не туда смотрю?
хотя по коду видно, что я ту же библиотеку использую: http://code.google.com/p/rc-switch/
Но не работает :(.. правда, у меня приемник похуже.. шумит сильно :(
Вот осциллограмма, когда ничего не передается:
Зато когда идет передача, все хорошо:

Правда, от этого не легче. Ни один пример ("приемник") так и не заработал... ни разу не появилась строчка с полученным кодом.
К стати на вашей библиотеке я тоже несмог ничего получить вот только на этой библиотеке заработало! Ссылку Вы верно дали я качал отуда!
У меня еще вопрос а Вы незадумывались сделать самостоятельно беспроводные датчики?
Не могу заставить заработать такой модуль :(
Как проверить его работоспособность?
Подключил к D2 запустил скетч из примера RC Switch и тишина.
Источники сигнал - сигнализация для авто, брелок для шлакбаума, Oregon датчик температуры. Все на 433Мгц
Источники сигнал - сигнализация для авто, брелок для шлакбаума, Oregon датчик температуры. Все на 433Мгц
(стучит кулаком себе по лбу, кромко скандируя) М-О-Д-У-Л-Я-Ц-И-Я :)
то что на них написано что 433Мгц, это еще ничего не значит...
(стучит кулаком себе по лбу, кромко скандируя) М-О-Д-У-Л-Я-Ц-И-Я :)
то что на них написано что 433Мгц, это еще ничего не значит...
Ну какой такой модуляция? Там ВЧ часть примитивнейшая
У большинства устройств OOK - есть сигнал "1", нет "0"
Я так понимаю, что если я на D2 подключил приемник и посадил на 0-е прерывание обработчик, то он должен срабатываит при любом появлении несущей 433мгц?
Ну какой такой модуляция? Там ВЧ часть примитивнейшая
Разный модуляция :) OOK/ASK большинство, но не у всех. Что воозвращает нас к началу этого поста. Берем молоток, расколачиваем все нафиг и читаем спецификации чего и с чем мы пытаемся соединять.. Я тоже думал примерно как вы, с полгода назад, пока не расковырял небольшую кучку того что насобирали китайские изобретатели... узнал много нового и интересного... к тому же приемник бы сначал проверить чем нибуть известным, что он вообще работает..
Разный модуляция :) OOK/ASK большинство, но не у всех. Что воозвращает нас к началу этого поста. Берем молоток, расколачиваем все нафиг и читаем спецификации чего и с чем мы пытаемся соединять.. Я тоже думал примерно как вы, с полгода назад, пока не расковырял небольшую кучку того что насобирали китайские изобретатели... узнал много нового и интересного... к тому же приемник бы сначал проверить чем нибуть известным, что он вообще работает..
Нужно считать температуру с Oregon-датчика.
Загрузил пример - тишина.
Загрузил RCswitch - тишина
Написал простейший обработчик прерываний на данный датчик - идет куча разнообразной информации (м.б. помех). Подскажите, может есть для такой задачи датчики получше?
Может кто подскажет как программно воздействуя на 433Mhz RF Transmitter Module, изменять его дальность действия. Т.е. сегодня мне надо передовать информацию на 20 метров, завтра на 50, а послезавтра через 100.
Программно - никак. Аппаратно - менять напряжение питания от 3,5В до 12В.
Разный модуляция :) 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Мгц. дайте ссылку!
Уважемые форумчане, есть задачка связать это: 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-шилд передать на веб-сайт.
Вопрос: есть вариант считать данные с метеостанции посредством ардуины?
Могу сказать что у меня с Oregon данный приемник работает 100%
Всем добрый день. Делаю небольшой проект, надо передать по воздуху код 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см. чуть дальше ничего не ловит. Проверял осциллографом и заметил, что приемник постоянно генерирует импульсы (квадратная волна). как только приближаю приемник начинают проглядываться нужные мне импульсы из этой квадратной вольны, но все равно еще не ловит, и когда между передатчиком и приемником остаётся пару сантиметров, вижу точно такие же импульсы как на выходе из енкодера и все работает.
на выходе из энкодера
после приемника
помогите советом!
Держи
#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(); }}}код рабочий вопрос в другом можно его как нибудь облегчить или нельзя
Уважемые форумчане, есть задачка связать это: 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 мкс
Нет. Тогда у меня был потенциальный заказ на метеостанцию. Но так получилось, что заказ отменили и дальше тему не изучал.
Нет. Тогда у меня был потенциальный заказ на метеостанцию. Но так получилось, что заказ отменили и дальше тему не изучал.
Понял. У меня же с 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
cudla1973
подскажите по вашему скетчу # 25
что за цифры в скобках строки 26, 30, 33, 37, 41.
от куда они ?
почемуто при передаче , в приемнике появляются совсем другие цифры,
с чем это связано и как поправить ??