Arduino - Telefonla Uzaktan Kontrol - Elektrik Elektronik Projeleri

Post Top Ad

16 Nisan 2015 Perşembe

Arduino - Telefonla Uzaktan Kontrol

Bu projede telefondan gelen DTMF sinyallerini kullanarak bir led yak/söndür işlemi yapacağız. Bunun için iki telefona ihtiyacımız olacak. Telefonlardan birini kulaklık jakı üzerinden devremize bağlayacağız. Diğer telefon ile devremize bağladığımız telefonu arayıp, telefonlar arası iletişimi sağlayacağız.

Proje Devresi:
Projede Kullanılan Elemanlar

  • Arduino Uno
  • CM8870 entegresi
  • 3.579545MHz kristal
  • 2 x 0.1µF (100nF) kondansatör
  • 2 x 100k direnç
  • 1 x 330k direnç
  • 1 x 1k direnç
  • 1 x led
DTMF
Çift-Ton Çoklu Frekans (Dual Tone Multi-Frequency, DTMF) ilk olarak Bell Laboratuarlarında geliştirilmiş olan bir bilgi iletim biçimidir. Günümüzde tuşlu telefonlarda, elektronik posta sistemlerinde ve telefon bankacılığı uygulamalarında kullanılmaktadır. DTMF sisteminde belirli bir sayı ya da karakter, bir yüksek frekans tonu ve bir düşük frekans tonu kullanılarak elde edilir.

DTMF frekans tablosu:
Farklı 4 satır ve 4 sütun frekansı kullanılarak, 16 adet farklı sembol iletimine olanak sağlanır. İletilecek değere karşılık gelen satır ve sütun frekansları kullanılarak iki sinüsoid işaret oluşturulur.

A,B,C ve D tuşları askeri sistemlerde kullanılmış olsa da, günümüzde telefon uygulamalarında standart olarak bulunmamakta, farklı uygulama alanlarında kullanılmaktadır. DTMF standartlarında ton süresi minimum 40ms olup, iki ton arasında en az 40 ms olması gerekmektedir. DTMF standartlarında olmasa da, tuşlu telefon sistemlerinde 330 ve 440 Hz’lik sinüs işaretleri kullanılarak çevir tonu üretilmektedir.

CM8870 Entegresi
DTMF kod çözücü entegresidir. Gelen telefon sinyallerine karşılık 4 bitlik dijital sinyaller olarak çıkış üretir.

CM8870 ve CM8870C entegresi bağlantı şeması:
Gelen sinyallere karşılık çıkış tablosu:
TRS / TRRS Konnektör
Telefona gelen sinyali devreye vermek için bu konnektörleri kullanmaktayız.Burada ring veya tip sinyallerinden herhangi birini CM8870 entegresine bağlamalıyız, diğerini ise GND yapmalıyız.

Projenin Kaynak Kodu:
int q1_pin=9;
int q2_pin=10;
int q3_pin=11;
int q4_pin=12;
int q1, q2, q3, q4;
int led=5;

void setup(){
  pinMode(q1_pin, INPUT);
  pinMode(q2_pin, INPUT);
  pinMode(q3_pin, INPUT);
  pinMode(q4_pin, INPUT);
  pinMode(led, OUTPUT);
}

void loop(){
  q1=digitalRead(q1_pin);
  q2=digitalRead(q2_pin);
  q3=digitalRead(q3_pin);
  q4=digitalRead(q4_pin);
 
  if(q1==1 && q2==0 && q3==0 && q4==0)  // 1 basılmışsa
  {
    digitalWrite(led, HIGH);
  }
  if(q1==0 && q2==1 && q3==0 && q4==0)  // 2 basılmışsa
  {
    digitalWrite(led, LOW);
  }
}

