Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

hc-06 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
hc-06 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

1 Mayıs 2021 Cumartesi

Arduino Kullanarak HC-06 Bluetooth ile DC motor hız ve yön kontrolü

 

Arduino Kullanarak Bluetooth ile DC motor hız ve yön kontrolü 


Arduino kullanarak Bluetooth tabanlı dc motor hız ve yön kontrolü, Bu gömülü sistemler projesinde motorları HC-06 Bluetooth cihazı ve android uygulaması ile kontrol edeceğiz Android uygulamasında düğmeye her basıldığında, Arduino verileri seri iletişim yoluyla alacak ve bu verileri önceden kaydedilmiş verilerle karşılaştıracaktır. Veriler eşleşirse, o fonksiyonun içinde yazılan kod çalıştırılacak ve motorlar buna göre çalışacaktır. Kullanacağımız uygulama bluetermdir
Bluetooth ve Arduino donanımı kullanarak motorları kontrol etmeBu proje için gerekli bileşenler aşağıdaki gibidir
  • Arduino Uno
  • HC-06 Bluetooth cihazı
  • L293D Motor Kontrolörü IC
  • DC Motorlar
  • 9V pil
  • Bağlantı telleri
  • Breadboard

Bluetooth tabanlı dc motor hız ve yön kontrolünün Devre ŞemasıBluetooth ve Arduino donanımı kullanarak motorları kontrol etme

Öncelikle L293D IC'yi Arduino ile bağlayacağız. L293D motor kontrolörü IC'nin Arduino ile bağlantıları aşağıdaki gibidir.

  • Arduino'nun 5V pini ile L293D IC'nin 1, 9, 16 numaralı pinleri.
  • L293D IC'nin Pin 2'si Giriş pinidir; Arduino'nun 6 numaralı pinine bağlayın.
  • L293D IC'nin 3 numaralı pini motorun bir ucuna ve motorun diğer ucunu L293D'nin 6 numaralı pimine bağlayın.
  • 4, 5, 12 ve 13 numaralı pinler, L293D IC'nin GND pinleridir; bunları Arduino'nun GND'sine bağlayın.
  • L293D IC'nin Pin 7'si Giriş pinidir; Arduino'nun 5 numaralı pinine bağlayın.
  • Pin 8, L293D IC'nin VCC pinidir, bunu akünün pozitif ucuna ve akünün negatif ucunu Toprağa bağlayın.
  • L293D IC'nin Pin 10'u, ikinci motor için Giriş pinidir; Arduino'nun 9 numaralı pinine bağlayın.
  • L293D'nin 11 numaralı pini motorun bir ucuna ve motorun ikinci ucunu L293D'nin 14 numaralı pimine bağlayın.
  • L293D'nin Pin 15'i, ikinci motor için ikinci Giriş pinidir; Arduino'nun 10 numaralı pinine bağlayın.

Daha sonra HC-06 Bluetooth cihazının bağlantılarını Arduino ile yapın. Bluetooth cihazı HC-06'nın Arduino ile bağlantıları aşağıdaki gibidir

  • HC-06'nın VCC'sinden Arduino'nun 5V'una
  • HC-06'nın GND'sinden Arduino'nun GND'sine
  • HC-06'nın TX'sini Arduino'nun RX pinine
  • HC-06'nın RX pinini Arduino'nun TX pinine

Bluetooth tabanlı dc motor hız ve yön kontrolünün çalışması

HC-06 Bluetooth modülü, Arduino ile seri iletişim yoluyla çalışır, bu da Arduino'nun verileri Seri yoluyla gönderip alacağı anlamına gelir.Uygulamadan bilgi göndermek için önce onu yüklememiz gerekir. Şunlar arasından App yükleyebilirsiniz burada . APP'yi kurduktan sonra, onu ve seçeneklerden açın ve Bluetooth modülüne bağlayın. Bluetooth modülüne bağladıktan sonra size mavi boş ekran gösterecektir. Şimdi, oraya '1' yazacağınız zaman, sol motor hareket etmeye başlayacak ve '2' yazacağınız zaman, sağ motor hareket etmeye başlayacak ve benzer şekilde '3' yazarak her iki motor da dönecektir. saat yönünde ve '4' yazıldığında, her iki motor da saat yönünün tersine dönecektir. '0' yazıldığında, her iki motor da hareket etmeyi durduracaktır.

