Sesle Arduino Devresini Kontrol Edelim – Bluetooth Bağlantısı

Türkçe Arduino sesli asistan oluşturmak 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.

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.

 

Devrenin Son Hali

Ardunino Nano ile kurulmuş devre

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:

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:

 

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

× CEYD-A ile ek bir geliştirme gerektirmeden Bluetooth ile Bağlan, Bluetootha 2 değerini gönder, Bluetoothtan bilgi al gibi kolay ifadeler ile devre ile iletişim kurabilirsiniz.
Bağlantı kurabilmek için önce sesli olarak Bluetooth ile Bağlan demeyi unutmayınız.

İSTEĞE BAĞLI: Eğer doğal dil cümleleri kullanmak istiyorsanız size özel kurgular oluşturabilirsiniz.
Kurguları kodla.ceyd-a.com adresinden girebilirsiniz. Giriş yaparken CEYD-A uygulamasındaki geliştirici kullanıcı bilgileriniz ile site üzerindeki giriş bilgileri aynı olmalıdır.
Tek bir kurgu, SORU, ŞABLON ve CEVAP üçlüsünden oluşmaktadır. Dilediğiniz kadar kurgu ekleyebilirsiniz. Kurguları site üzerinde güncelledikten sonra, CEYD-A uygulamasını açıp güncelle deyiniz. Kurgular cihazına yansıyacaktır.
Kurgularınızı https://kodla.ceyd-a.com sitesinden girebilir, deneyebilir ve yayınlayabilirsiniz.

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.

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

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

Artık arduino sesli asistan denemelerimizi CEYD-A ile yapabiliriz.


Benzer çalışmalar

Oda Sıcaklığı Ne Kadar?

Geliştirilen devreleri sesle kontrol etmek CEYD-A ile çok kolay. Peki, Oda Sıcaklığı Ne Kadar? dediğimizde CEYD-A arka planda neler yapıyor? Ona uzun cümlelerle sesli olarak aşağıdakileri de söylenebilirdi. Ama bunlar kendisine öğretildi.
1) Bluetooth a bağlan
2) Bluetooth a 2 gönder
3) Bluetooth’dan bilgi al
4) Bluetooth bağlantısını kapat.

Bu örnekte Bluetooth üzerinden bilgi alacağımız için farkettiyseniz Serial çıkışı olan TXD1 pininden (yeşil kablo) gelen değeri dirençlerle oranlayarak (kahverengi kablo) üzerinden Bluetooth’un RXD pinine gönderiyoruz. Bu şekilde Bluetooth CEYD-A’ya serial da yazdığınız tüm yazıları gönderebiliyor.

Gereksinimler:

Arduino Uno
HC 05 Bluetooth Modülü

1K Ohm ve 2.2K Ohm ve 10K Ohm Dirençler

LM35DZ Sıcaklık Sensörü

Breadboard

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

CEYD-A uygulaması

Devre Şeması

CEYD-A kullanımı için LM35DZ sıcaklık sensörü bağlantı şeması

Arduino IDE Kodu

LM35 sıcaklık ölçer sensörü A5 pinine bağlanmıştır. 10 nolu pin üzerinden CEYD-A’nın bluetooth’a gönderdiği bilgi alınmaktadır. Bilgi data değişkenine atılmakta ve 2 değeri gönderilmiş ise, lm35 üzerinden sıcaklık değeri alınmakta ve Serial’a bu bilgi yazılmaktadır. TXD 1 pini Serial daki bilgiyi gösterdiği için bu bilgi voltajı düşürülerek bluetooth’un RXD pinine gönderilmekte ve CEYD-A okuma yaptığında bu bilgi sesli olarak okunmaktadır.

CEYD-A Kullanımı

CEYD-A için ek bir kod geliştirmeden doğrudan bluetooth bağlantı komutlarını sözle veya yazarak kullabilirsiniz.

Yeni öğreneceği cümleleri mevcut öğrendiği cümlelerden oluşturabiliyoruz. Bu şekilde cümle haznesi her geçen gün katlanarak artmakta.

Konuşma diliyle kullanım örneği.


Mesafe ne kadar?

CEYD-A, devrenin önündeki engelin kaç santimetre uzaklıkta olduğunu söylüyor.
Bilindiği gibi CEYD-A, son sürümlerden itibaren bluetooth üzerinden devreyi kontrol edip anlık bilgi alabiliyor.  Gelecek sürümden itibaren, “sürekli bilgi al” komutu ile bluetooth modülünü siz tekrar mikrofona basana kadar dinliyor ve gelen bilgileri asenkron olarak ekrana yansıtabiliyor. Bu özellik, devrede bir olay olduğunda CEYD-A’nın tetiklenebilmesi demek.

Gereksinimler:

Arduino Uno
HC 05 Bluetooth Modülü

1K Ohm ve 2.2K Ohm Dirençler

HC-SR04 Mesafe Ölçer Sensör

Breadboard

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

CEYD-A uygulaması

Devre Şeması

CEYD-A için HC-SR04 Mesafe Ölçer Kullanımı

Arduino IDE Kodu

CEYD-A Kullanımı

CEYD-A için ek bir kod geliştirmeden, doğrudan bluetooth bağlantı ve kontrol komutlarını, sesle veya yazılı olarak kullanabilirsiniz.

 

Çalışmanın hazırlanmasında katkıları bulunan Sn. Ahmet Taşdemir‘e teşekkür ederim.

4 Cevaplar

  1. Selçuk GETMEZ dedi ki:

    Birde direnç neden bağlıyoruz o kısmı çözemedim hc05 i direkt olarak bağladığımızda algılıyor ardiuno aradaki direnci anlamadım

  2. Cenker Sisman dedi ki:

    Serial.print() kullanarak CEYD-A dan hangi bilgiler geliyor onu kontrol edebilirsiniz. BTSerial ile Serial in aynı baud hızında olmasına dikkat ediniz.
    Direnç bağlanmasının sebebi gücü 5v yerine daha düşük bir seviye düşürmek ve akımı dengelemek. 5v da verebilirsiniz ama yakma riski olmaması adına ben direnç koydum.
    Direnç olarak 1k / 2k oranını tercih ediyoruz HC-05 e 3V civarı bir güç gidebilmesi için.

  3. Cenker Sisman dedi ki:

    Eğer uygulamadan çıktıktan sonra da HC05 modulü bağlı görünüyorsa başja bir cihaza bağlı kalmış olabilir. Çünkü CEYD-A ya bağlı ise kapatılınca bağlantı kopar.
    Bence bağlantıdan önce HC05 ışıklarının hızlı yanıp sonduğüne bakınız. Bu boşta demektir. Sonra bluetooth bağlan dediğinizde CEYD-A ya bağlanacak ver yanıp sönme hızı bir kaç saniyede bire düşecektir

  4. Cenker Sisman dedi ki:

    Char yerine String kullanımı için şu şekilde bir kod kullanabilirsiniz:

    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);
    }

    }

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

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