Вывод из спящего режима по радиосигналу

Тема в разделе "Arduino & Shields", создана пользователем AlexAxel, 26 янв 2017.

  1. AlexAxel

    AlexAxel Нерд

    имеем устройство на ардуино которое транслирует с использованием модуля RX 433 последовательности символов - в течение определенного времени - "а", потом - "b", потом - "с" и т.п.

    Второе устройство, с ресивером, находится в зоне приема в спящем режиме.

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

    rkit Гуру

    Можно, разрешаю.
     
  3. AlexAxel

    AlexAxel Нерд

    Отлично. Значит, двигаюсь в правильном направлении.

    Следующая просьба, раз это можно сделать:
    поделитесь пожалуйста кусочком кода, который разбудит устройство, когда на радиоприемник придет сигнал, содержащий "b", отработает до тех пор, пока получает сигнал "b" и снова отправит железяку баиньки когда перестанет получать сигнал "b". Заранее благодарю.
     
  4. rkit

    rkit Гуру

    Я не знаю, что у вас за устройство, как его будить, и на каком языке оно программируется. Почему все считают, что это форум телепатов?
     
  5. mcureenab

    mcureenab Гуру

    Будить МК, это функция приемника. Хороший приемник с функцией энергосбережения постоянно включен и ловит преамбулу. Когда поступает сигнал, похожий на преамбулу включаются блоки обработки сигнала. Если сигнал оказался помехой, приемник снова уходит в режим энергосбережения. Если за сигналом пошли данные, приемник отправляет их, например на UART МК. Если в МК установлено прерывание на готовность данных UART, МК пробуждается и принимает байт и т.д..
    Если байт оказался сигналом "b", МК что то там выполняет. Если нет, засыпает снова.

    В любом случае в приемнике должен работать блок детектирования преамбулы. Он может потреблять мало энергии.

    Вы определитесь с приемником, а потом за код беритесь.
     
    Последнее редактирование: 26 янв 2017
  6. AlexAxel

    AlexAxel Нерд

    Хмм... Допустим я нуб и считаю, что все платы ардуино программируются одинаковым образом. Или я таки неправ? Схема подключения - аналогичная тому, как изображено на рисунке (допустим, что так же), но не суть. radio_receiver_radio_transmitter_433MHz_connection-to_Arduino.jpg

    Вот что передатчик транслирует:

    #include <VirtualWire.h>
    void setup(void)
    {
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    }
    void loop(void)
    {
    String strMsg = "b";
    char msg[255];
    strMsg.toCharArray(msg, 255);
    Serial
    .println(msg);
    vw_send((uint8_t *)msg, strlen(msg));//Начало передачи
    vw_wait_tx(); // Ожидание окончания передачи
    delay(5000);
    }

    ------------------------------
    Код транслирует символ b c периодичностью раз в пять секунд.

    Так вот что мне надо поставить в код приемника, чтобы он на спящем устройстве мониторил эфир и, приняв сигналы, разбирал их; приняв "b" - вывел устройство из спящего режима, и, пока принимает это "b", выполнял определенную процедуру?
     
  7. AlexAxel

    AlexAxel Нерд

    Ладно, проехали. Я по ходу не могу объяснить правильно. Вопрос закрыт.
     
  8. rkit

    rkit Гуру

    Я из волшебной страны, где мы говорим не "устройство", а "ардуино уно". Не "подействуй объектом на объект", а "поставь чай на стол", и так далее. Такие вот чудеса.
    С таким приемником без жирной обвязки не получится. И вообще, сдается мне, что вы предварительной оптимизацией занимаетесь. И совсем не там, где она нужна.
     
  9. mcureenab

    mcureenab Гуру

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

    Каким образом пробуждать устройство? Громким криком? Пинками?

    Нарисуйте код приемника, а к нему уже можно логику обработки команд прицепить.
     
  10. AlexAxel

    AlexAxel Нерд

    Сказал же - проехали. Вроде все объяснил, а все равно понимаю. что другим непонятно. Закройте тему.