Tarot FY680 HexaCopter
www.rctimer.com/product_718.html
Есть левые и правые. Как я понял, в нашем случае без разницы.
осталось теперь поставить сонар, атмегу и написать скетч на полтора метра реагирования и будет шасси за 400 баксов 😃
и будет шасси за 400 баксов
)))
осталось теперь поставить сонар, атмегу и написать скетч на полтора метра реагирования и будет шасси за 400 баксов 😃
в качестве автономного модуля? или с подключением к контроллеру?
как вариант добавить светодиод для освещения площадки приземления. лазерную указку - крест ))
сонар 5$
ардуино нано 14$
ретрактор 18$(2шт)
лазер-крест 2.5$
светодиод освещения 4.5$
вроде доступно получается
в качестве автономного модуля? или с подключением к контроллеру?
как вариант добавить светодиод для освещения площадки приземления. лазерную указку - крест ))
в качестве автономного модуля который так же подключается к приемнику аппы, что бы можно было по желанию управлять шасси
в качестве автономного модуля который так же подключается к приемнику аппы, что бы можно было по желанию управлять шасси
понравилась идея с подъемными ногами. заказал оборудование для шасси + лазер-крест и светодиод
случайно не смотрели уже в инете - есть ли готовый код для ардуины?
есть готовые примеры работы Арду с RC-приемником и сонаром, черновой вариант программы сделать достаточно просто, но возможны нюансы, да и зачем велосипед изобретать ))
я уже давно сделал раздвижные ноги, но пока только от канала приемника. тоже интересно сделать полный автомат, а то канал нужен уже
я уже давно сделал раздвижные ноги, но пока только от канала приемника. тоже интересно сделать полный автомат, а то канал нужен уже
подскажите, я правильно понимаю, что ретрактор управляется так же, как и серва?
в наличии нет, буду упражняться на серве
подскажите, я правильно понимаю, что ретрактор управляется так же, как и серва?
в наличии нет, буду упражняться на серве
у ретрактора только 2 позиции (0 и 90 градусов). Подал сигнал - он переходит крайнюю позицию. По крайней мере так обстоят дела у этого www.rctimer.com/product_716.html
у ретрактора только 2 позиции (0 и 90 градусов). Подал сигнал - он переходит крайнюю позицию. По крайней мере так обстоят дела у этого www.rctimer.com/product_716.html
спасибо за инфу!
представляю черновой код для управления шасси на сервах/ретракторах с помощью сонара SRF05, Arduino Nano.
протестировано на обычной серве
Подключение:
- сонара
перед использованием выставить:
SERVO_LEGS_ARMED - угод сервы для положения “ноги выпущены”
SERVO_LEGS_DISARMED - угод сервы для положения “ноги убраны”
ALT_ARMED_TRIGGER - высота для срабатывания “ноги выпустить”, сантиметры
JUST_ARMED_DELAY - задержка после которой ноги могут быть переведены из “выпущено” в “убраны” в милисекундах
SERVO_EXEC_DELAY - задержка для отрабатывания сервы в милисекундах. подбирается экспериментально, зависит от типа сервы
для развития:
усреднить показания сонара для исключения скачков и пролетающих мух ))
добавить включение светодиода(+лазер-крест) в положении “ноги выпущены”
добавить управление морганием навигационных огней
управление шасси с аппы
вопросы к заинтересованным:
приемлимо ли такое управление с аппы? двухпозиционный переключатель на канале. в положении по умолчанию шасси выпущено. в другом положении шасси на автомате.
внимание:
код свободный, скомпилирован из примеров. автор не несет ответственности за код
серву подключать к отдельному питанию, иначе сонар глючит
#include <Servo.h>
//servo
#define SERVO_LEGS_ARMED 0 //servo agnle for arm legs mode
#define SERVO_LEGS_DISARMED 90 //servo agnle for disarm legs mode
//modes
#define MODE_ARMED 1 //legs armed mode
#define MODE_JUST_ARMED 2 //legs just armed mode
#define MODE_DISARMED 3 //legs disarmed mode
#define MODE_SERVO_EXEC 4 //legs disarmed mode
//alt trigger
#define ALT_ARMED_TRIGGER 50 //in cm
//modes details
#define JUST_ARMED_DELAY 3000 //delay after legs arm in millisec
#define SERVO_EXEC_DELAY 1000 //delay for servo executing in millisec
//pins
#define PIN_SERVO 9 //pin to arm/disarm legs servo
#define PIN_SONAR_ECHO 2 // Pin to receive echo pulse
#define PIN_SONAR_TRIG 3 // Pin to send trigger pulse
//vars
Servo myservo; // create servo object to control a servo
byte CurrentMode; //current legs mode
byte AfterExecMode;
unsigned long JustArmedStart; //just armed mode start time
unsigned long ServoExecStart; //servo start time
void ServoStart(byte AfterMode, int Angle)
{
myservo.write(Angle);
ServoExecStart = millis();
AfterExecMode = AfterMode;
}
void setup()
{
myservo.attach(PIN_SERVO); // attaches the servo on pin 9 to the servo object
Serial.begin(9600);
pinMode(PIN_SONAR_ECHO, INPUT);
pinMode(PIN_SONAR_TRIG, OUTPUT);
JustArmedStart = millis();
ServoStart(MODE_ARMED, SERVO_LEGS_ARMED);
CurrentMode = MODE_SERVO_EXEC;
}
void loop()
{
int distance;
byte newMode; //calculated legs mode
digitalWrite(PIN_SONAR_TRIG, LOW); // Set the trigger pin to low for 2uS
delayMicroseconds(2);
digitalWrite(PIN_SONAR_TRIG, HIGH); // Send a 10uS high to trigger ranging
delayMicroseconds(10);
digitalWrite(PIN_SONAR_TRIG, LOW); // Send pin low again
distance = pulseIn(PIN_SONAR_ECHO, HIGH); // Read in times pulse
distance= distance/58; // Calculate distance from time of pulse
Serial.println(distance);
newMode = CurrentMode;
switch (CurrentMode) {
case MODE_ARMED:
if (distance > ALT_ARMED_TRIGGER) newMode = MODE_DISARMED;
break;
case MODE_JUST_ARMED:
if ((millis()-JustArmedStart) > JUST_ARMED_DELAY) newMode = MODE_ARMED;
break;
case MODE_DISARMED:
if (distance < ALT_ARMED_TRIGGER) {
newMode = MODE_JUST_ARMED;
JustArmedStart = millis();
}
break;
case MODE_SERVO_EXEC:
if ((millis()-ServoExecStart) > SERVO_EXEC_DELAY) newMode = AfterExecMode;
break;
}
if ((newMode == MODE_JUST_ARMED) & (CurrentMode==MODE_DISARMED)) {
ServoStart(newMode, SERVO_LEGS_ARMED);
newMode =MODE_SERVO_EXEC;
}
if ((newMode == MODE_DISARMED) & (CurrentMode==MODE_ARMED)) {
ServoStart(newMode, SERVO_LEGS_DISARMED);
newMode =MODE_SERVO_EXEC;
}
CurrentMode = newMode;
delay(50);
}
спасибо за инфу!
представляю черновой код для управления шасси на сервах/ретракторах с помощью сонара SRF05, Arduino Nano.
протестировано на обычной сервеПодключение:
- сонараперед использованием выставить:
SERVO_LEGS_ARMED - угод сервы для положения “ноги выпущены”
SERVO_LEGS_DISARMED - угод сервы для положения “ноги убраны”
ALT_ARMED_TRIGGER - высота для срабатывания “ноги выпустить”, сантиметры
JUST_ARMED_DELAY - задержка после которой ноги могут быть переведены из “выпущено” в “убраны” в милисекундах
SERVO_EXEC_DELAY - задержка для отрабатывания сервы в милисекундах. подбирается экспериментально, зависит от типа сервыдля развития:
усреднить показания сонара для исключения скачков и пролетающих мух ))
добавить включение светодиода(+лазер-крест) в положении “ноги выпущены”
добавить управление морганием навигационных огней
управление шасси с аппывопросы к заинтересованным:
приемлимо ли такое управление с аппы? двухпозиционный переключатель на канале. в положении по умолчанию шасси выпущено. в другом положении шасси на автомате.внимание:
код свободный, скомпилирован из примеров. автор не несет ответственности за код
серву подключать к отдельному питанию, иначе сонар глючит#include <Servo.h> //servo #define SERVO_LEGS_ARMED 0 //servo agnle for arm legs mode #define SERVO_LEGS_DISARMED 90 //servo agnle for disarm legs mode //modes #define MODE_ARMED 1 //legs armed mode #define MODE_JUST_ARMED 2 //legs just armed mode #define MODE_DISARMED 3 //legs disarmed mode #define MODE_SERVO_EXEC 4 //legs disarmed mode //alt trigger #define ALT_ARMED_TRIGGER 50 //in cm //modes details #define JUST_ARMED_DELAY 3000 //delay after legs arm in millisec #define SERVO_EXEC_DELAY 1000 //delay for servo executing in millisec //pins #define PIN_SERVO 9 //pin to arm/disarm legs servo #define PIN_SONAR_ECHO 2 // Pin to receive echo pulse #define PIN_SONAR_TRIG 3 // Pin to send trigger pulse //vars Servo myservo; // create servo object to control a servo byte CurrentMode; //current legs mode byte AfterExecMode; unsigned long JustArmedStart; //just armed mode start time unsigned long ServoExecStart; //servo start time void ServoStart(byte AfterMode, int Angle) { myservo.write(Angle); ServoExecStart = millis(); AfterExecMode = AfterMode; } void setup() { myservo.attach(PIN_SERVO); // attaches the servo on pin 9 to the servo object Serial.begin(9600); pinMode(PIN_SONAR_ECHO, INPUT); pinMode(PIN_SONAR_TRIG, OUTPUT); JustArmedStart = millis(); ServoStart(MODE_ARMED, SERVO_LEGS_ARMED); CurrentMode = MODE_SERVO_EXEC; } void loop() { int distance; byte newMode; //calculated legs mode digitalWrite(PIN_SONAR_TRIG, LOW); // Set the trigger pin to low for 2uS delayMicroseconds(2); digitalWrite(PIN_SONAR_TRIG, HIGH); // Send a 10uS high to trigger ranging delayMicroseconds(10); digitalWrite(PIN_SONAR_TRIG, LOW); // Send pin low again distance = pulseIn(PIN_SONAR_ECHO, HIGH); // Read in times pulse distance= distance/58; // Calculate distance from time of pulse Serial.println(distance); newMode = CurrentMode; switch (CurrentMode) { case MODE_ARMED: if (distance > ALT_ARMED_TRIGGER) newMode = MODE_DISARMED; break; case MODE_JUST_ARMED: if ((millis()-JustArmedStart) > JUST_ARMED_DELAY) newMode = MODE_ARMED; break; case MODE_DISARMED: if (distance < ALT_ARMED_TRIGGER) { newMode = MODE_JUST_ARMED; JustArmedStart = millis(); } break; case MODE_SERVO_EXEC: if ((millis()-ServoExecStart) > SERVO_EXEC_DELAY) newMode = AfterExecMode; break; } if ((newMode == MODE_JUST_ARMED) & (CurrentMode==MODE_DISARMED)) { ServoStart(newMode, SERVO_LEGS_ARMED); newMode =MODE_SERVO_EXEC; } if ((newMode == MODE_DISARMED) & (CurrentMode==MODE_ARMED)) { ServoStart(newMode, SERVO_LEGS_DISARMED); newMode =MODE_SERVO_EXEC; } CurrentMode = newMode; delay(50); }
Так ведь если пользоваться каналом в аппе то можно и не заморачиваться с сонаром. Но кнопку принудительного выпуска я думаю надо включить обязательно
Так ведь если пользоваться каналом в аппе то можно и не заморачиваться с сонаром. Но кнопку принудительного выпуска я думаю надо включить обязательно
подключение аппы планируется, поэтому буду благодарен за более детальное описание: как должна работать кнопка принудительного выпуска шасси
как должна работать кнопка принудительного выпуска шасси
Я так думаю если этот канал завести на доп. ардуину, управляющую шасси, то просто при включении канала нужно выставлять шасси на угол SERVO_LEGS_ARMED вне зависимости от показания сонара, что уж проще 😃
как должна работать кнопка принудительного выпуска шасси
кнопку нажал-убралось, опять нажал-выпустилось)) а то вдруг сонар заглючит(но это если не подключать к аппе)
кнопку нажал-убралось, опять нажал-выпустилось)) а то вдруг сонар заглючит(но это если не подключать к аппе)
спасибо за внимание к теме, отличная идея! не люблю роботов без кнопки “выкл”
Я так думаю если этот канал завести на доп. ардуину, управляющую шасси, то просто при включении канала нужно выставлять шасси на угол SERVO_LEGS_ARMED вне зависимости от показания сонара, что уж проще 😃
спасибо! надо учесть тот момент, что аппа может быть выключена. и еще один момент, что при включении аппы надо, чтобы все тумблеры были “от себя”. поэтому режим по-умолчанию, думаю, должен быть “шасси выпущено, на сонар не реагируем”
управление с аппы:
- шасси управляется 2-х позиционным тумблером с аппы; есть два режима: 1)шасси всегда выпущено(по умолчанию), 2) авто-режим (сонар);
- если аппа включена и тумблер в положении по умолчанию, то шасси выпущено;
- если аппа включена и тумблер в положении “авто”, то положение шасси определяется по сонару;
- если аппа выключена, то шасси в режиме “всегда выпущено”;
управление на шасси:
- плюсом нужна кнопка(или тумблер, что проще) на самой Ардуине, у которой два режима:1) любая автоматика отключена - шасси всегда выпущено; 2) автоматика включена. см. управление с аппы
вопросы:
- каким выбрать минимальный сигнал с аппы, после которого аппа будет считаться выключенной?
- какой уровень сигнала аппы выбрать, после которого срабатывает режим “автоматика включена”?
допилил до вполне рабочего состояния бета версию программы управления роботизированным шасси на Arduino.
пока бюджет проекта около 40$
получилось много текста, полное описание здесь
добавил подключение аппы, фильтр для сонара(усреднение против кустов и травы) и фильтр для пульта(вкл/выкл, помехи)
все работает по нехитрому принципу:
- если аппа выключена-шасси выпущены всегда
- с пульта управляется в двух режимах: шасси выпущены или авто (по сонару)
- есть пауза после перехода “убрано”-“выпущено”, чтобы ногами не махал около земли или над кустами)))
допилил программу управления роботизированным шасси на Arduino до версии 1.1. подробности здесь
Добавлено: управление проблесковыми навигационными огнями, управление посадочным прожектором.
настраивается: задержка выключения прожектора после убирания шасси, шаблон моргания для проблесковых огней
расспиновка и константы для настройки - в коде
пожелания и критика категорически приветствуются!
осталось дождаться ретракторов, а потом присмотреть 3х осевой подвес на БК, собственно ради чего и затевался подъем ног в полете, т.к. как летать толком не умею, а подвес 2х осевой и “режиссер” постоянно сетует, что кадр не тот ))
Ура, вот и ко мне пришла моя рама 960s, вместе с ней и подвес таротовский,до утра время не много осталось, кофе,отвертки,локтайт, в путь.
допилил программу управления роботизированным шасси на Arduino до версии 1.1. подробности здесь
открыл для себя Processing и накидал GUI для настройки робо-шасси через USB-шнурок
интерфейс аксетичен и пока не умеет передавать на плату шаблоны моргания ))
p.s. если кто-то заинтересован, могу выложить дистрибутив, примерно 5Мб
Добрый день всем! Остался шаг перед погружением в мультикоптерство ) Остановился на раме Таро FY690S. На форуме не нашёл четкого ответа, с этой рамой можно использовать винты 14" 4.7 ? Владельцы данной рамы …кто нить подскажите?
14" можно точно, 15" тоже можно, но зазор остается маленький.
Вот фотка с рцгрупс с 14" пропами:
14" можно точно,
А у меня на 690 раме с 13 дюймовыми пропами, зазор чуть больше 1см.