0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Arduino和GSM模塊制作一個(gè)自動(dòng)呼叫應(yīng)答機(jī)

科技觀察員 ? 來(lái)源:circuitdigest ? 作者:阿斯文斯·拉吉 ? 2023-01-01 10:02 ? 次閱讀

在當(dāng)今的現(xiàn)代世界中,我們都依賴(lài)手機(jī)作為無(wú)線(xiàn)通信的主要手段。但是,我們都遇到過(guò)可能無(wú)法接聽(tīng)電話(huà)的情況,這些電話(huà)可能是重要的個(gè)人電話(huà)或改變生活的商務(wù)電話(huà),您可能錯(cuò)過(guò)了那個(gè)機(jī)會(huì),因?yàn)槟鸁o(wú)法在那個(gè)特定時(shí)間接聽(tīng)該電話(huà)。

該項(xiàng)目旨在通過(guò)使用Arduino和GSM模塊創(chuàng)建自動(dòng)呼叫應(yīng)答機(jī)來(lái)解決此問(wèn)題。下次當(dāng)您更換新電話(huà)號(hào)碼或外出進(jìn)行長(zhǎng)途朝圣旅行或享受當(dāng)之無(wú)愧的假期時(shí),只需使用此機(jī)器錄制您的聲音,說(shuō)明缺席的原因,您的所有電話(huà)將自動(dòng)由這臺(tái)機(jī)器接聽(tīng),您錄制的聲音將播放給他們。這也可用于您的業(yè)務(wù)號(hào)碼,以便在非辦公時(shí)間接聽(tīng)客戶(hù)的呼叫。聽(tīng)起來(lái)很有趣吧?所以讓我們構(gòu)建它..

所需材料:

該項(xiàng)目可能聽(tīng)起來(lái)有點(diǎn)復(fù)雜,但它真的很容易構(gòu)建,你只需要以下組件

Arduino Uno

GSM 模塊 – 飛鱗 SIM 900

ISD 1820 語(yǔ)音模塊

12V 適配器為 GSM 模塊供電

9V 電池為 Arduino 供電

連接線(xiàn)

poYBAGOs9SGAJSxiAADJE27qPwU782.jpg

在我們實(shí)際進(jìn)入項(xiàng)目之前,讓我們熟悉GSM模塊和ISD 1820語(yǔ)音模塊

飛秤 SIM900 GSM 模塊:

GSM模塊使用起來(lái)非常吸引人,尤其是當(dāng)我們的項(xiàng)目需要遠(yuǎn)程訪(fǎng)問(wèn)時(shí)。這些模塊可以執(zhí)行我們普通手機(jī)可以執(zhí)行的所有操作,例如撥打/接聽(tīng)電話(huà),發(fā)送/接收短信,使用GPRS連接到互聯(lián)網(wǎng)等。您還可以將普通麥克風(fēng)和揚(yáng)聲器連接到此模塊,并在移動(dòng)通話(huà)中交談。

如下圖所示,GSM模塊帶有一個(gè)USART適配器,可以使用MAX232模塊直接連接到計(jì)算機(jī),或者可以使用Tx和Rx引腳將其連接到微控制器。您還可以注意到可以連接麥克風(fēng)或揚(yáng)聲器的其他引腳,如MIC +,MIC-,SP+,SP-等。該模塊可以通過(guò)普通的直流桶形插孔由12V 適配器供電。

poYBAGOs9SmAPcWpAAD9m9py3ck351.JPG

將SIM卡插入模塊插槽并打開(kāi)電源,您應(yīng)該注意到電源指示燈亮起?,F(xiàn)在等待一分鐘左右,您應(yīng)該會(huì)看到紅色(或任何其他顏色)LED 每 3 秒閃爍一次。這意味著您的模塊能夠與您的SIM卡建立連接?,F(xiàn)在,您可以繼續(xù)將模塊與手機(jī)或任何微控制器連接。

ISD1820 語(yǔ)音模塊:

ISD 1820語(yǔ)音模塊確實(shí)是一個(gè)很酷的模塊,可以通過(guò)語(yǔ)音公告為您的項(xiàng)目增添趣味。該模塊能夠錄制音頻剪輯 10 秒,然后在需要時(shí)播放。模塊本身帶有麥克風(fēng)和揚(yáng)聲器(8歐姆0.5瓦),它應(yīng)該看起來(lái)像下面顯示的那樣。

pYYBAGOs9SuAWjSEAABO257WQ-Y163.jpg

pYYBAGOs9S-AOLdMAAA5V265Rl0009.png

