433MHz не могу ничего считать

pridecom
Offline
Зарегистрирован: 07.07.2017

Привет

Подскажите пож, в чем проблема.

Купил вот такой комплект на али

Беспроводной приемник и передатчик модуль доска супер-регенерации 433 мГц DC5V (ASK/ook) для Arduino

Ну как у всех на роликах.

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

Скеч железобетонный, стандартный из примеров.

pridecom
Offline
Зарегистрирован: 07.07.2017

Кстати, скорость порта синхронизированна.

Скеч тут 

#include <RemoteReceiver.h>

/*
* 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.
*/


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.");
}

 

pridecom
Offline
Зарегистрирован: 07.07.2017

Три других комплекта приемников тоже перепробывал, даже других типов, например, WL101-341 результат тоже нулевой

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

pridecom пишет:

Купил вот такой комплект

Вот какой?

pridecom
Offline
Зарегистрирован: 07.07.2017

54,97 руб. | Doit rf Беспроводной приемник и передатчик модуль доска супер-регенерации 315/433 мГц DC5V (ASK/ook) для Arduino
https://s.click.aliexpress.com/e/cBm8xCfs

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

А Вы уверены, что Ваша библиотека с этой парой работает? И, кстати, кода передатчика мы не видели.

Возьмите обычную VirtualWire - она точно работает.  Скетчи приёмника и передатчика возьмёте из примеров к библиотеке.

И да, надеюсь, Вы знаете, что питание этого передатчика - 12В. От 5В он работает когда практически вплотную к приёмнику, да ещё и с антенной.

b707
Offline
Зарегистрирован: 26.05.2017

pridecom - антенны к приемнику и передатчику припаяли?

На Ардуине Нано случаем слова Wavgat нигде не написано? (на плате, на чипе...)

pridecom
Offline
Зарегистрирован: 07.07.2017

Спасибо за реакцию, завтра обязательно все проверю и испытаю.

b707
Offline
Зарегистрирован: 26.05.2017

pridecom пишет:
Спасибо за реакцию, завтра обязательно все проверю и испытаю.

а что не сегодня? Нафига тогда людей дергал? :)

pridecom
Offline
Зарегистрирован: 07.07.2017

Ничего не помогло.

На Ардуринде нет нигде надписи WavGat

Пробывал 12 в, антенну, 3 других передатчика, библиотеку VirtualWire с кодом

#include <VirtualWire.h>

byte message[VW_MAX_MESSAGE_LEN]; // Буфер для хранения принимаемых данных
byte messageLength = VW_MAX_MESSAGE_LEN; // Размер сообщения

const int led_pin = 13; // Пин светодиода
const int receiver_pin = 2; // Пин подключения приемника


 
void setup()
{
Serial.begin(9600); // Скорость передачиданных
Serial.println("MX-RM-5V is ready");
vw_set_rx_pin(receiver_pin); // Пин подключения приемника

vw_setup(2000); // Скорость передачи данных (бит в секунду)
vw_rx_start(); // Активация применика
}
void loop()
{
if (vw_get_message(message, &messageLength)) // Если есть данные..
{
digitalWrite(led_pin, HIGH); // Зажигаем светодиод в начале приема пакета
for (int i = 0; i < messageLength; i++)
{
Serial.write(message[i]); // выводим их в одной строке
}
Serial.println();
digitalWrite(led_pin, LOW); // Гасим светодиод в конце
}
}

Уже начала падать самооценка.

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

