今日の現代の世界では、私たちは皆、無線通信の主要な手段として携帯電話に依存しています。しかし、私たち全員が電話に出られない状況に直面しています。これらの電話は重要な個人的な電話または人生を変えるビジネスの電話である可能性があり、それに答えることができなかったためにその機会を逃した可能性がありますその特定の時間に呼び出します。
このプロジェクトは、ArduinoとGSMモジュールを使用して自動留守番電話を作成することでこの問題を解決することを目的としています。次回、新しい電話番号に変更したり、長い巡礼旅行に出かけたり、当然の休暇を楽しんだりするときは、このマシンを使用して、欠席の理由を示す音声を録音してください。すべての通話は、このマシンと録音された音声が再生されます。これは、営業時間外に顧客の電話に応答するためのビジネス番号にも使用できます。面白そうですね。それでは、それを構築しましょう。
必要な材料:
プロジェクトは少し複雑に聞こえるかもしれませんが、ビルドは本当に簡単です。次のコンポーネントが必要です。
- Arduino Uno
- GSMモジュール– Flyscale SIM 900
- ISD1820音声モジュール
- GSMモジュールに電力を供給する12Vアダプター
- Arduinoに電力を供給する9Vバッテリー
- 接続線
実際にプロジェクトに進む前に、GSMモジュールとISD1820音声モジュールについて理解しましょう。
フライスケールSIM900GSMモジュール:
GSMモジュール は、特にプロジェクトでリモートアクセスが必要な場合に使用するのが魅力的です。これらのモジュールは、電話の発着信、SMSの送受信、GPRSを使用したインターネットへの接続など、通常の携帯電話で実行できるすべてのアクションを実行できます。通常のマイクとスピーカーをこのモジュールに接続して、会話することもできます。モバイル通話。さまざまなマイクロコントローラーを使用したチュートリアルを次に示します。
- ArduinoとGSMモジュールを使用した通話とメッセージ
- RaspberryPiとGSMモジュールを使用した通話とテキスト
- PICマイクロコントローラーとインターフェースするGSMモジュール-電話をかけたり受けたりする
下の写真に示すように、GSMモジュールにはUSARTアダプターが付属しており、MAX232モジュールを使用してコンピューターに直接接続するか、TxピンとRxピンを使用してマイクロコントローラーに接続できます。マイクやスピーカーを接続できるMIC +、MIC-、SP +、SP-などの他のピンにも気付くでしょう。モジュールは、12Vアダプタによって電力を供給することができ、通常のDCバレルジャックを介し。
モジュールのスロットにSIMカードを挿入して電源を入れると、電源LEDが点灯していることがわかります。ここで1分ほど待つと、3秒ごとに1回赤(または他の色)のLEDが点滅するはずです。これは、モジュールがSIMカードとの接続を確立できたことを意味します。これで、モジュールを電話または任意のマイクロコントローラーに接続することができます。
ISD1820音声モジュール:
ISD 1820 Voiceモジュールは、Voiceアナウンスでプロジェクトを盛り上げることができる本当にクールなモジュールです。このモジュールは、オーディオクリップを10秒間録音し、必要に応じて再生することができます。モジュール自体にはマイクとスピーカー(8オーム0.5ワット)が付属しており、以下のようになります。
モジュールは、+ 5Vで動作し、左の氷山のスティックを使用して電力を供給することができます。また、下部にRecである3つのボタンがあります。ボタン、PlayE。ボタンとPlayL。それぞれボタン。Recを押すと声を録音できます。ボタンをクリックし、PlayEボタンを使用して再生します。PlayLは、ボタンを押している間、音声を再生します。MCUとのインターフェースでは、左側のピンを使用できます。これらのピンは3V〜5Vに耐えられるため、Arduino / ESP8266で直接駆動できます。私たちのプロジェクトでは、ArduinoモジュールのD8ピンを使用してPLAYEピンを制御しています。これにより、GSMモジュールが通話を検出して受信したときに、録音された音声を再生できます。
回路図と説明:
この自動音声留守番電話プロジェクトの完全な回路図を上に示します。ご覧のとおり、接続は非常に簡単です。 GSMモジュールには12V1Aアダプター、Arduinoには9Vバッテリーが搭載されており、ISD音声モジュールにはArduinoの+ 5Vピンが搭載されています。録音ボタンを押すと音声モジュールに何でも録音でき、PEを押すと再生されることがわかっているので、この音声をGSMモジュールのマイクに送信する必要があります。そこで、VoiceモジュールのスピーカーピンをGSMモジュールのマイクピンに接続します。
ここでは、ArduinoとGSMモジュールがシリアルに接続され、ArduinoのTxピンがピン9に接続され、Rxピンがピン10に接続されています。これにより、ArduinoがGSMモジュールをリッスンするのに役立ちます。通話がGSMモジュールに到着すると、Arduinoはそれをリッスンし、GSMモジュールに通話に応答するように依頼します。Arduinoは、通話がアクティブであることを確認してから、ピン8(音声モジュールのPEに接続)を200ミリ秒間ハイにすることで、音声モジュールで録音された音声メッセージを再生します。
Arduinoのプログラミング:
上記の段落から、ここでのArduinoの役割は何であるかがわかります。それでは、同じことを行うコードを見てみましょう。プロジェクトの完全なArduinoコードは、このページの下部にあります。さらにここでは、コードを小さなジャンクにこぼして説明しました。
GSMライブラリをさらにインストールする前に、このGithub GSMライブラリのリンクをクリックして、このプロジェクトで使用されているライブラリをダウンロードしてください。 Sketch-> Include Librarey-> Add.Zipファイルで Arduinoライブラリに追加する必要のあるzipファイルを取得し ます 。
以下に示すコードの最初の3行は、ライブラリをコードに含めるために使用されます。ArduinoのデフォルトのRxピンとTxピンを使用してGSMモジュールと通信していないため、シリアルライブラリとワイヤーライブラリを使用します。
#include
次のラインを使用して、ピン9と10でシリアル通信を有効にします。これは、上記で含めたソフトウェアシリアルライブラリによって可能になります。
SoftwareSerial gprs(9,10); // TX、RX
セットアップ 機能内で、シリアルモニターを9600ボーレートで初期化し、GSMモジュールも9600ボーレートで初期化します。音声をトリガーするピン8は、出力ピンとして宣言されます。
void setup(){Serial.begin(9600); //シリアルモニターは、sim900_init(&gprs、9600);をデバッグするために9600ボーレートで動作します。// GSMモジュールは9600ボーレートで動作しますpinMode(8、OUTPUT); //ピンで音声をオンにしますSerial.println( "Arduino-自動音声マシン"); }
次に、GSMモジュールがシリアルポートを介して何を言っているかを読み取って理解できる関数を作成する必要があります。「gprs.read()」のような単純なシリアル読み取り行を使用してメッセージを読み取る場合、ASCII 10進値の形式でメッセージを取得しますが、これは意味がありません。
したがって、次の関数を使用して、文字列オブジェクトを使用してこれらの10進値を文字列に変換し、それらを連結して文字列を形成します。最終的な文字列値は変数 Fdataに 格納されます。この変数は 文字列 型であり、任意の文字列値と比較するために使用できます。
void check_Incoming(){if(gprs.available())// GSMが何かを言っている場合{Incomingch = gprs.read(); //それを聞いて、この変数に格納しますif(Incomingch == 10--Incomingch == 13)//スペース(10)または改行(13)と表示されている場合は、1つの単語が完了したことを意味します{Serial.println(data ); Fdata = data; データ= ""; } //単語を出力し、変数をクリアして新しく開始しますelse {String newchar = String(char(Incomingch)); //文字列オブジェクトを使用してcharをstringに変換しますdata = data + newchar; //文字列に変換した後、文字列の連結を行います}}}
次の行は、デバッグに使用されているこれらのデバッガラインを使用すると、GSMへのArduinoのシリアルモニターから任意のATコマンドを送信し、また、シリアルモニタに応答が何であるかを見ることができます。
if(Serial.available()){// gprs.write(Serial.read());のデバッグに使用されます。//デバッグに使用} //デバッグに使用
前述のように、ArduinoはGSMモジュールが呼び出しを受信しているかどうかを確認する必要があります。これは、Arduinoに「RING」をチェックさせることで実行できます。これは、GSMモジュールがATコマンドリストに従って呼び出しが発生した場合にRINGを出力するためです。呼び出しを見つけると、5秒間待機し、コマンド「ATA」をGSMモジュールに送信します。これにより、GSMモジュールが呼び出しに応答し、応答した後、「OK」で応答します。Arduinoは再び「OK」の確認応答を待ってから、ピン8を200ミリ秒間ハイにして、音声モジュールから録音された音声を再生します。
if(Fdata == "RING")// GSMモジュールがRING {delay(5000);と言った場合 // 5秒待って3リング遅延を作成します。gprs.write( "ATA \ r \ n"); //呼び出しに応答しますSerial.println( "Placed Received"); //デバッグに使用while(Fdata!= "OK")//呼び出しが正常に応答するまで{check_Incoming(); // GSMモジュールが言っていることを読みますSerial.println( "Playing Recorded message"); //デバッグに使用//記録された音声メッセージを再生delay(500); digitalWrite(8、HIGH); //高遅延(200); // 200ミリ秒待つdigitalWrite(8、LOW); //低くする}
ワーキング:
コードとハードウェアの準備ができたら、楽しみましょう。両方のモジュールに電源を入れ、音声モジュールのRECボタンを押してメッセージを録音します。このメッセージの長さは10秒のみです。
次に、以下のコードを使用してArduinoをプログラムし、SIMカーをGSMモジュールに挿入します。GSMモジュールがネットワークサービスプロバイダーとの接続を確立できるように、少なくとも2分間待つ必要があります。完了すると、3秒ごとに1回赤色のLEDが点滅するはずです。これは、SIMが電話をかける準備ができていることを示しています。これで、任意の番号からこのSIMカードに電話をかけることができ、3回連続して鳴った後、録音されたメッセージが聞こえるはずです。プロジェクトの完全な動作は、以下のビデオに示されています。
Tadaaaaaa !!! これで、独自の自動音声通話留守番電話ができました。必要に応じて使用し、友人や家族を驚かせましょう。
プロジェクトを楽しんで、似たようなものを作成してください。問題が発生した場合は、コメントセクションに投稿してください。サポートさせていただきます。