Bluetooth tabanlı dc motor hız ve yön kontrolü kodu 

int first_motor_pin1 = 11;

int first_motor_pin2 = 10;

int second_motor_pin1 = 9;

int second_motor_pin2 = 8;

int state;

int flag = 0;       

void setup ( ) {

  Serial.begin (9600);

  pinMode (first_motor_pin1, OUTPUT);

  pinMode (first_motor_pin2, OUTPUT);

  pinMode (second_motor_pin1, OUTPUT);

  pinMode (second_motor_pin2, OUTPUT);

}

void loop ( ) {

if(Serial.available( ) > 0){    

      state = Serial.read( );  

      flag = 0;

    }  

    if (state == '1') {

       digitalWrite (first_motor_pin1, LOW);

      digitalWrite (first_motor_pin2, HIGH);

      digitalWrite (second_motor_pin1, HIGH);

      digitalWrite (second_motor_pin2, HIGH);

          if(flag == 0){

          Serial.println("Left Motor ON");

          flag = 1;

        }

    }  

    else if (state == '2') {

        digitalWrite (first_motor_pin1, HIGH);

      digitalWrite (first_motor_pin2, HIGH);

      digitalWrite (second_motor_pin1, HIGH);

      digitalWrite (second_motor_pin2, LOW);

        if(flag == 0){

          Serial.println("Right Motor ON");

          flag = 1;

    }

    }

    else if (state == '3') {

        digitalWrite (first_motor_pin1, LOW);

      digitalWrite (first_motor_pin2, HIGH);

      digitalWrite (second_motor_pin1, HIGH);

      digitalWrite (second_motor_pin2, LOW);

          if(flag == 0){

          Serial.println("Both Motors Clockwise");

          flag = 1;

        }

    }

     else if (state == '4') {

         digitalWrite (first_motor_pin1, HIGH);

      digitalWrite (first_motor_pin2, LOW);

      digitalWrite (second_motor_pin1, LOW);

      digitalWrite (second_motor_pin2, HIGH);

        if(flag == 0){

          Serial.println("Both Motors Anti-clockwise");

          flag = 1;

        }

    }

    else if (state == '0') {

         digitalWrite (first_motor_pin1, LOW);

      digitalWrite (first_motor_pin2, LOW);

      digitalWrite (second_motor_pin1, LOW);

      digitalWrite (second_motor_pin2, LOW);

        if(flag == 0){

          Serial.println("Both Motors OFF");

          flag = 1;

        }

    }

}

Kod Açıklama

Öncelikle motorları kontrol etmek için olan koddaki pinleri başlattık. Dört pini başlattık, ikisi birinci motoru kontrol etmek için ve diğer ikisi ikinci motoru kontrol etmek içindir. Başlattığımız durum değişkeni, Bluetooth cihazından gelecek çıkışı depolamak içindir. Başlatılan bayrak değişkeni, dizinin yalnızca durumdan sonra yazdırılmasını sağlar.

int first_motor_pin1 = 11;

int first_motor_pin2 = 10;

int second_motor_pin1 = 9;

int second_motor_pin2 = 8;

int state;

int flag = 0;

Daha sonra setup fonksiyonunda tüm pinleri çıkış pinleri olarak ilan ettik çünkü çıkışı bu pinlerden L293D motor kontrol cihazına vereceğiz. Arduino'dan gelen bu çıktı, L293D motor kontrolörü IC'nin girişi olacaktır.

  pinMode (first_motor_pin1, OUTPUT);
  pinMode (first_motor_pin2, OUTPUT);

  pinMode (second_motor_pin1, OUTPUT);

  pinMode (second_motor_pin2, OUTPUT);