53 yorum:

  1. kodları ve devreyi yaptım ama çaışmadı yardımcı olurmusunuz lütfen

    YanıtlaSil
  2. Öncelikle sorunun nerede olduğunu tespit etmemiz lazım.
    8870 entegresinin dijital data çıkışlarına (Q1 Q2 Q3 Q4) birer direnç ve led bağlayın. Telefondan bastığınız tuşun karşılığında (binarry karşılığı olarak) ledlerin yandığını göreceksiniz. Örneğin telefdondan 5 tuşuna bastığınızda Q3 ve Q1 deki ledler yanacaktır.
    Eğer böyle bir sonuç almıyorsanız ya 8870 enteresinin devre bağlantılarında sorun vardır, ya da entegreye telefon sinyalleri gelmiyordur.
    Eğer devrenin entegre kısmın da bir sorun yoksa arduino kodlarını incelemeliyiz. (Ben devreyi yukarıdaki gibi kurdum ve çalışmıştı.)
    Siz anlattığım şekilde devreyi test edin ve sonuçları bana bildirin.
    İyi çalışmalar.

    YanıtlaSil
  3. benim elimdeki entegre cm8870pı acaba ondanmı kaynaklanıyo bide sizin çiziminizde entegrenin üst soldan 4. bacağın boşta kaldığını fark ettinizmi

    YanıtlaSil
  4. Entegrede boş bıraktığım bacağı StD bacağıdır. StD'nin özelliği, telefondan herhangi bir tuşa basıldığında çıkış olarak anlık bir pulse gönderir. Böylelikle "tuşa basıldı mı?" kontrolü yapabiliriz. Ben bu kontrolü yapmadım, doğrudan data pinlerini okuyarak işlem yaptım.
    Siz yukarıda bahsettiğim testi yapın ona göre bir fikir yürütelim.

    YanıtlaSil
    Yanıtlar
    1. Yukarida söylediğinizi yaptım hic bisey değişmedi ledlerde yanmadı

      Sil
  5. o zaman iki ihtimal var: 1) 8870 entegre tevresini doğru kuramamışındır, 2)entegreye telefon kulaklığından sinyal gelmiyodur.
    Eğer 8870 devresinden eminseniz, telefonun kulaklık vasıtasıyla devreye bağlandığı kısmı kontrol etmeliyiz.
    Önce telefon kulaklığının içindeki kablolardan RING sinyallerinin geldiği kabloyu devreye bağla TIP sinyallerinin geldiği kabloyu ise GND yap. Yine çalışmaz ise kabloların yerini değiştir. Sonuçları bana bildir.
    İyi çalışmalar.

    YanıtlaSil
  6. Ring ve tip sinyalinin bağlantısını nasil yapicam resim ile açıklaya bilirmisiniz

    YanıtlaSil
  7. kablo bağlantılarını gösteren resim:
    https://yadi.sk/i/TlbCpGFvkQSu7

    YanıtlaSil
  8. devreye bağladığım telefon asus zenfone 6 acaba bunun bi etkisi olabilirmi
    bide devreye sürekli yanlış direnci bağlamışım entegrenin üst taraftan 3.ü pine bağladığım direnç acaba bunun bi etkisi olabilirmi

    YanıtlaSil
  9. devrenin çalışması için illa başka bi telefondan devreye bağlı olan telefonu aramak zorundamıyım yoksa devreye bağlı olan telefondan tuş takımını açarak da tuşlara bassam çalışırmı

    YanıtlaSil
  10. telefon modelinin devre için bir etkisi yoktur. dirençten yana da bir sıkıntı olmaz ( eğer entegre zarar görmemişse, ki bence zarar görmemiştir). yalnız o direnci doğru olan dirençle değiştirmelisiniz (devre elemanlarının tamamının değerleri ve bağlantıları şemadaki gibi olmalıdır). devrenin çalışması için ise bir telefon devreye bağlanmalı, başka bir telefonla devreye bağlı olan telefon aranıp açılmalıdır. devreye bağlı telefonu otomatik cevaplama moduna alırsanız kullanım açısından daha iyi olur.

    YanıtlaSil
  11. daha önce tespit ettiğimiz gibi sorun arduino kısmında değil 8870 devresi ve telefonun bu devreye bağlanması ile ilgilidir. deneye deneye bu sorunu aşmalısınız.

    YanıtlaSil
  12. yaklaşık olarak 1.5 aylık deneme yanılma sürecinden sonra devreyi başarılı bir şekilde çalıştırmayı başardım 300 k lık direnç yerine 10k lık bir direnç koydum ve oldu şimdi bir sorunum kaldı bunun için sizden yardım istiyeceğim şimdi devreye bağladığımız telefonu arayınca bu telefonu devre nasıl açacak yani telefon 1 kere çalınca devrenin bunu otomatik olarak açmasını istiyorum ama bunu nasıl yapacağım onu bilmiyorum internetten baktığım projelerde pıc ile yapanlar var pıc i de ben bilmiyorum bu konuda bana yardım edebilirmisiniz.

    YanıtlaSil
  13. yazmayı unutmuşum oyun donanım yazılım da benim

    YanıtlaSil
  14. otomatik cevaplama özelliği olan bir telefon kullanmalısınız.

    YanıtlaSil
  15. Hangi telefonlar oluyo bi bilginiz varmı

    YanıtlaSil
    Yanıtlar
    1. bilmiyorum, ama birçok telefonda olan bir özellik diye biliyorum. internette bulabilirsiniz.

      Sil
  16. Mehmet bey arduino kodunun devamı yokmu ? Yoksa siz 2 tanemi röle bağladınız.

    YanıtlaSil
    Yanıtlar
    1. uygulamada sadece tek bir ledi yakıp söndürdüm. ledi röle olarak da düşünebilirsiniz. bu uygulamayı sadece deneme amaçlı yapmıştım. geliştirilmeye açık bir uygulamadır.

      Sil
  17. Mehmet bey, ben devreyi kurdum calıstırdım. ancak yapmak istediğim 8 adet ledi kontrol etmek. malum telefon tuslarında da 8 adet ledi yakıp söndürme amacıyla 8x2=16 adet tuş bulunmuyor. Hepsini aynı anda yakıp söndürebiliyorum ancak tek tek yakıp sondurme işini * 'a bastıktan sora 1 tusuna basınca 1.led yansın.. #'ye basıp 1 tusuna basınca 1.led sönsun seklinde istiyorum.. bu mumkun mudur? Mumkun ise nasıl yapabilirim.

    YanıtlaSil
    Yanıtlar
    1. mümkündür, programınızı ona göre yazmanız gerekir.

      Sil
    2. Programin neresine deyişiklilik yapmamiz gerekiyo yardimci olurmusunuz..

      Sil
    3. if else kısmını değiştirmeniz gerekiyor. Mesela ilk gelen komutu bir değişkende tutup diğer komutu bekleyebilirsiniz. Sonra bu iki komutu birlikte ele alırsınız. Örneğin * veya # tuşuna basılmışsa bu karakteri bir char değişkenine kaydedin. sonra gelen komut neyse (örneğin 1 tuşuna basılmışsa) ledi yakın. eğer char değişkeni # ise ledi söndürün.

      Sil
  18. Ben telefonun bağlandığı yeri bulamadım nereye başlıyoruz kabloyu

    YanıtlaSil
    Yanıtlar
    1. çizimde en sol tarafta bulunan mavi eleman telefon bağlantısını sembolize etmektedir.

      Sil
    2. O mavi sol alet nedir soylrrmisiniz

      Sil
    3. telefonun kulaklığında gelen kablonun bağlantısı için konulmuş konnektör

      Sil
  19. lamba kontrol edilemezmi bu devrede?

    YanıtlaSil
    Yanıtlar
    1. bu devre ile lamba kontrol etmek de mümkündür.
      devrede led bağladığımız uca bir röle bağlayınız. rölenin çıkışında ise 220V ile bir lambayı yakabilirsiniz.
      arduino ile röle uygulamasını anlattığımız yazı şu adrestedir: http://elektrikelektronikprojeleri.blogspot.com.tr/2015/08/arduino-role-uygulamas.html

      Sil
  20. Mehmet Bey ben devreyi kurdum fakat elimde 330 k direnç yok bunun yerine başka direnç kullanilirmiyim 10 k kullandım devreyi çalıştıramadımda yardımcı olurmusunuz

    YanıtlaSil
    Yanıtlar
    1. Devre 8870 entegresinin datasheet'inde yer alan devredir. Devreyi şemaya uygun kurmanız gerekir. Yada 330k ya yakın değerlerde bir direnç kullanınız.

      Sil
  21. Mehmet bey bend devreyi kurdum gayet olumlu calisiyor.elinize sağlık.fakat bantlar yani 2 e basmakla 3 e basmayı ayırt edemiyor.aynı şekilde 6la 7 de de geçerli bu durum bi çaresi varmıdır.

    YanıtlaSil
  22. Mehmet bey bend devreyi kurdum gayet olumlu calisiyor.elinize sağlık.fakat bantlar yani 2 e basmakla 3 e basmayı ayırt edemiyor.aynı şekilde 6la 7 de de geçerli bu durum bi çaresi varmıdır.

    YanıtlaSil
    Yanıtlar
    1. böyle bir sorunla karşılaşmamanız gerekir. bir yerde bir yanlışlık olmalı.

      Sil
  23. hocam devreyi kurdum fakat çalışması,programda 9.10.11.12 nolu pinler çıkış olarak tanımlanmakta fakat devre şemasında 8.9.10.11 nolu pinlere bağlantı yapılmış sıkıntı bu olabilirmi? Kondansatörleri 104 mercimek kondansatör kullandım.devrenin enerji beslemesini yaptığım zaman 8870 entegresinin 11 nolu basacığında 5 v gerilim ölçmekteyim. bu normalmiir.STD pinini arduinoya bağlamaya gerek varmıdır? Yardımcı olurdanız sevinirim. Devreyi çalıştıran arkadaşlar paylaşım harici yazılımda değişiklik yaptılarmı yardımcı olursanız sevinirim.

    YanıtlaSil
    Yanıtlar
    1. yorumunuz için teşekkür ederim. fritzing'te yanlış çizim yapmışım. siz kodda giriş olarak belirtilen pinlere 8870 ten gelen data hattını bağlayın. en kısa zamanda çizimi düzelteceğim. std pini ise her data geldiğinde toggle olur. bu da datanın gelip gelmediğini kontrol etmemizi sağlar. ben bu kontrolü uygulamada kullanmadım. siz isterseniz kullanabilirsiniz. std pinini kullanmadan da devre çalışır.

      Sil
  24. o şekildede denedim fakat yine sonuç alamadım. Devreye sinyal vermeden 11 nolu pinde gerilim görmem normalmidir peki?

    YanıtlaSil
    Yanıtlar
    1. anormal bir durum. 8870 entegresinin data çıkışları telefondan gelen sinyallere göre şekillenir. sinyalin gelmediği durumlarda data pinleri lojik-0 olmalıdır.

      Sil
  25. Peki Hocam o çıkışları sıfırlamanın bir yolu varmıdır, yeni entegre takıyorum bu kez diğer çıkışlar lojik-1 oluyor

    YanıtlaSil
    Yanıtlar
    1. peki telefondan tuşlara basınca pinlerin lojik durumu değişiyor mu?

      Sil
  26. devreye bağlı olan telefonu arayıp tuşlara basıyorum fakat çıkışların durumu başta olduğu gibi kalıyori durum değiştirmiyor.Farklı entegre taktığımda başlangıçta bazı çıkışlar lojik 1 oluyo.Devreye sinyal gidip gitmediği nasıl anlaşılır?

    YanıtlaSil
  27. Mehmet bey merhabalar, arduino ile bir porta gelen değer eşiğin altına düştüğü zaman telefon araması yapılması nasıl sağlanabilir?

    Mesela hareket tespit edilince sabit telefona arama yapmasını sağlayabilir miyiz? Sese gerek yok, telefonun çalması yeter.

    YanıtlaSil
    Yanıtlar
    1. bu devreyle bahsettiğiniz örnek yapılamaz. bunu için sim kart takabileceğiniz bir gsm modülü kullanmalısınız. arduino için geliştirilmiş gsm shield işinizi görecektir.

      Sil
  28. Mehmet akbag size bir sorum olacak bunun DTMF li uygulamasi var orda 12 luck role kullaniliyo be 220 volta anaktarlama yapiyo peki ayni sistemi 3 fazli motorlar icin kullanilirmi

    YanıtlaSil
  29. hazır mt8870 kitleri var onunla nasıl yapabiliriz?

    YanıtlaSil
    Yanıtlar
    1. İnternette bu konuyla ilgili uygulamalar mevcut. Onlardan faydalanabilirsiniz.

      Sil
  30. SLM MEHMET KARDEŞİM
    CEP TELEFONU İLE UZAKTAN İNTERNET ARACILIĞI İLE 8 ADET ROLE KONTROLÜ YAPACAK BİR DEVRE İSTİYORUM YARDIM EDERSEN BABA BUNU OLUŞTURABİLİRMİSİN RİCA ETSEM MALİYETİ NE OLUR İLGİLENİRSEN SEVİNİRİM TEŞEKKÜRLER ADNAN KARAÇAM 0532 221 05 18 İRTİBAT KURABİLİRSEN SEVİNİRİM

    YanıtlaSil
  31. Kristal bulamadım muadil olarak ne kullanabilirim

    YanıtlaSil
    Yanıtlar
    1. Kullandığın kristal önemli. Muadil değil aynı değerde kristal kullanmalısın

      Sil
  32. Arkadaşlar dtmf hazır okul projeleri elimde var elle yapma tamamı ihtiyacı olana 250 TL yazılım dahil 05419766091

    YanıtlaSil
  33. Devreyi yaptım fakat ilk 4mhz lik kristal kullanmıştim çalışmamıştı şimdi aynı devrede belirtilen kristali kullandım ama halen çalışmıyor entegre yanmış olabilirmi yanmamışsa sizce problem ne olabilir ?

    YanıtlaSil
  34. İyi akşamlar mehmet bey arduino bilginize güvenerek soruyorum. SIM 800L çipini kullanarak sistemden mesaj alabilir miyiz. Örneğin sms atarak ledi yakabilir miyiz ve ledin yanıp yanmadığının kontrolünü yapabilir miyiz ?

    YanıtlaSil
  35. Projeyi tamamen yapabilen varmı

    YanıtlaSil

Post Top Ad