Remote switch - простое управление покупными радиорозетками.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

тогда оно значит и не нужно, работает, да и ладно.

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

dinamitch1 пишет:

можно посмотреть на дополнительный код с состоянием реле? а то я не могу понять о чём ты.

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

1. После каждого изменения состояния реле записывать в некую ячейку EEPROM, например, нолик/единичку.

2. Во время старта скетча (в setup()) считывать последнее состояние реле из этой ячейки EEPROM, ну и выставлять его соответственно.

Фича весьма полезная.

dinamitch1
Offline
Зарегистрирован: 15.12.2013

"Фича весьма полезная." - согласен

заказал себе вот такое устройство в 2 канала http://i.imgur.com/BlDr3K4.jpg , когда питание пропадает вкл. перый канал сам по себе . Так что лампу перекинул на 2-й канал и 1-й свободен

evgen66
Offline
Зарегистрирован: 19.06.2015

Добрый день!

Принимаю команду от такого пульта.

В мониторе пишет мне вот такие коды от 4-х кнопок. Они не шестизначные, как во всех примерах

Code: 27, period duration: 142us.
Code: 9, period duration: 142us.
Code: 3, period duration: 142us.
Code: 1, period duration: 142us.
 

При передаче этих кодов скетчем RemoteTransmitter ресивер ничего не принимает, видимо он не понимает 2-х значное число.

Подскажите, поджалуйста, что делать с кодами от пульта?

Вот мой скетч для передатчика =)

#include <RemoteTransmitter.h>
unsigned int period = 142;//period duration
unsigned long code;//code
unsigned long transmitCode;
 
void setup() {
transmitCode = 3;//полученный код при помощи предыдущего скетча
//формируем код отправки
code = transmitCode & 0xFFFFF;
code |= (unsigned long)period << 23;
code |= 3L << 20;
}
 
void loop() {
RemoteTransmitter::sendTelegram(code,5);//3-пин к которому подключен передатчик
delay(2000);
}

 

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

Не правильно со считал коды пульта, в разных библиотеках разные числа.

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

cudla1973 пишет:
Не правильно со считал коды пульта, в разных библиотеках разные числа.

Согласен, очень уж эти числа не похожи на коды.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

откройте брелок, фото внутренностей сюда. название микросхемы там - сюда.

тогда подскажу что делать дальше.

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

какие цифры на ПАВ резонаторе 433 или 315  внутри брелка на  круглой металлической штуковине как таблетка?

evgen66
Offline
Зарегистрирован: 19.06.2015

Фото не могу сейчас прислать.
Микросхема SC2262
Резонатор 433 как таблетка
При удержании кнопки светодиод горит

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

привемник 3 витка на катушке или 2?

где то явная ошибка,  2262 оно нормально декодирует.

пробуйте другие библиотеки еще.

брелок проверять на расстоянии неск. см от приемника.

dinamitch1
Offline
Зарегистрирован: 15.12.2013
Попробуй данный скеч:
 
#include <RemoteReceiver.h>
// пин 2.это вход для Радиоприёмника
void setup() {
Serial.begin(9600);
RemoteReceiver::init(0, 3, showCode);
}
void loop() {
}
void showCode(unsigned long receivedCode, unsigned int period) {
Serial.print("Code: ");
Serial.print(receivedCode);
Serial.print(", period duration: ");
Serial.print(period);
Serial.println("us.");
}

 

 
Библеотека -> RCswitch
evgen66
Offline
Зарегистрирован: 19.06.2015

Хорошо, до дома доеду, посмотрю сколько витков.
Считывать пробовал и на дальнем расстоянии и на близком, прямо рядом с приемником.
Библиотека rc-switch вообще не считывает. Есть у меня один выключатель на 433,92 МГц. Так вот с него rc-switch нормально считывает. А RemoteSwitch выдаёт коды 24 и 26 соответственно.

evgen66
Offline
Зарегистрирован: 19.06.2015

Вот прикрепляю фотографию приемника и платы пульта

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

прприемник сколько витков провода?

и подавать нужно 5В на приемник, 4,5 уже не подойдет, частота не 433 будет.

evgen66
Offline
Зарегистрирован: 19.06.2015

У приемника 2 витка. Напряжение на схеме 5.03 В

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

ищите другие ошибки, пробовать разные библиотеки, даже одно название, а разные года - там могут быть отличия.

evgen66
Offline
Зарегистрирован: 19.06.2015

