Ви не увійшли.
Сторінки 1
Здесь распиновка Вашего модуля, может поможет. https://ru.banggood.com/Ublox-NEO-6M-GPS-HMC5883L-ARDUPILOT-Compass-Module-FPV-images-p928633-q24838.html
TX118SA-4-передатчик и RX-480 - приемник, 4 канала ,дальность до 100м (реально в районе 50м).Если не жалко денег то посмотрите:https://aliexpress.ru/item/32959615641.html?
Моя почта mitonn@i.ua,сбрось свой вайбер,мобильный или почту
Что конкретно по подключению?
Каждый сервопривод имеет три провода коричневый (черный) -это минусовой (земля), средний провод - красный - это +5 вольт, желтый( оранжевый или белый) это провод управления. Соответственно на плате которую я показывал раньше и подключаем- коричневый к -, красный к +, а желтый в зависимости что серва должна делать. Руль - плавное управление вправо- влево, сброс бункера - при нажатии на кнопку - поворот на макс и при отпускании кнопки- возврат. Для подключения мотора (бесколлекторного) необходим регулятор (драйвер, блок управления ) скорости. Регулятор имеет 8 выводов. Три на разъеме, подключаются аналогично серве, но на выводы мотор. Три синих подключаются к двигателю и на два оставшихся подается питание 12 вольт (красный + и черный -).
Всем привет! Хочу доработать данное р/управление. Суть вопроса заключается в том, что под воздействием ветра, волны, лески от завозимой снасти - кораблик отклоняется от траектории и приходится все время подруливать. На дальности до 50-100 м нет проблем, а на 200-250 м это уже сложнее, а ночью даже проблематично. Второй вопрос - возврат. Самое простое - установка автопилота! но при стоимости моего кораблика 60-70$ ставить телеметрию за 200-400$??? Хочу решить вопрос установкой акселерометра и гироскопа
MPU-6050 или магнитометр HMC5983. Никогда не работал с такими датчиками, если у кого есть опыт работы с ними и желание поделиться знаниями то буду рад. Другие решения?
Похожую проблему, но на радиоуправлении решил с помощью функции "millis",которая при пропадании сигнала больше чем на 500 миллисекунд исполняет команду "motor.write(0)" ,а при появлении сигнала с передатчика продолжает исполнять его команды.Смотри
Форум» Аппаратные вопросы» Радиоуправление на NRF24L01.
Максимальное расстояние на котором управляли - это 300-350 м, на большем не было необходимости да и видно кораблик на таком расстоянии уже плохо.
Буду очень блогодарен еслиВы вышлите мне скетчи и схему на мой почтовый ящик а то неполучается перевести их из формата txt в формат ino.
Скетчи сбросил.Схем у меня нет,только отдельные зарисовки.Если нужно, то нарисую но не сейчас.
Выкладываю схему приемника (прошу прощения за каракули).Позволяет управлять нагрузкой двигателя и 3 сервопривода.Драйвер двигателя не показан, только управление.Питание NRF24L01 через AMS 1117 3.3в , питание сервоприводов через стабилизатор L7805.Дополнительно на плате сделана мигалка для светодиодов (поочередное мигание), все диоды 3 вольта.
Может и лучше, но данный аккумулятор придает кораблику устойчивости и еще один плюс, практически на севшем (9,8-10,2 В) можно двигаться на малых оборотах.
Выкладываю схему передатчика плюс рисунок печатной платы.На печатной плате на перспектиу заложена возможность подключения еще двух кнопок или тумблеров.Печатная плата сделана в проге Sprint-Layout 5.Если нужно выложу в оригинале Приемник выложу после выходных,нет вретени сейчас.
Есть видио испытания весной первого, но оно сюда не влезает.
https://drive.google.com/file/d/1ujg8juypF1U0LPtVHz8khQW-WfOcaQaX/view?usp=sharing
Предыдущие были сделаны еще зимой. Сегодня вот корабль и пульт:
привет.если можно дай схему подключения и по возможности фото корабля. очень интересно глянуть.
К сожалению схем у меня нет, есть отдельные зарисовки. Завтра сделаю что-то приличное тогда выложу.
По фото кораблика .Зимой я начал изготавливать 3 кораблика, два из них я сделал и они у друзей, а свой еще доделываю.Сделал несколько фото (не судите строго).
Начало:
Мотор коллекторный 540 класса имея 55 витков развивает на холостых до 16500 об/мин, прожерливый (максимальный ток до 28A). Для вашего кораблика его должно хватать. Винт желательно увеличить до 38 мм в диаметре.
Бесколлекторные двигатели имеют возможность вращения в обе стороны, но поскольку для управления используется специальный регулятор (драйвер,блок названий много) ,а недорогие обеспечивают вращение в одну сторону. Для вращения в противоположную нужно поменять местами два провода. Для катера задний ход можно обеспечить установкой 2-х канального модуля реле 5В 10А .
Источник https://arduino.ua/prod201-2-h-kanalnii-modyl-rele-5v-10a-s-optorazvyazkoi
Для меня задний ход не критичен, но мысли есть. Или купить более дорогой с реверсом. Читал о том что можно "научить" реверсу и простой регулятор, но сам не пробовал.
Винты можно посмотреть:https://hobbymania.com.ua/ru/catalog_boat.php?
quote=алекс81]у меня кораблик весом 3.5 кг. мотор коллекторный 540 7.6 вольт. винт 30мм. ну очень медленный где то 4км в час.какой винт нужно поставить . если есть идеи скинь сылку.
Мотор 540 класса достаточно мощный для такого кораблика, но нужно еще знать количество оборотов двигателя, а оно зависит от количества витков.
У меня кораблик (то-же тихоходный, но быстрее около 8-10 км/ч) весом с полной нагрузкой 5-5,5 кг. Двигатель я поставил бесколлекторный A2212/15T-930kv, при 12В дает около 11000 об/мин. Винт посадка 3мм диаметр 35мм.
Скетч для передатчика. Позволяет управлять 1 бесколлекторным двигателем и тремя сервоприводами. 1 серво плавно с потенциометра от 0 -180 и два с кнопок 0 или поворот на 180. Управление двигателем плавное с потенциометра от 0 до max об/мин. Если есть необходимость могу рассказать о решении в "железе"
#include <SPI.h> // библиотека для работы с шиной SPI
#include "nRF24L01.h" // библиотека радиомодуля
#include "RF24.h" // ещё библиотека радиомодуля
RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
byte transmit_data[4];
int val;
int val2;
const int potPin = 0;
const int potPin2 = 1;
const int buttonPin = 2;
const int buttonPin2 = 3;
void setup() {
Serial.begin(9600); //открываем порт для связи с ПК
pinMode(buttonPin, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(potPin, INPUT);
pinMode(potPin2, INPUT);
radio.begin(); //активировать модуль
radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток)
radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(32); //размер пакета, в байтах
radio.openWritingPipe(address[0]); //мы - труба 0, открываем канал для передачи данных
radio.setChannel(0x71); //выбираем канал (в котором нет шумов!)
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 loop() {
transmit_data[0] = !digitalRead(buttonPin);
val = analogRead(potPin);
val = map(val, 0, 1023, 0, 179);
transmit_data[1] = val;
val2 = analogRead(potPin2);
val2 = map(val2, 0, 1023, 0, 179);
transmit_data[2] = val2;
radio.write(&transmit_data, sizeof(transmit_data));
transmit_data[3] = !digitalRead(buttonPin2);
// Serial.print("Sent: "); Serial.println(counter);
// radio.write(&counter, sizeof(counter));
// counter++;
// delay(10);
}
Arduino Nano имеет 8 аналоговых входов против 6 в Arduino Uno.
В любом случае для питания сервопривода нужно отдельное питание, потому что на ножках Ардуино мы имеем 40 мА, а для питания одного из сравнительно слабых - необходимо 50-80 мА.А Ваш сервомотор MG995 потребляет 200 мА. Ардуино Нано или Ардуино Уно разница только в возможности управлять большим количеством "нагрузки".Ну и в любом случае придется писать небольшую управляющую программку.(Хотя для этого в интернете можно найти всего достаточно).
Наконец решил написать о решении своей проблемы при потере сигнала приемником.Удалось ее решить при помощи функции "millis",которая при пропадании сигнала больше чем на 500 миллисекунд исполняет команду "motor.write(0)" ,а при появлении сигнала с передатчика продолжает исполнять его команды.В живую это решено так:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo motor;
RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги
byte address[][6] = {"1Node","2Node","3Node","4Node","5Node","6Node"}; //возможные номера труб
int servo1_pos = 0;
int timeout = 500;
int lastTime = 0;
byte recieved_data[4];
void setup(){
servo1.attach(2);
servo2.attach(4);
servo3.attach(3);
motor.attach(5);
Serial.begin(9600); //открываем порт для связи с ПК
radio.begin(); //активировать модуль
radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток)
radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(32); //размер пакета, в байтах
radio.openReadingPipe(1, address[0]); //хотим слушать трубу 0
radio.setChannel(0x71); //выбираем канал (в котором нет шумов!)
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.startListening(); //начинаем слушать эфир, мы приёмный модуль
}
// Serial.println(radio.available(&pipeNo));
void loop() {
byte pipeNo;
while (radio.available(&pipeNo)) { // слушаем эфир со всех труб
lastTime = millis();
radio.read( &recieved_data, sizeof(recieved_data) ); // чиатем входящий сигнал
if (recieved_data[0] == 0) {
servo1.write(180);
}
if (recieved_data[0] == 1) {
servo1.write(0);
}
if (recieved_data[3] == 0) {
servo3.write(180);
}
if (recieved_data[3] == 1) {
servo3.write(0);
}
if (recieved_data[1]) {
servo2.write(recieved_data[1]);
} else {
servo2.write(0);
}
motor.write(recieved_data[2]);
}
int dt = millis() - lastTime;
if (dt >= timeout) {
motor.write(0);
}
"Вариант второй. Просто после получения посылки обнуляйте массив и там не будет старых значений )). Но тут вопрос в потери реакции на команды, возможны пропуски."
Этот вариан уже опробован, из-за пропусков двигатель работает с поддергиванием, а по первому возможно. Попробую - отпишусь. Спасибо!
Если выключить передатчик (отошло питание,модель вышла из зоны "видимости" и тд) то на приемнике остаются последние полученные значения. Кораблик продолжит движение пока не сядет аккумулятор ,реально такого еще не случалось, но вероятность есть.
Всем доброго дня!
При изготовлении радиоуправления столкнулся с одной проблемой которую не удается победить в полном объеме. Р/у выполнено на базе arduino nano с использованием NRF24L01. Управляет данное р/у одним бесколлекторным двигателем и тремя сервомашинками.
Двигатель и одна серва управляются плавно с потенциометра (переменный резистор или джойстик), а две сервы с кнопок - 0-180.
Все работает ,но есть один (как для меня) большой недостаток!!! при пропадании сигнала с передатчика, приемник отрабатывает последнее полученное значение.Функции библиотек проблему не решают (или я не умею ими пользоваться правильно). Р/у управляет закормочным корабликом. Кому интересно могу поделиться схемами и реализацией в "железо". Буду рад если кто подскажет что поменять в скетче.Буду рад всем кто примет участие в обсуждении.
Ок! У меня были проблемы с подключением NRF т.к. производитель обозначил распиновку в зеркальном положении))).
Вашему NRF24L01+PA+LNA с внешними SMA антеннами не хватает питания. Подайте на вход AMS1117-3.3 напряжение 5-12 (можно до 18) вольт и все должно быть нормально. При понижении напряжения меньше 5 вольт на входе будут сбои.У меня аналогичные NRF работают на 300 м (дальше не проверял).
Сторінки 1