在当今的现代世界中,我们所有人都将手机作为我们无线通信的主要手段。但是,我们所有人都面临着无法接听电话的情况,这些电话可能是重要的个人电话或改变生活的商务电话,由于您无法接听电话,您可能会错过这个机会。在特定时间致电。
该项目旨在通过使用Arduino和GSM模块创建自动呼叫应答机来解决此问题。下次当您更改为新电话号码或进行长途朝圣旅行或享受当之无愧的假期时,只需使用本机记录您的语音,说明缺席的原因,本机将自动接听所有电话,您的录制的声音将被播放给他们。这也可用于您的公司电话,以在非办公时间接听客户的电话。听起来很有趣吧?因此,让我们构建它。
所需材料:
该项目听起来可能有点复杂,但是确实很容易构建,您只需要以下组件
- Arduino Uno
- GSM模块– Flyscale SIM 900
- ISD 1820语音模块
- 12V适配器为GSM模块供电
- 9V电池为Arduino供电
- 连接线
在我们实际进行该项目之前,让我们熟悉GSM模块和ISD 1820语音模块
飞行秤SIM900 GSM模块:
GSM模块 令人着迷,尤其是在我们的项目需要远程访问时。这些模块可以执行普通手机可以执行的所有操作,例如拨打/接听电话,发送/接收短信,使用GPRS连接到互联网等。您也可以将普通的麦克风和扬声器连接到此模块,然后在自己的设备上进行通话手机通话。以下是使用不同微控制器的一些教程:
- 使用Arduino和GSM模块进行呼叫和消息
- 使用Raspberry Pi和GSM模块进行通话和短信
- GSM模块与PIC微控制器接口-拨打和接听电话
如下图所示,GSM模块带有USART适配器,可以使用MAX232模块直接将其连接到计算机,也可以使用Tx和Rx引脚将其连接到微控制器。您还可以注意到可以连接麦克风或扬声器的其他引脚,例如MIC +,MIC-,SP +,SP-等。该模块可由12V适配器通过普通的DC桶式插座供电。
将SIM卡插入模块的插槽中并打开电源,您会注意到电源LED亮起。现在等待一分钟左右,您应该会看到红色(或任何其他颜色)的LED每3秒闪烁一次。这意味着您的模块能够与SIM卡建立连接。现在,您可以继续将模块与Phone或任何微控制器连接。
ISD1820语音模块:
ISD 1820语音模块确实是一个很棒的模块,可以通过语音通知为您的项目增添趣味。该模块能够录制音频剪辑10秒钟,然后在需要时播放它。该模块本身带有麦克风和扬声器(8欧姆0.5瓦),其外观应如下图所示。
该模块可在+ 5V电压下工作,并且可以使用左侧的冰棍供电。它还在底部有三个按钮,分别是Rec。按钮,PlayE。按钮和PlayL。按钮。您可以按Rec。录制声音。按钮,然后使用PlayE按钮播放它。只要按住按钮,PlayL就会播放声音。与MCU连接时,我们可以使用左侧的引脚。这些引脚可承受3V-5V的电压,因此可以由Arduino / ESP8266直接驱动。在我们的项目中,我们使用Arduino模块的D8引脚控制PLAYE引脚。这样,当GSM模块检测到并接听电话时,我们就可以播放录制的语音。
电路图和说明:
上面给出了此自动语音呼叫答录机项目的完整电路图。如您所见,连接非常简单。我们使用12V 1A适配器为GSM模块供电,并使用9V电池为Arduino供电,ISD语音模块由Arduino的+ 5V引脚供电。众所周知,我们可以通过按下录音按钮在语音模块上录制任何东西,按下PE就会播放该声音,该音频必须发送到GSM模块的麦克风。因此,我们将语音模块的扬声器引脚连接到GSM模块的麦克风引脚。
此处,Arduino和GSM模块串行连接,Arduino的Tx引脚连接到引脚9,Rx引脚连接到引脚10。这将帮助Arduino监听GSM模块。当有电话到达GSM模块时,Arduino将收听并要求GSM模块接听电话。Arduino确保使引脚8(连接到语音模块的PE)变高200ms,以确保呼叫处于活动状态,然后在语音模块上播放录制的语音消息。
编程Arduino:
从上一段我们知道Arduino在这里的作用是什么;现在让我们看一下执行相同操作的代码。该项目的完整Arduino代码在本页底部给出,此外,在这里,我将代码撒到小垃圾中进行了解释。
在我们进一步安装GSM库之前,请单击此Github GSM库链接以下载此项目中使用的库。您将获得一个zip文件,必须通过 Sketch-> Include Librarey-> Add.Zip file 将其添加到Arduino库中。
下面显示的代码的前三行用于将库包含到我们的代码中。我们使用串行库和电线库,因为我们没有使用Arduino的默认Rx和Tx引脚与GSM模块通信。
#包括
我们使用以下行在引脚9和10上启用串行通信。我们上面包含的软件串行库使这成为可能。
软件串行gprs(9,10); // TX,RX
在 设置 功能中,我们以9600波特率初始化串行监视器,并且还以9600波特率初始化GSM模块。触发语音的引脚8被声明为输出引脚。
void setup(){Serial.begin(9600); //串行监视器以9600波特率工作,用于调试sim900_init(&gprs,9600); // GSM模块适用于9600波特率pinMode(8,OUTPUT); //固定以打开语音Serial.println(“ Arduino-自动语音机”); }
接下来,我们必须创建一个函数,该函数可以通过其串行端口读取和理解GSM模块的内容。如果我们使用简单的串行读取行(例如“ gprs.read()”)来读取消息,则将以ASCII十进制值的形式获取它们,这对我们来说毫无意义。
因此,以下函数用于通过使用字符串对象将这些十进制值转换为字符串,然后将它们连接起来以形成字符串。最终的字符串值存储在变量 Fdata中 ,该变量的类型为 string ,可用于与任何String值进行比较。
void check_Incoming(){if(gprs.available())//如果GSM在说些什么{Incomingch = gprs.read(); //收听并存储在此变量中,如果(Incomingch == 10-Incomingch == 13)// //如果显示空格(10)或换行符(13),则表示它已经完成了一个单词{Serial.println(data ); Fdata =数据; 数据=“”;} //打印单词并清除变量以重新开始else {String newchar = String(char(Incomingch)); //使用字符串对象将char转换为字符串data = data + newchar; //转换为字符串后,进行字符串连接}}}
在下面的线用于调试,这些调试线,你可以从阿尔杜伊诺的串行监视器GSM发送任何AT命令,也看看什么是串行监控上的反应。
if(Serial.available()){//用于调试gprs.write(Serial.read()); //用于调试} //用于调试
如前所述,Arduino必须检查GSM模块是否正在接收任何呼叫。这可以通过使Arduino检查“ RING ”来完成,因为在根据AT命令列表进行呼叫的情况下,GSM模块将输出RING。找到呼叫后,它将等待5秒钟,然后将命令“ ATA ”发送到GSM模块,这将使GSM模块接听电话,并在接听后以“ OK”响应。Arduino再次等待“ OK ”确认,然后将Pin 8的引脚变高200ms,以播放来自语音模块的录制语音。
if(Fdata ==“ RING”)//如果GSM模块显示RING {delay(5000); //等待5秒以创建3次振铃延迟。gprs.write(“ ATA \ r \ n”); //应答调用Serial.println(“已收到放置”); //用于调试while(Fdata!=“ OK”)//直到调用成功回答{check_Incoming(); //读取GSM模式在说什么Serial.println(“正在播放录制的消息”);//用于调试//播放录音后的语音留言延迟(500);digitalWrite(8,HIGH); //延迟高(200); //等待200毫秒digitalWrite(8,LOW); //走低}
加工:
一旦代码和硬件准备就绪,就该找点乐子了。为两个模块供电,然后按语音模块上的REC按钮并记录一条消息。此消息的长度只能为10秒。
现在,使用以下给定的代码对Arduino进行编程,并将SIM卡插入GSM模块,现在您至少应等待2分钟,以便GSM模块可以与您的网络服务提供商建立连接。完成后,您应该会看到红色LED每3秒闪烁一次,这表明您的SIM卡已准备好接听电话。现在,您可以尝试从任何号码呼叫此SIM卡,并且连续三声响铃后,您应该会听到录制的消息。以下视频显示了该项目的完整工作。
Tadaaaaaa !!! 现在,您拥有了自己的自动语音呼叫答录机,只需继续使用即可,并在需要时使用它,并让您的朋友和家人惊奇。
希望您喜欢这个项目并建立类似的项目,如果有任何麻烦,请将它们张贴在评论部分,我会为您提供帮助。