該模塊工作在+5V電壓下,可以使用左側(cè)的操縱桿供電。它在底部還有三個(gè)按鈕,分別是Rec.按鈕,PlayE。按鈕和播放L。按鈕。您可以通過(guò)按錄制按鈕錄制您的聲音,并使用 PlayE 按鈕播放。只要您按住按鈕,PlayL 就會(huì)播放語(yǔ)音。與MCU接口時(shí),我們可以使用左側(cè)的引腳。這些引腳可承受 3V-5V,因此可由 Arduino/ESP8266 直接驅(qū)動(dòng)。在我們的項(xiàng)目中,我們使用Arduino模塊的D8引腳控制PLAYE引腳。這樣我們就可以在GSM模塊檢測(cè)到并接聽(tīng)呼叫時(shí)播放錄制的語(yǔ)音。

電路圖及說(shuō)明:

poYBAGOs9TKAI0h1AADNE4BSNa0580.png

上面給出了該自動(dòng)語(yǔ)音呼叫應(yīng)答機(jī)項(xiàng)目的完整電路圖。如您所見(jiàn),連接非常簡(jiǎn)單。我們使用 12V 1A 適配器為 GSM 模塊供電,使用 9V 電池為 Arduino 供電,ISD 語(yǔ)音模塊由 Arduino 的 +5V 引腳供電。眾所周知,我們可以通過(guò)按下rec按鈕在語(yǔ)音模塊上錄制任何內(nèi)容,這將在按下P-E時(shí)播放,此音頻必須發(fā)送到GSM模塊的麥克風(fēng)。因此,我們將語(yǔ)音模塊的揚(yáng)聲器引腳連接到GSM模塊的麥克風(fēng)引腳。

這里,Arduino和GSM模塊串行連接,Arduino的Tx引腳連接到引腳9,Rx引腳連接引腳10。這將有助于Arduino收聽(tīng)GSM模塊。當(dāng)呼叫到達(dá)GSM模塊時(shí),Arduino將收聽(tīng)它并要求GSM模塊應(yīng)答呼叫。Arduino 確保呼叫處于活動(dòng)狀態(tài),然后通過(guò)使引腳 8(連接到語(yǔ)音模塊的 P-E)高電平 200 毫秒,在語(yǔ)音模塊上播放錄制的語(yǔ)音消息。

對(duì) Arduino 進(jìn)行編程

從上面的段落中我們知道Arduino在這里的作用是什么;現(xiàn)在讓我們看一下執(zhí)行相同操作的代碼。該項(xiàng)目的完整Arduino代碼在本頁(yè)底部給出,在這里我將代碼分成小垃圾來(lái)解釋它。

在我們進(jìn)一步安裝 GSM 庫(kù)之前,請(qǐng)單擊此 Github GSM 庫(kù)鏈接以下載此項(xiàng)目中使用的庫(kù)。您將獲得一個(gè)zip文件,該文件必須通過(guò)Sketch -> Include Librarey -> Add添加到Arduino庫(kù)中。壓縮文件。

下面顯示的代碼的前三行用于將庫(kù)包含在我們的代碼中。我們使用串行庫(kù)和線(xiàn)庫(kù),因?yàn)槲覀儧](méi)有使用 Arduino 的默認(rèn) Rx 和 Tx 引腳與 GSM 模塊通信。

#include //download librarey from https://github.com/Seeed-Studio/GPRS_SIM900
#include //default librarey
#include //default library
我們使用以下線(xiàn)路在引腳 9 和 10 上啟用串行通信。這是我們上面包含的軟件串行庫(kù)實(shí)現(xiàn)的。

SoftwareSerial gprs(9,10);//TX,RX
在我們的設(shè)置函數(shù)中,我們以 9600 波特率初始化串行監(jiān)視器,GSM 模塊也使用 9600 波特率初始化。觸發(fā)語(yǔ)音的引腳 8 被聲明為輸出引腳。

