Robotik Kodlama

Robotik Kodlama
Ana Sayfa

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

2 Mayıs 2021 Pazar

Arduino ile Rotary Encoder(Döner Kodlayıcı)

 

Arduino ile Rotary Encoder


Döner Kodlayıcı:  Döner, sonsuza kadar döndürmek için kullanabileceğiniz bir cihazdır. Size bir potansiyometre gibi görünebilir ancak kullanımda farklıdır. Açısal konumu belirlemek için kullanabileceğiniz bir konum sensörü türüdür. Dönme hareketine bağlı olarak analog veya dijital sinyal üretir.Bunlar ledin parlaklığını kontrol etmek, servoları kontrol etmek ve daha birçok şey için kullanılabilir.



Döner kodlayıcının başlangıcı, ortası veya sonu yoktur, böylece istediğiniz kadar döndürebilirsiniz. Birçok döner kodlayıcıda, onu hareket ettirdiğinizde bir çarpma hissedeceksiniz. Bunlar adımlar olarak bilinir. Çoğunun 12 adımı vardır, ancak bunlar 200'e kadar çıkabilir. Çıkış sinyali veya algılama teknolojisi olarak sınıflandırılan birçok döner kodlayıcı türü vardır. Kullandığımız, çıkışlı döner kodlayıcıdır ve en basit olanıdır.








Rotary Enkoderler Nasıl Çalışır? 

Döner kodlayıcı bize 90 derece faz dışı olan ve her dönüşte tamamlanan darbe sayısı değişen iki kare dalga çıkışı (A ve b) verir. A sinyal darbesi pozitiften her gittiğinde B darbesinin değerini okuruz. sıfıra. Kodlayıcı saat yönünde döndürüldüğünde, B darbesi pozitiftir ve kodlayıcı saat yönünün tersine çevrildiğinde, B darbesi negatiftir. Böylece her iki çıkışı mikro denetleyici ile kontrol ederek ve A darbelerinin sayısını sayarak dönüş yönünü belirleyebiliriz. Darbelerin sıklığını sayarak da hızı belirleyebiliriz. Yani, birçok avantajı olduğunu ve basit bir potansiyometreden çok daha fazla uygulama olduğunu görebilirsiniz. Bu eğitimde, onu en basit uygulamalarda kullanacağız. Bir ledin parlaklığını onu kullanarak kontrol edeceğiz.

Döner kodlayıcı Pin Çıkışı

Döner kodlayıcının aşağıdaki gibi 5 pimi vardır.döner kodlayıcı

  • CLK: Enkoder pimi A
  • DT: Enkoder pimi B
  • SW: Basmalı Düğme Anahtarı Yok
  • + 5V: 5V güç kaynağı
  • GND: Kodlayıcı Pin C

Modül, anahtarlar kapatıldığında çıkış düşük, anahtarlar açıldığında yüksek olacak şekilde tasarlanmıştır.


Döner kodlayıcı ile Arduino arduino ile döner kodlayıcı arabirimi

Öncelikle kodlayıcının 5V ve Gnd'sini Arduino'nun 5V ve Gnd'sine bağlayın. Ardından CLK ve DT olan kodlayıcı pini A ve Kodlayıcı pini B'yi sırasıyla Arduino pimi 19 ve 18'e bağlayın. Daha sonra kodlayıcı buton pimini (SW) Arduino pin 28'e bağlayın. Son olarak parlaklığını kontrol edeceğimiz led'i bağlamamız gerekiyor. Led'in pozitif tarafını Arduino'nun 3. pinine ve negatif tarafını Arduino'nun zeminine bağlayın. Yani döner kodlayıcıyı bir yöne hareket ettireceğimizde ledin parlaklığı artacak ve diğer yönde kullanacağımız zaman ledin parlaklığı azalacaktır. Bu, onu kullanabileceğimiz en basit örnektir. Bununla birlikte, motoru ve onu kullanan diğer birçok şeyi de kontrol edebiliriz.