Только что выяснил, что причина не в библиотеке и не в приёмнике.
Поехал я в чип и дип и взял приемник такой же как у меня. Взял свой пульт и стал считывать коды. Коды в мониторе те же самые 1,3,9,27...
Потом решил взять у них пульт на 433 МГц с 2мя кнопками. И естественно, монитор показал нормальные 6-ти значные коды.

При отправки кодов (1,3,9 или же 27) с передатчика на приемник в мониторе не появляется значений.

Кто может подсказать, что делать с приемником или со скетчем для отправки кодов?

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

тоесть их брелок работает. я знаю причину.

 придется в брелке перепаять один резистор.

вечером напишу.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

 

выводы 16 и 15 - резистор поставить такой же как у брелка который нормально показывает  код.

от него зависит частота  модуляции.

evgen66
Offline
Зарегистрирован: 19.06.2015

Брелок я взял ради эксперимента, считывал коды прямо в зале магазина. Так что сопротивлений я не знаю, к сожалению.

Неужели программно никак нельзя решить.

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

Я к сожалению не могу дома протестить на реальном устройств (

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

если перепишите библиотеку - то вы решите программно.

изучайте даташит и меняйте резистор и  в 2272 приемнике.

тогда будет работать везде правильно.

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

evgen66 пишет:
Только что выяснил, что причина не в библиотеке и не в приёмнике. Поехал я в чип и дип и взял приемник такой же как у меня. Взял свой пульт и стал считывать коды. Коды в мониторе те же самые 1,3,9,27... Потом решил взять у них пульт на 433 МГц с 2мя кнопками. И естественно, монитор показал нормальные 6-ти значные коды. При отправки кодов (1,3,9 или же 27) с передатчика на приемник в мониторе не появляется значений. Кто может подсказать, что делать с приемником или со скетчем для отправки кодов?

Что делать тебе посоветовали ,а что вообще хочешь сделать я так и не понял, если с паяльником не дружишь купи новый передатчик и приемник на 433Мг ,я так понял у тебя передатчик и приемник разные?

evgen66
Offline
Зарегистрирован: 19.06.2015

К сожалению я не могу разобрать приемник и перепаять в нем резисторы. Это готовая дым - машина для дискотек. У нее есть 4 режима работы - нажимаешь на кнопку  - дым простой , на следующую дым с красной подсветкой, с синей и с зеленой. Весь дискотечный свет управляется с Айпада. А вообще всем рулит Crestron. Поэтому ясен пень - хочу, чтобы эта машина тоже на Айпаде оказалась.

Завтра попробую всё же подавать коды 1,3,9,27 на устройство с Ардуины. 

А пока спасибо всем за поддержку )

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

Получается у тебя всё рабочее и пульт и приемная ситстема пульта где дым, когда я столкнулся со своей проблемой то дело было в библиотеках одна показывала 5 кодов пульта долго мучался пока не попробовал другую библиотеку там считало 6 значный уже код,вот потом все встало на свои места ,так что пробуй разные библиотеки.

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

Поддерживаю cudla1973, надо пробовать разные библиотеки.

Кстати, всегда остается возможность пойти путем извращений - подпаяться к кнопкам пульта.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

evgen66 пишет:

К сожалению я не могу разобрать приемник и перепаять в нем резисторы. 

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

evgen66
Offline
Зарегистрирован: 19.06.2015

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

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

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

evgen66
Offline
Зарегистрирован: 19.06.2015

Я пробовал разные библиотеки...

Сегодня протестировал на конкретном приборе.
Команды 1,3,9 и 27 прекрасно работают со скетчем, указанным мною выше.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

в смысле на передачу??

неясно на чем проверили и как.

evgen66
Offline
Зарегистрирован: 19.06.2015

В тот четверг я взял с объекта пульт ДУ от дым машины, саму машину с родным приемником конечно не взял. На выходных считал команды приемником, отправил их через передатчик на этот же приемник. Результатом этого действия ровно счетом ничего не было, так как видимо библиотека не понимает, почему к ней приходят значения одно-двух значные (1,3,9 и 27).

Сегодня на объекте я протестировал это дело с родным приемником дым машины. Все работает в точности как с родного пульта ДУ.

Код тот же:

#include <RemoteTransmitter.h>
unsigned int period = 142;  //period duration
unsigned long code;         //code
unsigned long transmitCode = 9; // 1 - Smoke, 3 - RedSmoke, 9 - GreenSmoke, 27 - BlueSmoke

const int  Button = 2;
int   buttonState = 0;