void setup(){
Serial.begin(9600); //Serial monitor works on 9600 baudrate for debugging
sim900_init(&gprs, 9600); //GSM module works on 9600 baudrate
pinMode(8, OUTPUT); //pin to turn on Voice
Serial.println("Arduino - Automatic Voice Machine");
}
接下來(lái),我們必須創(chuàng)建一個(gè)函數(shù),該函數(shù)可以通過(guò)其串行端口讀取和理解GSM模塊所說(shuō)的內(nèi)容。如果我們使用簡(jiǎn)單的串行讀取行(如“gprs.read()”來(lái)讀取消息,我們將以 ASCII 十進(jìn)制值的形式獲取它們,這對(duì)我們來(lái)說(shuō)毫無(wú)意義。

因此,以下函數(shù)用于使用字符串對(duì)象將這些十進(jìn)制值轉(zhuǎn)換為字符串,然后將它們連接起來(lái)形成字符串。最終的字符串值存儲(chǔ)在變量 Fdata 中,該變量為字符串類(lèi)型,可用于與任何字符串值進(jìn)行比較。

void check_Incoming()
{
if(gprs.available()) //If GSM is saying something
{
Incomingch = gprs.read(); // Listen to it and store in this variable

if (Incomingch == 10 || Incomingch ==13) //If it says space (10) or Newline (13) it means it has completed one word
{Serial.println(data); Fdata =data; data = ""; } //Print the word and clear the variable to start fresh
else
{
String newchar = String (char(Incomingch)); //convert the char to string by using string objects
data = data +newchar; // After converting to string, do string concatenation
}
}
}
以下行用于調(diào)試,使用這些調(diào)試器行,您可以將任何AT命令從Arduino的串行監(jiān)視器發(fā)送到GSM,還可以查看串行監(jiān)視器上的響應(yīng)。

if(Serial.available()){ //Used for debugging
gprs.write(Serial.read()); //Used for debugging
} //Used for debugging
如前所述,Arduino必須檢查GSM模塊是否正在接收任何呼叫。這可以通過(guò)使Arduino檢查“RING”來(lái)完成,因?yàn)镚SM模塊將根據(jù)AT命令列表在呼叫時(shí)輸出RING。當(dāng)它找到呼叫時(shí),它將等待 5 秒鐘并將命令“ATA”發(fā)送到 GSM 模塊,這將使 GSM 模塊接聽(tīng)呼叫,接聽(tīng)后它將響應(yīng)“確定”。Arduino再次等待“OK”確認(rèn),然后將引腳8調(diào)高200ms,以播放來(lái)自語(yǔ)音模塊的錄制語(yǔ)音。