LED'lerin parlaklığını kontrol etmek için kodlayıcı döner kodlayıcı 

Bu kod, ledin parlaklığını kontrol etmek için döner kodlayıcı içindir.

int brightness = 120 ;                                       // how much led will be bright at start

int fadeAmount = 10 ;                                      

unsigned long currentTime ;

unsigned long loopTime ;

const int pin_A = 19;                                  // initializing pin 19 for encoder pin A

const int pin_B = 18;                               // initializing pin 18 for encoder pin B

int pushbutton = 28;                               // initializing pin 28 for push button.

unsigned char encoder_A;

unsigned char encoder_B;

unsigned char encoder_A_prev=0;

void setup ( )  {

  pinMode ( 3 , OUTPUT ) ;                       // declaring pin 3 as output for the led

  pinMode ( pin_A , INPUT ) ;                    // declaring pin 19 as input

  pinMode ( pin_B , INPUT ) ;                   // declaring pin 18 as input

  currentTime = millis ( ) ;

  loopTime = currentTime ; 

} 

void loop ( )  {

  currentTime = millis ( ) ;                           // This command will get the current elapsed time

  if ( currentTime >= ( loopTime + 5 ) ){              // 5ms since last check of encoder = 200Hz 




    encoder_A = digitalRead ( pin_A ) ;                 // Reading the encoder pins

    encoder_B = digitalRead ( pin_B ) ;                 // Reading the encoder pins

    if ( ( !encoder_A ) && ( encoder_A_prev ) ) {

      // A has gone from high to low

      If ( encoder_B )  {                                  // encoder is moved clock wised so B is high

        If ( brightness + fadeAmount <= 255 ) brightness += fadeAmount ;    // This command will increase the brightness      

      }   

      else {

        // if encoder is moved counter-clockwise then b will be low     

        If ( brightness - fadeAmount >= 0 ) brightness -= fadeAmount ;       // This will decrease the brightness

      }   

    }   

    encoder_A_prev = encoder_A ;                                                                            // this will Store value of A for next time   

    analogWrite ( 3, brightness ) ;                                                                                  // This will set the brightness of pin 3:

    loopTime = currentTime ;  

  }

}

Bir Motoru Döner Kodlayıcı Kullanarak Kontrol Etme

dc motor hız kontrolü için döner kodlayıcı

Bu eğitimde, döner kodlayıcıyı kullanarak bir dc motoru kontrol edeceğiz. Bir motora güç sağlamak için 9V güç kaynağı ve L91105 motor kontrolörü kullanacağız.

Arduino kullanarak döner kodlayıcı ile DC motor hız kontrolü

volatile boolean Turnfound;                        // initializing a Boolean turn

volatile boolean up;                             // initializing a Boolean for speed up

const int CLK=2;   // initializng a const int for clock signal

const int DT=3;    // initializng a const int for Reading DT signal

const int SW=4;    // initializng a const int for Reading Push Button switch




// Connections for L9110 motor controller

#define L9110_B_IA 10                                        // initializing pins for motor

#define L9110_B_IB 11                                                 

// Motor Speed & Direction

#define MOTOR_SPEED L9110_B_IA                                       // Motor PWM Speed

#define MOTOR_DIRECTION L9110_B_IB                                              // Motor Direction
// Interrupt routine runs if CLK goes from HIGH to LOW

void isr ()  {

delay(4);                                                                                              // giving a delay

if (digitalRead(CLK))                                                                        // reading the clock signal

  up = digitalRead(DT);

else

   up = !digitalRead(DT);

Turnfound = true;

}




void setup ()  {

pinMode(CLK,INPUT);                                // initializing clk pin as input

pinMode(DT,INPUT);                                 // initializing DT pin as input

pinMode(SW,INPUT);                                // initializing SW pin as input

digitalWrite(SW, HIGH);                           // Pull-Up resistor for switch

attachInterrupt (0,isr,FALLING);

Serial.begin (9600);                             // Setting baud rate at 9600

Serial.println("Start");

pinMode( MOTOR_DIRECTION, OUTPUT );

pinMode( MOTOR_SPEED, OUTPUT );

digitalWrite( MOTOR_DIRECTION, LOW );       // This will Set motor to off

digitalWrite( MOTOR_SPEED, LOW );

}


