携帯電話は今世紀の革新的な発明です。主に電話やテキストメッセージの送受信用に設計されましたが、スマートフォンが登場してから全世界になりました。このプロジェクトでは、シンプルなGSMベースの電話を使用して、電話からSMSを送信するだけで、家電製品を制御できるホームオートメーションシステムを構築しています。このプロジェクトでは、スマートフォンは必要ありません。古いGSM電話だけで、どこからでも家電製品のオンとオフを切り替えることができます。また、ここでいくつかのワイヤレスホームオートメーションプロジェクトを確認することもできます:Arduinoを使用したIRリモートコントロールホームオートメーション、DTMFベースのホームオートメーションを備えたBluetoothコントロールホームオートメーション、Arduinoを使用したPCコントロールホームオートメーション。
動作説明
このプロジェクトでは、Arduinoを使用してプロセス全体を制御します。ここでは、家電製品の制御にGSM無線通信を使用しました。AC家電を制御するために、「#A.light on *」、「#A.lightoff *」などのコマンドを送信します。ArduinoがGSMを介して指定されたコマンドを受信した後、Arduinoはリレーに信号を送信し、リレードライバーを使用して家電製品のオンとオフを切り替えます。
回路部品:
- Arduino UNO
- GSMモジュール
- ULN2003
- リレー5ボルト
- ホルダー付き電球
- 接続線
- ブレッドボード
- 16x2 LCD
- 電源
- 携帯電話
ここでは、コマンド文字列に「#A」というプレフィックスを使用しています。このプレフィックスは、メインコマンドがその隣にあることを識別するために使用され、文字列の最後の*はメッセージが終了したことを示します。
モバイルでSMSをGSMモジュールに送信すると、GSMはそのSMSを受信してArduinoに送信します。これで、ArduinoはこのSMSを読み取り、受信した文字列からメインコマンドを抽出して、変数に格納します。この後、Arduinoはこの文字列を事前定義された文字列と比較します。一致が発生した場合、Arduinoは家電製品の電源をオン/オフするためのリレードライバーを介してリレーに信号を送信します。また、適切なコマンドを使用して、相対的な結果を16x2LCDに印刷します。
このプロジェクトでは、ファン、ライト、テレビを示す3つのゼロワット電球をデモに使用しました。
以下は、ファン、ライト、テレビのオンとオフを切り替えるためにSMS経由で送信するメッセージのリストです。
S.no. |
メッセージ |
操作 |
1 |
#A.fan on * |
ファンオン |
2 |
#A。ファンオフ* |
ファンオフ |
3 |
#A。ライトオン* |
ライトオン |
4 |
#A。ライトオフ* |
消灯 |
5 |
#A.tv on * |
テレビオン |
6 |
#A.tvオフ* |
テレビオフ |
7 |
#A.all on * |
オールオン |
8 |
#A。オールオフ* |
すべてオフ |
GSMモジュール:
GSMモジュール は、GSM(Global System for Mobile Communications)テクノロジに基づく多くの通信デバイスで使用されています。これは、コンピューターを使用してGSMネットワークと対話するために使用されます。GSMモジュールはATコマンドのみを理解し 、それに応じて応答できます。最も基本的なコマンドは「AT」です。GSMがOKと応答した場合は正常に機能しており、そうでない場合は「ERROR」と応答します。通話に応答するためのATA、通話をダイヤルするためのATD、メッセージを読み取るためのAT + CMGR、SMSを送信するためのAT + CMGSなどのさまざまなATコマンドがあります。ATコマンドの後にはキャリッジリターン、つまり\ r(16進数で0D)を続ける必要があります。 )、「AT + CMGS \ r」のように。次のコマンドを使用してGSMモジュールを使用できます。
ATE0-エコーオフ用
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS =”携帯電話番号”
>>これでメッセージを書くことができます
>>メッセージを書いた後
Ctrl + Zメッセージ送信コマンド(10進数で26)。
HEXでENTER = 0x0d
SIM900は 、完全なクワッドバンドである GSM / GPRSモジュールの 低消費電力で、音声、SMSおよびデータのためのGSM / GPRS 900分の850/1800 / 1900MHzのパフォーマンスを提供します。
回路の説明
このGSMベースのホームオートメーション回路の接続は非常に簡単です。ここでは、液晶ディスプレイを使用して、4ビットモードでarduinoに直接接続されている家電製品のステータスを表示します。LCDのデータピン、すなわちRS、EN、D4、D5、D6、D7はarduinoデジタルピン番号6、7、8、9、10、11に接続されています。GSMモジュールのRxピンとTxピンはTxとRxに直接接続されています。それぞれArduinoのピン。また、GSMモジュールは12ボルトのアダプターを使用して電力を供給されます。5ボルトのSPDT3リレーは、LIGHT、FAN、およびTVの制御に使用されます。また、リレーはリレードライバULN2003を介してarduinoのピン番号3、4、5に接続され、それぞれLIGHT、FAN、TVを制御します。
コードの説明
このプロジェクトのプログラミング部分では、まずプログラミングに液晶ディスプレイ用のライブラリを含め、次にLCDと家電製品のデータと制御ピンを定義します。
#include
このシリアル通信が9600bpsで初期化された後、使用されているピンに指示を与えます。
void setup(){lcd.begin(16,2); Serial.begin(9600); pinMode(led、OUTPUT); pinMode(ファン、出力); pinMode(Light、OUTPUT); pinMode(TV、OUTPUT);
データをシリアルで受信するために、2つの関数を使用しました。1つはシリアルデータが来るかどうかをチェックするSerial.availableで、もう1つはシリアルで来るデータを読み取るSerial.readです。
while(Serial.available()){char inChar = Serial.read();
データをシリアルに受信した後、それを文字列に保存し、Enterを待ちます。
void serialEvent(){while(Serial.available()){if(Serial.find( "#A。")){digitalWrite(led、HIGH); delay(1000); digitalWrite(led、LOW); while(Serial.available()){char inChar = Serial.read(); str = inChar; if(inChar == '*'){temp = 1; 戻る; }
Enterが来ると、プログラムは受信した文字列をすでに定義された文字列と比較し始め、文字列が一致した場合、コードで指定された適切なコマンドを使用して相対操作が実行されます。
void check(){if(!(strncmp(str、 "tv on"、5))){digitalWrite(TV、HIGH); lcd.setCursor(13,1); lcd.print( "ON"); delay(200); } else if(!(strncmp(str、 "tv off"、6))){digitalWrite(TV、LOW); lcd.setCursor(13,1); lcd.print( "OFF"); delay(200); }