오늘날의 현대 사회에서 우리 모두는 무선 통신의 주요 수단으로 휴대폰에 의존하고 있습니다. 그러나 우리 모두는 우리의 전화에 응답하지 못할 수있는 상황에 직면했습니다. 이러한 전화는 중요한 개인적인 전화이거나 인생을 바꾸는 비즈니스 전화 일 수 있으며 응답 할 수 없기 때문에 해당 기회를 놓쳤을 수 있습니다. 그 특정 시간에 전화하십시오.
이 프로젝트는 아두 이노와 GSM 모듈을 이용하여 자동 응답기를 만들어이 문제를 해결하는 것을 목표로 합니다. 다음 번에 새 전화 번호로 변경하거나 긴 순례 여행을 떠나거나 휴가를 즐길 때이 기기를 사용하여 부재 이유를 설명하는 음성을 녹음하면 모든 통화가 자동으로 응답됩니다. 녹음 된 음성이 재생됩니다. 또한 근무 시간이 아닌 동안 고객의 전화에 응답하기 위해 비즈니스 번호로 사용할 수도 있습니다. 흥미 롭죠? 그러니 만들어 보자..
필요한 재료:
프로젝트가 약간 복잡하게 들릴 수 있지만 빌드가 정말 쉽습니다. 다음 구성 요소 만 있으면됩니다.
- Arduino Uno
- GSM 모듈 – Flyscale SIM 900
- ISD 1820 음성 모듈
- GSM 모듈에 전원을 공급하는 12V 어댑터
- Arduino에 전원을 공급하는 9V 배터리
- 전선 연결
실제로 프로젝트를 진행하기 전에 GSM 모듈과 ISD 1820 음성 모듈에 대해 알아 보겠습니다.
플라이 스케일 SIM900 GSM 모듈:
GSM 모듈 은 특히 프로젝트에 원격 액세스가 필요할 때 사용하는 것이 매력적입니다. 이 모듈은 전화 걸기 / 받기, SMS 보내기 / 받기, GPRS를 사용하여 인터넷 연결 등과 같이 일반 휴대폰이 할 수있는 모든 작업을 수행 할 수 있습니다. 일반 마이크와 스피커를이 모듈에 연결하고 대화 할 수도 있습니다. 모바일 통화. 다음은 다른 마이크로 컨트롤러를 사용하는 몇 가지 자습서입니다.
- Arduino 및 GSM 모듈을 사용한 통화 및 메시지
- Raspberry Pi 및 GSM 모듈을 사용한 통화 및 문자
- PIC 마이크로 컨트롤러와 인터페이스하는 GSM 모듈-전화 걸기 및 받기
아래 그림에서 볼 수 있듯이 GSM 모듈에는 MAX232 모듈을 사용하여 컴퓨터에 직접 인터페이스 할 수 있는 USART 어댑터가 함께 제공 되거나 Tx 및 Rx 핀을 사용하여 마이크로 컨트롤러에 연결할 수 있습니다. 마이크 또는 스피커를 연결할 수있는 MIC +, MIC-, SP +, SP- 등과 같은 다른 핀도 확인할 수 있습니다. 모듈은 12V 어댑터에 의해 제공 될 수있는 통상의 DC 배럴 잭 내지.
모듈의 슬롯에 SIM 카드를 삽입하고 전원을 켜면 전원 LED가 켜집니다. 이제 1 분 정도 기다리면 빨간색 (또는 다른 색상) LED가 3 초마다 한 번씩 깜박이는 것을 볼 수 있습니다. 이는 모듈이 SIM 카드와의 연결을 설정할 수 있음을 의미합니다. 이제 모듈을 전화 또는 마이크로 컨트롤러와 연결하는 과정을 진행할 수 있습니다.
ISD1820 음성 모듈:
ISD 1820 음성 모듈은 음성 안내로 프로젝트를 꾸밀 수있는 정말 멋진 모듈입니다. 이 모듈은 10 초 동안 오디오 클립을 녹음 한 다음 필요할 때 재생할 수 있습니다. 모듈 자체에는 마이크와 스피커 (8ohms 0.5watts)가 함께 제공되며 아래와 같은 모습이어야합니다.
모듈은 + 5V에서 작동 하고 왼쪽에있는 빙산 스틱을 사용하여 전원을 공급할 수 있습니다. 또한 하단에 Rec 인 3 개의 버튼이 있습니다. 버튼, PlayE. 버튼과 PlayL. 버튼을 각각 누릅니다. Rec를 눌러 음성을 녹음 할 수 있습니다 . 버튼을 누르고 PlayE 버튼을 사용하여 재생합니다. PlayL은 버튼을 누르고있는 동안 음성을 재생합니다. MCU와 인터페이스 할 때 왼쪽에있는 핀을 사용할 수 있습니다. 이 핀은 3V-5V를 견딜 수 있으므로 Arduino / ESP8266에 의해 직접 구동 될 수 있습니다. 우리 프로젝트에서는 Arduino 모듈의 D8 핀을 사용하여 PLAYE 핀을 제어하고 있습니다. GSM 모듈에서 통화가 감지되고 수신되면 녹음 된 음성을 재생할 수 있습니다.
회로도 및 설명:
이 자동 음성 통화 응답기 프로젝트 의 전체 회로도 는 위에 나와 있습니다. 보시다시피 연결은 정말 간단합니다. 12V 1A 어댑터로 GSM 모듈에 전원을 공급하고 9V 배터리로 Arduino에 전원을 공급합니다. ISD Voice 모듈은 Arduino의 + 5V 핀에 의해 전원을 공급받습니다. rec 버튼을 눌러 음성 모듈에 무엇이든 녹음 할 수 있다는 것을 알고 있듯이 PE를 누르면 재생되며이 오디오는 GSM 모듈의 마이크로 전송되어야합니다. 따라서 음성 모듈의 스피커 핀을 GSM 모듈의 마이크 핀에 연결합니다.
여기서 아두 이노와 GSM 모듈은 직렬로 연결되고 아두 이노의 Tx 핀은 9 번 핀에, Rx 핀은 10 번 핀에 연결됩니다. 이것은 아두 이노가 GSM 모듈을들을 수 있도록 도와줍니다. GSM 모듈에 전화가 오면 Arduino는이를 듣고 GSM 모듈이 전화를 받도록 요청합니다. Arduino는 통화가 활성 상태인지 확인한 다음 핀 8 (음성 모듈의 PE에 연결됨)을 200ms 동안 높게 설정하여 음성 모듈에서 녹음 된 음성 메시지를 재생합니다.
Arduino 프로그래밍:
우리는 위의 단락에서 Arduino의 역할이 무엇인지 알고 있습니다. 이제 동일한 작업을 수행하는 코드를 살펴 보겠습니다. 프로젝트 의 전체 아두 이노 코드 는이 페이지의 맨 아래에 있습니다. 더 나아가 여기에서는 코드를 작은 쓰레기에 흘려서 설명했습니다.
GSM 라이브러리를 추가로 설치 하기 전에이 Github GSM 라이브러리 링크를 클릭하여이 프로젝트에 사용 된 라이브러리를 다운로드하십시오. Sketch-> Include Librarey-> Add.Zip file 을 통해 Arduino 라이브러리에 추가해야하는 zip 파일을 얻을 수 있습니다 .
아래 표시된 코드의 처음 세 줄은 라이브러리를 코드에 포함하는 데 사용됩니다. 우리는 사용 시리얼 라이브러리 와이어 라이브러리를 우리는 GSM 모듈과 통신하기 위해 아두 이노의 기본 Rx 및 Tx는 핀을 사용하지 않기 때문에.
#포함
우리는 핀 9와 10에 시리얼 통신을 가능하게 다음과 같은 줄을 사용합니다. 이것은 위에 포함 된 소프트웨어 직렬 라이브러리에 의해 가능합니다.
소프트웨어 시리얼 gprs (9,10); // TX, RX
설정 기능 내 에서 직렬 모니터를 9600 전송 속도로 초기화하고 GSM 모듈도 9600 전송 속도로 초기화합니다. 음성을 트리거하는 핀 8은 출력 핀으로 선언됩니다.
void setup () {Serial.begin (9600); // 시리얼 모니터는 디버깅을 위해 9600 전송 속도에서 작동합니다. sim900_init (& gprs, 9600); // GSM 모듈은 9600 전송 속도에서 작동합니다. pinMode (8, OUTPUT); // 핀을 사용하여 음성 Serial.println ("Arduino-자동 음성 기계"); }
다음으로 GSM 모듈이 직렬 포트를 통해 말하는 내용을 읽고 이해할 수있는 함수를 만들어야합니다. "gprs.read ()"와 같은 간단한 직렬 읽기 라인을 사용하여 메시지를 읽으면 ASCII 십진수 값의 형태로 얻을 수 있습니다. 이것은 우리에게 의미가 없습니다.
따라서 다음 함수는 문자열 객체를 사용하여 이러한 십진수 값을 문자열로 변환 한 다음 연결하여 문자열을 형성하는 데 사용됩니다. 최종 문자열 값은 변수에 저장 Fdata 형이며, 문자열 및 문자열 값과 비교하기 위해 사용될 수있다.
void check_Incoming () {if (gprs.available ()) // GSM이 무언가를 말하는 경우 {Incomingch = gprs.read (); // 그것을 듣고이 변수에 저장 if (Incomingch == 10-Incomingch == 13) // 공백 (10) 또는 Newline (13)이라고 말하면 한 단어가 완료되었음을 의미합니다. {Serial.println (data); Fdata = 데이터; 데이터 = ""; } // 단어를 인쇄하고 변수를 지워 새로 시작 else {String newchar = String (char (Incomingch)); // 문자열 객체를 사용하여 문자를 문자열로 변환 data = data + newchar; // 문자열로 변환 후 문자열 연결}}}
다음 줄은 디버깅에 사용되는 이 디버거 라인이 GSM에 아두 이노의 시리얼 모니터에서 모든 AT 명령을 보내고 또한 시리얼 모니터의 응답이 무엇인지 볼 수 있습니다.
if (Serial.available ()) {// 디버깅에 사용 gprs.write (Serial.read ()); // 디버깅에 사용됨} // 디버깅에 사용됨
앞서 말했듯이 Arduino는 GSM 모듈이 전화를 받는지 확인해야합니다. 이는 GSM 모듈이 AT 명령 목록에 따라 호출시 RING을 출력하기 때문에 Arduino가“ RING ” 을 확인하도록하여 수행 할 수 있습니다. 전화를 찾으면 5 초간 기다렸다가 GSM 모듈에 " ATA " 명령을 보내면 GSM 모듈이 전화를 받고 응답 한 후 "OK"로 응답합니다. Arduino는 다시 " OK "승인을 기다린 다음 음성 모듈에서 녹음 된 음성을 재생하기 위해 핀 8을 200ms 동안 높입니다.
if (Fdata == "RING") // GSM 모듈에 RING이 표시되면 {delay (5000); // 3 번의 링 딜레이를 만들기 위해 5 초 동안 기다립니다. gprs.write ("ATA \ r \ n"); // 호출에 응답 Serial.println ("Placed Received"); // 디버깅에 사용 while (Fdata! = "OK") // 호출이 성공적으로 응답 할 때까지 {check_Incoming (); // GSM 모드가 말하는 내용 읽기 Serial.println ("녹음 된 메시지 재생"); // 디버깅에 사용됩니다. // 레코딩 된 음성 메시지를 재생합니다. delay (500); digitalWrite (8, HIGH); // 높은 지연 (200); // 200msec 대기 digitalWrite (8, LOW); // 아래로 이동}
일:
코드와 하드웨어가 준비 되었으면 이제 재미있을 시간입니다. 두 모듈에 전원을 공급하고 음성 모듈의 REC 버튼을 누르고 메시지를 녹음합니다. 이 메시지의 길이는 10 초입니다.
이제 아래 주어진 코드를 사용하여 Arduino를 프로그래밍하고 GSM 모듈에 SIM 자동차를 삽입합니다. 이제 GSM 모듈이 네트워크 서비스 제공 업체와 연결을 설정할 수 있도록 2 분 이상 기다려야합니다. 완료되면 3 초마다 한 번씩 빨간색 LED가 깜박이는 것을 볼 수 있습니다. 이는 SIM이 전화를받을 준비가되었음을 나타냅니다. 이제 임의의 번호에서이 SIM 카드로 전화를 걸 수 있으며 세 번의 연속 벨이 울린 후 녹음 된 메시지를들을 수 있습니다. 프로젝트의 전체 작업은 아래 비디오에 나와 있습니다.
Tadaaaaaa !!! 이제 자신 만의 자동 음성 통화 자동 응답기 가 있고 필요할 때 사용하고 친구와 가족을 놀라게 할 수 있습니다.
프로젝트가 즐거웠기를 바라며 비슷한 것을 만드시 길 바랍니다. 문제가 있으시면 댓글란에 올려 주시면 도와 드리겠습니다.