那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Arduino和GSM模塊制作一個自動呼叫應答機

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

在當今的現代世界中,我們都依賴手機作為無線通信的主要手段。但是,我們都遇到過可能無法接聽電話的情況,這些電話可能是重要的個人電話或改變生活的商務電話,您可能錯過了那個機會,因為您無法在那個特定時間接聽該電話。

該項目旨在通過使用Arduino和GSM模塊創建自動呼叫應答機來解決此問題。下次當您更換新電話號碼或外出進行長途朝圣旅行或享受當之無愧的假期時,只需使用此機器錄制您的聲音,說明缺席的原因,您的所有電話將自動由這臺機器接聽,您錄制的聲音將播放給他們。這也可用于您的業務號碼,以便在非辦公時間接聽客戶的呼叫。聽起來很有趣吧?所以讓我們構建它..

所需材料:

該項目可能聽起來有點復雜,但它真的很容易構建,你只需要以下組件

Arduino Uno

GSM 模塊 – 飛鱗 SIM 900

ISD 1820 語音模塊

12V 適配器為 GSM 模塊供電

9V 電池為 Arduino 供電

連接線

poYBAGOs9SGAJSxiAADJE27qPwU782.jpg

在我們實際進入項目之前,讓我們熟悉GSM模塊和ISD 1820語音模塊

飛秤 SIM900 GSM 模塊:

GSM模塊使用起來非常吸引人,尤其是當我們的項目需要遠程訪問時。這些模塊可以執行我們普通手機可以執行的所有操作,例如撥打/接聽電話,發送/接收短信,使用GPRS連接到互聯網等。您還可以將普通麥克風和揚聲器連接到此模塊,并在移動通話中交談。

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

poYBAGOs9SmAPcWpAAD9m9py3ck351.JPG

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

ISD1820 語音模塊:

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

pYYBAGOs9SuAWjSEAABO257WQ-Y163.jpg

pYYBAGOs9S-AOLdMAAA5V265Rl0009.png

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

電路圖及說明:

poYBAGOs9TKAI0h1AADNE4BSNa0580.png

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

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

對 Arduino 進行編程

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

在我們進一步安裝 GSM 庫之前,請單擊此 Github GSM 庫鏈接以下載此項目中使用的庫。您將獲得一個zip文件,該文件必須通過Sketch -> Include Librarey -> Add添加到Arduino庫中。壓縮文件。

下面顯示的代碼的前三行用于將庫包含在我們的代碼中。我們使用串行庫和線庫,因為我們沒有使用 Arduino 的默認 Rx 和 Tx 引腳與 GSM 模塊通信

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

SoftwareSerial gprs(9,10);//TX,RX
在我們的設置函數中,我們以 9600 波特率初始化串行監視器,GSM 模塊也使用 9600 波特率初始化。觸發語音的引腳 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");
}
接下來,我們必須創建一個函數,該函數可以通過其串行端口讀取和理解GSM模塊所說的內容。如果我們使用簡單的串行讀取行(如“gprs.read()”來讀取消息,我們將以 ASCII 十進制值的形式獲取它們,這對我們來說毫無意義。

因此,以下函數用于使用字符串對象將這些十進制值轉換為字符串,然后將它們連接起來形成字符串。最終的字符串值存儲在變量 Fdata 中,該變量為字符串類型,可用于與任何字符串值進行比較。

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
}
}
}
以下行用于調試,使用這些調試器行,您可以將任何AT命令從Arduino的串行監視器發送到GSM,還可以查看串行監視器上的響應。

if(Serial.available()){ //Used for debugging
gprs.write(Serial.read()); //Used for debugging
} //Used for debugging
如前所述,Arduino必須檢查GSM模塊是否正在接收任何呼叫。這可以通過使Arduino檢查“RING”來完成,因為GSM模塊將根據AT命令列表在呼叫時輸出RING。當它找到呼叫時,它將等待 5 秒鐘并將命令“ATA”發送到 GSM 模塊,這將使 GSM 模塊接聽呼叫,接聽后它將響應“確定”。Arduino再次等待“OK”確認,然后將引腳8調高200ms,以播放來自語音模塊的錄制語音。

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
}

加工:

一旦您的代碼和硬件準備就緒,就該找點樂子了。打開兩個模塊的電源,然后按語音模塊上的REC按鈕并錄制消息。此消息的長度只能為 10 秒。

pYYBAGOs9TSAS1sVAADZ56pHLMA019.jpg

現在使用以下給定的代碼對Arduino進行編程,并將SIM卡插入GSM模塊,您應該等待至少2分鐘,以便GSM模塊可以與您的網絡服務提供商建立連接。完成后,您應該會看到一個紅色 LED 每 3 秒閃爍一次,這表明您的 SIM 卡已準備好接聽電話。您現在可以嘗試從任何號碼撥打此SIM卡,并且您應該會在連續響鈴三次后聽到錄制的消息。

/*

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

}

}

}



聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • GSM
    GSM
    +關注

    關注

    9

    文章

    835

    瀏覽量

    123026
  • 應答機
    +關注

    關注

    0

    文章

    6

    瀏覽量

    9813
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    187828
收藏 人收藏

    評論

    相關推薦

    樓宇門禁呼叫應答器設計

    哪位大神做過基于51的樓宇門禁呼叫應答器么,急求原理圖及程序
    發表于 05-19 23:17

    某型空管二次雷達應答機系統設計

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

    航管應答機的接口類型有哪些?

    針對航管應答機在地面測試時需要專用氣壓源提供模擬高度信息的缺點,分析了航管應答機高度接口信號的特性,總結出高度數值與高度接口信號之間的對應關系,設計了基于單片的航管應答機高度模擬器硬
    發表于 08-12 07:13

    詢問-應答機制的描述

    詢問-應答機制的描述 OLT以先到先處理為原則處理從ONU發來的請求。OLT有信息表,記錄了每個ONU的緩沖區和RTT(round-trip time)大小。若某
    發表于 03-01 16:38 ?1257次閱讀
    詢問-<b class='flag-5'>應答機</b>制的描述

    基于OP7200的應答機自動測試系統

    為了提高某型應答機自動測試效率,降低開發成本,提出種基于顯示控制模塊OP7200 的應答機自動
    發表于 05-12 17:13 ?22次下載
    基于OP7200的<b class='flag-5'>應答機</b><b class='flag-5'>自動</b>測試系統

    Cobham AvComm推出用于測試應答機和測距的新型綜合測試儀

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

    基于單片的航管應答機高度模擬器解析

    軟件流程,并進行了調試使用,結果表明,該高度模擬器具有操作簡便、精度高、性價比高等特點,已廣泛應用于航管應答機的中繼級和大修級維修領域。 航管應答機是二次雷達系統中的機載設備,無需人工參與,即能自動應答地面
    發表于 11-16 10:42 ?4次下載
    基于單片<b class='flag-5'>機</b>的航管<b class='flag-5'>應答機</b>高度模擬器解析

    應答機器人可通過導航系統傳達實時災情

    災防應答機器人,可讓民眾透過簡單的問答方式及主動提醒模式,提供使用者實時精準之防災數據、圖資、圖表、影像等,讓使用者目了然、實時反應。
    發表于 12-30 13:06 ?768次閱讀

    Arduino和其他模塊制作懸停板

    Arduino和其他些支持模塊制作了這個懸停板。當檢測到前方有障礙物時自動停止,危險LED(紅色LED)亮起,用來搬運物品效果杠杠滴!
    的頭像 發表于 05-22 06:37 ?1740次閱讀

    使用GSMArduino的基本電話的制作

    模塊在啟動時將自身配置為接收模式,并且旦收到呼叫或SMS,LCD就會顯示響應。如果收到響應,該程序僅使用兩按鈕進行用戶交互。
    的頭像 發表于 10-17 10:47 ?4348次閱讀

    Airboxer無人直升機上已成功集成了MXS應答機

    MXS應答機配有頂部和底部天線,能夠實現全天線覆蓋,每個天線都配置接收,以提供可靠的空域感應。
    發表于 04-12 10:09 ?1233次閱讀

    某星載應答機電磁兼容性設計案例講解

    作為信號收發用裝置,應答機產品對信號具有較高的靈敏度,因此容易受到電磁信號的干擾,電磁屏蔽設計在產品設計中占據十分重要的地位。
    的頭像 發表于 12-24 15:36 ?949次閱讀

    使用GSM模塊制作家庭自動化設備

    電子發燒友網站提供《使用GSM模塊制作家庭自動化設備.zip》資料免費下載
    發表于 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'>自動</b>化設備

    如何制作基于Arduino自動開門

    電子發燒友網站提供《如何制作基于Arduino自動開門.zip》資料免費下載
    發表于 06-29 10:14 ?0次下載
    如何<b class='flag-5'>制作</b>基于<b class='flag-5'>Arduino</b>的<b class='flag-5'>自動</b>開門

    Arduino一個自動割草

    這個項目中,我們將用Arduino制作自動割草。該機器可以
    的頭像 發表于 07-07 14:02 ?2063次閱讀
    用<b class='flag-5'>Arduino</b>做<b class='flag-5'>一個</b><b class='flag-5'>自動</b>割草<b class='flag-5'>機</b>
    尊龙百家乐官网娱乐| 德州扑克游戏大厅| 娱乐城彩金| 百家乐官网稳一点的押法| 迪威百家乐官网娱乐| 百家乐官网娱乐下载| 百家乐视频地主| 飞天百家乐的玩法技巧和规则| 六合彩开奖公告| 平注打百家乐官网的方法| 百家乐在线小游戏| 大发888缺casino组件| 迪威百家乐官网现场| 澳门百家乐网上赌| 二八杠游戏机| 和平县| 欧凯百家乐官网的玩法技巧和规则 | 千亿娱百家乐官网的玩法技巧和规则| 百家乐精神| 利来国际娱乐网| 新西兰百家乐官网的玩法技巧和规则 | 内乡县| 百家乐韩泰阁| 一二博| 网上百家乐可靠| 大发888官方6222| 金域百家乐官网娱乐城| 有钱人百家乐的玩法技巧和规则 | 大发888在线娱乐城| 多伦多百家乐官网的玩法技巧和规则 | 百家乐官网娱乐平台真人娱乐平台| 如何看百家乐路| 百家乐官网单注技巧| 网上玩百家乐好吗| 澳门娱乐城官网| 百家乐机器昀程序| 益阳市| 新锦江百家乐娱乐场| 百家乐官网庄闲必赢| 怎样玩百家乐的玩法技巧和规则| 陆川县|