if (Fdata == "RING") //If the GSM module says RING
{
delay(5000); //wait for 5sec to create 3 ring delay.
gprs.write ("ATArn"); //Answer the call
Serial.println ("Placed Received"); //Used for debugging
while(Fdata != "OK") //Until call successfully answered
{check_Incoming(); //Read what GSM modue is saying
Serial.println ("Playing Recorded message"); //Used for debugging

//Play the recored voice message
delay(500);
digitalWrite(8, HIGH); //Go high
delay(200); // wait for 200 msec
digitalWrite(8, LOW); //Go low
}

加工:

一旦您的代碼和硬件準(zhǔn)備就緒,就該找點(diǎn)樂(lè)子了。打開(kāi)兩個(gè)模塊的電源,然后按語(yǔ)音模塊上的REC按鈕并錄制消息。此消息的長(zhǎng)度只能為 10 秒。

pYYBAGOs9TSAS1sVAADZ56pHLMA019.jpg

現(xiàn)在使用以下給定的代碼對(duì)Arduino進(jìn)行編程,并將SIM卡插入GSM模塊,您應(yīng)該等待至少2分鐘,以便GSM模塊可以與您的網(wǎng)絡(luò)服務(wù)提供商建立連接。完成后,您應(yīng)該會(huì)看到一個(gè)紅色 LED 每 3 秒閃爍一次,這表明您的 SIM 卡已準(zhǔn)備好接聽(tīng)電話(huà)。您現(xiàn)在可以嘗試從任何號(hào)碼撥打此SIM卡,并且您應(yīng)該會(huì)在連續(xù)響鈴三次后聽(tīng)到錄制的消息。

/*

Automatic Voice machine using Arudino and GSM900

Created by: Aswinth Raj B

Coded on: 22-9-2017

Website: www.circuitdigest.com

*/


#include //download library from https://github.com/Seeed-Studio/GPRS_SIM900

#include //default library

#include //default library


int Incomingch;

String data,Fdata;


//Connect Tx pin of GSM to 9 of Arduino

//Connect Rx pin of GSM to 10 of Arduino

SoftwareSerial gprs(9,10);//TX,RX


void setup(){

Serial.begin(9600); //Serial monitor works on 9600 baudrate for debugging

sim900_init(&gprs, 9600); //GSM module works on 9600 baudrate

pinMode(8, OUTPUT); //pin to turn on Voice

Serial.println("Arduino - Automatic Voice Machine");

}


/*Function to read Incoming data from GSM to Arduino*/

void check_Incoming()

{

if(gprs.available()) //If GSM is saying something

{

Incomingch = gprs.read(); // Listen to it and store in this variable



if (Incomingch == 10 || Incomingch ==13) //If it says space (10) or Newline (13) it means it has completed one word

{Serial.println(data); Fdata =data; data = ""; } //Print the word and clear the variable to start fresh

else

{

String newchar = String (char(Incomingch)); //convert the char to string by using string objects

data = data +newchar; // After converting to string, do string concatenation

}

}

}

/*##End of Function##*/


void loop(){



check_Incoming(); //Read what GSM module is saying



if(Serial.available()){ //Used for debugging

gprs.write(Serial.read()); //Used for debugging

} //Used for debugging


if (Fdata == "RING") //If the GSM module says RING

{

delay(5000); //wait for 5sec to create 3 ring delay.

gprs.write ("ATArn"); //Answer the call

Serial.println ("Placed Received"); //Used for debugging

while(Fdata != "OK") //Until call successfully answered

{check_Incoming(); //Read what GSM module is saying

Serial.println ("Playing Recorded message"); //Used for debugging


//Play the recorded voice message

delay(500);

digitalWrite(8, HIGH); //Go high

delay(200); // wait for 200 msec

digitalWrite(8, LOW); //Go low

}

}

}



聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • GSM
    GSM
    +關(guān)注

    關(guān)注

    9

    文章

    835

    瀏覽量

    122719
  • 應(yīng)答機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    9749
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6455

    瀏覽量

    186353
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    樓宇門(mén)禁呼叫應(yīng)答器設(shè)計(jì)

    哪位大神做過(guò)基于51的樓宇門(mén)禁呼叫應(yīng)答器么,急求原理圖及程序
    發(fā)表于 05-19 23:17

    某型空管二次雷達(dá)應(yīng)答機(jī)系統(tǒng)設(shè)計(jì)

    高偉,陸海靜,鄭海波(1.海軍航空工程學(xué)院 青島分院山東 青島266041;2.海軍91372部隊(duì)上海200436)1引言某型空管二次雷達(dá)應(yīng)答機(jī)系統(tǒng)是種全固態(tài)化的A/C模式應(yīng)答機(jī),用于空中交通管制
    發(fā)表于 06-18 06:17

    航管應(yīng)答機(jī)的接口類(lèi)型有哪些?

    針對(duì)航管應(yīng)答機(jī)在地面測(cè)試時(shí)需要專(zhuān)用氣壓源提供模擬高度信息的缺點(diǎn),分析了航管應(yīng)答機(jī)高度接口信號(hào)的特性,總結(jié)出高度數(shù)值與高度接口信號(hào)之間的對(duì)應(yīng)關(guān)系,設(shè)計(jì)了基于單片機(jī)的航管應(yīng)答機(jī)高度模擬器硬
    發(fā)表于 08-12 07:13

    詢(xún)問(wèn)-應(yīng)答機(jī)制的描述

    詢(xún)問(wèn)-應(yīng)答機(jī)制的描述 OLT以先到先處理為原則處理從ONU發(fā)來(lái)的請(qǐng)求。OLT有個(gè)信息表,記錄了每個(gè)ONU的緩沖區(qū)和RTT(round-trip time)大小。若某
    發(fā)表于 03-01 16:38 ?1174次閱讀
    詢(xún)問(wèn)-<b class='flag-5'>應(yīng)答機(jī)</b>制的描述

    基于OP7200的應(yīng)答機(jī)自動(dòng)測(cè)試系統(tǒng)

    為了提高某型應(yīng)答機(jī)自動(dòng)測(cè)試效率,降低開(kāi)發(fā)成本,提出種基于顯示控制模塊OP7200 的應(yīng)答機(jī)自動(dòng)
    發(fā)表于 05-12 17:13 ?22次下載
    基于OP7200的<b class='flag-5'>應(yīng)答機(jī)</b><b class='flag-5'>自動(dòng)</b>測(cè)試系統(tǒng)

    Cobham AvComm推出用于測(cè)試應(yīng)答機(jī)和測(cè)距的新型綜合測(cè)試儀

    Cobham AvComm推出用于測(cè)試應(yīng)答機(jī)和測(cè)距儀(DME)的新型ATC-5000NG NextGen ATC/DME綜合測(cè)試儀。
    發(fā)表于 05-04 16:22 ?1819次閱讀

    基于單片機(jī)的航管應(yīng)答機(jī)高度模擬器解析

    軟件流程,并進(jìn)行了調(diào)試使用,結(jié)果表明,該高度模擬器具有操作簡(jiǎn)便、精度高、性?xún)r(jià)比高等特點(diǎn),已廣泛應(yīng)用于航管應(yīng)答機(jī)的中繼級(jí)和大修級(jí)維修領(lǐng)域。 航管應(yīng)答機(jī)是二次雷達(dá)系統(tǒng)中的機(jī)載設(shè)備,無(wú)需人工參與,即能自動(dòng)應(yīng)答地面
    發(fā)表于 11-16 10:42 ?4次下載
    基于單片<b class='flag-5'>機(jī)</b>的航管<b class='flag-5'>應(yīng)答機(jī)</b>高度模擬器解析

    應(yīng)答機(jī)器人可通過(guò)導(dǎo)航系統(tǒng)傳達(dá)實(shí)時(shí)災(zāi)情

    災(zāi)防應(yīng)答機(jī)器人,可讓民眾透過(guò)簡(jiǎn)單的問(wèn)答方式及主動(dòng)提醒模式,提供使用者實(shí)時(shí)精準(zhǔn)之防災(zāi)數(shù)據(jù)、圖資、圖表、影像等,讓使用者目了然、實(shí)時(shí)反應(yīng)。
    發(fā)表于 12-30 13:06 ?726次閱讀

    Arduino和其他模塊制作個(gè)懸停板

    Arduino和其他些支持模塊,制作了這個(gè)懸停板。當(dāng)檢測(cè)到前方有障礙物時(shí)自動(dòng)停止,危險(xiǎn)LED(紅色LED)亮起,用來(lái)搬運(yùn)物品效果杠杠滴!
    的頭像 發(fā)表于 05-22 06:37 ?1646次閱讀

    使用GSMArduino的基本電話(huà)的制作

    模塊在啟動(dòng)時(shí)將自身配置為接收模式,并且旦收到呼叫或SMS,LCD就會(huì)顯示響應(yīng)。如果收到響應(yīng),該程序僅使用兩個(gè)按鈕進(jìn)行用戶(hù)交互。
    的頭像 發(fā)表于 10-17 10:47 ?4239次閱讀

    Airboxer無(wú)人直升機(jī)上已成功集成了MXS應(yīng)答機(jī)

    MXS應(yīng)答機(jī)配有頂部和底部天線(xiàn),能夠?qū)崿F(xiàn)全天線(xiàn)覆蓋,每個(gè)天線(xiàn)都配置個(gè)接收機(jī),以提供可靠的空域感應(yīng)。
    發(fā)表于 04-12 10:09 ?1155次閱讀

    某星載應(yīng)答機(jī)電磁兼容性設(shè)計(jì)案例講解

    作為信號(hào)收發(fā)用裝置,應(yīng)答機(jī)產(chǎn)品對(duì)信號(hào)具有較高的靈敏度,因此容易受到電磁信號(hào)的干擾,電磁屏蔽設(shè)計(jì)在產(chǎn)品設(shè)計(jì)中占據(jù)十分重要的地位。
    的頭像 發(fā)表于 12-24 15:36 ?830次閱讀

    使用GSM模塊制作家庭自動(dòng)化設(shè)備

    電子發(fā)燒友網(wǎng)站提供《使用GSM模塊制作家庭自動(dòng)化設(shè)備.zip》資料免費(fèi)下載
    發(fā)表于 11-16 11:37 ?0次下載
    使用<b class='flag-5'>GSM</b><b class='flag-5'>模塊</b><b class='flag-5'>制作</b>家庭<b class='flag-5'>自動(dòng)</b>化設(shè)備

    如何制作基于Arduino自動(dòng)開(kāi)門(mén)

    電子發(fā)燒友網(wǎng)站提供《如何制作基于Arduino自動(dòng)開(kāi)門(mén).zip》資料免費(fèi)下載
    發(fā)表于 06-29 10:14 ?0次下載
    如何<b class='flag-5'>制作</b>基于<b class='flag-5'>Arduino</b>的<b class='flag-5'>自動(dòng)</b>開(kāi)門(mén)

    Arduino一個(gè)自動(dòng)割草機(jī)

    這個(gè)項(xiàng)目中,我們將用Arduino制作個(gè)自動(dòng)割草機(jī)。該機(jī)器可以
    的頭像 發(fā)表于 07-07 14:02 ?1740次閱讀
    用<b class='flag-5'>Arduino</b>做<b class='flag-5'>一個(gè)</b><b class='flag-5'>自動(dòng)</b>割草<b class='flag-5'>機(jī)</b>