или войти через:
Ваша корзина пока пуста
favorite_border
Доступно только зарегистрированным пользователям

DIY: Sneel — плавающий робот-змея под Arduino. Пошаговая инструкция по созданию

schedule 15.10.2013 в 15:15 link DIY Sneel робот-животное робот-змея Робот среднего уровня сложности
Содержание:
  1. Введение
  2. Видеопрезентация работы
  3. Шаг 1. Список необходимых материалов
  4. Шаг 2. Сделайте серводвигатель водонепроницаемым
  5. Шаг 3. Приготовьте главный каркас: отрежьте углеродное волокно
  6. Шаг 4. Прикрепите скобки к углеволокну
  7. Шаг 5. Прикрепите С-образные скобки
  8. Шаг 6. Установите сервоприводы на скобки
  9. Шаг 7. Установите С-образные пары
  10. Шаг 8. Прикрутите рожок серводвигателя к скобке
  11. Шаг 9. Схема
  12. Шаг 10. Загрузите программное обеспечение
  13. Шаг 11. Сделайте пульт дистанционного управления, или просто используйте XBee и компьютер
  14. Шаг 12. Соедините провода
  15. Шаг 13. Прикрепите батарейки
  16. Шаг 14. Установите выключатели и подготовьте крышки для головы и хвоста
  17. Шаг 15. Подготовьте насос для батарей и удлините тело робота
  18. Шаг 16. Замажьте крышки
  19. Шаг 17. Оденьте на робота «кожу»
  20. Шаг 18. Установите водный насос
  21. Шаг 19. Проверьте робота в реальных условиях!

Введение:

Sneel является роботом-змеей, который построенный для изучения живых, извилистых движений роботов в водной среде. Он предназначен для перемещения в неизвестной территории и экстремальной местности.

Sneel является результатом вдохновения Protei – международного  проекта по разработке парка роботов, беспилотных парусников и других устройств с открытым исходным кодом.
На этих изображениях Sneel совершает плавание в Сан-Франциско, Калифорния, на озере Spreckles в Golden Gate Park.

Sneel является биомиметическим, мобильным, водным роботом с открытым исходным кодом. Электромеханическая конструкция Sneel имитирует структуру и движения реальной водяной змеи, чтобы исследовать поведение линейных роботов во время плавания. Источником вдохновения для Sneel является увлечение автора формами моторики рептилий и последствия моделирования оборудования от биологических структур и функций. Sneel использует специально написанное программное обеспечение для работы серводвигателей, которые составляют тело робота.

Текущая модель является платформой для развития других недорогих беспилотных аппаратов с полуавтономным навигационным управлением для зондирования местности и обхода препятствий. Приложения для Sneel включают удаленный сбор данных морской солености, изучение уровней токсичности, мониторинг ядерного уровня, трубопроводов или подводные исследования касательно рыболовства и сбора нефти.









Видеопрезентация работы:



Шаг 1. Список необходимых материалов:

