Potansiyometre İle Bluetooth Üzerinden Servo Motor Kontrolü

42 4.286

Bu projemizde potansiyometre ile bluetooth üzerinden servo motor kontrolü yapacağız.İki arduino kartı bluetooth üzerinden kablosuz haberleştirerek kontrolünü sağlayacağız.Bunun için modüllerden birinin yöneten(master)  diğerinin ise yönetilen (slave) modda olması gerekir.İki modülün master slave ayarları için aşağıdaki linki tıklayınız.

Bluetooth Modül Master Slave Ayarları için tıklayınız. 

Malzemeler:

  1. 2 Adet Arduino ( Nano yeterli)
  2. Servo motor
  3. 10k Potansiyometre
  4. Hc-05 Bluetooth Modül
  5. Hc-06 Bluetooth Modül

Elektronik Kısım:

Verici Devresi:

Potansiyometrenin sinyal pinini analog 0 pinine takalım.Hc-05 Bluetooth modülün tx pinini 4.pine rx pinini 3.pine takalım.

 

Alıcı Devresi:

Servo motorun sinyal pinin 10.pine takalım.Hc-06 modülün tx pinini 4.pine rx pinini 3.pine takıyoruz.

 

Yazılım Kısmı:

Verici Yazılımı:

//Verici Kodu
//coder: Sezgin GÜL
//www.robimek.com
#include <SoftwareSerial.h>
#define BT_SERIAL_TX 4
#define BT_SERIAL_RX 3
SoftwareSerial BluetoothSerial(BT_SERIAL_TX, BT_SERIAL_RX);
int potpin = A0;
 
unsigned int val;
void setup()
{
 Serial.begin(9600);
 BluetoothSerial.begin(9600);
}
void loop()
{
 val = analogRead(potpin);
 val = map(val, 0, 1023, 0, 179);
 BluetoothSerial.write(val);
 
 delay(100);
}

Alıcı Yazılımı:

//Alıcı Kodu
//coder: Sezgin GÜL
//www.robimek.com
#include <SoftwareSerial.h>
#define BT_SERIAL_TX 4
#define BT_SERIAL_RX 3
SoftwareSerial BluetoothSerial(BT_SERIAL_TX, BT_SERIAL_RX);
#include <Servo.h>
Servo myservo;
unsigned int val ;
void setup()
{
Serial.begin(9600);
BluetoothSerial.begin(9600);
myservo.attach(10);
}
void loop() // run over and over
{
if (BluetoothSerial.available()>0){
 
val = BluetoothSerial.read();
 
myservo.write(val);
}
 
}

Yazılımları da yükledikten sonra artık servo motorunuzu potansiyometre ile kablosuz olarak yönetebilirsiniz.

Bunlar da İlgini Çekebilir

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