void setup() {
//формируем код отправки
  code = transmitCode & 0xFFFFF;
  code |= (unsigned long)period << 23;
  code |= 3L << 20;
  pinMode(Button, INPUT);
}

 
void loop() {
  buttonState = digitalRead(Button);
  if ((buttonState == HIGH)){
      RemoteTransmitter::sendTelegram(code,12);
  }
  if ((buttonState == LOW))
  {
  }
delay(100);

 

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

очень странно.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

evgen66 пишет:
Хорошо, до дома доеду, посмотрю сколько витков. Считывать пробовал и на дальнем расстоянии и на близком, прямо рядом с приемником. Библиотека rc-switch вообще не считывает. Есть у меня один выключатель на 433,92 МГц. Так вот с него rc-switch нормально считывает. А RemoteSwitch выдаёт коды 24 и 26 соответственно.

 

возьмите в библиотеке RCSwitch.cpp  в этом файле смените два значения 5000 на 500 (там в конце - найдете..)

и попробуйте с ней. интересен результат.

evgen66
Offline
Зарегистрирован: 19.06.2015

Short Circuit пишет:

возьмите в библиотеке RCSwitch.cpp  в этом файле смените два значения 5000 на 500 (там в конце - найдете..)

и попробуйте с ней. интересен результат.

К сожалению, пульт-брелок остался на объекте. На следующей недел поеду туда вероятно, тогда попробую.

Спасибо за предложение =)

sergeeff
Offline
Зарегистрирован: 19.09.2015

помогите пожалуйста со скетч ем для управления реле(включить на 1 сек) под радио пульт livolo код пульта считал remoteID:27459 - key code:8

remoteID:27459 - key code:16
remoteID:27459 - key code:56
remoteID:27459 - key code:42
считывал вот этим 
#define SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - use the interrupt number in attachInterrupt



volatile byte impulse = 0; // kolejny puls

volatile int bufor[53];

volatile boolean header = false;

volatile unsigned long StartPeriod = 0; // set in the interrupt

volatile boolean stop_ints = false;





void setup()

{

  attachInterrupt(SIGNAL_IN, calcInput, CHANGE);



  Serial.begin(9600);

}



void loop()

{

  if (stop_ints) //data in buffer

  {

    unsigned long binary = 1;

    //byte i = 0;

    for (byte j = 0; j < 46; j++)

    {

      //Serial.print(binary);

      if ((bufor[j] > 220) &&

          (bufor[j] < 400))

      {

        binary <<= 1;

        //binary |= 1;

        //i++;

        bitSet(binary,0);

      }

      else if ((bufor[j] > 90) &&

               (bufor[j] < 220) && (bufor[j + 1] > 90) &&

               (bufor[j + 1] < 220)) {

        binary <<= 1;

        j++;

        

      }

      else if ((bufor[j] > 90) &&

               (bufor[j] < 220) && (bufor[j + 1] > 220) &&

               (bufor[j + 1] < 400)) {

        binary <<= 1;

        bitSet(binary,0);

        //i += 2;

        j++;

      }

      else break;

          }

          //Serial.println(bitRead(binary,4));

    if (bitRead(binary,23))

    {

      bitClear(binary,23);

      Serial.print("remoteID:");

      Serial.print((binary / 128) & 65535);

      Serial.print(" - ");

      Serial.print("key code:");

      Serial.println(binary & 127);

    }

    else {

      Serial.println("wrong code  ");

      Serial.println(binary, BIN);

    }

    delay (1000);

    header = false;

    impulse = 0;

    stop_ints = false;



    // }

  }

}



// interrupt below...





void calcInput()

{

  // get the time using micros

  unsigned int duration = (int)(micros() - StartPeriod); // save pulse length to bufor

  StartPeriod = micros(); //begin next impulse

  //Serial.println(StartPeriod);

  if (stop_ints) return;

  if ((duration < 90) || (duration > 600)) goto reset; //impulse not right

  bufor[impulse++] = duration;

  if (duration < 415) return;

  if (!header)

  {

    header = true;

    impulse = 0;

    return;

  }

  else

  {

    if ((impulse < 23) || (impulse > 52)) goto reset; //too long or too short info

    stop_ints = true;

    return;

  }

reset:

  header = false;

  impulse = 0;

  return;

}

 
Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015
maxwell2010
Offline
Зарегистрирован: 12.09.2015

блин да чет ваще ниче не работает. все перепробывал. Помогите люди добрые. Купил 315 Мгц выключатель освещение, включается сразу в Е27 патрон. Считал код кнопок on/off 6116800, через

/*
* Demo for RF remote switch receiver.
* For details, see RemoteReceiver.h!
*
* This sketch shows the received signals on the serial port.
* Connect the receiver to digital pin 2.
*/