void loop ()  {

static long RotaryPosition=0;     

if (!(digitalRead(SW))) {  

   if (RotaryPosition == 0)

   } else {

       RotaryPosition=0;

       digitalWrite( MOTOR_DIRECTION, LOW );                        //This will turn motor off

       analogWrite( MOTOR_SPEED, LOW );

       Serial.print ("Reset = ");

       Serial.println (RotaryPosition);

   }

}

// Runs if rotation was detected

if (Turnfound)  {

   if (up) {

     if (RotaryPosition >= 100) { // Max value set to 100

       RotaryPosition = 100;

     }else {

         RotaryPosition=RotaryPosition+2;}

   }else {

     if (RotaryPosition <= -100) { // Max value set to -100

       RotaryPosition = -100;}

       else {

         RotaryPosition=RotaryPosition-2;}}

   Turnfound = false;  // do NOT repeat IF loop until new rotation detected

   Serial.print ("Speed = ");  

   Serial.println (RotaryPosition);        // if Rotation is Clockwise

   if (RotaryPosition > 0 && RotaryPosition < 11) {

       digitalWrite( MOTOR_DIRECTION, LOW );                                                      //This will turn off the motor

       analogWrite( MOTOR_SPEED, LOW );

   }

   if (RotaryPosition > 10 && RotaryPosition < 21) {

     digitalWrite( MOTOR_DIRECTION, HIGH );                                                       // direction will be forward

     analogWrite( MOTOR_SPEED, 180 );                                   // PWM speed will be 180

   }




   if (RotaryPosition > 50 && RotaryPosition < 61) {

     digitalWrite( MOTOR_DIRECTION, HIGH );                                                       // direction will be forward

     analogWrite( MOTOR_SPEED, 100 );                                   // PWM speed will be 100

   }

   if (RotaryPosition > 90) {

     digitalWrite( MOTOR_DIRECTION, HIGH );                                                       // direction will be forward

     analogWrite( MOTOR_SPEED, 20 );                                                     // PWM speed will be 20

   }







// if Rotation is Counter-Clockwise




   if (RotaryPosition < 0 && RotaryPosition > -11) {

       digitalWrite( MOTOR_DIRECTION, LOW );                                                      // This will turn off the motor

       analogWrite( MOTOR_SPEED, LOW );

   }

   if (RotaryPosition < -10 && RotaryPosition > -21) {

     digitalWrite( MOTOR_DIRECTION, LOW );                                                        // direction will be reverse

     analogWrite( MOTOR_SPEED, 40 );                                                     // PWM speed will be 40

   }

   if (RotaryPosition < -40 && RotaryPosition > -51) {

     digitalWrite( MOTOR_DIRECTION, LOW );                                                        // direction will be reverse

     analogWrite( MOTOR_SPEED, 100 );                                   // PWM speed will be 100

   }

   if (RotaryPosition < -80 && RotaryPosition > -91) {

     digitalWrite( MOTOR_DIRECTION, LOW );                                        // direction will be reverse

     analogWrite( MOTOR_SPEED, 180 );                   // PWM speed will be 180

   }

   if (RotaryPosition < -90) {

     digitalWrite( MOTOR_DIRECTION, LOW );                                        // direction will be reverse

     analogWrite( MOTOR_SPEED, 200 );                   // PWM speed will be 200

   }

}}

 

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.

Arduino usb'den TTL'ye dönüştürücü Kullanmanın üç yolu

 

Arduino usb'den TTL'ye dönüştürücü Kullanmanın üç yolu