Кода передатчика мы опять не видим :(

pridecom
Offline
Зарегистрирован: 07.07.2017

Передатчики - пульты от двух ворот с надписью 433 и из комплекта передатчик с кодом отправки зацикленным.

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

Блин! Возьмите для начала тот пердатчки, что в комплекте с приёмником. Запустите оба (и приёмник, и передатчик) с примером из библиотеки, убедитесь что они исправын, а уж потом будете думать о постороннем передатчике!

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

pridecom
Offline
Зарегистрирован: 07.07.2017

Как раз так и сделанно, не получаю ответ на приемник.

Уже даже другую ардуину взял и пины канифолью припаял.

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

Ну, тогда см. пост #10.

Давайте код приёмника, код передатчика и фото конструкции так, чтобы соединения были видны.

Эти приёмники весьма надёжны - ни разу не видел проблем. ну, если не покупать приёмник и передатчик на разные частоты

pridecom
Offline
Зарегистрирован: 07.07.2017

Ура, выходной, ковыряюсь, результат прежний

Код

#include <VirtualWire.h>                  
char buffer[66];
 
void setup() 
{ 
   Serial.begin(9600);                          // Скорость компорта 
   vw_set_tx_pin(7);                            // VirtualWire
   vw_set_rx_pin(2);                            // VirtualWire
   vw_setup(2000);                          // VirtualWire
   vw_rx_start();                           // VirtualWire
}
 
void loop() {
   
uint8_t buf[VW_MAX_MESSAGE_LEN];  uint8_t buflen = VW_MAX_MESSAGE_LEN;   
if(vw_get_message(buf, &buflen)){      int i; for(i = 0;  i < buflen; ++i)
{ buffer[i] = char(buf[i]);}buffer[i++]='\0';  Serial.println(buffer); } 
  
     
int i=0; 
if(Serial.available()){delay(100);
while( Serial.available() && i< 66) { buffer[i++] = Serial.read();} buffer[i++]='\0';}                                       
if(i>0)
{
  vw_send((uint8_t *)buffer, strlen(buffer)); 
  vw_wait_tx();   
}    
}

Фотка соединений. 

Повторюсь, питание, антенны, другие библиотеки я уже попробывал. Даже флюс менял. Грешу только на черныую ардуину, ее заменить нечем, все 10 штук одинаковые. Другие прокты на них работали без проблем. Ну или все 4 комплекта передатчиков мне прислали мертвые. Что вместо приемника можно прикрутить для диагностики соединений?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

1.Без антенны даже на 10 см почти не ловит, эт раз. Антенна не все, что угодно, а провод длиной 17 см (1/4 длины волны).

2.Нужно смотреть выходной сигнал приемника на осцилографе. Хотя бы на софтовом из звукового входа компа. Поищи в инете программу, их много.

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015
[code]
// receiver приём
//

#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_set_rx_pin (8);   //(receive_pin); 
    vw_setup(2000);      // Bits per sec
    vw_rx_start();       // Start the receiver PLL running
}

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

    if (vw_get_message(buf, &buflen)) // Non-blocking
    {
        int i;
        digitalWrite(13, true); // Flash a light to show received good message
        // 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("");
        digitalWrite(13, false);
    }
}

//////////////////////////////////////////////////////////////////////////////
// transmitter передача
//
#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_set_tx_pin (7);   //(transmit_pin); 
    vw_setup(2000);      // Bits per sec
    
    
}

void loop()
{
    const char *msg = "hello";

    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
    digitalWrite(13, false);
    delay(200);
}





[/code]

 

pridecom
Offline
Зарегистрирован: 07.07.2017

Чудеса. Код выше работает, я неимоверно счастлив. Действительно, некоторые передатчики оказались нерабочими, после пропайки все взлетело. Теперь этап 2. Считать и сэмулировать это.

Надеюсь, тут меня не ждет фиаско.

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

pridecom пишет:

Считать и сэмулировать это.

Вот здесь у человека получилось  - http://arduino.ru/forum/obshchii/imitatsiya-pulta-na-433-mgts посмотрите

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

при работе с приёмо - передающим устройством стоит приобрести такую штучку,
 возможно ваши девайсы работают на 315мгц.

 

pridecom
Offline
Зарегистрирован: 07.07.2017

oleg_kazakof пишет:
стоит приобрести такую штучку

Зачем это?

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

pridecom пишет:

oleg_kazakof пишет:
стоит приобрести такую штучку

Зачем это?

Для этого есть гугл, почитайте там, а вобще эта штучка + программа SHARP = анализатор спектра.  Программы которые я вам скинул копытятся в интернете за 15 минут.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

pridecom пишет:

 

Надеюсь, тут меня не ждет фиаско.

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

pridecom
Offline
Зарегистрирован: 07.07.2017

Мне бы для начала считать код....

kost82
Offline
Зарегистрирован: 30.11.2015

Для считывания кода можно пойти вот таким путем:
http://arduino.ru/forum/obshchii/imitatsiya-pulta-na-433-mgts#comment-42...

pridecom
Offline
Зарегистрирован: 07.07.2017

Видел. Покупаю батарейку, посадил уже). Надо зажать клавишу после отсчета или держать ее во время отсчета?

kost82
Offline
Зарегистрирован: 30.11.2015

Нужно нажать кнопку в самом начале отсчёта. Очень много помех идёт на этой частоте.
Затем искать повторяющиеся (точнее похожие) куски. Возможно код отправляется несколько раз при нажатии кнопки. У меня по 4 раза отправлялись.

pridecom
Offline
Зарегистрирован: 07.07.2017

Нажать или зажать и держать кнопку на брелке, как более правильно?

kost82
Offline
Зарегистрирован: 30.11.2015

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