- 必要な材料
- 使用したソフトウェア
- GSMモジュール
- ATコマンドを使用したGSMモジュールとの通信
- ATMega16GSMモジュールのインターフェース回路図
- CodeVisionを使用したATmega16のプロジェクトの作成
- コードと説明
- プロジェクトを構築する
- コードをAtmega16にアップロードします
GSMモジュール は、特にプロジェクトでリモートアクセスが必要な場合に使用すると興味深いものです。これらのモジュールは、電話の発着信、SMSの送受信、GPRSを使用したインターネットへの接続など、通常の携帯電話で実行できるすべてのアクションを実行できます。通常のマイクとスピーカーをこのモジュールに接続して、会話することもできます。モバイル通話。これにより、マイクロコントローラーとのインターフェースが可能になれば、多くの創造的なプロジェクトへの扉が開かれます。したがって、このチュートリアルでは、GSMモジュール(SIM900A)をAVRマイクロコントローラーATmega16とインターフェースする方法を学び 、GSMモジュール を使用してメッセージを送受信することによってそれを示します。
必要な材料
- Atmega16
- GSMモジュール(SIM900またはその他)
- LCDディスプレイ
- ボタンを押す
- 10k抵抗、ポテンショメータ
- 接続線
- 12Vアダプター
- USBaspプログラマー
- 10ピンFRCケーブル
使用したソフトウェア
私たちは、使用するCodeVisionAVRの我々のコードと書き込み用のソフトウェアをSinaProgのUSBASPプログラマを使用してはATmega16に我々のコードをアップロードするためのソフトウェアを。
これらのソフトウェアは、指定されたリンクからダウンロードできます。
CodeVisionAVR: http : //www.hpinfotech.ro/cvavr_download.html
SinaProg: http ://www.ablab.in/sinaprog-hex-file-downloader-software-to-download-code-to-avr-microcontroller/#inline_content
回路図とコードに入る前に、GSMモジュールとその動作について学びます。
GSMモジュール
GSMモジュールは、ATコマンドモードを使用することにより、マイクロコントローラーがなくても使用できます。上に示したように、GSMモジュールにはUSARTアダプターが付属しており、MAX232モジュールを使用してコンピューターに直接接続するか、TxピンとRxピンを使用してマイクロコントローラーに接続できます。また、マイクまたはスピーカーを接続できるMIC +、MIC-、SP +、SP-などの他のピンにも気付くでしょう。モジュールは、通常のDCバレルジャックを介して12Vアダプターから電力を供給できます。
モジュールのスロットにSIMカードを挿入して電源を入れると、電源LEDが点灯していることがわかります。ここで1分ほど待つと、3秒ごとに1回赤(または他の色)のLEDが点滅するはずです。これは、モジュールがSIMカードとの接続を確立できたことを意味します。これで、モジュールを電話または任意のマイクロコントローラーに接続することができます。
次のようなGSMモジュールを使用して、多くのクールなプロジェクトを構築できます。
- GSMとArduinoを使用したワイヤレス掲示板
- ArduinoとGSMモジュールを使用した自動留守番電話
- Arduinoを使用したGSMベースのホームオートメーション
- PIRセンサーとGSMベースのセキュリティシステム
また、ここですべてのGSM関連プロジェクトを確認してください。
ATコマンドを使用したGSMモジュールとの通信
ご想像のとおり、GSMモジュールはシリアル通信で通信でき、1つの言語しか理解できません。それが「ATコマンド」です。GSMモジュールに伝えたいことや尋ねたいことは何でも、ATコマンドを介してのみ行う必要があります。たとえば、モジュールがアクティブかどうかを知りたい場合です。「AT」のようなコマンドを要求(送信)すると、モジュールは「OK」と応答します。
これらのATコマンドは、データシートで詳しく説明されており、公式データシートに記載されています。はい!はい!これは271ページのデータシートであり、それらを読むのに数日かかる場合があります。そこで、これをすぐに稼働させるために、以下にいくつかの最も重要なATコマンドを示しました。
AT |
確認のためにOKで返信します |
AT + CPIN? |
信号品質を確認する |
AT + COPS? |
サービスプロバイダー名を探す |
ATD96XXXXXXXX; |
特定の番号に電話し、セミコロンで終わります |
AT + CNUM |
SIMカードの番号を確認します(一部のSIMでは機能しない場合があります) |
ATA |
着信に応答する |
ATH |
現在の着信を切断します |
AT + COLP |
着信番号を表示する |
AT + VTS =(数値) |
DTMF番号を送信します。モバイルキーパッドの任意の番号を(番号)に使用できます |
AT + CMGR |
AT + CMGR = 1は、最初の位置でメッセージを読み取ります |
AT + CMGD = 1 |
最初の位置でメッセージを削除します |
AT + CMGDA =” DEL ALL” |
SIMからすべてのメッセージを削除する |
AT + CMGL =” ALL” |
SIMからのメッセージをすべて読む |
AT + CMGF = 1 |
SMS構成を設定します。「1」はテキストのみのモード用です |
AT + CMGS =“ +91 968837XXXX” > CircuitDigestテキスト
|
ここ968837XXXXの特定の番号にSMSを送信します。「>」が表示されたら、テキストの入力を開始します。Ctrl + Zを押してテキストを送信します。 |
AT + CGATT? |
SIMカードでインターネット接続を確認するには |
AT + CIPSHUT |
TCP接続を閉じる、つまりインターネットから切断する |
AT + CSTT =“ APN”、” username”、” Pass” |
APNとパスキーを使用してGPRSに接続します。ネットワークプロバイダーから入手できます。 |
AT + CIICR |
SIMカードにデータパックがあるかどうかを確認します |
AT + CIFSR |
SIMネットワークのIPを取得する |
AT + CIPSTART =“ TCP”、” SERVER IP”、” PORT” |
TCPIP接続を設定するために使用されます |
AT + CIPSEND |
このコマンドは、サーバーにデータを送信するために使用されます |
ここでは、AT + CMGFおよびAT + CMGSコマンドを使用してメッセージを送信します。
ArduinoでGSMモジュールを使用したことがある場合は、メッセージの受信中に+ CMT:コマンドを使用して、シリアルモニターで携帯電話番号とテキストメッセージを表示できます。写真のように2行目にテキストメッセージが届きます。
この+ CMT:コマンドをスキャンして、メッセージが使用可能かどうかを確認します。
ATMega16GSMモジュールのインターフェース回路図
接続は次のようになります
- GSMモジュールのTxとRxからAtmega16のRx(Pin14)とTx(Pin15)へ。
- PD5(Pin19)およびPD6(Pin20)へのプッシュボタン。
- LCD接続:
- RS-PA 0
- R / W-PA1
- EN-PA2
- D4-PA4
- D5-PA5
- D6-PA6
- D7-PA7
CodeVisionを使用したATmega16のプロジェクトの作成
インストールした後CodeVisionAVR と SinaProgソフトウェアを、 プロジェクトと書き込みコードを作成するには、以下の手順に従います。
アップロード済み
ステップ1。CodeVisionを開きます。[ファイル]-> [新規]-> [プロジェクト]をクリックし ます 。確認ダイアログボックスが表示されます。[はい]をクリックします
ステップ 2.CodeWizardが開きます。最初のオプション、つまり AT90 をクリックし、[OK]をクリックします。
ステップ3:-マイクロコントローラーチップを選択します。ここでは、図のようにAtmega16Lを使用します。
ステップ4: -USARTを クリックします。それをクリックして 受信機 と 送信 機 を選択します。以下に示すように:
ステップ5:- 英数字LCD をクリックし、[ 英数字LCDサポートを有効に する]を選択します。
ステップ6:- [プログラム]-> [生成、保存、終了]を クリックし ます 。今、私たちの仕事の半分以上が完了しています
ステップ7:-デスクトップに新しいフォルダを作成して、ファイルがフォルダに残るようにします。そうしないと、デスクトップウィンドウ全体に散らばってしまいます。フォルダに好きな名前を付けてください。同じ名前を使用してプログラムファイルを保存することをお勧めします。
ファイルを保存するために、次々に3つのダイアログボックスが表示されます。
最初のダイアログボックスを保存した後に表示される他の2つのダイアログボックスについても同じようにします。
これで、ワークスペースは次のようになります。
私たちのほとんどの作業は、ウィザードの助けを借りて完了します。ここで、GSM専用のコードを作成する必要があります。
コードと説明
プロジェクトの作成後にすべてのヘッダーファイルが自動的に添付されます 。delay.h ヘッダーファイルをインクルードし、すべての変数を宣言する必要があります。完全なコードは、このチュートリアルの最後にあります。
#include
UDRレジスタからデータを受信する機能を作成します。この関数は、受信したデータを返します。
unsigned char receive_value (void){ while(!(UCSRA&(1 <
2つの if ステートメントを作成する while ループに来てください。1つはメッセージの送信用で、もう1つは受信用です。送信ボタンはATmegaのPIND6に接続され、受信メッセージボタンはPIND5に接続されています。
PIND6(送信ボタン)を最初に押すと 、 ステートメントが実行され、メッセージを送信するすべてのコマンドが1つずつ実行されます。
while(1){ // lcd_clear(); lcd_putsf( "Send-> bttn 1"); lcd_gotoxy(0,1); lcd_putsf( "Receive-> buttn 2"); if(PIND.6 == 1){ lcd_clear(); lcd_gotoxy(0,0); lcd_putsf( "Sending Msg…"); for(z = 0; cmd_1!= ''; z ++) { UDR = cmd_1; delay_ms(100); } UDR =( '\ r'); delay_ms(500); for(z = 0; cmd_2!= ''; z ++) { UDR = cmd_2; delay_ms(100); } …..
メッセージの受信ボタンが押された場合、 while(b!= '+') ループは、CMTコマンドが存在するかどうかをチェックします。存在する場合、2番目の while ループが実行され、コマンドの2行目に移動して、メッセージを1つずつLCDに出力します。
while(PIND.5 == 1){ lcd_clear(); lcd_gotoxy(0,0); lcd_putsf( "Receiving Msg…"); b = receive_value(); while(b!= '+'){ b = receive_value(); } b = receive_value(); if(b == 'C') { b = receive_value(); … ..
このループは、プログラムをコマンドの2行目に移動し、メッセージを配列に格納します。
while(b!= 0x0a) { b = receive_value (); } for(b = 0; b <3; b ++){ c = received_value(); msg = c; } .. ..
この for ループは、メッセージをLCDに表示するためのものです。
for(z = 0; z <3; z ++) { a = msg; lcd_putchar(a); // PRINT IN lcd delay_ms(10); }
デモビデオを含む完全なコードを以下に示します。次に、プロジェクトをビルドする必要があります。
プロジェクトを構築する
図のように 、 [プロジェクトのビルド]アイコンをクリックします。
プロジェクトをビルドした後、 HEXファイルが Debug-> Exe フォルダーに生成され ます。このフォルダーは、プロジェクトを保存するために以前に作成したフォルダーにあります。このHEXファイルを使用して、Sinaprogソフトウェアを使用してAtmega16に アップロードします。
コードをAtmega16にアップロードします
与えられた図に従って回路を接続してAtmega16をプログラムします。FRCケーブルの片側をUSBASPプログラマーに接続し、反対側を以下に説明するようにマイクロコントローラーのSPIピンに接続します。
- FRCメスコネクタのピン1->ピン6、Atmega16のMOSI
- atmega16のVccに接続されたピン2、つまりピン10
- atmega16のリセットに接続されたピン5、すなわちピン9
- atmega16のSCKに接続されたピン7、つまりピン8
- atmega16のMISOに接続されたピン9、つまりピン7
- atmega16のGNDに接続されたピン8、すなわちピン11
Sinaprogを使用して上記で生成されたHexファイルをアップロードするので、それを開いて、[デバイス]ドロップダウンメニューから[Atmega16]を選択します。図のように、[デバッグ]-> [Exe]フォルダーからHEXファイルを選択します。
ここで、[プログラム]をクリックすると、コードがATmega16マイクロコントローラーに書き込まれます。
これで完了で、マイクロコントローラーがプログラムされます。ボタンを押すだけで、GSMおよびATmega16マイクロコントローラーからメッセージを送受信できます。
完全なコードとデモンストレーションビデオ を以下に示します。