Daha sonra döngü fonksiyonunda verinin mevcut olup olmadığını veya android uygulamasındaki butona basılı olup olmadığını kontrol ettik. Veriler mevcut olacaksa, durum değişkeninde saklanacaktır. Ardından bu verileri kodumuzda önceden kaydedilmiş verilerle karşılaştıracağız. Veriler eşleşirse, o zaman yazılan kod çalıştırılır ve motor buna göre çalışır.

if(Serial.available( ) > 0){    

      state = Serial.read( );  

      flag = 0;

    }  

    if (state == '1') {

       digitalWrite (first_motor_pin1, LOW);

      digitalWrite (first_motor_pin2, HIGH);

      digitalWrite (second_motor_pin1, HIGH);

      digitalWrite (second_motor_pin2, HIGH);

          if(flag == 0){

          Serial.println("Left Motor ON");

          flag = 1;

        }

    }

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

29 Nisan 2021 Perşembe

HC-06 Bluetooth Modül ve Arduino

 

HC-06 Bluetooth ve Arduino


HC06 Bluetooth 2.0 Modülü, kısa menzilli ve en ucuz iletişim modüllerinden biridir. Çok düşük güç tüketir ve 2.0 Bluetooth teknolojisi ile. Modülün temel amacı, iki mikro denetleyici ve sistem arasında kısa menzilli iletişim kurmaktır. Bluetooth modülü çoğunlukla Arduino / Mikrodenetleyici ile sadece proje geliştirmede kullanır, çünkü modül modern bir Bluetooth'un sunduğu tüm iletişime sahiptir. Tek sorun, modülün yalnızca slave işlevlerini gerçekleştirmesidir. Hatta son slave'in herhangi bir izin veya doğrulama olmaksızın bağlanması için dahili bir depolama yöntemine sahiptir. Otomatik bağlantı ve diğer yöntemler, HC06'daki komut modu aracılığıyla değiştirilebilir.





HC06 Pin Yapılandırması

Modül HC06, seri iletişim (UART) sunan bir bağımlı Bluetooth cihazıdır. Modülün yalnızca iletişim ve güç pimleri vardır. Ayrıca diğer Bluetooth modüllerinde olduğu gibi herhangi bir gösterge yoktu. HC06'nın tüm pimleri:

HC06 Bluetooth Modülü Pinout

 

VCC

HC06 modülü, cihazı çalıştırmak için + 5V ile bağlanan tek bir pime sahiptir.

GND

Modülün çalışması için harici cihazlara ve güç kaynağına bağlanır ve bunu gerçekleştirmek için ortak bir zemin gereklidir. GND pimi ortak bir zemin oluşturmaya yardımcı olur.

TX

Cihazdaki iletişim yöntemi UART olup, TX pinleri veri gönderimi içindir.

RX

Bu pin, Arduino veya Microcontrollers gibi harici cihazlarla UART iletişimindeki verilerin alınmasına yardımcı olur.

HC06 Bluetooth Modülü Özellikleri

  • HC06 BT modülü, otomatik olarak bağlanmalarına yardımcı olan son aygıt adını hatırlama özelliğine sahiptir.
  • Yalnızca kısa bir mesafeden 2-3MBs hızına kadar veri gönderebilir.
  • Bluetooth Modülü HC06 tam bir bağımlıdır ve hatta komut modu ile değiştirilebilir.
  • Modül varsayılan olarak hem komut hem de veri moduna sahiptir.
  • Cihaz, çalışma voltajı 5V olan ve iç yapısı sayesinde herhangi bir TTL / CMOS cihazı ile çalışabilir.
  • 2.4GHz dahili anteni sayesinde modülde herhangi bir anten gereksinimi olmayacaktır.
  • HC06 için veri aktarımı GFSK teknolojisine dayanmaktadır. Bu nedenle, veri güvenliği için şifreleme ve kimlik doğrulamaya da sahiptir.
  • Modülün çalışma sıcaklığı -20 ile +55 arasındadır ve 20mA akımda çalışmaktadır.

