説明
この記事に類似した内容が2004年8月号の「EPD (UK)」に掲載されています。
この記事は2004年8月号の「Selezione (Italy)」および「Electronics Update (Japan)」にも掲載されています。
部品:
- PIC® 16F877:PICマイクロコントローラ
- 1-Wire®温度センサ(DS18S20)
- 8 チャネル12ビットA/Dコンバータ(シリアル) (MAX127)
- GSMモデム
- TynTecが提供するSMSから電子メールへの変換サービス
プロジェクトの目的と特長
このプロジェクトは、プログラミングされたスレッショルドが適合した時に自動的に電子メールが送られることを目的としています。ユーザは温度およびアナログ入力のアラームスレッショルドをプログラムすることができます。アラーム条件のいずれか1つに適合すると、システムはGSMモジュールを使用して、標準SMSメッセージを送信します。SMSメッセージは、電子メールに変換するためにTynTecが指定するモバイル番号に送信される必要があります。SMSメッセージは電子メールに変換され、TynTecの2 Way SMSメッセージングサービスによって指定された電子メールアドレスに転送されます。図1はプロジェクト概念を概要しています。
このプロジェクトの主な特長は以下のとおりです。
- 人間の介入なしで自動生成される電子メールの送信が容易
- 温度や電圧などをリモートで監視することが非常にシンプル
- SMSメッセージだけでなく電子メールの送信も可能
- 上記機能の実現にPC介入は一切不要
- 複雑なTCP/IPコネクティビティの問題に関与することを回避(このことはGPRS有効範囲がないエリアでは特に問題となりやすい。)
図1.
システムの詳細
BASICコンパイラの1つ、Crownhillによって提供されるPICマイクロコントローラ用のProton+が使用されます。(www.crownhill.co.uk)。SMSからの電子メールへの変換技術はTynTec (www.tyntec.biz)によって提供されます。使用したGSMモジュールは、SiemensのTC35です。SMS対応の他のモデムを使用することもできますが、GSMモジュールの入手に関してはAlphamicro社(www.alphamicro.net)が便利です。私は、PIC 16F877が搭載された開発基板を使用しましたが、開発基板はCrownhillからも提供されており、Proton Dev基板と呼ばれています。標準16 × 2のLCDモジュールが20 × 4のLCDモジュールに置き換えられている点に注意してください。Proton+コンパイラは、「PRINT」コマンドによって4 × 20 LCDモジュールをサポートしています。
温度センサはDS18S20が使用されました。この温度センサはマキシムの1-Wireプロトコルを使用しています。DS18S20は、PICのPortCピン0に接続します。DQピンが5Vに4.7kΩのプルアップ抵抗で接続されているかを確認してください。
シリアルインタフェース内蔵の12ビット、8チャネルADCのMAX127が使われています。MAX127はPICの2本のI/Oピンを使用しますが(PortBピン0および1)、例では1つ目のチャネルのみを使用しています。必要に応じて他のチャネルを使用することができるように、コードは容易に設定することができます。SDLおよびSDAピン(それぞれピン5と7)が5Vに4.7kΩのプルアップ抵抗で接続されていることを確認してください。
LDR (光感応抵抗)を5Vに接続し、1kΩの抵抗を経由してグランドに接続します。LDRと抵抗の接続点をMAX127のチャネル0 (ピン13)に接続します。A/Dの入力レンジは、0V~5Vに選択します。
接続図は図2をご覧下さい。
図2.
コード動作の概要:
- PICは、アナログ入力値を読み込みます。この機能は「MAX127IN」サブルーチンで実現されます。アナログ電圧が指定のスレッショルド以上になると、アラームフラグの「ALARMFLAG」がセットされます。アラームフラグを「1」にセットすると、SMSの送信が必要であることを示します。
- その後、温度がDS18S20から読み込まれます。温度が規定制限範囲以上になると、アラームフラグの「ALARMFLAG」がセットされます。アラームフラグを「1」にセットすると、SMSの送信が必要であることを示します。
- この段階で、SMSメッセージを送信すべきかどうかについてコードが決定します。アラームフラグ「ALARMFLAG」がセットされていると、コードは「SMS」と呼ばれるサブルーチンへ行き、SMSメッセージをTynTecが指定したモバイル番号に送信されます。
セットアップ手順
- 初めに、TynTecの「2 Way SMS Tool」用のアカウントを取得してください(www.tyntec.biz、電話番号+49-231-10-87-991でお問い合わせ下さい)。転送先電子メールアドレスを指定する必要があります。そうするとTynTecから固有のモバイル番号(形式+44........)が送られてきます。この番号は必ず安全な状態で保管してください。
- コードでは、以下の変更を加える必要があります。
-
ライン87:MAXREAD > 2047の場合
ここでアナログ入力スレッショルドレベルを設定します。MAX127は12ビットのA/Dコンバータであるため、ステップが4096個あります。それは0~5Vの入力電圧範囲を持つように設定されます。とりあえずコードは2.5Vのスレッショルドに設定されます。
-
ライン119:temp > 58の場合
この時点で、過熱アラームスレッショルドを設定する必要があります。提供されるコードでは、+29℃にセットされています。「temp」は、DS18S20からの読込み値を持つレジスタです。「temp」を2で割ることによって実際の温度が摂氏で与えられます。このコードだけがプラスの温度で機能する点に注意してください。
-
ライン268:HSEROUT ["AT+CMGS = +447 ---------"]
ここで転送先モバイル番号が指定されます。TynTecが提供した番号をここに入力してください。
-
ライン298:SMSDELAY = 10
となるまでSMSメッセージ送信と温度およびアナログ入力の繰り返し「scan」の間の遅延は調整可能です。現在、それは10分間の遅延に設定されています。これは、異なる状況に適応させることができるように調節可能です。
ユニットから送信される電子メールの例を、図3に示します。
図3.
まとめ
上記の手順に従った後、システムは温度およびアナログ入力を監視することが可能となります。トリップスレッショルドを越えた場合、SMSメッセージが送信され、それが指定された受取人に送られる電子メールとなります。
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}