Back to tech

IM920cをArduinoで使う

2 min read
Table of Contents

interplan社が販売しているIM920をArduinoで繋げて通信する方法が分かったのでメモをしておく

簡単な説明

IM920は、その名の通り920Mhz帯で通信できる無線モジュールです

アンテナがないIM920cとアンテナがあるIm920があります

今回はIM920cを使用します

IM920cは別途IM920c用変換アダプタを購入してください

2.54mmピッチランドが付いているため、簡単にArduinoにつけることができます

※今回はこれを使って通信を行います

接続方法

シリアル通信で通信ができるため、Arduinoの0ピン(RX)と1ピン(TX)に接続して通信することもできるが、SoftwareSerialを使わないと色々と不都合が起きる(後述)

下記の画像の通りに接続

右ピン

im920c  Arduino

3番  - 11ピン

9番  - GND

左ピン

im920c  Arduino

1番  - 8ピン

4番  - 10ピン

9番  - Vcc(3.3v)

im920c_adp

プログラム

※予めお互いの通信モジュールがペアリングしていることを前提としています!

受信

#include <SoftwareSerial.h>

SoftwareSerial IM920Serial(10, 11); // RX, TX
char input[30];   // 文字列格納用
int i = 0;  // 文字数のカウンタ

void setup() {
  Serial.begin(19200);
  IM920Serial.begin(19200);
  
  pinMode(8,OUTPUT);//busy
  digitalWrite(8, HIGH);  
}

void loop() {
  if (IM920Serial.available()) {
    input[i] = IM920Serial.read();
    if (i > 30 || input[i] == '\n') {
      input[i] = '\n';
      Serial.print(input);
      i = 0;
      }else{
        i++;
        }
      }
       
    delay(50);
}

送信

送信したい文字列の最後に**“\r\n”**をいれるのがコツです

さらにIM920はアスキーコードで文字列をやりとりする

TXDAは文字を送信するコマンドを意味する

#include <SoftwareSerial.h>

SoftwareSerial IM920Serial(10, 11); // RX, TX

void setup() {
  IM920Serial.begin(19200);
  
  pinMode(8,OUTPUT);//busy
  digitalWrite(8, HIGH);  
}

void loop() {
  IM920Serial.print("TXDA 68656c6c6f\r\n");

  delay(50);
}

なぜSoftwareSerialをつかうのか

SoftwareSerialを使わないと無限ループに陥るため、SoftwareSerialを使います

IM920はなにかのコマンドを打つと”OK”や”NG”を出力します

コマンドがない場合でもNGを出力します ← ここが落とし穴!

受信待機



文字列受信



受信した文字列をSerialで出力



エラー(NG)を出力 ー ①



"NG"という文字列が受信したと勘違いする



①にいく

ということになり、永久ループします

そのため、SoftwareSerialを使い、SoftwareSerialで無線モジュールからのデータを受信し、Arduinoの0ピンと1ピンで行われるSerialで受信した文字列を出力しています

その他

USBインターフェイスボードがあればTeraTermで超絶簡単に調整することができます

USBでできるので本当に楽です

参考文献

  1. interplan IM920c用変換アダプタ http://www.interplan.co.jp/solution/wireless/im920c_adp.php
  2. 電子工作速報 http://denshi.blog.jp/arduino/%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E9%80%9A%E4%BF%A1
  3. Arduino 日本語リファレンス http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=92