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:
Proje Devresi:
- 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ı:
CM8870 ve CM8870C entegresi bağlantı şeması:
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);
}
}
kodları ve devreyi yaptım ama çaışmadı yardımcı olurmusunuz lütfen
YanıtlaSilÖncelikle sorunun nerede olduğunu tespit etmemiz lazım.
YanıtlaSil8870 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.
benim elimdeki entegre cm8870pı acaba ondanmı kaynaklanıyo bide sizin çiziminizde entegrenin üst soldan 4. bacağın boşta kaldığını fark ettinizmi
YanıtlaSilEntegrede 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.
YanıtlaSilSiz yukarıda bahsettiğim testi yapın ona göre bir fikir yürütelim.
Yukarida söylediğinizi yaptım hic bisey değişmedi ledlerde yanmadı
Silo zaman iki ihtimal var: 1) 8870 entegre tevresini doğru kuramamışındır, 2)entegreye telefon kulaklığından sinyal gelmiyodur.
YanıtlaSilEğ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.
Ring ve tip sinyalinin bağlantısını nasil yapicam resim ile açıklaya bilirmisiniz
YanıtlaSilkablo bağlantılarını gösteren resim:
YanıtlaSilhttps://yadi.sk/i/TlbCpGFvkQSu7
devreye bağladığım telefon asus zenfone 6 acaba bunun bi etkisi olabilirmi
YanıtlaSilbide devreye sürekli yanlış direnci bağlamışım entegrenin üst taraftan 3.ü pine bağladığım direnç acaba bunun bi etkisi olabilirmi
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ıtlaSiltelefon 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ıtlaSildaha ö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ıtlaSilyaklaşı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ıtlaSilyazmayı unutmuşum oyun donanım yazılım da benim
YanıtlaSilotomatik cevaplama özelliği olan bir telefon kullanmalısınız.
YanıtlaSilHangi telefonlar oluyo bi bilginiz varmı
YanıtlaSilbilmiyorum, ama birçok telefonda olan bir özellik diye biliyorum. internette bulabilirsiniz.
SilMehmet bey arduino kodunun devamı yokmu ? Yoksa siz 2 tanemi röle bağladınız.
YanıtlaSiluygulamada 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.
SilMehmet 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ıtlaSilmümkündür, programınızı ona göre yazmanız gerekir.
SilProgramin neresine deyişiklilik yapmamiz gerekiyo yardimci olurmusunuz..
Silif 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.
SilBen telefonun bağlandığı yeri bulamadım nereye başlıyoruz kabloyu
YanıtlaSilçizimde en sol tarafta bulunan mavi eleman telefon bağlantısını sembolize etmektedir.
SilO mavi sol alet nedir soylrrmisiniz
Siltelefonun kulaklığında gelen kablonun bağlantısı için konulmuş konnektör
Sillamba kontrol edilemezmi bu devrede?
YanıtlaSilbu devre ile lamba kontrol etmek de mümkündür.
Sildevrede 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
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ıtlaSilDevre 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.
SilMehmet 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ıtlaSilMehmet 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ıtlaSilböyle bir sorunla karşılaşmamanız gerekir. bir yerde bir yanlışlık olmalı.
Silhocam 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ıtlaSilyorumunuz 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.
Silo şekildede denedim fakat yine sonuç alamadım. Devreye sinyal vermeden 11 nolu pinde gerilim görmem normalmidir peki?
YanıtlaSilanormal bir durum. 8870 entegresinin data çıkışları telefondan gelen sinyallere göre şekillenir. sinyalin gelmediği durumlarda data pinleri lojik-0 olmalıdır.
SilPeki 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ıtlaSilpeki telefondan tuşlara basınca pinlerin lojik durumu değişiyor mu?
Sildevreye 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ıtlaSilMehmet 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?
YanıtlaSilMesela hareket tespit edilince sabit telefona arama yapmasını sağlayabilir miyiz? Sese gerek yok, telefonun çalması yeter.
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.
SilMehmet 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ıtlaSilhazır mt8870 kitleri var onunla nasıl yapabiliriz?
YanıtlaSilİnternette bu konuyla ilgili uygulamalar mevcut. Onlardan faydalanabilirsiniz.
SilSLM MEHMET KARDEŞİM
YanıtlaSilCEP 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
Kristal bulamadım muadil olarak ne kullanabilirim
YanıtlaSilKullandığın kristal önemli. Muadil değil aynı değerde kristal kullanmalısın
SilArkadaşlar dtmf hazır okul projeleri elimde var elle yapma tamamı ihtiyacı olana 250 TL yazılım dahil 05419766091
YanıtlaSilDevreyi 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İ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ıtlaSilProjeyi tamamen yapabilen varmı
YanıtlaSil