alitems.com/g/1e8d114494a243b... - как у меня alitems.com/g/1e8d114494a243b... - модуль с внешней антенной на 1км
Жүктеу.....
Пікірлер: 21
@electronicdesignshow30606 жыл бұрын
очень крутой видос и подача, спасибо
@RADIOSOFT1
6 жыл бұрын
на здоровье
@user-pn4tu1pu2z3 жыл бұрын
Спасибо.
@edgi4 жыл бұрын
каким образом он сконфигурирован с завода? если подключить к нему только питание что будет происходить в нем?
@RADIOSOFT1
4 жыл бұрын
Не смотрел. Кажется он в режиме сна. В документации указаны значения регистров по умолчанию
@user-fd4ub4ic2h7 жыл бұрын
Друзья подскажите, я не понимаю. Хочу переслать бинарный код через нрф (нужно для одной приблуды именно бинарный переслать) но я не пойму эти единицы И нули пересылаются посимвально или сразу порциями... Кто может помочь ссылкой подскажитее) в идеале я должен одной нрф переслать бинарник, другой его получить и послать в ком порт.
@RADIOSOFT1
7 жыл бұрын
либо составить из бинарного кода целый байт, и потом на приемнике его разобрать на биты, либо отправлять байты равные 0 или 1
@pro-design12027 жыл бұрын
классный видео обзор. подскажи, почему не работают прерывания на передатчике, хотя на преемнике сделано так же и все работает прекрасно.
@RADIOSOFT1
7 жыл бұрын
может не выполняется условие прерывания, либо они неправильно настроены, либо они не включены...
@pro-design1202
7 жыл бұрын
/* Данный скетч делает следующее: передатчик (TX) отправляет массив данных, который генерируется согласно показаниям с кнопки и с двух потенциомтеров. Приёмник (RX) получает массив, и записывает данные на реле, сервомашинку и генерирует ШИМ сигнал на транзистор. by AlexGyver 2016 */ #include #include "nRF24L01.h" #include "RF24.h" #include RF24 radio(7, 8); // "создать" модуль на пинах 9 и 10 Для Уно //RF24 radio(9,53); // для Меги boolean led_green = 6; boolean led_red = 5; volatile boolean flag_tx, flag_fail, flag_rx; byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб byte receiver_input_channel_1 = 0; // кнопка на 3 цифровом byte receiver_input_channel_2 = 1; // потенциометр на 0 аналоговом byte receiver_input_channel_3 = 2; // движковый потенциометр на 1 аналоговом пине byte receiver_input_channel_4 = 3; byte transmit_data[4]; // массив, хранящий передаваемые данные byte latest_data[4]; // массив, хранящий последние переданные данные boolean flag; // флажок отправки данных void setup() { attachInterrupt(0, check_radio, FALLING); Serial.begin(9600); //открываем порт для связи с ПК pinMode(led_red, OUTPUT); pinMode(led_green, OUTPUT); radio.begin(); //активировать модуль delay(2); radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток) //radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал radio.setPayloadSize(32); //размер пакета, в байтах radio.maskIRQ(1,1,0); radio.openWritingPipe(address[0]); //мы - труба 0, открываем канал для передачи данных radio.setChannel(0x60); //выбираем канал (в котором нет шумов!) radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS //должна быть одинакова на приёмнике и передатчике! //при самой низкой скорости имеем самую высокую чувствительность и дальность!! radio.powerUp(); //начать работу radio.stopListening(); //не слушаем радиоэфир, мы передатчик } void check_radio(){ // обработчик прерывания boolean tx, fail, rx; radio.whatHappened(tx,fail,rx); // читаем регистр flag_tx = tx; // 1 если успешно отправили данные flag_fail = fail; // 1 если данные не отправленны //flag_rx = rx; // 1 если пришли данные для чтения } void loop() { transmit_data[0] = map(analogRead(receiver_input_channel_1), 0, 1023, 0, 255); transmit_data[1] = map(analogRead(receiver_input_channel_2), 0, 1023, 0, 255); // получить значение transmit_data[2] = map(analogRead(receiver_input_channel_3), 0, 1023, 0, 255); transmit_data[3] = map(analogRead(receiver_input_channel_4), 0, 1023, 0, 255); for (int i = 0; i if (transmit_data[i] != latest_data[i]) { // если есть изменения в transmit_data flag = 1; // поднять флаг отправки по радио latest_data[i] = transmit_data[i]; // запомнить последнее изменение } } if (flag == 1) { radio.powerUp(); // включить передатчик radio.write(&transmit_data, sizeof(transmit_data)); // отправить по радио delay(150); Serial.print(" TX:"); Serial.print(flag_tx); Serial.print(" FAIL:"); Serial.println(flag_fail); flag = 0; //опустить флаг // radio.powerDown(); // выключить передатчик } if (flag_fail == 1){ // если данные не отправленны digitalWrite(5, HIGH); flag_fail = 0; } if (flag_tx == 1){ // если данные не отправленны digitalWrite(6, HIGH); flag_tx = 0; } }
@pro-design1202
7 жыл бұрын
это передатчик а на приемнике те же настройки и прерывания работают
@user-ms7oe3sz1u7 жыл бұрын
Не интюресно... Очень даже как интересно! Если переводил так расскажи полностью! ОК?
@user-ms7oe3sz1u
7 жыл бұрын
Я за даташет
@RADIOSOFT1
7 жыл бұрын
так основное вроде бы рассказал.
@Abram8936 жыл бұрын
заявленная и реальная это разные вещи
@RADIOSOFT1
6 жыл бұрын
о чем речь? удалось установить связь на расстоянии 1600м
@DenisUsvh5 жыл бұрын
Уже представил как препод по математике объясняет школьникам: - Ну константа,я не помню... - Ну число Пи равно 3,14 или 31,4 потом посмотрю... - Уравнение дискриминант бла,бла,бла.. Как минимум хотя бы сценарий напишите для видео.
@RADIOSOFT1
5 жыл бұрын
угу
@MrMegalloid7 жыл бұрын
Только одно замечание: научитесь правильно читать английские слова. Очень отталкивает неправильное произношение.
@dasramm8513
6 жыл бұрын
ну так иди к Гуманитариям. Технари не обязаны читать на литературном
@user-sc8ye9qj5e
6 жыл бұрын
Технари, как и пилоты, обязаны знать технический английский. Иначе они не технари, а обычные российские полуграмотные егэшники, которых сейчас дохуя и больше. "Мы_ни_на_экзамине". Как будто вы на экзамене в состоянии по-другому, ага... ) А более-менее знать английский - сегодня вообще норма для культурного человека. Но тебе не понять. Технарь... ))
Пікірлер: 21
очень крутой видос и подача, спасибо
@RADIOSOFT1
6 жыл бұрын
на здоровье
Спасибо.
каким образом он сконфигурирован с завода? если подключить к нему только питание что будет происходить в нем?
@RADIOSOFT1
4 жыл бұрын
Не смотрел. Кажется он в режиме сна. В документации указаны значения регистров по умолчанию
Друзья подскажите, я не понимаю. Хочу переслать бинарный код через нрф (нужно для одной приблуды именно бинарный переслать) но я не пойму эти единицы И нули пересылаются посимвально или сразу порциями... Кто может помочь ссылкой подскажитее) в идеале я должен одной нрф переслать бинарник, другой его получить и послать в ком порт.
@RADIOSOFT1
7 жыл бұрын
либо составить из бинарного кода целый байт, и потом на приемнике его разобрать на биты, либо отправлять байты равные 0 или 1
классный видео обзор. подскажи, почему не работают прерывания на передатчике, хотя на преемнике сделано так же и все работает прекрасно.
@RADIOSOFT1
7 жыл бұрын
может не выполняется условие прерывания, либо они неправильно настроены, либо они не включены...
@pro-design1202
7 жыл бұрын
/* Данный скетч делает следующее: передатчик (TX) отправляет массив данных, который генерируется согласно показаниям с кнопки и с двух потенциомтеров. Приёмник (RX) получает массив, и записывает данные на реле, сервомашинку и генерирует ШИМ сигнал на транзистор. by AlexGyver 2016 */ #include #include "nRF24L01.h" #include "RF24.h" #include RF24 radio(7, 8); // "создать" модуль на пинах 9 и 10 Для Уно //RF24 radio(9,53); // для Меги boolean led_green = 6; boolean led_red = 5; volatile boolean flag_tx, flag_fail, flag_rx; byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб byte receiver_input_channel_1 = 0; // кнопка на 3 цифровом byte receiver_input_channel_2 = 1; // потенциометр на 0 аналоговом byte receiver_input_channel_3 = 2; // движковый потенциометр на 1 аналоговом пине byte receiver_input_channel_4 = 3; byte transmit_data[4]; // массив, хранящий передаваемые данные byte latest_data[4]; // массив, хранящий последние переданные данные boolean flag; // флажок отправки данных void setup() { attachInterrupt(0, check_radio, FALLING); Serial.begin(9600); //открываем порт для связи с ПК pinMode(led_red, OUTPUT); pinMode(led_green, OUTPUT); radio.begin(); //активировать модуль delay(2); radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток) //radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал radio.setPayloadSize(32); //размер пакета, в байтах radio.maskIRQ(1,1,0); radio.openWritingPipe(address[0]); //мы - труба 0, открываем канал для передачи данных radio.setChannel(0x60); //выбираем канал (в котором нет шумов!) radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS //должна быть одинакова на приёмнике и передатчике! //при самой низкой скорости имеем самую высокую чувствительность и дальность!! radio.powerUp(); //начать работу radio.stopListening(); //не слушаем радиоэфир, мы передатчик } void check_radio(){ // обработчик прерывания boolean tx, fail, rx; radio.whatHappened(tx,fail,rx); // читаем регистр flag_tx = tx; // 1 если успешно отправили данные flag_fail = fail; // 1 если данные не отправленны //flag_rx = rx; // 1 если пришли данные для чтения } void loop() { transmit_data[0] = map(analogRead(receiver_input_channel_1), 0, 1023, 0, 255); transmit_data[1] = map(analogRead(receiver_input_channel_2), 0, 1023, 0, 255); // получить значение transmit_data[2] = map(analogRead(receiver_input_channel_3), 0, 1023, 0, 255); transmit_data[3] = map(analogRead(receiver_input_channel_4), 0, 1023, 0, 255); for (int i = 0; i if (transmit_data[i] != latest_data[i]) { // если есть изменения в transmit_data flag = 1; // поднять флаг отправки по радио latest_data[i] = transmit_data[i]; // запомнить последнее изменение } } if (flag == 1) { radio.powerUp(); // включить передатчик radio.write(&transmit_data, sizeof(transmit_data)); // отправить по радио delay(150); Serial.print(" TX:"); Serial.print(flag_tx); Serial.print(" FAIL:"); Serial.println(flag_fail); flag = 0; //опустить флаг // radio.powerDown(); // выключить передатчик } if (flag_fail == 1){ // если данные не отправленны digitalWrite(5, HIGH); flag_fail = 0; } if (flag_tx == 1){ // если данные не отправленны digitalWrite(6, HIGH); flag_tx = 0; } }
@pro-design1202
7 жыл бұрын
это передатчик а на приемнике те же настройки и прерывания работают
Не интюресно... Очень даже как интересно! Если переводил так расскажи полностью! ОК?
@user-ms7oe3sz1u
7 жыл бұрын
Я за даташет
@RADIOSOFT1
7 жыл бұрын
так основное вроде бы рассказал.
заявленная и реальная это разные вещи
@RADIOSOFT1
6 жыл бұрын
о чем речь? удалось установить связь на расстоянии 1600м
Уже представил как препод по математике объясняет школьникам: - Ну константа,я не помню... - Ну число Пи равно 3,14 или 31,4 потом посмотрю... - Уравнение дискриминант бла,бла,бла.. Как минимум хотя бы сценарий напишите для видео.
@RADIOSOFT1
5 жыл бұрын
угу
Только одно замечание: научитесь правильно читать английские слова. Очень отталкивает неправильное произношение.
@dasramm8513
6 жыл бұрын
ну так иди к Гуманитариям. Технари не обязаны читать на литературном
@user-sc8ye9qj5e
6 жыл бұрын
Технари, как и пилоты, обязаны знать технический английский. Иначе они не технари, а обычные российские полуграмотные егэшники, которых сейчас дохуя и больше. "Мы_ни_на_экзамине". Как будто вы на экзамене в состоянии по-другому, ага... ) А более-менее знать английский - сегодня вообще норма для культурного человека. Но тебе не понять. Технарь... ))