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:
- 2 Adet Arduino ( Nano yeterli)
- Servo motor
- 10k Potansiyometre
- Hc-05 Bluetooth Modül
- 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.
İki tane hc_05 bluetooth la da aynı şey elde edebilir miyiz
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?
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
BU PROJEDE BLUETOOTH YERİNE KIZIL ÖTESİ KULLANIRSAK NASI OLUR YAZILIMI VE KURULUMU YARDIMCI OLABİLİRMİSİNİZ
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
arduino nano ile yaptığınız bu devreyi arduino UNO ile yapsam devre çalışırmı ve kodlamada bi değişiklik olur mu
yapabilirsiniz. kodda değişiklik yapmanıza gerek yok.
Pardon ben bir şey sormak istiyorum arduino ile motorsiklet motoruna start stop komutu verebilirmiyim? yardımcı olabilecek var mı?
merhaba ben 4 potansiyometre ile 4 servo kontrol etmek istiyorum bana yardım edebilirmisiniz
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
sezgingul@outlook.com.tr mail adresimden iletişime geçebilirsiniz.
e mailden mesaj attım şimdi size
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
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.
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
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.
Sezgin bey sizi böyle rahatsız ettiğimin farkındayım ama nasıl yapacağımı inanın anlamadım:(
hocam neden rx tx baglamadınızda ayrıca 3-4 yaptınız
softwareSerial kütüphanesi kullanırsan istediğin pinleri tx rx olarak tanımlayabilirsin. Burada da o şekilde tanımladım.
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
evet gerçekleştirebilirsiniz.
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
şemayı arduino uno için çizebilirmisiniz lütfen kafam karıştı
uno için de aynı pinler değişen bir şey yok.
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
İ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
baudrate değerlerini aynı yapın.
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..
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.
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.
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.
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?
İ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.
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?
0-1 v değerini analog değere çevirip gönderebilirsin. Yani dac formuna çevirmen lazım.
ö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?
Bluetooth la da olur. Kodu değiştirmene gerek yok.
#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
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();
baudrate değerlerini arttır ama öncelikle bluetooth modüllerin at modlarından baudrate değerlerini değiştirmen lazım
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?
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