Механическое оборудование:
  • 5x скобок для сервоприводов Lynxmotion
  • 5x скобок формы С Lynxmotion
  • 5x специальных литых петель
  • уретановая трубка для сбора пыли размерами 5" x 2.5"
  • свернутый шланг
  • труба размерами 5/16" 
  • шланг 5/16" 
  • 2x вакуумных редуктора размерами от 2.5 до 1.25" 
  • 5x скобок для сервоприводов 
  • уретановый уплотнитель
  • морской смазочный материал
  • морской эпоксидный уплотнитель
  • уплотнительные кольца
  • углеродные волокна 3x (1/32 ", 1" x12 ")
  • кусок резины около 1/8 "толщиной, 2" x10 "
  • локтит (зеленый)
  • нейлоновый трос
Дополнительно:
  • внутренняя трубка или клапан для повышенного давления, подойдет насос для велосипеда
  • несколько упаковок геля кремниевой кислоты.
Электроника:
  • 10 серводвигателей (подойдут Hitec или Karbonite)
  • 3 6V NiMh аккумуляторы
  • Arduino UNO
  • 1 плата seeeduino mega
  • Xbee программа для анализа
  • 2x xbee 1 серии
  • xbee беспроводная плата
  • провод расширения серводвигателя
  • xbee выход: с 2-мя рядами по 10 штыревых контактов («папок») и 2 ряда штепсельных контактов («мамок»).
Инструменты:
  • провода
  • острогубцы
  • угловые ножницы
  • инструменты для зачистки проводов
  • небольшая отвертка
  • 4-40 шурупов и зубчатых гаек
  • 2-56 шурупов и зубчатых гаек
  • паяльник + припой
  • ножовка
  • сверло 3 мм
дополнительно: дреммель.






























Шаг 2. Сделайте серводвигатель водонепроницаемым:

Смотрите подробную инструкцию по фотографиям. Вкратце объясним это так:
  • намажьте морским уплотнителем вокруг двух швов пластика на сервоприводах, вокруг мест, где вставлены провода, и где крепятся шурупы
  • дайте двигателям высохнуть в течение 24 часов.
  • Открутите сервопривод (круглая верхняя часть серводвигателя)
  • примените смазку вокруг зубчатого валка и поместите уплотнительное кольцо вокруг валка
  • поместите обратно рожок сервопривода. Убедитесь, что он находится по центру (поверните его в одном направлении и убедитесь, что он вращается примерно на 90 градусов от центра в одном направлении и 90 градусов в другом направлении).
















Шаг 3. Приготовьте главный каркас: отрежьте углеродное волокно:

  • С помощью ножовки отрежьте кусок углеродного волокна на несколько частей по 4 дюйма (каждая полоса размером 12 "x1" должна быть сокращена в 3-х частях). Можно использовать дреммель, чтобы закруглить углы.
  • возьмите по одному кронштейну из каждого сервопривода по 3 дюйма. Отметьте на углеродном волокне два больших отверстия в линии скобки, так, чтобы можно было ввернуть их в углеродном волокне.
  • просверлите 4 отверстия в каждой части углеродного волокна с использованием 3 мм сверла
  • сделайте 7 4" отрезков.



















Шаг 4. Прикрепите скобки к углеволокну:
  • используя большие шурупы, которые имеются в обеих скобках, приложите вырезанные отверстия к отверстиям на скобках.
  • Закрепите болтами скобки и углеродные волокна. Убедитесь, что вы прикрутили болты именно на задней скобке, как показано на фото.













Шаг 5. Прикрепите С-образные скобки:
  • соедините кусок резины с С-образной скобкой в средней части (см. рисунок) и отрежьте 5 кусочков. Они будут составлять примерно 1" х  2"
  • приложите отрезанный кусок резины к одной из С-образных скобок, и нарисуйте точку на резине, где будут находиться два отверстия
  • используйте булавку, чтобы проткнуть отверстие в резине на двух пометках для отверстий
  • вставьте 2-56 болты от черной скобки через резину и через красную скобку
  • сделайте это с каждой парой черных и красных скобок.
Примечание: по картинкам видно происходящие вещи в несколько ином порядке, чем описано выше. Вы можете увидеть, как сервоприводы уже подключены к скобкам. Но это будет описано в следующих шагах.

















Шаг 6. Установите сервоприводы на скобки:
  • в комплекте с сервоприводами есть несколько частей. Возьмите небольшой прямоугольник
  • вставьте его во все четыре отверстия на серводвигателе. Обратите внимание, что резина имеет плоскую сторону. Эта сторона должна быть обращена наружу
  • на 5 сервоприводах поместите литые петли (если у вас есть С-образные скобки с подшипниками снизу)
  • установите сервопривод на скобку, как показано: должны сформироваться совместные пути на черной скобке сервопривода
  • закрепите 4x40 шурупы. Поместите гайку на дно и закрепите болтом.
































Шаг 7. Установите С-образные пары:
  • Установите красные скобки сервоприводов на С-кронштейны, а черные на черные кронштейны.
Красные:
Оденьте скобку через сервопривод и сопоставьте с кронштейном сервопривода, как показано на фото. Используйте болты и подшипники, чтобы закрепить скобку на месте.

Черные:
Оденьте кронштейн на сервопривод, чтобы он покрывал большую часть его тела. Поместите эту скобку на сервомотор в соответствии с кронштейном сервопривода. Убедитесь, что верхняя сторона сервопривода является стороной с одним большим отверстием и четырьмя небольшими отверстиями. Введите формованные сегменты на дне, которые должны появиться на месте в небольшом отверстии.

Теперь вы должны иметь полную длину змеи и целостную структуру.
































Шаг 8. Прикрутите рожок серводвигателя к скобке:
  • Отметьте отверстия на скобках и сервомоторе
  • убедитесь, что ваш рожок находится по центру (вы можете вращать его в одном направлении и в другом направлении, а затем повернуть обратно в среднее положение, так что если вы помещаете скобку на выровненную с сервоприводом скобку, она будет смещаться в центральное положение
  • используйте небольшую отвертку, чтобы закрутить скобы и круглые пластиковые рожки сервопривода вместе.
Скобки и сервоприводы должны свободно вращаться. Вы должны применить немного смазки между двумя металлическими скобками, если есть трения.
Вы также можете применять локтит на некоторых из шурупов так, чтобы они не выходили из отверстий. Это очень надежное средство крепления. На данный момент, ваше тело змеи готово!













Шаг 9. Схема:
  • Подготовьте XBee плату (припаяйте 2 ряда штыревых контактов к 2 рядам 2мм XBee «мамок»)
  • вставьте XBee как показано на фото
  • возьмите щит серводвигателя от Seeed студии, просто используя его в качестве макетной платы. Это удобно, потому что все выводы питания в серводвигателе уже идут вместе с винтовыми клеммами для входа батареи. Не обращайте внимания на проводки, висящие с платы, сначала припаяйте штепсельные контакты для другого использования платы. Обрезанные концы вы можете видеть на фотографии.
  • если у вас есть щит сервопривода, припаяйте на винтовые клеммы две строки контактов, где 6V и GND от батареи будут подключены. Припаяйте штыревые контакты для того, чтобы щит серводвигателя был смонтирован с seeeduino (или Arduino) mega.
Примечание: Arduino Mega необходима не потому, что она имеет нужное количество выходов, а потому количествоо флэш-памяти в Arduino Uno не является достаточно большим.
  • соедините XBee контакт 1 (3.3V) с Arduino 3,3 контактом (см. красный провод)
  • соедините XBee-TX (контакт 2) с Arduino RX (контакт1) (см. желтый провод)
  • соедините XBee заземленный контакт 10 с Arduino GND (см. черный провод)
  • подсоедините питание от аккумулятора 6В с Arduino VIN контактом (зеленый провод).
  • припаяйте провода от всех цифровых выходных контактов (по мере использования).
  • разместите серво разъемы (красный, черный, белый) и вставьте внешние провода от Arduino к серво кабелям (белый провод).
Примечание: если Arduino должна быть размещена в передней части робота-змеи, соедините контакты от низа до верха от Arduino с сервоприводами, которые наиболее близки к голове).

Другими словами: первый сервопривод (когда змея движется вперед, сервопривод на голове) должен быть подсоединен к цифровому контакту 2, а сервопривод в хвосте должен быть подсоединен к цифровому контакту 11.
  • соедините проводами концы для подключения к 6В нижней части от аккумуляторов
  • вырежьте дополнительные куски металла (вы не должны делать этого, если вы начинаете с чистой платы и нет ни одного припаянного контакта со штепселем).


1 - xbee tx-> arduino rx



1 – xbee серии 1 с проводами, 2 – выход xbee



1 – цифровой выход для сервопривода





1 – контакт серводвигателя, подключенный к цифровым выходам Arduino 6В и GND





1 - RX контакт от xbee tx к arduino контакту 1 rx
2 – контакты цифрового выхода,
3 – заземленный (правый край) и 6 В питание (слева)









1 - питание и заземление от аккумулятора для питания сервоприводов.

Шаг 10. Загрузите программное обеспечение:

Автор написал библиотеку программного обеспечения, которая легко генерирует волны передвижения на основе колебаний. Это называется библиотека Servo Arduino для получения синусоидальной волны, распространяющейся вдоль линии сервоприводов. Это позволяет изменить сенсорный ввод, параметры волны и число сервоприводов.

Загрузите исходный код отсюда.  Загрузите его на Arduino без подключения к XBee (когда XBee не включен в сеть). TX и RX контакты (контакты 1 и 0) на Arduino Mega используют ссылки, которые распространяют синусоидальную волну вниз по линии двигателей.

Во время каждого цикла имейте в виду:
  • основная программа распространяет ссылки, которые распространяют синусоидальную волну вниз по линии двигателей
  • это касается и беспроводного протокола общения со змеей с помощью джойстика.





Шаг 11. Сделайте пульт дистанционного управления, или просто используйте XBee и компьютер:

Для этой версии робота-змеи различные входы (номера 1-6) влияют на поведение волнистых движений.

Вариант 1: xbee+компьютер
  • подключите XBee к программе анализа XBee
  • подключите XBee программу анализа к компьютеру через кабель USB
  • скачайте и откройте программу CoolTerm
  • нажмите кнопку "Настройки"
  • убедитесь, что скорость передачи данных установлена на 57600
  • Убедитесь в том, что после "PORT" компьютер говорит вам что-то вроде "usbserial-A700xxx". Если нет, выберите "RESCAN SERIAL PORTS".
  • нажмите OK.
  • нажмите "Connect"
  • убедитесь, что ваш XBee установлен на скорости передачи 57600.
Выберите "+ + +" (вы не могли бы видеть все, что написано в последовательном порту, если вы не проверили "локальное эхо" в конечной вкладке Параметры.)
Вы должны вернуться на "OK" в окне CoolTerm. Если это невозможно, XBee не будет установлен на указанной скорости. Для отладки вернитесь к «Настройкам» и выберите пункт "скорость 9600" и попробуйте еще раз.

Теперь вы ввели XBee в "командный режим".

Выберите "ATBD", а затем нажмите ENTER. (Не ждите слишком долго и выйдите в командный режим).
Вы должны получить соответствующую скорость передачи XBee, которая устанавливается в режиме. Если вы убедитесь, что плата установлена на скорости 57600, выберите "ATBD 6" и нажмите ENTER.

Далее вернитесь к вкладке "OK" и перейдите к "ATWR".

Теперь введите символы 1-6 в серийном окне, и если ваша змея включена, символы должны влиять на движение робота.
5 и 6 – обеспечивают скорость вращения сервоприводов
3 и 4 – обеспечивают период волны (скорость распространения вдоль линии сервоприводов)
1 и 2 – влияют на амплитуду волны

Визуализируйте в программном обеспечении, как волновое поведение зависит от различных параметров, или выберите  символы 1-6.

Прилагаемые графики показывают выходные значения угла каждого сервопривода, которые отображаются в течение долгого времени, слегка сдвинуты друг от друга. Разница в том, когда есть другое смещение (задержка по времени заставляет один сервопривод добраться до угла предыдущей линии волн).

Если вы не хотите применять ваш компьютер, и хотите использовать пульт дистанционного управления, сделайте Arduino дистанционно управляемой. Для этого подключите её к XBee щиту, который установлен на Arduino (см. по картинкам). Сделайте 6 кнопок с входами. Для этого можно взломать джойстик, который имеет 2 дополнительные кнопки. Подключите кнопки к цифровым выводам 2-7 Arduino.

Добавьте следующий код к Arduino.

Теперь управляйте поведением змеи так же, как через программу coolTerm.















1 - 6 кнопки внутри этого джойстик, четыре на джойстик и две установленные на поверхности.





//Code written by Gabriella Levine to take inputs from button pins and output
//chars to the serial port

// set pin numbers:
const int buttonPin1 = 2;     // the number of the pushbutton pin
const int buttonPin2 = 3;     // the number of the pushbutton pin
const int buttonPin3 = 4;     // the number of the pushbutton pin
const int buttonPin4 = 5;     // the number of the pushbutton pin
const int buttonPin5 = 6;     // the number of the pushbutton pin
const int buttonPin6 = 7;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables
int buttonState1 = 0;         // variable for reading the pushbutton status
int buttonState3 = 0;         // variable for reading the pushbutton status
int buttonState2 = 0;         // variable for reading the pushbutton status
int buttonState4 = 0;         // variable for reading the pushbutton status
int buttonState5 = 0;         // variable for reading the pushbutton status
int buttonState6 = 0;         // variable for reading the pushbutton status

void setup() {
  Serial.begin(9600);
  // initialize the LED pin as an output:

  pinMode(ledPin, OUTPUT);     
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin1, INPUT);    
  pinMode(buttonPin2, INPUT);    
  pinMode(buttonPin3, INPUT);    
  pinMode(buttonPin4, INPUT);    
  pinMode(buttonPin5, INPUT);    
  pinMode(buttonPin6, INPUT);    
}

void loop(){

  if(Serial.available()>0){
    byte incomingByte = Serial.read();
    if(incomingByte=='1'||incomingByte=='2'||incomingByte=='6'||incomingByte=='5'||incomingByte=='0')
    {
      digitalWrite(ledPin, HIGH);
      delay(10);
      digitalWrite(ledPin, LOW);

    }
  }

  // read the state of the pushbutton value:
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digital