Не получается отправить данные через передатчик 433Мгц

Тема в разделе "Arduino & Shields", создана пользователем Максим B, 17 фев 2015.

  1. Максим B

    Максим B Гуру

    Вот код :

    #include <RCSwitch.h>

    RCSwitch mySwitch = RCSwitch();

    void setup() {

    Serial.begin(9600);

    // Transmitter is connected to Arduino Pin #10
    mySwitch.enableTransmit(0);

    // Optional set pulse length.
    // mySwitch.setPulseLength(320);

    // Optional set protocol (default is 1, will work for most outlets)
    // mySwitch.setProtocol(2);

    // Optional set number of transmission repetitions.
    // mySwitch.setRepeatTransmit(15);

    }

    void loop() {

    /* Same switch as above, but using decimal code */
    mySwitch.send(836800, 24);
    delay(1000);
    mySwitch.send(836611, 24);
    delay(1000);
    }

    Передатчик покдлючен к пину D2.

    RAW данные кнопок пульта

    Decimal: 836800 (24Bit) Binary: 000011001100010011000000 Tri-State: 001010F01000 PulseLength: 251 microseconds Protocol: 1
    Raw data: 7796,244,760,244,760,248,756,244,764,740,268,748,252,244,768,232,768,744,264,740,264,236,772,232,768,244,764,740,268,240,760,244,764,100,260,48,1836,40,76,12,32,24,96,16,28,16,40,308,76,

    Decimal: 836656 (24Bit) Binary: 000011001100010000110000 Tri-State: 001010F00100 PulseLength: 251 microseconds Protocol: 1
    Raw data: 7800,244,764,236,768,244,760,240,764,736,272,736,268,240,760,200,764,744,264,740,268,236,764,240,768,236,768,740,264,236,772,236,764,236,772,240,764,40,52,208,552,60,68,84,120,100,1800,92,820,

    Decimal: 836620 (24Bit) Binary: 000011001100010000001100 Tri-State: 001010F00010 PulseLength: 251 microseconds Protocol: 1
    Raw data: 7792,244,760,240,768,240,768,232,768,748,256,748,260,240,764,244,760,748,260,744,260,240,764,244,760,244,760,748,260,240,768,232,772,236,768,236,772,96,2640,68,92,32,12,196,132,56,472,48,32,

    Decimal: 836611 (24Bit) Binary: 000011001100010000000011 Tri-State: 001010F00001 PulseLength: 251 microseconds Protocol: 1
    Raw data: 7792,244,764,244,760,244,760,244,760,744,264,740,264,244,760,244,760,680,260,744,264,236,768,240,764,240,764,744,260,244,760,244,760,244,764,244,760,244,760,244,760,244,764,240,764,744,260,748,260,

    Decimal: 836611 (24Bit) Binary: 000011001100010000000011 Tri-State: 001010F00001 PulseLength: 251 microseconds Protocol: 1
    Raw data: 7792,240,764,244,760,248,756,248,756,752,256,748,260,240,760,248,760,744,260,748,260,240,764,244,764,84,68,16,2764,264,128,732,24,988,52,660,88,12,756,16,40,228,176,268,772,432,524,524,44,

    Decimal: 836668 (24Bit) Binary: 000011001100010000111100 Tri-State: 001010F00110 PulseLength: 251 microseconds Protocol: 1
    Raw data: 7796,244,760,244,764,240,760,244,768,744,264,108,252,252,748,260,756,748,256,752,92,44,540,44,212,84,72,52,1640,56,28,88,1560,12,836,484,2312,64,60,64,28,1240,44,52,360,648,276,396,60,

    Что я не так сделал???
     
  2. X-Dron

    X-Dron Гик

    Явная ошибка здесь:
    mySwitch.enableTransmit(0);
    для D2 должно быть mySwitch.enableTransmit(2);
    Это в приемнике нужно указывать номер прерывания, а в передатчике нормер пина.
    И я бы расскоментировал и поставил
    mySwitch.setPulseLength(251);
     
  3. Максим B

    Максим B Гуру

    Где можно почитать про пины D2 ? А если я буду использовать UNO, тогда какой пин выбрать A0-A4???. Нубский вопрос: на что влияет данная строка mySwitch.setPulseLength(251); Что это за длина импульса и как она рассчитывается? СПАСИБО
     
  4. X-Dron

    X-Dron Гик

    Мне ли простому нерду консультировать Гика. :)
    Data-ножка передатчика цепляется на обыкновенные цифровые входы (0-14)
    про D2 Вы сами написали
    Но, приемник, я бы не стал сажать на 2-й вход, который может генерить прерывания. А посадил бы как в примере библиотеки на 10. Тогда инициализация будет такая.
    mySwitch.enableTransmit(10);
    Можно почитать здесь:
    https://dzrmo.wordpress.com/2012/07/08/remote-control-pt2272-for-android/
    мои комменты здесь
    http://forum.amperka.ru/threads/Беспроводные-датчики-и-модуль-связи-на-433МГц.4204/

    По Вашим Row данным с вероятностью 99.9% могу сказать, что в пульте 2262 чип кодировщика и 443МГц резонатор. Для 315 у меня PulseLength: 362 microseconds.
    берется из Row-данных
     
  5. Максим B

    Максим B Гуру

    Спасибо, все у меня получилось. Код вот так переделал

    /*
    Example for different sending methods

    http://code.google.com/p/rc-switch/

    */

    #include <RCSwitch.h>

    RCSwitch mySwitch = RCSwitch();

    void setup() {

    Serial.begin(9600);

    // Transmitter is connected to Arduino Pin #10
    mySwitch.enableTransmit(10);

    // Optional set pulse length.
    mySwitch.setPulseLength(251);

    // Optional set protocol (default is 1, will work for most outlets)
    mySwitch.setProtocol(1);

    // Optional set number of transmission repetitions.
    // mySwitch.setRepeatTransmit(15);

    }

    void loop() {

    /* See Example: TypeA_WithDIPSwitches */
    mySwitch.switchOn("11111", "00010");
    delay(1000);
    mySwitch.switchOn("11111", "00010");
    delay(1000);

    /* Same switch as above, but using decimal code */
    mySwitch.send(836611, 24);
    delay(1000);
    mySwitch.send(836611, 24);
    delay(1000);

    /* Same switch as above, but using binary code */
    mySwitch.send("000011001100010000000011");
    delay(1000);
    mySwitch.send("000011001100010000000011");
    delay(1000);

    /* Same switch as above, but tri-state code */
    mySwitch.sendTriState("001010F00001");
    delay(1000);
    mySwitch.sendTriState("001010F00001");
    delay(1000);

    delay(20000);
    }