Arduino karton robot bluetooth kontrol

2
3.553 views

Aşağıdaki talimatları uygulayarak kartondan çok eğlenceli bir robot tasarlayıp kodlayabilir ve bluetooth üzerinden cep telefonuyla kontrol edebileceksiniz.

Öncelikle aşağıdaki ölçülere göre kartondan robotumuzun baş, gövde ve kol kısımlarını üretmelisiniz. İsterseniz kendiniz ölçü belirleyerek farklı boyutlarda yeniden tasarlayabilirsiniz

Baş kısmı 5cm ölçülerinde bir küpten oluşmaktadır.

Gövde 7 cm ölçülerinde bir küp olacak alt yüzeyi boş olacak.

Ellerin uzunluğu 10 cm genişlik 2 cm olacaktır.

Parçaların üzerinde servo motorlar girecek kadar boşluklar oluşturulacaktır.

Malzemeler

3 adet servo motor

bluetooth modülü hc05 veya hc06

2 adet led gözleri için ve 2 adet 330 ohm direnç

Arduino

Robot uzaktan kumandası için bir arayüz oluşturmak için www.remotexy.com online araçlarını kullanacağız.

Robotun kafasını sağa sola döndürmek ve kolları yukarı aşağı kaydırmak için aşağıdaki gibi bir arayüz tasarlanacaktır. Örnek uygulama aşağıdaki bağlantıdadır.

Gözleri kontrol etmek için iki düğme ayarlayın. Akıllı telefonunuzdan robot kontrolünün taslağını oluşturmak için çevrimiçi servise ait dokümantasyonu kullanın:

http://remotexy.com/en/examples/cardboardrobot/ Ya da çizimi ekteki dosyadan indirebilirsiniz.

Cardboard robot kodları indir: cardboardrobot

 

    http://www.instructables.com/id/%D0%A1ardboard-robot-is-controlled-from-a-smartphone/

    2 YORUMLAR

      • /////////////////////////////////////////////
        // RemoteXY include library //
        /////////////////////////////////////////////

        /* RemoteXY select connection mode and include library */
        #define REMOTEXY_MODE__SERIAL
        #include

        /* RemoteXY connection settings */
        #define REMOTEXY_SERIAL Serial
        #define REMOTEXY_SERIAL_SPEED 9600

        /* RemoteXY configurate */
        unsigned char RemoteXY_CONF[] =
        { 6,0,79,0,1,5,4,0,5,7
        ,11,56,2,4,0,84,7,11,56,2
        ,4,128,20,13,60,11,2,129,0,26
        ,3,49,6,0,208,161,97,114,100,98
        ,111,97,114,100,32,82,111,98,111,116
        ,0,1,0,25,29,16,16,1,76,0
        ,1,0,60,29,16,16,1,82,0,2
        ,0,38,51,24,10,2,79,78,0,79
        ,70,70,0 };

        /* this structure defines all the variables of your control interface */
        struct {

        /* input variable */
        unsigned char slider_left; /* =0..100 slider position */
        unsigned char slider_right; /* =0..100 slider position */
        unsigned char slider_head; /* =0..100 slider position */
        unsigned char button_left; /* =1 if button pressed, else =0 */
        unsigned char button_right; /* =1 if button pressed, else =0 */
        unsigned char switch_1; /* =1 if switch ON and =0 if OFF */

        /* other variable */
        unsigned char connect_flag; /* =1 if wire connected, else =0 */

        } RemoteXY;

        /////////////////////////////////////////////
        // END RemoteXY include //
        /////////////////////////////////////////////

        #include

        #define PIN_LED_LEFT 6
        #define PIN_LED_RIGHT 7

        #define PIN_LEFT_SERVO 8
        #define PIN_RIGHT_SERVO 9
        #define PIN_HEAD_SERVO 10

        Servo left_servo;
        Servo right_servo;
        Servo head_servo;

        unsigned char led_state = 0;
        unsigned long led_time=0;
        unsigned long prev_time=0;

        void setup()
        {
        RemoteXY_Init ();

        // TODO you setup code

        pinMode (PIN_LED_LEFT, OUTPUT);
        pinMode (PIN_LED_RIGHT, OUTPUT);

        left_servo.attach(PIN_LEFT_SERVO);
        right_servo.attach(PIN_RIGHT_SERVO);
        head_servo.attach(PIN_HEAD_SERVO);

        RemoteXY.slider_left=50;
        RemoteXY.slider_right=50;
        RemoteXY.slider_head=50;

        }

        void loop()
        {
        RemoteXY_Handler ();

        // TODO you loop code
        // use the RemoteXY structure for data transfer
        unsigned long time = millis();
        unsigned long d_time = time – prev_time;
        prev_time = time;

        if (RemoteXY.switch_1==0) {
        digitalWrite(PIN_LED_LEFT, (RemoteXY.button_left==0)?LOW:HIGH);
        digitalWrite(PIN_LED_RIGHT, (RemoteXY.button_right==0)?LOW:HIGH);
        }
        else {
        led_time+=d_time;
        if (led_time>500) {
        if (led_state==0) led_state=1;
        else led_state=0;
        led_time-=500;
        }
        digitalWrite(PIN_LED_LEFT, (led_state==0)?LOW:HIGH);
        digitalWrite(PIN_LED_RIGHT, (led_state==1)?LOW:HIGH);
        }

        left_servo.writeMicroseconds(RemoteXY.slider_left*20+500);
        right_servo.writeMicroseconds(2500-RemoteXY.slider_right*20);
        head_servo.writeMicroseconds(RemoteXY.slider_head*20+500);

        }

    CEVAP VER