İnternette USB'den TTL'ye çözümler arayan birçok kişi var. Çünkü yeni kişisel bilgisayarlar ve özellikle dizüstü bilgisayarlar COM portu ile gelmiyor. Bu nedenle, USB'den TTL'ye dönüştürücü kullanımı, mühendisler arasında her geçen gün artmaktadır. Çoğunlukla gömülü sistemler alanıylailgili olan kişilerUSB'den TTL'ye dönüştürücü kullanmak istiyorlar. Piyasada birçok USB'den TTL'ye dönüştürücü mevcuttur. Bunları bu amaçla da satın alabilirsiniz. Ancak arduino uno R3 veya başka bir Arduino Kartınız varsa, bunu bir USB TTL dönüştürücü olarak kullanabilirsiniz. 










Kullanmanın üç yolu var. Her biri aşağıda açıklanmıştır:
  1. Arduino'nun Seri haberleşme kodunu kullanın : Bu yöntemde aşağıdaki kodu arduino'ya yükleyecek ve cihazınızı Arduino'nun seri iletişim pinleri ile bağlayacak ve IDE'nin seri monitöründen veri gönderip alabilirsiniz. Bu yöntem kod gerektirir. İhtiyacınıza göre kodun baud hızını değiştirebilirsiniz.
    #include <SoftwareSerial.h> 
    SoftwareSerial mySerial(10, 11); // RX, TX
    void setup() {
     // Open serial communications and wait for port to open:
     Serial.begin(9600);
     while (!Serial) {
     ; // wait for serial port to connect. Needed for native USB port only
     }
     Serial.println("Goodnight moon!");
    
    // set the data rate for the SoftwareSerial port
     mySerial.begin(4800);
     mySerial.println("Hello, world?");
    }
    
    void loop() { // run over and over
     if (mySerial.available()) {
     Serial.write(mySerial.read());
     }
     if (Serial.available()) {
     mySerial.write(Serial.read());
     }
    }

2. Mikrodenetleyiciyi Arduino'dan ayırın: İkinci yöntemde mikrodenetleyiciyi Arduino kartından ayıracaksınız. Artık arduino sadece USB'den TTL'ye dönüştürücü olarak kullanılacaktır. Ancak Arduino ve bilgisayara bağlamak istediğiniz cihazın Tx pinine Arduino'nun Tx pinini bağladığınızdan emin olunuz.

3. Arduino'nun Reset pinini ground ile bağlayın: Bu yöntemde Arduino'nun reset pinini toprağa bağlayacaksınız ve şimdi mikrodenetleyici tamamen baypas edecek ve bunu sadece USB TTL dönüştürücü olarak kullanabilirsiniz. 

Bu, çok popüler geliştirme kartından USB'ye TTL dönüştürücü tasarımıyla ilgili ve bu yöntemin kullanımı çok kolay ve ucuz. Umarım bu makaleyi beğenmişsinizdir ve daha fazla bilgi için web sitemizi ziyaret etmeye devam edin. Herhangi bir yardıma ihtiyacınız olursa, bu yazıya yorum yapmaktan çekinmeyin. Sorunuzu mümkün olan en kısa sürede yanıtlamak için elimizden gelenin en iyisini yapacağız.


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.

4 × 4 tuş takımı Arduino ile kullanımı

4 × 4 tuş takımı Arduino ile kullanımı


Gömülü aygıtlarda temel parçalardan biri tuş takımıdır ve gömülü aygıtlarla etkileşim için kullanılır , tuş takımı, hesap makinesinden bilgisayara diğer aygıtlara komutlar vermek için kullanılan giriş aygıtıdır; giriş tuş takımı aracılığıyla verilir, bu eğitimde tuş takımını Arduino ile nasıl arayüzleyeceğinizi öğreneceksiniz, Arduino kullanıcı dostu bir mini bilgisayardır. Tuş takımını Arduino kartı ile nasıl bağlayacağımızı ve Arduino ile tuş takımı arasındaki iletişim için programı nasıl yazacağımızı göreceğiz. 

arduino ile tuş takımı arabirimi

Kullanılacak Bileşenler:

  • 4 × 4 tuş takımı
  • Arduino UNO
  • Kabloların Bağlanması

Bu amaçla kullanılan orijinal bir tuş takımı satın aldıysanız, pimleri bulmanız gerekmez, ancak başka bir elektronik cihazdan aldıysanız, bu amaçla kullanılacak pimleri belirlemeniz gerekir.

Pinleri Tanımlama:

Öncelikle bir kağıt parçası almanız ve aşağıda gördüğünüz gibi sağ taraftaki diyagramı çizmeniz gerekiyor. Pim numaralarımı zaten yazdım (alt tarafa 1, 2, 3 ve sağ tarafa 7, 6, 5, 4), bunları çiziminizden çıkarabilirsin. Daha sonra, hangi pimlerin hangi tuşlara bağlı olduğunu bulmak için Ohm ölçüm cihazınızı kullanacaksınız. Yapmanız gereken ilk şey, tuş takımınızda kaç tane iğne olduğunu saymaktır (aşağıdaki fotoğrafta görüldüğü gibi) Fotoğrafta 14 pin gösteriliyor, ancak tüm pinler kullanılmıyor. Endişelenmeyin, bu prosedürü tamamladıktan sonra hangi pinlerin kullanılmadığını ve göz ardı edilebileceğini bileceksiniz.

Prosedür:

  • Ohm ölçüm cihazınızı 1 ve 2 numaralı pinlere bağlayın.
  • Sayaç kapanma olduğunu gösterene kadar tüm düğmelere basın.
  • Yeni bulduğunuz anahtarın sütun ve satırının yanındaki pin numaralarını yazın. Örnek: Ölçüm cihazınız 1 ve 5 numaralı pimlere bağlıdır. 7 numarasına bastığınızda ölçüm cihazınız tepki verdi. COL0'ın altına 1 ve ROW2'nin yanına 5 yazın.
  • Ölçüm cihazı tepki vermediyse, ölçüm kablosunu 2. pimden 3. pime hareket ettirin ve yukarıdaki 2. ve 3. adımları tekrarlayın.
  • Şimdi, lead'i bir sonraki pime taşımaya devam edin ve her pin için 2. ve 3. adımları tekrarlayın.
  • Sona ulaştığınızda, birinci ölçüm ucunu pim 1'den pim 2'ye taşıyın ve ikinci ölçüm ucunu en yüksek pimden 3 pimlere bağlarken 2 ve 3 numaralı adımları tekrarlayın.
  • Diyagramdaki tüm pimleri tamamen belirledikten sonra, kullanılmayan tuş takımı pimlerini güvenli bir şekilde göz ardı edebilirsiniz. Artık tuş takımını Arduino'nuza bağlamaya hazırsınız.

Tuş takımı satın aldıysanız, aşağıya bakın. Yukarıdaki adımları uygulamanıza gerek yok. Pin konfigürasyonunu bilmek için aşağıdaki şema yeterlidir.

Devre Kablolaması:

Devreyi kablolamak için verilen pim sırasını izleyin. Soldaki diyagramda gösterildiği gibi. Soldan sağa doğru başlayın.

Tuş Takımı Pin 1 (R4) -> Arduino Pin 5

Tuş Takımı Pin 2 (R3) -> Arduino Pin 4

Tuş Takımı Pin 3 (R2) -> Arduino Pin 3

Tuş Takımı Pin 4 (R1) -> Arduino Pin 2

Tuş Takımı Pin 5 (C4) -> Arduino Pin 9

Tuş Takımı Pin 6 (C3) -> Arduino Pin 8

Tuş Takımı Pimi 7 (C2) -> Arduino Pimi 7

Tuş Takımı Pin 8 (C1) -> Arduino Pin 6

Devreyi verilen şemaya göre bağlayın.

Tuş Takımı Kitaplığı Ekle:

Programlama bölümüne gitmeden önce ilk olarak Arduino resmi web sitesinden tuş takımı kitaplığını indirin.

Arduino kodu:

#include <Keypad.h>

const byte ROWS = 4; //four rows

const byte COLS = 4; //three columns

char keys[ROWS][COLS] = {

  {'1','2','3','A'},

  {'4','5','6','B' },

  {'7','8','9','C'},

  {'*','0','#','D'}

};

byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad

byte colPins[COLS] = {9, 8, 7, 6}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){

  Serial.begin(9600);

}

void loop(){

  char key = keypad.getKey();

  if (key != NO_KEY){

    Serial.println(key);

  }

}

Devrenin Test Edilmesi:

  1. Donanım bağlantısından sonra, örnek çizimi Arduino IDE'ye yerleştirin.
  2. Bir USB kablosu kullanarak, bağlantı noktalarını Arduino'dan bilgisayara bağlayın.
  3. Programı yükleyin.
  4. Sonuçları seri monitörde görün

Sonuç:

Artık hangi tuşa basarsanız basın, Arduino IDE'nin seri monitöründe gösterilir.


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.

HC-05 Bluetooth modülü ve Arduino ile LED Kontrol

 

HC-05 Bluetooth modülü ve Arduino ile LED Kontrol 


HC-05 Bluetooth modülü Arduino Bluetooth ile arayüz  kurmak, dünyayı meraklandıran bir iletişim şeklidir. Bluetooth artık bir tür iletişim için tasarlanmış her şeyde sağlanıyor. Akıllı telefonlardan otonom araç sistemlerine kadar mevcuttur. Ne kadar çok yönlü olduğunu kanıtlayan ilginç bir geçmişe ve çalışma sistemine sahiptir. Standartları belirleyen, Bluetooth yeteneklerini geliştiren Bluetooth Özel İlgi Grubu tarafından yönetilir.

HC-05 Bluetooth modülü, LED kontrol örneği ile arduino ile arayüz oluşturuyor

Tarih ve Adlandırma:

Bluetooth, bir telekom uzmanı Ericsson tarafından 1994 yılında icat edildi. RS-232 kablolarının bir alternatifidir. Intel tarafından desteklenen ve geliştirme ve lisanslama ile ilgilenen yukarıda belirtilen yapı oluşturulmuştur. Standartları kullanmak veya teknoloji ile ürünlerini pazarlamak isteyen herhangi bir firmanın yukarıdaki komitenin üyesi olması gerekmektedir. Organizatör üyeler:

  • Ericsson
  • Intel
  • Microsoft
  • Nokia
  • Lenovo
  • Toshiba
  • Motorola

Bluetooth adı nasıl ortaya çıktı? Bluetooth'u başlatan şirket, Avrupa'nın tarihi ve kültürel-dilbilimsel bir parçası olan İskandinav bölgesinin bir parçası olan İsveç'ten geliyor. İsim, Harald "Bluetooth" Gormsson adlı onuncu yüzyıl Danimarka ve Norveç Kralı'nın bir sıfatından geliyor. Yerel dilde, İngilizce'ye çevrilen Blåtand veya Blåtann, 'Bluetooth' oldu. İletişim standardı fikrinin geldiği, geçmiş çağlarda Vikingleri birleştirmesiyle biliniyordu, mobil teknolojiler için tek bir birleştirici standart olan bir şeydi. Aslında logo, Kral Harald "Bluetooth" Gormsson'un baş harfleri olan "Hagall" ve "Bjarkan" adlı iki İskandinav runesinin birleşiminden oluşuyor.

Bluetooth Nasıl Çalışır?

Bluetooth, 2,4 GHz'lik standart Endüstriyel, Bilimsel ve Medikal (ISM) kısa menzilli frekans bandında çalışır. Spesifik olarak, koruma bantlarını da içeren 2400–2483,5 MHz frekans bandında çalışır. Temelde veri paketlerinin 79 belirlenmiş Bluetooth kanalı üzerinden frekansa göre bölündüğü çoklu erişim yöntemi olan Frekans Atlamalı Yayılı Spektrum (FHSS) adı verilen bir şey kullanır. Her kanalın bant genişliği 1 MHz'dir. Ancak daha yeni Bluetooth 4.0 standardı 2 MHz'lik adımlar kullanır ve bu nedenle 40 belirlenmiş kanala sahiptir. Uyarlanabilir Frekans atlamalı yayılma spektrumu (AFH) adı verilen bir FHSS varyasyonunu kullanır; bu, teorik olarak girişimli kanalları atlar ve daha iyi iletişim sağlar.

