Arduino MegaとGSM SIM900シールドでSMS送受信を簡単実装
必要なパーツと用品
| パーツ | 数量 |
|---|---|
| Arduino Mega 2560 (ハードウェアシリアルポート複数搭載ボード推奨) | 1 |
| Seeed SIM900ベース GSM/GPRSシールド (SIMカード装着済み) | 1 |
| オス-メス ジャンパーワイヤー | 2本 |
使用アプリとオンラインサービス
- Visuino - Arduino用グラフィカル開発環境
- Arduino IDE (バージョン1.6.7以上必須)
プロジェクト概要
IoTプロジェクトにおいてデバイスを接続する手段として、Wi-FiやBluetoothは低コストですが近距離・ホットスポットエリア限定です。デバイスを遠隔地に設置する場合、GSMは手軽で信頼性の高い選択肢となります。
このチュートリアルでは、ArduinoでGSM経由のSMS送受信を実装する方法を、Visuinoを使ってノーコード/ローコードで解説します。後続チュートリアルでは、GSM経由のインターネット接続・サーバーアクセス、音声通話処理も扱います。
ステップ1:部品準備
- Arduino Mega 2560 (シリアルポート2つ以上搭載が望ましい。Uno等でSoftwareSerialを使うことも可能だが、ハードウェアシリアル推奨)
- SIM900ベースGSMシールド (Seeed Studio Version 1.0を使用)
- オス-メス ジャンパーワイヤー 2本
ステップ2:GSMシールドをArduinoに接続
- GSMシールドの RX/TX選択ジャンパーキャップを外す
- GSMシールドをArduino Megaに重ねて装着
- オス-メスジャンパー (橙) のオス側をArduino Megaの RX1 (ピン19) に接続
- オス-メスジャンパー (茶) のオス側をArduino Megaの TX1 (ピン18) に接続
- 橙色ワイヤーのメス側をGSMシールドの RX選択ジャンパーの中央ピン に接続
- 茶色ワイヤーのメス側をGSMシールドの TX選択ジャンパーの中央ピン に接続
ステップ3:Visuino起動とボード選択
- Arduino IDE (1.6.7以上) をインストール
- Visuino (https://www.visuino.com) をインストール
- Visuino起動後、Arduinoコンポーネントの「Tools」ボタンをクリック
- 「Arduino Mega 2560」を選択
ステップ4:シリアルポート1の通信速度を19200に設定
GSMシールドのデフォルトボーレートは19200bpsです。
- Object Inspectorで
Serial → Item[1] → Speedを展開 - ドロップダウンから「19200」を選択
ステップ5:GSM/GPRS Serialコンポーネントの追加と接続
- コンポーネントツールボックスで「gsm」検索 → 「GSM/GPRS Serial」を配置
GSM1.Out→Serial[1].Inを接続GSM1.Power→Digital[9].Inを接続 (デジタルピン9でモジュール電源ON/OFF制御)
ステップ6:Text Valueコンポーネントで「GSM Ready」通知
- 「Text Value」コンポーネントを配置
- Valueプロパティを「GSM Ready」に設定
GSM1.Ready→TextValue1.Inを接続TextValue1.Out→Serial[0].In(USBシリアル) を接続 → PC側で受信確認用
ステップ7:SMS送信機能の追加
- GSM1コンポーネント選択 → Object Inspectorの「Modules」プロパティの「...」ボタン
- 「Short Message」モジュールを追加
- 「Short Message」モジュールの「Functions」プロパティで「Send SMS」を追加
ステップ8:SMS送信設定と受信メッセージのシリアル出力
Send SMS要素のAddressプロパティに送信先電話番号を設定 (テスト用に自分のSIM番号を指定すると送信→受信が確認可能)Textプロパティのピンボタンをクリック → 「String SinkPin」を選択 →Send SMSにText入力ピンが追加されるGSM1.MessageInfo.Out→Serial[0].Inを接続 (受信メッセージ情報をPCへ出力)
ステップ9:Char To Textコンポーネントでシリアル入力を文字列化
- 「Char to Text」コンポーネントを配置
Serial[0].Out→CharToText1.Inを接続CharToText1.Out→Send SMS.Textを接続 (シリアルモニターから入力した文字列をSMS本文として送信)
ステップ10:Delayコンポーネントで送信タイミング調整
- 「Delay」コンポーネントを配置、Intervalを「100」msに設定
CharToText1.Out→Delay1.Inを接続Delay1.Out→Send SMS.Clockを接続 (文字列更新完了後に送信トリガー)
ステップ11:コード生成・コンパイル・書き込み
- Visuinoで F9 またはツールバーの生成ボタンをクリック → Arduino IDEが開く
- Arduino IDEで「書き込み」ボタンをクリック
ステップ12:動作確認
電源投入後約30秒でシリアルモニターに「GSM Ready」と表示されます。シリアルモニターで文字を入力し「送信」するとSMSが送信されます。送信先を自分のSIM番号にしていれば、受信したSMSもシリアルモニターに表示されます。他の電話からSMSを送っても同様に表示されます。
Visuinoプロジェクトファイルも添付されています:F1FP7L0IQS4L35B.zip
回路図
接続はステップ2の写真と説明を参照してください。別途回路図画像も提供されています。
製造プロセス
- Python連携で信頼性向上: Arduino RFID勤怠管理システム
- DHT11温湿度センサーで作る温度アラート – LEDとピエゾブザーで視覚/聴覚通知
- Arduino Dueと3.2インチTFTで作る温度監視付きリアルタイムクロック
- ArduinoとAndroidでRoomba Create 2をリモコン操作 ─ Bluetooth経由のステップバイステップガイド
- ArduinoとNokia 5110ディスプレイで自作電圧計:ステップバイステップガイド
- Arduino & MPU6050:SG90 & MG996Rサーボの精密制御
- リアルタイム森林火災監視システム: SMSアラート機能付き
- u-blox LEA-6H 02 GPSモジュール: Arduino & Python 統合ガイド
- DHT11 と Blynk で温湿度をリアルタイム監視する Arduino チュートリアル
- Arduino Dueでマスターする音声認識と音声合成
- Arduino Unoと1Sheeldで作る4x4x4 LEDキューブ – インタラクティブLEDプロジェクト