Ничего не найдено :(

    Робот на Ардуино!


    Всем Доброго Времени Суток! Данная статья будет посвящена любителям электроники, робототехники, а также людям с нестандартным взглядом на окружающие вещи!

    Итак сейчас я постараюсь максимально наглядно описать процесс создания, сборки робота с электронной начинкой, а именно, на Ардуино! Поехали!

    Что нам понадобится:
    Трёхпроводной шлейф (3 штуки). Желательно взять подлиннее.

    Обычные провода

    Потенциометры

    Резисторы (220 Ом)

    Кнопка

    Батарейный отсек с аккумуляторами

    Макетная плата

    Ну и, безусловно, сама ардуинка

    А также плата расширения к ней - что то вроде MultiservoShield, для управления большим количеством сервоприводов

    И еще любой конструктор, который будет основой нашего робота, поэтому желательно выбрать "крепкий"

    Из инструментов понадобится:
    Набор отверток, ключей и т.п.

    А также паяльник, припой и флюс


    Ну теперь начнем!
    Шаг№1. Изготовление основного каркаса
    Для начала соберем "две буквы Н" Выглядит это вот так:

    Затем некоторую конструкцию, на которой наш робот будет стоять. Совсем необязательно как на рисунке - на ваше усмотрение.. У меня получилось так:

    Устанавливаем нашу "Н" на опору

    Снизу закручиваем болты

    На другой "Н" закрепляем первый сервопривод, отвечающий за повороты головы нашего будущего робота






    Получается что-то следующее:

    Почти каркас готов! Осталось скрепить эти две конструкции металлическими пластинками и придать роботу высоты!





    Шаг№2 Изготовление каркаса для будущих ушей робота
    Для этого нам необходимо собрать две подобные конструкции и закрепить на них сервоприводы, как показано на рисунке:



    Затем с помощью болтов и гаек соединим с основным каркасом. Получится следующее:




    Вид сверху:


    Ну что же, некий прообраз робота почти готов! Идем дальше..
    Шаг№3. Изготовление глаз и вообще всей головы нашего робота!
    Именно для этого я использовал старую трубку от домофона. Лично мне она напоминает лицо! Увидите дальше..

    Проделываем два отверстия и прикручиваем качалку для сервопривода к трубке


    Сразу же приклеим светодиоды по бокам и припаяем к ним проводки


    Я использовал тоненькие:

    Вот что получилось!

    Шаг№4 Изготовление ушей
    Будем использовать обычные крышечки от маленьких коробочек
    Также прикрутим качалки для серв




    Теперь смело фиксируем части тела робота на сервах
    Вот так:


    Вид сверху:



    Сзади:


    В принципе наслаждаться роботом можно и сейчас, но мы усложним задачу.. Будем поворачивать глаза и уши робота с помощью потенциометров и нашей ардуинки
    Шаг№5 Электроника
    Соединив ардуино с мультисервошилдом, вставляем трехпроводной шлейф от каждой сервы к пинам 9, 10, 11 (Левое ухо, Правое ухо, Цент, если поставить робота лицом к нам)
    Затем на макетной плате устанавливаем потенциометр, кнопку, резисторы.. Выглядеть это будет так, некрасиво конечно, но главное работает)







    Более подробно!
    Как установить кнопку:


    Где белый провод - питание, Красный - цифровой вход микроконтроллера №6, а резистор уходит на землю(желтый провод)

    Как установить потенциометр:


    Красный провод - питание, Желтый - земля, Белый - аналоговый вход микроконтроллера №0 (другой потенциометр присоединяем точно также, только аналоговый вход контроллера №1)

    На плате устанавливаем также резисторы для светодиодов:

    ток будет подаваться с 3 и 5 пинов ардуино, а приходить по желтому и черному проводу и через резисторы уходить в землю (GND контроллера)

    Ну в принципе все, с электроникой мы закончили! Осталось только вгрузить следующий скетч и поиграться с роботом!!

    #include 
    #include 
    Multiservo myservo1;
    Multiservo myservo2;
    Multiservo myservo3;
    int b,k1,p1,p2; 
    int A = 0;
    int i = 0;
    unsigned long m2=0;
    unsigned long m1=0;
    int r1=70;
    int r2=110;
    int r3=70;
     int h1=0; 
     int h=0;       
    void setup() 
    { 
      myservo1.attach(9);  // левое ухо
      myservo2.attach(10); // правое ухо
      myservo3.attach(11); // глаза 
          pinMode(6,INPUT); // кнопка
          pinMode(3,OUTPUT); //глаза огни PWM
          pinMode(5,OUTPUT);        
    } 
     void loop() 
    {
       
        while(A==0)  // цикл ручного управления роботом
        {            
            b = digitalRead(6);    
            if (!b) k1 = 1;
            if (b==1 && k1 == 1)
            { 
                  delay(10);
                  b = digitalRead(6);
                  if(b==1 && k1 == 1)
                    { 
                     A=1;
                     k1=0;
                    }
            } 
          p1=int(analogRead(A0)/6);
          p2=int(analogRead(A1)/6); 
          myservo1.write(p1);
          myservo2.write(p1);
          myservo3.write(p2);         
          analogWrite(3,i);
          analogWrite(5,i);
          if(millis() >= m1+70 && h1==0)
          {
            i=i+4;
            m1=millis();
            if(i>250) h1=1;
          }
         
            if(millis() >= m1+70 && h1==1)
          {
            i=i-4;
            m1=millis();
            if(i==0) h1=0;
          }
        }   
      while(A==1)  // цикл автономной работы робота 
       {
           digitalWrite(13,0);
           b = digitalRead(6);    
            if (!b) k1 = 1;
            if (b==1 && k1 == 1)
            { 
                delay(10);
                b = digitalRead(6);
                if(b==1 && k1 == 1)
                { 
                    A=0;
                    k1=0;       
                }
            }    
          analogWrite(3,i);
          analogWrite(5,i); 
          if(millis() >= m1+70 && h1==0)
          {
            i=i+4;
            m1=millis();
            if(i>250) h1=1;
          }   
          if(millis() >= m1+70 && h1==1)
          {
            i=i-4;
            m1=millis();
            if(i==0) h1=0;
          }  
       if(millis() >= m2+15 && h==0)
       {
        myservo1.write(r1);  
        myservo2.write(r2);  
        myservo3.write(r3);    
        r1=r1+1;
        r2=r2-1;
        r3=r3+1;    
        if(r1==110) h=1;  
        m2=millis();
       }
       if(millis() >= m2+15 && h==1)
       {
        myservo1.write(r1); // 110
        myservo2.write(r2); // 70
        myservo3.write(r3); // 110
        r1=r1-1;
        r2=r2+1;
        r3=r3-1;
        if(r1==70) h=0; 
        m2=millis();
       }
       }   
    }


    Код немаленький, но поверьте это того стоит!
    Кратко, что выполняет данная программа:
    У нас есть кнопка, которая отвечает за 2 состояния системы: либо мы управляем роботом вручную, либо он осуществляет уже прописанные заранее движения. При нажатии на кнопку для нас меняются состояния, а в коде - меняются 2 цикла между собой, в которых прописаны соответствующие команды. Глаза нашего робота постепенно загораются, становятся все ярче и ярче, а затем затухают. именно поэтому мы подкличили светодиоды к пинам, поддерживающим PWM - широтно-импульсную модуляцию.

    Фотки робота:




    Небольшая видеозапись, как и что в итоге крутится:

    В заключении хочется сказать, что, конечно же, данного робота можно еще долго и долго доводить до ума, но это уже вкус каждого человека. Творите! Изобретайте! Развивайтесь! Всем Удачи!
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

    Гусеничное шасси + Bluetooth

    Гоночная машинка из Lego и Arduino

    7
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    6.7
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    5.7
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 6.44 из 10 (голосов: 3 / История оценок)

    Добавить комментарий

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии