Связь arduino и mx-rm-5v приёмник 433.92

The Kaban
Offline
Зарегистрирован: 28.09.2016

Добрый день!

Для одного своего хобби проекта, мне нужно передавать(принимать) данные по радио каналу на частоте 433.92. Для этого был куплен приёмник mx-rm-5v. Задача казалась простой, но вот уже 3 дня не могу справится с этой задачей. Перерыл весь интернет, попробовал пару библиотек, несколько раз перепроверил подключение модуля, купил ещё пару модулей, но результата так и нет((( вот код который я пробовал:

подскажите пожалуйста, в чем может быть проблема и в каком направление копать?

Спасибо!

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Моя версия: Ардуина не видит код, так же как и мы. 

The Kaban
Offline
Зарегистрирован: 28.09.2016

Извиняюсь, с кодом вышла осечка)

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);
}

void loop() {
  if (mySwitch.available()) {
    Serial.println(mySwitch.getReceivedValue());
    }
    mySwitch.resetAvailable();
          delay(100);
    }

sadman41 пишет:

Моя версия: Ардуина не видит код, так же как и мы. 

Действительно, повсей видимости именно в этом проблема!)))

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Лично мне тут сразу не нравится delay (сейчас не мешает, но потом вылезет боком) и resetAvailable() на каждом лупе. Как мне помнится - это нужно сделать только после приема пакета (внутри условия), а постоянный сброс ни к чему хорошему привести не может. 

Хотя, может у вас какая-то особая логика заложена...

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Во-первых кода передатчика мы так и не увидели, а во-вторых, возьмите нормальную библиотеку (VirtualWire), чего Вы привязались к RCSwitch - она не для этого совсем.

The Kaban
Offline
Зарегистрирован: 28.09.2016

sadman41 пишет:

Лично мне тут сразу не нравится delay (сейчас не мешает, но потом вылезет боком) и resetAvailable() на каждом лупе. Как мне помнится - это нужно сделать только после приема пакета (внутри условия), а постоянный сброс ни к чему хорошему привести не может. 

Хотя, может у вас какая-то особая логика заложена...

Спасибо за  ответ! Я пока просто пытаюсь получить хоть что-то с приемника.

ЕвгенийП пишет:

Во-первых кода передатчика мы так и не увидели, а во-вторых, возьмите нормальную библиотеку (VirtualWire), чего Вы привязались к RCSwitch - она не для этого совсем.

Кода передатчика нет, роль передатчика выполняет пульт работающий на частоте 433.92.

Про библиотеку Вас понял, сейчас постараюсь попробовать.

Спасибо!

 

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

 На какую ножку подключен модуль приемника ? Какую используете ардуино ? Не забыли ли подать землю и питание на модуль приемника ?

The Kaban
Offline
Зарегистрирован: 28.09.2016

Попробывал с библиотекой VirtualWire, взял от туда пример:

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);
    vw_set_rx_pin(2); 
    vw_setup(2000);
    vw_rx_start();
}

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

    if (vw_get_message(buf, &buflen))
    {
		Serial.print("Got: ");
	    }
}

Все лишние вкинул и добавил vw_set_rx_pin(2), приемник подключен к arduino uno к второму пину(PD2).

Результата нет(

The Kaban
Offline
Зарегистрирован: 28.09.2016

Arduino uno r3, модуль подключен к пину 2 (PD2), Gnd +5V в наличие.

The Kaban
Offline
Зарегистрирован: 28.09.2016

Поехал сегодня купил еще один комплект,  приемник и передатчик.

Подключил как написано в библиотеке, передатчик к 11 пину, а приемник к 12 пину. После этого открыл пример под название client, который идет с библиотекой VirtualWrite.  в итоге получил в мониторе порта поочередные записи Send и Timout.

Навсякий случий выкладываю код этого примера:

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);	// Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);	 // Bits per sec
    vw_rx_start();       // Start the receiver PLL running
}

void loop()
{
    const char *msg = "hello";
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    digitalWrite(13, true); // Flash a light to show transmitting
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    Serial.println("Sent");
    digitalWrite(13, false);

    // Wait at most 200ms for a reply
   if (vw_wait_rx_max(200))
   {
	if (vw_get_message(buf, &buflen)) // Non-blocking
	{
	    int i;
	    
	    // Message with a good checksum received, dump it.
	    Serial.print("Got: ");
	    
	    for (i = 0; i < buflen; i++)
	    {
		Serial.print(buf[i], HEX);
		Serial.print(" ");
	    }
	    Serial.println("");
	}
    }
    else
	Serial.println("Timout");
	
}

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

Подскажите пожалуйста, куда двигаться, и на что стоит обратить внимание?

Спасибо!

З.Ы. Первый раз размещаю картинку на форуме, извините если что не так!)

The Kaban
Offline
Зарегистрирован: 28.09.2016

Добрый вечер!

Сегодня уже все перепробовал, что только мог((( результата 0(((

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

Сейчас подключил к приемнику светодиод, и он реагирует на нажатие пульта, получается что железная часть точно рабочая, надо разбираться с програмной) Но это уже кое что)))