433 МГц отправка не принимается

Я пытаюсь отправить данные, используя эти дешевые детали. Когда я проверяю напряжение на порту передачи данных передатчика, я вижу, что я ожидаю, 1,2 и 0,6 колеблются во время отправки. Но когда я проверяю приемник, я получаю 0. У меня есть 3 набора, и я перепробовал их все. Также попробовал это с включением передатчика на 11 В для получения дополнительной мощности. Я добавил светодиод к передатчику, чтобы видеть, когда он передает, и я добавил не очень хорошую антенну к обоим, хотя во время моих тестов они находились всего в 5 см друг от друга.

Буду признателен за любой совет.

Приемник
FS1000A с LR433A

#include <VirtualWire.h>

const int led_pin = 6;
//const int transmit_pin = 12;
const int receive_pin = 11;
//const int transmit_en_pin = 3;

void setup()
{
    delay(1000);
    Serial.begin(9600);  // Только для отладки
    Serial.println("setup");

    // Инициализировать ввод-вывод и ISR
    //vw_set_tx_pin(transmit_pin);
    vw_set_rx_pin(receive_pin);
    //vw_set_ptt_pin(transmit_en_pin);
    //vw_set_ptt_inverted(true); // Требуется для DR3100
    vw_setup(1000);  // Бит в секунду

    vw_rx_start();       // Запуск PLL приемника
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Неблокирующий
    {
  int i;

        digitalWrite(led_pin, HIGH); // Мигает индикатор, чтобы показать полученное хорошее сообщение
  // Получено сообщение с хорошей контрольной суммой, распечатайте его.
  Serial.print("Got: ");

  for (i = 0; i < buflen; i++)
  {
      Serial.print(buf[i], HEX);
      Serial.print(' ');
  }
  Serial.println();
        digitalWrite(led_pin, LOW);
    }
}

Передатчик

#include <VirtualWire.h>

const int led_pin = 11;
const int transmit_pin = 12;
const int receive_pin = 2;
const int transmit_en_pin = 3;

void setup()
{
  // Инициализировать ввод-вывод и ISR
  vw_set_tx_pin(transmit_pin);
  vw_set_rx_pin(receive_pin);
  vw_set_ptt_pin(transmit_en_pin);
  vw_set_ptt_inverted(true); // Требуется для DR3100
  vw_setup(1000);   // Бит в секунду
}

byte count = 1;

void loop()
{
  char msg[7] = {'h','e','l','l','o',' ','#'};
  Serial.println("sending");
  msg[6] = count;
  digitalWrite(led_pin, HIGH); // Мигает индикатор, чтобы показать передачу
  vw_send((uint8_t *)msg, 7);
  vw_wait_tx(); // Подождите, пока все сообщение не исчезнет
  digitalWrite(led_pin, LOW);
  delay(1000);
  count = count + 1;
}

transmitter receiver

, 👍1

Обсуждение

братан, основываясь на (вы должны иметь возможность подключать приемник + и GND, у меня есть один, который работал на 5 В, я не вижу, совпадают ли они, и подключите мультиметр от GND к данным, и вы должны получить около половины Vcc), он говорит , что проблема не в модуль проблема связана с библиотекой, @nitra ss


2 ответа


Лучший ответ:

2

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

Приведенный выше код и проводка - все в порядке!

,

Я так и сделаю, мне придется подождать целый день, чтобы сделать это :), @Thijs

Поздравляю с вашей медалью - у меня их целая куча вот такой высоты ^, @AMADANON Inc.


3

Если вы ничего не получаете на приемник, то проблема, безусловно, в приемнике. Эти устройства будут увеличивать коэффициент усиления до тех пор, пока не получат какой-то сигнал, любой сигнал.

Вы должны иметь возможность включить приемник + и GND (у меня есть один, который работает на 5 В, я не вижу, совпадают ли они), и подключить мультиметр от GND к данным, и вы должны получить примерно половину Vcc, возможно, немного колеблясь. Если вы посмотрите на то же самое с помощью осциллографа, оно должно сильно колебаться между 0 и Vcc вольт. Все это должно работать и без передатчика, и без Arduino (вам понадобится источник питания для приемника).

Примечание: это по памяти, у меня здесь нет моей, чтобы проверить.

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

Обратите внимание, что вы должны сбалансировать свои "1" и "0", чтобы получить четкий сигнал - проверьте манчестерскую кодировку (она кодирует "1" как "1,0", а 0 как "0,1", так что будет идеальный баланс). Возможно, вы также захотите отправить сигнал 1010101010 в начале - это дает приемнику возможность настроить усиление на правильный уровень. Или вы можете использовать некоторую кодировку на основе ширины (например, "медленный 1, медленный 0" для "1" и "быстрый 0, быстрый 1" для "0").

,

Когда я подключаю мультиметр к данным и GND к приемнику, результат 0 колеблется от -0, и вы ожидаете увидеть 50% входного сигнала Vcc, то есть около 2,5 вольт? Я попрошу у кого-нибудь осциллограф, поскольку у меня самого его нет. Спасибо за совет по кодированию сигнала, я надеюсь, что смогу добраться до этого в ближайшее время., @Thijs

Я допустил ошибку новичка, как вы можете прочитать ниже. Просто хотел сообщить вам, что вы правы насчет половины Vcc при получении данных + GND и спасибо за вашу помощь., @Thijs

На случай, если кто-нибудь еще увидит ваш комментарий выше, -0 означает, что в другом направлении течет 0 вольт. Это не редкость, когда по проводам не течет электричество, небольшие случайные колебания могут вызвать это. Если напряжение меньше -0 (например, -2,5 вольт), это означает, что питание течет в другом направлении (или у вас неправильно установлены датчики на мультиметре)., @AMADANON Inc.