#include <RemoteReceiver.h>

void setup() {
  Serial.begin(115200);
  
  // Initialize receiver on interrupt 0 (= digital pin 2), calls the callback "showCode"
  // after 3 identical codes have been received in a row. (thus, keep the button pressed
  // for a moment)
  //
  // See the interrupt-parameter of attachInterrupt for possible values (and pins)
  // to connect the receiver.
  RemoteReceiver::init(0, 3, showCode);
}

void loop() {
}

// Callback function is called only when a valid code is received.
void showCode(unsigned long receivedCode, unsigned int period) {
  // Note: interrupts are disabled. You can re-enable them if needed.
  
  // Print the received code.
  Serial.print("Code: ");
  Serial.print(receivedCode);
  Serial.print(", period duration: ");
  Serial.print(period);
  Serial.println("us.");
}

 511704 240us sleep 6116656, через remote switch 511686 241us (239) Их всего 2. Как отправить теперь код чтобы патрон Е27 их принял и выключился. ну или включился?! вроде везде обыскал. конечно не силен в с+

Хочу кнопку нажал на дуине и ушел сигнал.

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

maxwell2010 пишет:

\

 511704 240us sleep 6116656, через remote switch 511686 241us (239) Их всего 2. Как отправить теперь код чтобы патрон Е27 их принял и выключился. ну или включился?! вроде везде обыскал. конечно не силен в с+

Хочу кнопку нажал на дуине и ушел сигнал.

Тебе одной дуины мало нужно передатчик на 315мг и кнопку ,а лучше блютус еще иметь чтоб с телефона включать её.

maxwell2010
Offline
Зарегистрирован: 12.09.2015

хотел чтобы так: код от пульта прочитан (511704 240us) . на дуине кнопка, при нажатии на которую отсылается сигнал с передатчика 315 мГц (есть который)  на этот патрон Е27, а не на дуину. Я так понимаю что 315 и 433 отличаются только частотой, у меня есть и тот и другой, но вот скетч для отправки никак не могу подобрать.

 

maxwell2010
Offline
Зарегистрирован: 12.09.2015

cudla1973 пишет:

maxwell2010 пишет:

\

 511704 240us sleep 6116656, через remote switch 511686 241us (239) Их всего 2. Как отправить теперь код чтобы патрон Е27 их принял и выключился. ну или включился?! вроде везде обыскал. конечно не силен в с+

Хочу кнопку нажал на дуине и ушел сигнал.

Тебе одной дуины мало нужно передатчик на 315мг и кнопку ,а лучше блютус еще иметь чтоб с телефона включать её.

что то типа такого кода:

#include <RemoteSwitch.h>
#define RF1ON 6116656 //(511704) код кнопки от радиопульта

const int buttonPin = 2;     // номер входа, подключенный к кнопке
int buttonState = 0;         // переменная для хранения состояния кнопки

void setup() {
  pinMode(buttonPin, INPUT);  
  Serial.begin(9600);  
}

