1. Anasayfa
  2. Yapay Zeka

Sesle Arduino Devresini Kontrol Edelim

Sesle Arduino Devresini Kontrol Edelim
0

Türkçe Arduino sesli asistan oluşturmak, sesle arduino kontrolü CEYD-A ile mümkün. IoT çalışmaları yapan geliştiriciler için faydalı olacak bu yazıda,  HC 05 Bluetooth modülü ile CEYD-A’nın haberleşmeni sağlayacağız. Çalışmada gereksinimler şunlar:

Arduino Uno
HC 05 Bluetooth Modülü

1K Ohm ve 2.2K Ohm Dirençler

Breadboard

Jumper Kablolar (Erkek-erkek ve dişi-erkek)

CEYD-A uygulaması

 

Yapının şeması aşağıdadır. Son aşamada CEYD-A, HC-05 Bluetooth modülüne 1 veya 0 değer gönderecektir. Sesli arduino asistan gerçekleştirmek CEYD-A ile mümkün olacaktır.

Arduino işlemcisi ile CEYD-A nın temassız iletişim kurabilmesi için HC-35 Bluetooth modülü kullanıyoruz.

Arduino IDE ile oluşturulacak ve cihaza gönderilecek kod aşağıdadır. Serial ve BTSerial transfer hızlarını aynı yaptığınızdan emin olunuz. Örnekte 9600 baud kullanılmıştır. Direnç kullanılmasının sebebi HC-05 e gidecek olan gücü modülün zarar görmemesi için 3.3V a düşürmek ve akımı sınırlamak içindir.

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

char data;

void setup()
{
 // Open serial communications and wait for port to open:
 Serial.begin(9600);
 BTSerial.begin(9600);

 pinMode(13, OUTPUT);
 Serial.println("Enter AT command");
}

void loop()
{

 if (BTSerial.available())
 {
   data = BTSerial.read();
   Serial.write(BTSerial.read());
   
   if (data == '1')
   {
     digitalWrite(13, HIGH);
     Serial.println("Led yandi");
   }
   if (data == '0')
   {
     digitalWrite(13, LOW);
     Serial.println("Led sondu");
   }
 }

 if (Serial.available())
 {
   BTSerial.write(Serial.read());
 }
}

Eğer CEYD-A tarafından tek karakter (char) değil de kelime (String) tipinde gönderim yapıyorsanız, data değişkenini aşağıdaki gibi String tanımlayabilirsiniz. Kodun gerekli olan kontrollerini de değiştirebilirsiniz.

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


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

void loop()
{
if (BTSerial.available())
{
String data = BTSerial.readString();
Serial.print(data);
}
if (Serial.available())
{
char str[255];
Serial.readString().toCharArray(str,255);
BTSerial.write(str);
}
}

 

Devrenin Son Hali

Arduino Mega ile Bluetooth modulü bağlantı örneği.
Eğer elinizde farklı dirençler var ise aşağıdaki gibi 4 adet 10K direnci paralel ve 3 adet 330ohm luk direnci seri bağlayarak benzer bir devre de oluşturabilirsiniz.

CEYD Komutları

Devrenin çalışır halde olmasını sağladıktan sonra, şimdi de CEYD-A’nın desteklediği komutlara bir göz atalım:

cmdlistbluetooth
Mobil cihaza bağlı eşleştirilmiş tüm bluetooth modüllerini ekrana getirir. Gelen listeden HC-05 i seçerseniz bağlanmaya çalışır.
Seçilen modülün MAC adresi staBluetoothMacAddress değişkeninde sonradan kullanılmak üzere saklanır.

cmddiscoverbluetooth
Mobil cihazın bulduğu henüz eşleştirilmemiş tüm bluetooth modüllerini ekrana getirir.

cmdconnectsocketbluetooth (MAC ADRESİ)
Bluetooth modülün MAC adresini parametre olarak gösterip ilgili modüle socket bağlantısı sağlar.

cmdsendbluetooth (DEĞER)
Bluetooth modülüne parametredeki değeri gönderir.

cmdreceivebluetooth
Bluetooth modülünde kuyrukta bekleyen değerleri alır ve gösterir.

cmdreceivebluetoothcontinous (PAR1),(PAR2)
Bluetooth modülünde kuyrukta bekleyen değerleri alır ve devamlı gösterir.
PAR1, 0 ise mikrofona tekrar bastığımızda bu işlemi sonlandırmasını, 1 ise biz onunla sohbet etmeye devam etsek bile devreyi dinlemesini belirtir.
PAR2, 0 ise bilgiyi doğrudan ekrana yazmasını, 1 ise bilgiyi farklı işlemler yapabilmesi için onbluetoothreceived olayına yönlendirmesini belirtir.

Örnek kullanım:

SORU:   sürekli bilgi al		   
CEVAP: {!SET staShowCustomCommandUpdateButtons=0!}
{!RET cmdreceivebluetoothcontinous 0,1!}

cmdclosesocketbluetooth
Socket bağlantısını kapatır ve Bluetooth modülünü boşa çıkarır.