Bluetooth, esasen ana-bağımlı mimariye sahip bir protokoldür, yani bir ana cihaz 7'ye kadar cihazla iletişim kurabilir. Bu, yalnızca 1'e 1 yapılandırmayla çalışabilen önceki kablolu iletişim protokollerine göre büyük bir avantajdı ve öyle. Esasen Kişisel Alan Ağları (PAN'lar) adı verilen yeni bir standart oluşturan Bluetooth, çok daha etkili geçici ağlar ortaya çıkardı ve geleneksel ana bilgisayar tabanlı ağlar olmadan iletişime izin verdi.

HC-05 Bluetooth modülünün Pin Yapılandırması 

Modül çıkışında 6 adet pin bulunmaktadır. Arka tarafa dönük, soldan sağa, bunlar aşağıdaki gibidir:

  1. EN AT komutları için kullanılır. Normal kullanımda bağlanması gerekli değildir.
  2. VCC Güç kaynağı + 5V
  3. GND Güç kaynağı topraklaması
  4. TxD Verici pim
  5. RxD Alma Pimi
  6. STATE Modül bağlı olsun veya olmasın dijital çıkış pabuç atma durumu verir.

Arduino ile arayüz oluşturan HC-05 Bluetooth modülünün Devre Şeması 

Devreyi aşağıdaki şekilde bağlayın:HC-05 Bluetooth modülü arduino ile arayüz oluşturuyor

  • Arduino UNO Rx (D0) ile Bluetooth Tx
  • Arduino UNO Tx (D1) ile Bluetooth Rx
  • Arduino UNO + 5V ile Bluetooth VCC
  • Arduino UNO GND ile Bluetooth GND
  • Şekilde gösterildiği gibi başka bir pimi bağlamanıza gerek yoktur.

NOT: Programı yüklemeden önce Arduino'nun Tx ve Rx pinlerini çıkardığınızda sahilden çıkarın. Programı yükledikten sonra onları tekrar bağlayın. Aksi takdirde bir hata alabilirsiniz.

Arduino ile arayüz oluşturan HC-05 Bluetooth modülü kodu 

int LED = 13; //led pin

int info = 0;//variable for the information comming from the bluetooth module

int state = 0;//simple variable for displaying the state

int checking = 8;

void setup() {

Serial.begin(9600); //making serial connection

pinMode(LED, OUTPUT);    //defining LED pin

digitalWrite(LED, LOW);  //once the programm starts, it's going to turn of the led, as it can be missleading.
  pinMode(checking, OUTPUT);

}

void loop() {

  int sta = digitalRead(checking);

  //Serial.println(sta);

  if(Serial.available() > 0){  //if there is any information comming from the serial lines...

    info = Serial.read();  

    state = 0;   //...than store it into the "info" variable

  }

  if(info == '1'){                //if it gets the number 1(stored in the info variable...

    digitalWrite(LED, HIGH);    //it's gonna turn the led on(the on board one)

    if(state == 0){              //if the flag is 0, than display that the LED is on and than set that value to 1

      Serial.println("LED ON");  //^^that will prevent the arduino sending words LED ON all the time, only when you change the state

      state = 1;

    }

   }

  else if(info == '0'){

    digitalWrite(LED, LOW);      //else, it's going to turn it off

    if(state == 0){

      Serial.println("LED OFF");//display that the LED is off

      state = 1;

     }

  }

}

Android uygulaması:

  • Android Play Store'dan “Arduino Bluetooth Controller” Uygulamasını Android telefonunuza indirin.
  • Uygulamayı açın ve HC-05 Bluetooth ile bağlanın.
  • Terminal modunu seçin.
  • LED'i açmak için 1'i gönderin.
  • LED'i kapatmak için 0 gönderin.

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.