42 Yorum
  1. Ebru

    İki tane hc_05 bluetooth la da aynı şey elde edebilir miyiz

  2. Kemal

    Merhaba
    6 adet mg996r olduğu bir robot kol yapıyorum. Robot kolu 3.7 V -3000 mah değere sahip iki adet lipo pili seri şekilde bağlayarak 7.4 V 3000 mah akıma sahip bir güç ile servolari besliyorum. bende şöyle bir sorun ortaya çıkıyor. Bluetooth kullanmadan 6 adet Potu kullanarak bütün servolari sorunsuz kontrol ediyorum fakat araya pot verilerini aktaran bir Bluetooth modülü+ UNO koydugumda robot kol siddetli titreme + açısal sapmalar yapıyor kontrolsüz bir şekilde. Basit bir kodlama yapısına sahip sizce sorun nedir ? Neler olabilir?

  3. tural

    Merhabalar bir robot el projesi yapiyorum flexi sensorleri led ve ldr kulanarak yaptin hersey normal calisiyor projeye hc 05 ekledim iki tane simdi kodu hc 05 lere nasil enteqre etmeliyim bilmiyorum master slave yaptim baglantida var normalde kablolu sekilde bir parmak icin kulandigim kod su #include
    Servo myservo;
    int LDR = A0;
    int LED =3;
    void setup() {
    myservo.attach(2);
    pinMode(LED,OUTPUT);
    pinMode(LDR,INPUT);
    digitalWrite(LED,HIGH);
    Serial.begin(9600);
    }
    void loop() {
    int vez = analogRead(A0);
    Serial.println(vez);
    myservo.write((map(analogRead(A0),0,600,0,180)));
    delay(50);
    bunu master kismina ve slave nasil bolmem lazim bilmiyorum

  4. eren

    BU PROJEDE BLUETOOTH YERİNE KIZIL ÖTESİ KULLANIRSAK NASI OLUR YAZILIMI VE KURULUMU YARDIMCI OLABİLİRMİSİNİZ

  5. EREN

    BU PROJEDE BLUETOOTH YERİNE KIZIL ÖTESİ KULLANIRSAK NASI OLUR YAZILIMI VE KURULUMU YARDIMCI OLABİLİRMİSİNİZ ÇOK ACİL LÜTFEN

  6. EREN

    arduino nano ile yaptığınız bu devreyi arduino UNO ile yapsam devre çalışırmı ve kodlamada bi değişiklik olur mu

    1. Sezgin GÜL

      yapabilirsiniz. kodda değişiklik yapmanıza gerek yok.

  7. omer

    Pardon ben bir şey sormak istiyorum arduino ile motorsiklet motoruna start stop komutu verebilirmiyim? yardımcı olabilecek var mı?

  8. Resul

    merhaba ben 4 potansiyometre ile 4 servo kontrol etmek istiyorum bana yardım edebilirmisiniz

  9. Evin

    Sezgin bey sizin içinde uygunsa e mailimi versem projemin son haline baksanız nasıl yaparım diye bi baksanız olur mu acaba

    1. Sezgin GÜL

      sezgingul@outlook.com.tr mail adresimden iletişime geçebilirsiniz.

      1. Evin

        e mailden mesaj attım şimdi size

  10. Evin

    merhaba benim sonar projem var da hc-06 bluetooth modelini kullanıp bilgisayarın seri portunda aradaki mesafeyi yazmasını istiyorum araştırdım ama birşey bulamadım bana yardımcı olur musunuz acaba

    1. Sezgin GÜL

      mobil park sensörü projemize bakabilirsiniz. http://www.robimek.com/arduino-ile-mobil-park-sensoru-yapimi/
      pc ye aktarmak isterseniz de hc-06 bluetoothu serial dönüştürü ile pcye takarak haberleşme sağlayabilirsiniz. yani alıcı devre yerine pc geçecek.

      1. Evin

        baktım şimdi projenize ama ben hc-06 ile haberleşmenin nasıl olduğunu anladım kütüphanesi falan eklenmiyor mu yazılıma

        1. Sezgin GÜL

          serial iletişimde software kütüphanesini kullabilirsiniz iletişim pinlerini farklı pinlere tanımlamak ve standart iletişimle haberleşmede çakışma yaşanmamasını sağlar. Fakat kullanmasanız da olur direk rx ve tx pinleri üzerinden haberleştime yapabilirsiniz.

          1. Evin

            Sezgin bey sizi böyle rahatsız ettiğimin farkındayım ama nasıl yapacağımı inanın anlamadım:(

  11. çağrı

    hocam neden rx tx baglamadınızda ayrıca 3-4 yaptınız

    1. Sezgin GÜL

      softwareSerial kütüphanesi kullanırsan istediğin pinleri tx rx olarak tanımlayabilirsin. Burada da o şekilde tanımladım.

  12. melda

    Merhaba elimde şu an bir adet hc-06 modül bulunmakta..ben arduino pro miniden okuduğum sensor değerlerini android uğgulamama yazdırmak istiyorum..bunu hc-06 ile gerçekleştirebilir miyim

    1. Sezgin GÜL

      evet gerçekleştirebilirsiniz.

  13. İbrahim

    Bilgi paylaşımı için cok teşekkür ederim bu konudan belki farklı olarak bi soru sorucam sadece motorun oldugu baglantıya güç verdigim zaman mg995 servo motor basta kendi kendine 15-20 derecelik acı yapıyo kafasına göre ve elle motorun alt kısmına dokundugumda ufak titremeler var bunu nasıl engelliyebilirim pot a baglı degilken bu durum söz konusu ve 4.8 6 v aralıgında calısıyo mg995 arduinodan 5 v la besliyorum

  14. burak

    şemayı arduino uno için çizebilirmisiniz lütfen kafam karıştı

    1. Sezgin GÜL

      uno için de aynı pinler değişen bir şey yok.

  15. ERDEM

    MERHABA BU KODLA 1 ADET SERVOYU ÇALIŞTIRIYORUM ANCAK 5 ADET 10 K POT İLE 5 ADET SERVOYU KONTROL ETMEM LAZIM FLEX SENSÖRLÜ UYGULAMAYI YAPTIM ANCAK ÇOK STABİL ÇALIŞMADI BU KODU 5 TANE OLACAK ŞEKİLDE NASIL DÜZENLEYEBİLİRİZ ACİL YARDIMCI OLURSANIZ SEVİNİRİM

  16. Mehmet Aksoy

    İyi günler. Ben serial portan, potasyometrenin değerini okuyabiliyorum ancak servonun bağlı olduğu slave modunda olan hc05 ‘in serial portundan sürekli olarak ”0” değerini alıyorum bu değeri nasıl değişken yapabilirim? Teşekürler

    1. Sezgin GÜL

      baudrate değerlerini aynı yapın.

      1. Mehmet aksoy

        Baudrate değeri aynı, Baudrate değerini değiştirdim attırdım yine bir değişiklik olmadı? Başka ne tür gibi bir değişiklik yapabilirim? ilgin için teşekkürler bu arada..

        1. Sezgin GÜL

          baudrate değerini değiştirirsen bluetooth modüllerinde at komutuyla değerlerini değiştirmen gerekir.
          Biryerde yanlışlık yapıyorsun. potları servoyu bluetoothları ayrı dene çalıştıklarından emin ol.

  17. Halil DOLUMAY

    hc06 bluetooth modülüm var, cep telefonundan bluetooth kontrollü araç yaptım, hc06 ya 3,3v verdim, rx ve tx pinlerine voltaj bölücü dirençler koydum, ancak bluetooth çok kararsız hatta bazen çalışmadı. hc06 ya 5v ve voltaj bölücü dirençleri çıkararak tekrar denedim, modül gayet güzel çalışıyor, ilerde bana sorun çıkarır mı acaba, bu durumda kullanmak zararlı mı, teşekkürler.

    1. Sezgin GÜL

      bazı modüllerin çalışma gerilimi 3.6 ile 6v arasıdır ve bu modüllere 3.3v verildiğinde yeterli gerilim alınamadığı için iletişimi tam sağlayamaz. 5v verildiğinde stabil bir şekilde haberleşme sağlar. O yüzde 5v kullanmanda sakınca yoktur.

  18. MEHMET

    Merhaba
    Ben bluetooth modül olarak iki tane hc-05 kullandım. birisini master,birisi slave modunda kullandım. fakat veri akısı basladıgında servo titreme yapıyor. bunun sebebi nedir sizce?

    1. Sezgin GÜL

      İki nedeni vardır. Birincisi yeterli enerji verilmemiş olabilir.
      İkincisi ise potansiyometreden 100 milisaniyede bir veri gidiyor ve en ufak veri değişimi titremeye neden olur. Yani potansiyometre devrede temassızlık yaptığında potu çevirmediğiniz zaman da veri değişimi yapar.

  19. Huda

    Selam, Bu uygulamayı aşağı şekilde nasıl değiştirebilirim.
    VU Metre çalıştıracak sinyali bu devre konfigrasyonunu mantıksal olarak kulllanıp Bluetooth ile Nasıl çalıştırabilirim.Yani VU Metreyi çalıştıran 0-1 volt arasında voltaşı karşı taraftan RX ile alarak VU metreyi çalıştırmak istiyorum. Yardımcı olabilirmisiniz?

    1. Sezgin GÜL

      0-1 v değerini analog değere çevirip gönderebilirsin. Yani dac formuna çevirmen lazım.

  20. ACiiL

    öncelikle teşekkür ediyorum ilgilendiğiniz için. yalnız gönderdiğiniz linkte xbee kullanmışsınız ben uğraşıyorum uğraşıyorum onu bluetooth a uyarlayamadım ne önerirsiniz?

    1. Sezgin GÜL

      Bluetooth la da olur. Kodu değiştirmene gerek yok.

      1. ACiiL

        #include
        #define BT_SERIAL_TX 5
        #define BT_SERIAL_RX 3
        SoftwareSerial BluetoothSerial(BT_SERIAL_TX, BT_SERIAL_RX);
        int ResThumb = A4;
        int ResIndex = A3;
        int ResMiddle = A2;
        int ResAnnular = A1;
        int ResPinky = A0;

        int OpenedThumb =0;
        int OpenedIndex =0;
        int OpenedMiddle =0;
        int OpenedAnnular =0;
        int OpenedPinky =0;

        int ClosedThumb;
        int ClosedIndex;
        int ClosedMiddle;
        int ClosedAnnular;
        int ClosedPinky;

        int thumb =0;
        int index =0;
        int middle =0;
        int annular =0;
        int pinky =0;

        void setup()
        {
        Serial.begin(9600);
        BluetoothSerial.begin(9600);

        ClosedThumb = analogRead(ResThumb);
        ClosedIndex = analogRead(ResIndex);
        ClosedMiddle = analogRead(ResMiddle);
        ClosedAnnular = analogRead(ResAnnular);
        ClosedPinky = analogRead(ResPinky);
        }

        void loop()
        {
        thumb = analogRead(ResThumb);
        index = analogRead(ResIndex);
        middle = analogRead(ResMiddle);
        annular = analogRead(ResAnnular);
        pinky = analogRead(ResPinky);

        if(thumb > OpenedThumb)
        OpenedThumb = thumb;
        if(index > OpenedIndex)
        OpenedIndex = index;
        if(middle > OpenedMiddle)
        OpenedMiddle = middle;
        if(annular > OpenedAnnular)
        OpenedAnnular = annular;
        if(pinky > OpenedPinky)
        OpenedPinky = pinky;

        if(thumb < ClosedThumb)
        ClosedThumb = thumb;
        if(index < ClosedIndex)
        ClosedIndex = index;
        if(middle < ClosedMiddle)
        ClosedMiddle = middle;
        if(annular < ClosedAnnular)
        ClosedAnnular = annular;
        if(pinky < ClosedPinky)
        ClosedPinky = pinky;

        thumb = map(thumb ,ClosedThumb ,OpenedThumb ,0,180);
        index = map(index ,ClosedIndex ,OpenedIndex ,0,180);
        middle = map(middle ,ClosedMiddle ,OpenedMiddle ,0,180);
        annular = map(annular,ClosedAnnular,OpenedAnnular,0,180);
        pinky = map(pinky ,ClosedPinky ,OpenedPinky ,0,180);

        BluetoothSerial.write("<");
        BluetoothSerial.write(thumb);
        BluetoothSerial.write(index);
        BluetoothSerial.write(middle);
        BluetoothSerial.write(annular);
        BluetoothSerial.write(pinky);

        delay(30);
        }
        Eldiven kodunu bu şekilde değiştiriyorum aynı şekilde robot el kısmınıda ama BluetoothSerial kısımlarında karıştırıyo galiba bütün servolar saçma sapan hareketler içinde. Ne yapabilirm

        1. ACiiL

          robotik el için ise serial.read kısımlarını şu şekilde değiştirdim
          startPackage = Serial.read();
          AngThumb = BluetoothSerial.read();
          AngIndex = BluetoothSerial.read();
          AngMiddle = BluetoothSerial.read();
          AngAnnular = BluetoothSerial.read();
          AngPinky = BluetoothSerial.read();

        2. Sezgin GÜL

          baudrate değerlerini arttır ama öncelikle bluetooth modüllerin at modlarından baudrate değerlerini değiştirmen lazım

  21. ACiiL

    ben 5 ayrı flexten değer alıp bu değerleri bluetoothla göndererek 5 ayrı servoyu çalıştırmaya uğraşıyorum fakat işin içinden bir türlü çıkamadım bi fikir verebilir misiniz? Tek bir flexten değer alıp servoya bluetoothla gönderdiğim zaman sorun yok fakat diğer flexlerden de değer geldiği zaman tabi haliyle sapıtıyor nasıl bir çözüm bulunabilir?

    1. Sezgin GÜL

      Burdaki projenin kodlarını kullan http://www.robimek.com/arduino-ile-kablosuz-robotik-el-kontrol-projesi/ 5 flex sensör aynı anda veri gönderdiğinde sapıtmasının sebebi baudrate değeridir büyük bir ihtimale. Yüksek yaparsan sorun çözülür