void loop(){
  buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {    
    
    transmit(RF1ON);  
    
    void transmit(unsigned long rcode){

    unsigned long code = rcode;

    unsigned long period = PERIOD;

    code |= (unsigned long)period << 23;

    code |= 4L << 20; //(|= 4L) цифра перед (L), это (условное число), количества повторов посылаемого сигнала. (соответственно и паузы)

    RemoteSwitch::sendTelegram(code, 10); // RF transmitter pin - пин радио передатчика
  }
  else {
   
    
  }
}

 

Grom
Offline
Зарегистрирован: 21.10.2015

Никак немогу принять коды с пультов на 315 частоте, эти библиотеки rc-switch, RemoteSwitch для данного мероприятия подходят или там надо искать своеобразные?

dinamitch1
Offline
Зарегистрирован: 15.12.2013

Ты какой приёмник используешь?

Grom
Offline
Зарегистрирован: 21.10.2015

Приемник выпаял отсюда http://www.dx.com/p/vibration-activated-120db-anti-theft-security-alarm-with-remote-control-keychain-23633#.Vmao-XbhA-U . В пульте к данной сигналке был резонатор с указанием 315 частоты. Я предпологаю что приемник тоже 315 должен быть. Также проверял на 433 ( имеется комплект приемник передатчик) Между комплект общается, а вот кнопки пульта тоже не распазнает(ноль реакции при любом приемнике на любой из пультов на пультах 315 указана частота и 2262 чип)

maxwell2010
Offline
Зарегистрирован: 12.09.2015

Сам перемучался уже, но в итоге подобрал, вот чтение:

/*
* Demo for RF remote switch receiver.
* For details, see RemoteReceiver.h!
*
* This sketch shows the received signals on the serial port.
* Connect the receiver to digital pin 2.
*/
 
#include <RemoteReceiver.h>
 
void setup() {
Serial.begin(9600);
 
// Initialize receiver on interrupt 0 (= digital pin 2), calls the callback "showCode"
// after 3 identical codes have been received in a row. (thus, keep the button pressed
// for a moment)
//
// See the interrupt-parameter of attachInterrupt for possible values (and pins)
// to connect the receiver.
RemoteReceiver::init(0, 3, showCode);//приемник вешаем на 2 пин(0 прерывание), 3-мин. количество повторов
}
 
void loop() {
}
 
// Callback function is called only when a valid code is received.
void showCode(unsigned long receivedCode, unsigned int period) {
// Note: interrupts are disabled. You can re-enable them if needed.
 
// Print the received code.
Serial.print("Code: ");
Serial.print(receivedCode);
Serial.print(", period duration: ");
Serial.print(period);
Serial.println("us.");
}

А вот код отправки с кнопки:

#include <RemoteTransmitter.h>
unsigned int period = 240;  //period duration
unsigned long code;         //code
unsigned long transmitCode = 511704; // 1 - Smoke, 3 - RedSmoke, 9 - GreenSmoke, 27 - BlueSmoke

const int  Button = 4;
int   buttonState = 0;

void setup() {
  Serial.begin(9600);
//формируем код отправки
  code = transmitCode & 0xFFFFF;
  code |= (unsigned long)period << 23;
  code |= 3L << 20;
  pinMode(Button, INPUT);
}

 
void loop() {

  
  
  buttonState = digitalRead(Button);
  if ((buttonState == HIGH)){
      RemoteTransmitter::sendTelegram(code,3);
  }
  if ((buttonState == LOW))
  {
  }

  Serial.print("Code: ");
  Serial.print(transmitCode);

  Serial.print(", period duration: ");
  Serial.print(period);

  Serial.print("Button: ");
  Serial.print(buttonState);
  
delay(10);
}

Надеюсь поможет

maxwell2010
Offline
Зарегистрирован: 12.09.2015

У меня вот сейчас проблема в другом: считал код пульта, все верно. На второй дуине принимает и именно тот сигнал который отправляю, а вот радио патрон Е27 никак не хочет реагировать. Может быть закодирован сигнал или что то еще? на передатчике микросхема ТС369В

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

maxwell2010 пишет:

У меня вот сейчас проблема в другом: считал код пульта, все верно. На второй дуине принимает и именно тот сигнал который отправляю, а вот радио патрон Е27 никак не хочет реагировать. Может быть закодирован сигнал или что то еще? на передатчике микросхема ТС369В

Было такое , разные библиотеки разные цифры , значит не правильные цифры сосчитал. пробуй другие библиотеки. у меня на одной было 6 цифр с другой библиотекой было 5, где пять там и заработало все  . 

Alexandrvs
Offline
Зарегистрирован: 09.12.2015

Подскажите как увеличить радиус действия связки двух модулей RF-5v и FC1000A. Пробовал устанавливать антенны на оба модуля по 17.5 см. на каждый (скрутил из utp). Модуль RF-5V запитан от одной ардуино 5v. FC1000A собственное питание 12v. (от батарейки). Радиус действия не более 5 метров

maxwell2010
Offline
Зарегистрирован: 12.09.2015

Спасибо cudla1973, помог. Считал через RCSwitch и стала работать, правда никакие антены не помогают. Уже сантимов 30 антену припаял, а работает только сантиметров от 20 максимум. Неужели пропорционально длине антены? :) это чтобы на 2 метра расстояния нужно 2 метра антены?! ха ха :) Кто решил эту проблему? а то получается смысла от этого передатчика никакого. кстати, вот такой вот он, тока на 315 Мгц: 

 

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

У меня решалось расположением плат передатчика и приемника , это сильно влияет на дальность.

maxwell2010
Offline
Зарегистрирован: 12.09.2015

cudla1973 пишет:
У меня решалось расположением плат передатчика и приемника , это сильно влияет на дальность.
Ну у меня пока просто на макетке: А приемник в радио патроне, метрах в 2-х

maxwell2010
Offline
Зарегистрирован: 12.09.2015

сфотал радио патрон 

перепаял на свой приемник, стал работать от дуины, а с пульта максимум 20 см, че за Х? :(