Alternatif BT seçenekleri

HC05 , HM10 , HC03, HC03

HC06 nasıl kullanılır

Bu Bluetooth modülü, UART iletişimine sahip herhangi bir mikrodenetleyici ile kullanılabilir. Her cihazda donanım serisi ve çoğu cihazda yazılım serisi mevcuttur. Burada HC06'nın Arduino ile nasıl kullanılacağını öğreneceksiniz ve aynı yöntem diğer mikrodenetleyiciler ve hatta kartlarla çalışmaya yardımcı olacaktır. İlk olarak, modülü verilen devre şemasına göre bağlayın. O zaman önce cihazın nasıl çalıştığını anlayın.

HC06 Bluetooth Modülü arduino UNO ile

Hc06, şifre kullanımıyla sadece güç açılarak harici cihazlara bağlanabilir.
  • Varsayılan Parola - 1234 veya 0000

BT verileri seri pinlere aktarmaya başlayacak ve bunları okumak için Arduino / mikrodenetleyicinin seri okuma programlaması yardımcı olacaktır.

Donanım Seri Haberleşme Arduino

Arduino'da, verileri seri olarak okumak ve yazmak için iki yöntem faydalıdır. İlki, varsayılan yöntem olan Donanım serisidir. Donanım serisini kullanmak için aşağıdaki kod yardımcı olacaktır.

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

void loop() {
if (Serial.available() > 0 )
{
byte data = Serial.read();
Serial.print(data);
}
  Serial.print("DATA");
Serial.write("DATA");
}


İlk komut serial.begin, iletişimin baud hızını başlatmak içindir. HC06 modülünün varsayılan baud hızı 9600'dür ancak baud hızı değiştirilebilir. UART iletişimi olan her cihaz, belirli seviyelerde baud hızında değişiklik sunan yerleşik yöntemlere sahiptir. İkinci komut serial.available olup gelen seriyi tespit eder ve en önemlisi serial.read'dir. Serial.read, harici modülden veri okumak içindir. Bu nedenle, her zaman bayt değişkenindeki verileri okumayı aklınızda bulundurun, çünkü veriler modül arasında gidip gelir her zaman bayt cinsindendir. Serial.write / Serial.print, verileri göndermek içindir. Aşağıdaki komut kullanılarak herhangi bir veri harcanabilir.

Komut Modu HC06

Komut modu, fabrika ayarlarının değiştirilebildiği hc06 BT modülü için varsayılan ayar modlarından biridir. Komut moduna erişmek için yukarıdaki kod kullanılabilir, ancak baud hızının farklı olması gerekir. Komut modu için baud hızı 38400'dür. Baud hızını 38400'de yaptıktan sonra komutlar Arduino IDE'nin seri monitöründen çalışacaktır. Bunlar, cihaz ayarlarını değiştirmeye yardımcı olan aşağıdaki genel komutlardır.

KOMUTFONKSİYONLAR
ATKomut moduna girmek veya iletişimi doğrulamak için.
+ VERSİYONDACihaz firması bu komutla görüntülenebilir.
AT + NAMEnameAygıtın yeni adını belirlemek için "adı" değiştirin.
AT + PIN1234Modül PIN kodunu 1234 olarak ayarlar
AT + BAUDXX'i baud hızına göre bir sayı ile değiştirin.

1. 1200

2. 2400

3. 4800

4. 9600

5. 19200

6. 38400

7. 57600

8. 115200

9. 230400

10. 460800

11. 921600

12. 1382400

