433MHz не могу ничего считать
- Войдите на сайт для отправки комментариев
Чт, 31/01/2019 - 18:09
Привет
Подскажите пож, в чем проблема.
Купил вот такой комплект на али
Беспроводной приемник и передатчик модуль доска супер-регенерации 433 мГц DC5V (ASK/ook) для Arduino
Ну как у всех на роликах.
Использую библиотеку RemoteSwitch, но в упор ничего не могу получить в мониторе на втором цифровом пине. Может быть левая ардуинка нано (левее левой), она у меня какая-то черного цвета (краска). Синие все кончились в запасах. Без прерываний в лупе тоже пробывал, ничего не обнаружил. Может какой-то чип не совместимый... Посоветуйте плиз чего-нибудь. Может напряжение поднять на входе у приемника.
Скеч железобетонный, стандартный из примеров.
Кстати, скорость порта синхронизированна.
Скеч тут
#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."); }Три других комплекта приемников тоже перепробывал, даже других типов, например, WL101-341 результат тоже нулевой
Купил вот такой комплект
Вот какой?
54,97 руб. | Doit rf Беспроводной приемник и передатчик модуль доска супер-регенерации 315/433 мГц DC5V (ASK/ook) для Arduino
https://s.click.aliexpress.com/e/cBm8xCfs
А Вы уверены, что Ваша библиотека с этой парой работает? И, кстати, кода передатчика мы не видели.
Возьмите обычную VirtualWire - она точно работает. Скетчи приёмника и передатчика возьмёте из примеров к библиотеке.
И да, надеюсь, Вы знаете, что питание этого передатчика - 12В. От 5В он работает когда практически вплотную к приёмнику, да ещё и с антенной.
pridecom - антенны к приемнику и передатчику припаяли?
На Ардуине Нано случаем слова Wavgat нигде не написано? (на плате, на чипе...)
Спасибо за реакцию, завтра обязательно все проверю и испытаю.
а что не сегодня? Нафига тогда людей дергал? :)
Ничего не помогло.
На Ардуринде нет нигде надписи 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); // Гасим светодиод в конце } }Уже начала падать самооценка.
Кода передатчика мы опять не видим :(
Передатчики - пульты от двух ворот с надписью 433 и из комплекта передатчик с кодом отправки зацикленным.
Блин! Возьмите для начала тот пердатчки, что в комплекте с приёмником. Запустите оба (и приёмник, и передатчик) с примером из библиотеки, убедитесь что они исправын, а уж потом будете думать о постороннем передатчике!
Сделайте сначал это, а потом я Ваи расскажу что делать с незнакомым передатчиком. СНачал нужно быть уверенным, что приёмник исправен
Как раз так и сделанно, не получаю ответ на приемник.
Уже даже другую ардуину взял и пины канифолью припаял.
Ну, тогда см. пост #10.
Давайте код приёмника, код передатчика и фото конструкции так, чтобы соединения были видны.
Эти приёмники весьма надёжны - ни разу не видел проблем. ну, если не покупать приёмник и передатчик на разные частоты
Ура, выходной, ковыряюсь, результат прежний
Код
#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 комплекта передатчиков мне прислали мертвые. Что вместо приемника можно прикрутить для диагностики соединений?
1.Без антенны даже на 10 см почти не ловит, эт раз. Антенна не все, что угодно, а провод длиной 17 см (1/4 длины волны).
2.Нужно смотреть выходной сигнал приемника на осцилографе. Хотя бы на софтовом из звукового входа компа. Поищи в инете программу, их много.
[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]Чудеса. Код выше работает, я неимоверно счастлив. Действительно, некоторые передатчики оказались нерабочими, после пропайки все взлетело. Теперь этап 2. Считать и сэмулировать это.
Надеюсь, тут меня не ждет фиаско.
Считать и сэмулировать это.
Вот здесь у человека получилось - http://arduino.ru/forum/obshchii/imitatsiya-pulta-na-433-mgts посмотрите
Зачем это?
Зачем это?
Для этого есть гугл, почитайте там, а вобще эта штучка + программа SHARP = анализатор спектра. Программы которые я вам скинул копытятся в интернете за 15 минут.
Надеюсь, тут меня не ждет фиаско.
Вот тут и начнется самое интересное - эти пульты с динамической кодировкой. Т.е. просто считать код, запомнить и передать у Вас не получится. Тут алгоритм знать надо...
Мне бы для начала считать код....
Для считывания кода можно пойти вот таким путем:
http://arduino.ru/forum/obshchii/imitatsiya-pulta-na-433-mgts#comment-42...
Видел. Покупаю батарейку, посадил уже). Надо зажать клавишу после отсчета или держать ее во время отсчета?
Нужно нажать кнопку в самом начале отсчёта. Очень много помех идёт на этой частоте.
Затем искать повторяющиеся (точнее похожие) куски. Возможно код отправляется несколько раз при нажатии кнопки. У меня по 4 раза отправлялись.
Нажать или зажать и держать кнопку на брелке, как более правильно?
Правильней всего повторить действие, которое приводит к открыванию шлагбаума, или что там у вас. Главное это сделать в начале запуска скрипта, пока массив не заполнился помехами в эфире.