Robofun 機器人論壇

標題: 請問Arduino要如何連接電話機的按鈕, 讓它能撥電話? [打印本頁]

作者: pizg    時間: 2012-3-29 18:07
標題: 請問Arduino要如何連接電話機的按鈕, 讓它能撥電話?
日前我拆了家中一台電話機,
我想把MCU(Arduino)連接上它,
並且希望讓Arduino能夠透過話機撥出跟接收,
請問我該如何進行.
作者: vegewell    時間: 2012-3-29 18:30
回復 1# pizg


    你要接一個伺服機及DTMF收發電路,
就行了,
作者: pizg    時間: 2012-3-29 22:18
本帖最後由 pizg 於 2012-3-29 22:29 編輯
回復  pizg


    你要接一個伺服機及DTMF收發電路,
就行了,
vegewell 發表於 2012-3-29 18:30



    感謝您的回覆. 由於我對電子不熟悉, 所以想儘可能把事情簡單化,
我的想法很單純, 目前先不去理會電話是如何收送訊號, 而是想用Arduino代替手指頭撥電話,
因為電話按鍵有十幾鍵, 每一個按鍵都要接一個電晶體開關, 由此看來需要用到2個74HC595,
我是不是可以像控制LED明滅那樣來控制按鈕是否短路(被按下)?
作者: vegewell    時間: 2012-3-30 12:58
回復 3# pizg

[電話大多為按鍵式電話,當每一個數
字鍵被按下時,會發出不同頻率的聲音,此聲音是由兩個頻率不同的訊號組合而
成。電信公司的交換機便以此合成訊號的頻率來辨別號碼,選擇並接通通話的對
象,這種傳送方式稱為複頻式傳送。]
所以電話按鍵就是一個輕觸開闢,
74HC595不能代替輕觸開闢,
可以使用繼電器,
但會很麻煩,
電話裡面就有DTMF IC,
再買也不需要,
這裡有更容易的方法,
Arduino自製電話撥號器:
http://ansifa.blog.163.com/blog/static/528031002011102722636524/
作者: pizg    時間: 2012-3-30 22:29
本帖最後由 pizg 於 2012-3-30 23:04 編輯
回復  pizg

[電話大多為按鍵式電話,當每一個數
字鍵被按下時,會發出不同頻率的聲 ...
vegewell 發表於 2012-3-30 12:58


再次謝謝您.
我拜了一下孤狗大神, 知道MT8880晶片可以產生及解碼DTMF,
把DTMF電路連接電話線就可以收發電話了.

您貼上來的範例應該是蠻簡單且實用, 我趁休假時再來試一下.
不過現在卻突然浮現出一個問題, 那就是我可不可以把Arduino接喇叭的線直接連到電話的話筒?
我看到網路上有人將手機的耳機線接到DTMF, 讓它解碼後再傳給Arduino, 用來控制自走車.

另外一個問題, 我之所以想用Arduino代替人去壓下撥號按鈕,
是因為若可以這樣的話, 我也就可以拆解一個mp3
(我知道市面有賣MP3模組, 但若購買現成的就失去DIY的樂趣了),
然後把它的按鈕連到Arduino,
這樣Arduino就可以發出聲音了.

您說:"74HC595不能代替輕觸開闢"
74HC595只是讓按鍵短路, 若不行的話,
ULN2003是不是可以勝任這工作?

一個題外話:
您貼上來的範例中有提到Arduino自帶的Tone.h函數庫只能發出單音,
而它提供的Tone.h函數庫可以發出複音,
請問最多可以同時發出幾個音?
作者: vegewell    時間: 2012-4-1 16:26
回復 5# pizg


    >>>>>ULN2003是不是可以勝任這工作?
ULN2003 也不是輕觸開闢
ULN2003是高耐壓、大電流達靈林頓陳列,為了增益電流
[在自動化密集的的場合會有很多被控元件如繼電器,微型電機,風機,電磁閥,空調,水處理等元件及設備,
這些設備通常由CPU所集中控制,由於控制系統不能直接驅動被控元件,這需要由功率電路來擴展輸出電流以滿足被控元件的電流,
電壓。ULN2XXXX高壓大電流達林頓晶體管陣列系列產品就屬於這類可控大功率器件,由於這類器件功能強、應用範圍語廣。
因此,許多公司都生產高壓大電流達林頓晶體管陣列產品,從而形成了各種系列產品。LN2003也是一個7路反向器電路,
即當輸入端為高電平時ULN2003輸出端為低電平,當輸入端為低電平時ULN2003輸出端為高電平,繼電器得電吸合。]
>>>>>請問最多可以同時發出幾個音?
[雙音多頻的撥號鍵盤是4×4的矩陣,每一行代表一個低頻,每一列代表一個高頻。
每按一個鍵就發送一個高頻和低頻的正弦信號組合,比如'1'相當於697和1209赫茲(Hz)。交換機可以解碼這些頻率組合併確定所對應的按鍵。
[Only one tone can be generated at a time.] If a tone is already playing on a different pin,
the call to tone() will have no effect. If the tone is playing on the same pin, the call will set its frequency. ]




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2