Всем добрый день, есть Ардуино нано и 433 МГц RF беспроводной модуль, также задействованы три пина Ардуино на выход. Сигнал от них нужно передать с помощью этого модуля. Можно ли это вообще реализовать и как ? Если нужна дополнительная информация напишите. Заранее спасибо!
да. есть библиотека rc switch называется. не сложная в освоении . как то делал с такими приемниками на PIC. работало но как то не стабильно. может помехи. на форуме где то встречал что они очень капризные и совсем не няшные в настройке Но попробовать стоит. работать должно
Подключаете к Serial каналу. Только не к пинам 0-1 Ардуины Уно. Там уже висит периферия. Не надо библиотек. Битрейт > 600bps, < 9600bps. Самое то - 2400 - 4800. Естественно, если хотите принимать только "свои" данные - парсинг строки по какому-либо ключевому слову. Нет у них настроек, кроме подстройки частоты приема.
Что значит "напрямую к сериал" ? Если вы имеете в виду стандартный Ком-порт ПК с размахом +-12 вольт - то конечно нельзя (HC-12 наверняка тоже нельзя). Если вы об этом - то - извиняюся. Я забыл о существовании еще таких ретро-девайсов. Привык, понимаш, к УСБ-ТТЛ конверторам и виртуальным КОМ-портам. Вот к ним можно запросто. Ничего не путал - отвечаю строго в рамках поставленного вопроса. А вопрос про "вышеозначенный" девайс и только о нем. 1. ТС-у не нужен двунаправленный канал. HC-12 будет избыточным решением. 2. Необходимости сопряжения по вольтам с сериалом ПК (см. выше) никто не отменял. 3. Дополнительная морока с библиотеками и АТ-командами. 4. Не знаю цен, но пара HC-12тых выйдет явно дороже. Типа - реактивный двигатель на телегу. ПС. Как всегда - нечетко поставленный вопрос - приводит к таким же ответам.
примерно такой код для serial нужен? Код (C++): #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); void setup() { Serial.begin(9600); mySwitch.enableReceive(0); pinMode(13, OUTPUT); } void loop() { if (mySwitch.available()) { Serial.print("Received "); Serial.print( mySwitch.getReceivedValue() ); Serial.print(" / "); Serial.print( mySwitch.getReceivedBitlength() ); Serial.print("Bit "); Serial.print(" // "); Serial.print("Protocol: "); Serial.println( mySwitch.getReceivedProtocol() ); digitalWrite(13, HIGH); delay(1); digitalWrite(13, LOW); mySwitch.resetAvailable(); } }
зато оно работает сразу. Разумеется, что для канала в одну сторону логично применить трансмиттер + ресивер, но для ТС это недостижимый уровень, т.к. в готовом виде таких модулей нет. сериал - это последовательная передача данных. Разумеется, речь про UART.
Вроде кто то писал выше что 433 МГц RF можно подключить к сериал. а по коду как раз через сериал сигнал и принимается. или это не то? Просто полученные байты и можно использовать например для управления чего то? может что то не понимаю
в какой строке? - не вижу ничего похожего в коде Сигнал принимается через радио на второй пин, а через Сериал только выводятся сообщения на Монитор. То есть я хочу сказать, что Сериал тут вовсе не нужен для радиообмена, его можно полностью удалить из кода и результаты выводить, например, на ОЛЕД дисплей
Радиомодули не требуют настроек. В случае сериал связи они "прозрачны" для обмена как обычное кабельное соединение. Но это не кабель. Вы можете получить сообщение направленное не вам. Поэтому требуется принять меры для "фильтрации". В библиотеках как раз и бывают скрыты такие технологические тонкости, избавляющие вас от заморочек.
млин, Ариадна. ну кончайте уже чушь нести. Модули из первого поста не предназначены для "прозрачного обмена через Сериал", ардуина с ними работает на низком уровне - пачки высоких и низких уровней. Чтобы пустить по этим модулям Сериал - нужно сначала написать свою библиотеку. по обьему кода сопоставимую с СофтСериалом
Вся цифровая электроника работает на "пачках высоких и низких уровней". Абсолютно вся. Не надо писАть библиотеку. СофтСериал - наше всё. Другое дело что дальнобойность этих модульков кончается на паре десятков метров.