onbluetoothreceived (PAR1),(PAR2)
Devreden bilgi geldiğinde bu olay tetiklenir ve otomatik olarak çağrılır. Kendi olayınızı aynı formatta oluşturabilirsiniz. İçeriğine tetiklenme aşamasında CEYD-A’ nın nasıl bir davranışta bulunacağını yazabilirsiniz.
(PAR1) Bluetooth cihazının MAC adresi,
(PAR2) ise devreden gönderilen ham bilgiyi temsil eder.

Örnek kullanım:

SORU:   onbluetoothreceived,25.0|		
SABLON: onbluetoothreceived ({PAR1}),({PAR2})     
CEVAP: {!SET saat={!RET saat!}!}
{!SET mesafe={!RET cmdfetchregex (.+?)cm.*,1,$2!}!}
{!IF $mesafe<4??Çarptık::
{!IF $mesafe>=55??Ufukta bir cisim görünmüyor.::
{!GET mesafe!}cm
!}!}
<br><small><mute>{!GET mesafe!}cm uzaklıkta bir cisim var.</mute></small>

 

CEYD-A ile Devreyi Konuşturalım

Eğer devreyi ilk kez kurduysanız bluetooth cihazının cep telefonu ile eşleştirilmesi gerekmektedir. Cep telefonunda bluetooth cihazlarını listeleyin ve HC-05 eşleşmemiş ise eşleştirin. Ekrana şifre ekranı gelirse 1234 deneyebilirsiniz.
CEYD-A yı açalım ve alt ekranında cmdlistbluetooth yazarak ok tuşuna basalım.  Ekrana gelecek listede HC-05 seçelim. #connected uyarısı almalısınız. Sonra aşağıdaki gibi cmdsendbluetooth 1 yazalım.  Bu işlem 1 değerini bluetooth cihazına gönderecektir. 1 değerini alan devre LED i yakacak, 0 değeri gönderdiğinizde ise LED i söndürecektir.

“Bluetooth Bağlan” dediğinizde İlk kullanımda eşleştirilen tüm bluetooth cihazları görebilirsiniz. CEYD-A seçtiğiniz cihazı aklında tutacak ve daha sonraki bağlantılarınızda bu ekranı getirmesine gerek kalmayacaktır.

Arduino IDE nin Serial Monitor ekranında Led yandı ve Led söndü bilgilerini görebilmeniz gerekiyor.

Windows üzerine kurulu Arduino IDE’nin Serial Monitör ekranı.

Konuşma Dili Komutları Hazırlayalım

Denemelerimizin başarıyla sonuçlanmasından sonra artık konuşma diliyle bu işlemleri yaptıralım.

Bluetooth a bağlan dediğimize modüle bağlantı kuracak kurgu aşağıdadır. Bu kurgu tüm kullanıcılar için oluşturulmuştur. Tekrar oluşturmanıza gerek yoktur.

SORU: bağlan%
SABLON: {BAŞ}bluetooth{HER}$ 
CEVAP: 
{!IF $staBluetoothMacAddress==??{!RET cmdlistbluetooth!}::
{!SET sonuc={!RET cmdconnectsocketbluetooth {!GET staBluetoothMacAddress!}!}!}
{!IF $sonuc has connected??Bağlantı sağlandı.::Bir sorun oluştu.!}
!}

Işığı aç dediğimizde bağlantı kurulan bluetooth cihazına 1 değerini gönderecek kurgu aşağıdadır.

SORU: ışığı aç
CEVAP: 
{!SET ignored={!RET cmdsendbluetooth 1!}!}

Işığı kapat dediğimizde bağlantı kurulan bluetooth cihazına 0 değerini gönderecek kurgu aşağıdadır.

SORU: ışığı kapat
CEVAP: 
{!SET ignored={!RET cmdsendbluetooth 0!}!}

Artık arduino sesli asistan denemelerimizi CEYD-A ile yapabiliriz. IoT çalışmalarımızda aşağıdaki gibi kullanımlar mümkün olacaktır.

twitter takipçi

Ne Düşünüyorsun?
  • 1
    harika_
    Harika!
  • 0
    g_zel_
    Güzel!
  • 0
    haval_
    Havalı!
  • 0
    e_lenceli_
    Eğlenceli!
  • 0
    _zg_n_m_
    Üzgünüm!
  • 0
    sevmedim_
    Sevmedim!

1971 yılında doğan Cenker Sisman, Saint-Joseph lisesini bitirdi. Yıldız Teknik Üniversitesi’nde Bilgisayar Mühendisliği ve İstanbul Teknik Üniversitesi’nde aynı bölümün yüksek lisans eğitimlerini tamamladı. Savaş Köse ile beraber yazdığı ‘Parallel Implementation of The Hough Transformation’ çalışması SCI’99/ISAS’99 da yayınlandı. Yazdığı uzaktan bilgisayar kontrol uygulaması ‘Panda Future Connection’ Bimeks 1998 En İyi Yazılım – Mansiyon ödülünü aldı. Diğer programları olan WinPerfect, CleanDisk, VideoCapture, FTPExplorer, CardReader ve Multi-Email Sender uygulamaları zaman zaman yurtdışındaki medyalarda yayınlandı ve çeşitli otoriteler tarafından ödüller aldı. Cenker Şişman, 2014 yılından beri, 4 milyon kullanıcıya ulaşan CEYD-A Türkçe Asistan Platformunu geliştiriyor.

Yazarın Profili
İlginizi Çekebilir

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir