Я делал следующим образом: есть програмка в ардуину, она прослушивает все каналы и выдает на порт результат в виде заполнения каналов, когда ставишь тел в режим точка доступа вифи сразу 5-6 каналов забиваются
Я тоже делаю лодку, уже склеил, сделал управление и т.п.
Теперь разбераюсь с электроникой, есть два модуля NRF24L01, один без усилителя (обычный) на UNO, а второй с усилителем и антенной на Нано, питание через переходники, стабилизаторы...
Вот серва работает, а бессколекторный мотор через пень колоду...
Залил вот такие скетчи:
Это приемник:
// Необходимо установить библиотеку для радиомодуля nRF24
#include <Servo.h>
#include <SPI.h>
#include "RF24.h"
Servo servo1;
Servo servo2;
RF24 radio(9,10);
const uint64_t pipe = 0xF0F0F0F000LL;
int msg[1];
int data;
int pos;
int fspeed; // forward speed
int bspeed; // backward speed
void setup()
{
servo1.attach(3);
servo2.attach(5);
delay(50);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}
void loop()
{
if (radio.available())radio.read(msg, 1);
if (msg[0] <127 && msg[0] >-1)data = msg[0], pos = map(data, 0, 126, 0, 180),servo1.write(pos);
if (msg[0] <=255 && msg[0] >=128)data = msg[0], pos = map(data, 129, 254, 147, 7),servo2.write(pos);
}
Пожалуй начну радиомодуля nRF24L01. Ему минимум нужно 5 пинов плюс питание. Питание только 3.3В. Из этих 5 пинов 3 это SPI, на обычной ардуине это пины которые не поменять, так сделано в самом микроконтроллере
там где подписано цифрами нужно подключать только так на ардуино уно, нано, мини. а вот SCN и CE можно выбирать, и как раз они указаны в инициализации
RF24 radio(9,10); // для библиотеки NRF
или
wireless.setPins(9,10); // для библиотеки для пульта от квардрокоптера
еще необходимо напаять конденсатор по питанию прямо на модуль между пинами 3.3В и GND. я обычно паяю 10мкф керамику
далее будут даваться примеры и объяснятся для библиотек:
RF24 для связи между двумя nRF24L01. Разговор будет идти только об этой либе по моей ссылке, если у Вас уже есть либа с таким названием, можете переместить ее в другую папку, удалить, как хотите
V202 для связи nRF24L01 и пульта от квадрокоптера. пульт по ссылке у меня работает, если у Вас какой то другой пульт я вам помочь не смогу, можете переделать пульт
В библиотеке RF24 есть несколько примеров:
nRF24L01_status нужен для проверки отдельного радиомодуля
nRF24L01_scanner для поиска свободного канала если связь будет например в жилом доме
nRF24L01_RX_test и nRF24L01_TX_test для организации связи между 2 ардуинами
Начнем:
Пункт 1. проверяем радиомодуль, правильность подключения и что модуль не дохлый
- загружаем пример nRF24L01_status. подключаем по картинке. пины CE и SCN можно оставить как в примере 9 и 10
RF24 radio(9,10);
в терминале (скорость 57600) если получите следующее значит все подключено правильно:
проверить подключение, пины в инициализации поменять местами, должно заработать. Порядок 9,10 или 10,9 запомнить/записать чтобы каждый раз не проверять
Пункт 2. Не совсем обязательный, просто загрузить пример nRF24L01_scanner и посмотреть свободные каналы
Если нужна связь между 2 ардуинами (например самодельный пульт) использовать примеры nRF24L01_RX_test и nRF24L01_TX_test. один загрузить в приемник, другой в передатчик. В примере двухсторонней связи нет!
привет vlad123419 спасибо. подкорректируй код. пожалуйста не пиши в одну строку, трудно же понять как работают условия. а то подскажу, а окажется неправильно понял код
и кстати заранее проверил esc? среднее положение, задний ход и передний нужные углы
LYNX SE8117T33 подойдет. насчет вопроса в 635 посте. у тебя мотор не управляется как у меня, а как сервой. но серва должна работать. проверял? и на пульте слева сверху с торца есть снопка установки максимальных значений управления. выстави на 100%. кстати чтобы пульт начал работать нужно стикером газа один раз вверх вниз и на экране появится значок передачи данных
AndreyS vlad123419 если код большой прошу сворачивать его
Смотри...
Для сервы подходят те углы, которые указаны изначально, стоит серва ровно, углы там ок...
Первая строка в коде передатчика это Esc, вторая это серва, но говорю, что с сервой проблем нет ни с углами ни с чем...
Проблема с ESC, там надо подобрать к нему цифры....
Поправь если можно, спасибо!
Вот я передаю с передатчика через map, например 0, 1023, 0, 180. Это я преобразовал, приёмник словил, и дальше там идёт, ещё какое то преобразование через map, вот этого я недопонимаю!
Кстати, подскажи, есть NRF24L01 с антенной, подключаю через переходник на AMS1117, 3,3, или как он там, не суть...
Подключаю и микросхема усилителя на модуле начинается греться, причём сигнал ( пакеты) уходят...
Видно, что там ножки микросхемы плохо разведены, будто там некоторые ножки замкнуты...
Они такие маленькие, что их и не поправить...
Это критично, уже заказал новый модуль?
так там не твой код? просто в приемнике фигня написана. оставь все преобразование в передатчике, мой код короче, а в приемнике все что принято сразу на серву и мотор, без преобразований, там уже преобразованные значения
Аааа, понял, надо сначала без радиомодуля попробовать с одной Ардуино, а потом уже зная значения map, и цифры, уже организовать связь через радиомодуль, так?
Код для бк двигателя (ESC) такой подходит
#include <Servo.h>
Servo motor_teft;
Servo motor_right;
int mot_pin_left = 7; //Подключаем левый мотор к пину 7
int mot_pin_right = 8; //Подключаем правый мотор к пину 8
int js_position = 1500; //Начальная позиция, всегда 1.5 мс для регуляторов бесколлекторных двигателей
int max_position = 2300; //Максимальное значение ШИМ 2.3 мс
int min_position = 800; //Минимальное значени ШИМ 0.8 мс
int start = 1; //Флаг задержки запуска
void setup()
{
motor_teft.attach(mot_pin_left, js_position, max_position); //Инициальзация левого мотора (порт, начальная позиция, максимальная позиция) !!!
motor_right.attach(mot_pin_right, js_position, max_position); //Инициальзация правого мотора (порт, начальная позиция, максимальная позиция) !!!
}
void loop()
{
//Начальная установка регуляторов в нулевое положение
if(start == 1) {
motor_teft.write(js_position);
motor_right.write(js_position);
delay(700);
start = 0;
}
js_position = analogRead(A0); //Считывание положения потенциометра
js_position = map(js_position, 0, 1023, 75, 140); //Преобразование положения потенциометра в угол поворота
motor_left.write(js_position); //Записываем положение и отправляем на регулятор левого мотора
motor_right.write(js_position); //Записываем положение и отправляем на регулятор правого мотора
delay(20); //Задержка цикла 20 мс
}
#include <Servo.h>
Servo motor_left;
Servo motor_richt;
int val; // variable to read the value from the analog pin
void setup(){
motor_left.attach(7);
motor_richt.attach(8);
}
void loop(){
val = map(analogRead(A0), 0, 1023, 0, 180);
motor_left.write(val);
motor_richt.write(val);
delay(15);
}
ты бесколлекторными моторами хоть раз управлял? игрушка или еще что то?
Вот код который я скидывал для мотора, он до этого работал, сейчас заливаю, ESC разблокируется и мотор не крутиться, даже не дергается, просто стоит...
Я подключаю аккум к регулятору, он молчит, сдвигаю джойстик примерно на половину, он пропищал, разблокировался, и на этом всё закончилось...
Стоит и молчит, кстати код в инете нашел и у меня один мотор...
Код поправил пою один мотор, стал код таким :
#include <Servo.h>
Servo motor_left;
int val; // variable to read the value from the analog pin
void setup(){
motor_left.attach(3);
}
void loop(){
val = map(analogRead(A1), 0, 1023, 0, 180);
motor_left.write(val);
}
если есть что дополнить измени предыдущее сообщение. просьба
бк мотор должен пищать при включении, сначала мин. газ, пики, далее макс. газ, пики, снова минимум, пики, потом медленно прибавляй и должны включится моторы
видео сними и кинь сюда ссылку. проверь подключение. ссылку на мотор, драйвер и аккумулятор. фото как собрал
параллельно мотору подключи к тому же пину серву. она должна работать
#include <Servo.h>
Servo motor_left;
int val; // variable to read the value from the analog pin
void setup(){
motor_left.attach(3);
}
void loop(){
val = map(analogRead(A1), 0, 1023, 0, 180);
if(val<90) val=90;
motor_left.write(val);
}
vlad123419 да программно измени диапазон, делов то, к тому же я давал как
AndreyS я использую такой зарядник, правда попроще похоже, вентилятора у моего нет, хорошая вещь. использую зарядник от ноута. но напряжение выше допустимого, засунул внутрь импульсный стабилизатор. можно найти нужный резистор и поменять номинал чтобы перестроить выход на 17В например
Все отключил, оставил толкьо модуль. Что то реакции ноль.
Возник вопрос, а как вообще определить что модуль работает если он 1?
Ну ты предыдущий пост мой почитай, там написано название скетча из примеров библиотеки нрф24 для проверки.
У тебя наверно в библиотеке щел пример, можешь скинуть?
Я делал следующим образом: есть програмка в ардуину, она прослушивает все каналы и выдает на порт результат в виде заполнения каналов, когда ставишь тел в режим точка доступа вифи сразу 5-6 каналов забиваются
Она для меги и уно, я использовал на нано, схему подключения приводил выше.
примеры есть в библиотеке если ты библеотеку скачал! примеры можно найти так: Файл - Примеры - RF24 - "название примера на выбор"
Кинь библиотеку, а то с гитхаба устанавливаться не хочет
SE8117T33 в качестве стабилизатора с 7.4В на 3.3В пойдет, подскажите?
Привет!
Я тоже делаю лодку, уже склеил, сделал управление и т.п.
Теперь разбераюсь с электроникой, есть два модуля NRF24L01, один без усилителя (обычный) на UNO, а второй с усилителем и антенной на Нано, питание через переходники, стабилизаторы...
Вот серва работает, а бессколекторный мотор через пень колоду...
Залил вот такие скетчи:
Это приемник:
Это передатчик:
Мне кажется что с модулями проблем нет, вот там что то напутано с функцией map, это я так думаю, а там кто знает?
Прошу указать мне на мои ошибки, заранее спасибо!
я только приехал. 19 часов на машине. сейчас не в состоянии. завтра. пью коньяк))
Отлично. С возвращением. Мы тебя все ждем
Привет, с возвращением!!!
Это все понятно, всё работает и нули не выдает, два модуля конектят...
Но вот только помоги с кодом , точнее с ESC, ни как не могу добиться его четкой работы...
Вот серва работает как часы , а ESC работает но не совсем четко...
Помоги мне пожалуйста с кодом , точнее с функцией map
Код подправил:
Это передатчик:
Это приемник:
Кстати, вот сылка на форум, там все подробно человек расписывает
http://forum.amperka.ru/threads/nrf24l01-%D0%BF%D0%BE%D0%B1%D0%B5%D0%B6%...
Пожалуй начну радиомодуля nRF24L01. Ему минимум нужно 5 пинов плюс питание. Питание только 3.3В. Из этих 5 пинов 3 это SPI, на обычной ардуине это пины которые не поменять, так сделано в самом микроконтроллере
там где подписано цифрами нужно подключать только так на ардуино уно, нано, мини. а вот SCN и CE можно выбирать, и как раз они указаны в инициализации
еще необходимо напаять конденсатор по питанию прямо на модуль между пинами 3.3В и GND. я обычно паяю 10мкф керамику
далее будут даваться примеры и объяснятся для библиотек:
RF24 для связи между двумя nRF24L01. Разговор будет идти только об этой либе по моей ссылке, если у Вас уже есть либа с таким названием, можете переместить ее в другую папку, удалить, как хотите
V202 для связи nRF24L01 и пульта от квадрокоптера. пульт по ссылке у меня работает, если у Вас какой то другой пульт я вам помочь не смогу, можете переделать пульт
В библиотеке RF24 есть несколько примеров:
Начнем:
Пункт 1. проверяем радиомодуль, правильность подключения и что модуль не дохлый
- загружаем пример nRF24L01_status. подключаем по картинке. пины CE и SCN можно оставить как в примере 9 и 10
в терминале (скорость 57600) если получите следующее значит все подключено правильно:
если получили:
проверить подключение, пины в инициализации поменять местами, должно заработать. Порядок 9,10 или 10,9 запомнить/записать чтобы каждый раз не проверять
Пункт 2. Не совсем обязательный, просто загрузить пример nRF24L01_scanner и посмотреть свободные каналы
Если нужна связь между 2 ардуинами (например самодельный пульт) использовать примеры nRF24L01_RX_test и nRF24L01_TX_test. один загрузить в приемник, другой в передатчик. В примере двухсторонней связи нет!
привет vlad123419 спасибо. подкорректируй код. пожалуйста не пиши в одну строку, трудно же понять как работают условия. а то подскажу, а окажется неправильно понял код
и кстати заранее проверил esc? среднее положение, задний ход и передний нужные углы
LYNX SE8117T33 подойдет. насчет вопроса в 635 посте. у тебя мотор не управляется как у меня, а как сервой. но серва должна работать. проверял? и на пульте слева сверху с торца есть снопка установки максимальных значений управления. выстави на 100%. кстати чтобы пульт начал работать нужно стикером газа один раз вверх вниз и на экране появится значок передачи данных
AndreyS vlad123419 если код большой прошу сворачивать его
Да, ESC проверил, полностью исправен, проверял без NRF, просто подключил к ардуино, работает без нареканий...
ESC кстати от самолетов, у него нет заднего хода, только передний....
Код какой показывал, не можешь разъяснить про map, это функция преобразует, но как то непонятно мне в скетче, объясни пожалуйста...
Про NRF24L01 всё более или менее понятно
Это передатчик:
Это приемник
из кода непонятно какие углы нужны для сервы, да и воообще где серва, а где мотор. поправил для передатчика
Смотри...
Для сервы подходят те углы, которые указаны изначально, стоит серва ровно, углы там ок...
Первая строка в коде передатчика это Esc, вторая это серва, но говорю, что с сервой проблем нет ни с углами ни с чем...
Проблема с ESC, там надо подобрать к нему цифры....
Поправь если можно, спасибо!
Вот я передаю с передатчика через map, например 0, 1023, 0, 180. Это я преобразовал, приёмник словил, и дальше там идёт, ещё какое то преобразование через map, вот этого я недопонимаю!
Кстати, подскажи, есть NRF24L01 с антенной, подключаю через переходник на AMS1117, 3,3, или как он там, не суть...
Подключаю и микросхема усилителя на модуле начинается греться, причём сигнал ( пакеты) уходят...
Видно, что там ножки микросхемы плохо разведены, будто там некоторые ножки замкнуты...
Они такие маленькие, что их и не поправить...
Это критично, уже заказал новый модуль?
Спасибо за поправленный код передатчика!
так там не твой код? просто в приемнике фигня написана. оставь все преобразование в передатчике, мой код короче, а в приемнике все что принято сразу на серву и мотор, без преобразований, там уже преобразованные значения
Да, как бы основа кода не моя, но там много моих исправлений, сначала код вообще голый был...
Да, согласен с тобой про преобразование в передатчике, попробую, покажу что получится!
А если ESC сделать не как серву а как ... лампочку?
ну не 180 как серва , а до 255?
Переделал приемник :
пробуй, но ничего не получится. попробуй так. но это самый минимум. еще бы защиту при пропадании связи добавить
А что это защита будет делать?
останавливать катер если пропадет связь
А доставать его как?))
Попробывал залить коды, которые ты скинул, не знаю почему, но система бредит...
И серва перестала себя нормально вести...
Возвожно из за радиомодуля, т.к. он греется...
А так вроде бы код нормальный, спасибо тебе, до завтра!
Серва поддёргивается, такое ощущение, что перемыкаются каналы сервы и мотора...
Как это убрать, не знаю...
Я так и грешу на неисправность NRF24L01, заказал уже новую, должа придти, но не факт , что будет работать...
то есть ты сразу моторами и сервой хочешь управлять? даже в терминал не отправляешь данные для проверки?
радиомодуль греться не должен
В терминал это надо SerialBegin?
Ну а как я буду по отдельности управлять? Вот я давлю на газ, и одновременно поворачиваю...
Да, модуль заказал, должен придти недели через 3
да оно самое. тебе надо сначала с основами разобраться. пройди уроки джереми блюма. на ютубе найдешь
я имел в виду ты не знаешь что нужно на серву и мотор подать сразу подаешь с радиомодуля
ты же не ешь все подряд таблетки когда у тебя живот болит, сначала нужно разобраться почему
Да, Блюма видел и частично смотрел, не понял про серва и мотор, что сразу нужно подавать, разъясни, пожалуйста!
Аааа, понял, надо сначала без радиомодуля попробовать с одной Ардуино, а потом уже зная значения map, и цифры, уже организовать связь через радиомодуль, так?
да))
должно быть все проще. проверяй
ты бесколлекторными моторами хоть раз управлял? игрушка или еще что то?
Нет, не управлял)
Какая игрушка?
Вот код который я скидывал для мотора, он до этого работал, сейчас заливаю, ESC разблокируется и мотор не крутиться, даже не дергается, просто стоит...
Я подключаю аккум к регулятору, он молчит, сдвигаю джойстик примерно на половину, он пропищал, разблокировался, и на этом всё закончилось...
Стоит и молчит, кстати код в инете нашел и у меня один мотор...
Код поправил пою один мотор, стал код таким :
И с твоим кодом также , что может быть?
Спасибо за помощь!
если есть что дополнить измени предыдущее сообщение. просьба
бк мотор должен пищать при включении, сначала мин. газ, пики, далее макс. газ, пики, снова минимум, пики, потом медленно прибавляй и должны включится моторы
Исправил, посмотри!
Подскажи, вот в джойстике как бы два потенциомера, да?
Если так, то как сделать, чтобы середина джойскика была 0 , а верхнее положение 180?
Через map, какие цифры должны быть?
видео сними и кинь сюда ссылку. проверь подключение. ссылку на мотор, драйвер и аккумулятор. фото как собрал
параллельно мотору подключи к тому же пину серву. она должна работать
Ура!!!! Все заработало!!!!
Серво подкюлчал всё работало!!!
https://www.youtube.com/watch?v=3jQjWgGIxrA&feature=youtu.be
значит контакта где то не было. теперь тоже самое плюс серва от отдельного резистора. далее тоже самое, только по радиоканалу и все)
Видео видел?
От какого резистора??? В код её сделать?
видел видео. у тебя же 2 резистора вроде будет
Какие резисторы?
Они сопротевние образуют, куда их ставить???
переменные резисторы)) управление газом и поворотом. может тебе передохнуть
Ааа, понятно, ну да , два, джойстика два , в каждом джойстике по два резистора...
Я использую по одному, в газе ось Y, в управлении рулем X
а как там в джойстиках получается , например по оси Y, на себя это 0, а от себя до упора это 1023?
Если да, то как мне сделать чтобы середина была 0?
Кто-нибудь использовал такие зарядники:
1.http://ru.aliexpress.com/item/Genuine-SKYRC-iMAX-B6-Mini-60W-Professional-Balance-Charger-Discharger-For-RC-Battery-Charging-Re-peak/32655009726.html?spm=2114.14010208.99999999.261.8VaLby
2.http://ru.aliexpress.com/item/Wholesale-SKYRC-iMAX-B6AC-V2-6A-Balance-Charger-LCD-Display-Discharger-For-RC-Model-Battery/32654989388.html?spm=2114.14010208.99999999.264.8VaLby
Я так понимаю, что они одинаковые, только один от 220в, а другому нужен блок питания?
vlad123419 да программно измени диапазон, делов то, к тому же я давал как
AndreyS я использую такой зарядник, правда попроще похоже, вентилятора у моего нет, хорошая вещь. использую зарядник от ноута. но напряжение выше допустимого, засунул внутрь импульсный стабилизатор. можно найти нужный резистор и поменять номинал чтобы перестроить выход на 17В например