Komut göndermenin iki yöntemi vardır. Birincisi onları doğrudan yazmak, ikincisi ise Arduino'nun COM portunda bulunan Serial.print komutuyla. sadece aşağıdaki örnekte olduğu gibi komutu girin:

Serial.print ("AT");

Bazı cihazlarda, modül ve yazılım sürümlerinden birine bağlı olan tek yöntem çalışır.

HC06 için Yazılım Seri Arduino

Yazılım seri yöntemi, cihazı UART iletişimiyle kullanmak için en iyi yöntemdir. Yazılım serisi, verileri bayt cinsinden oluşturmak ve bunları tam olarak UART gibi iletmek ve almak için dijital pinleri kullanır. Aşağıdaki kod, yazılım serisini kullanmaya ve diğer cihazlar için donanım serisini önlemeye yardımcı olacaktır:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
mySerial.begin(38400);
}

void loop() {
if (mySerial.available())
Serial.print(mySerial.read());
}
mySerial.print(Serial.read());
mySerial.write(Serial.read());
}

Yukarıdaki kodda, pin 10, RX pini ve 11 ve TX olarak hareket edecektir. Her iki pim de değiştirilebilir.

HC06 Bluetooth Modülü arduino UNO Yazılım Seri ile

Yazılım seri iletişiminin temel amacı, diğer cihazlar için donanım serisini bırakmaktır. Böylece Arduino ile kesintisiz çalışabilirler. Yazılım serisi, bayt cinsinden veri aktarımı nedeniyle her türlü veri için Bluetooth HC06 ile uyumludur. Aksi takdirde, yalnızca 0-255'ten tamsayı biçiminde veri gönderebildiği için yazılım serisinin uygulanması zordur.

Arduino ve DHT11 ile IOT Örnek HC06

Burada bir IoT uygulaması için Bluetooth'u entegre edeceğiz. Ev içi üslerde, Bluetooth oda sıcaklığını algılamak için kullanılabilir. DHT11'i sıcaklık algılama için ve HC06 Bluetooth'u verileri iletmek için kullanacağız. Arduino, her iki cihazın da temel işlemlerini gerçekleştirecektir. İşte aşağıdaki devre.

HC-06 Bluetooth Modülü, arduino UNO ve DHT11 ile

Çalışması için Arduino kodunun yüklenmesi gerekiyor ve işte kod.

#include "DHT.h"

DHT dht(2, DHT11);

void setup() {
  Serial.begin(9600);
  dht.begin();
  pinMode(3, OUTPUT);
}

void loop() {
  float temp = dht.readTemperature();
  float hum = dht.readHumidity();

  Serial.print(temp);
  delay(100);
  Serial.print(hum);
  delay(1000);
  if (temp == 25)
    digitalWrite(3, HIGH);
  else
    digitalWrite(3, HIGH);
  }

Kod, verileri analog giriş pinlerinden alacak ve daha sonra bunları hc06 Bluetooth'a iletecektir. Bluetooth, verileri Bluetooth alıcı cihaza iletecektir. Alıcı cihaz ekran, bilgisayar veya akıllı telefon gibi herhangi bir şey olabilir. Ardından yayın sinyali her saniye görüntülenebilir. Kodun sıcaklık artışı için bir sınırı vardır. Sıcaklığın 50 derecenin üzerine çıkması durumunda, sesli uyarı, kullanıcıları uyarmak için devreye girecektir.









Örnek Kullanım Alanları 

  • Çoğu uzaktan kumandada, modül ucuzluğundan dolayı yaygındır.
  • Robotlar ve arabalar için iletişim kurmak en iyisidir. Karmaşık bağlantılardan kaçınmaya yardımcı olur.
  • Toplu Bluetooth cihazı için mühendislik projelerinde, modül yaygındır.
  • Cep telefonu aksesuarlarında, HC06 modülü yaygındır çünkü cep telefonu çoğunlukla bir ana ve bir bağımlı cihaz olarak işlev görür.

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.