goo blog サービス終了のお知らせ 

ゴーイングマイウェイの戯言

パソコンに関することなど、作者の趣味が中心のブログです

Arduino digitalRead/digitalWrite/pinModeの高速化

2018-02-13 23:16:56 | Arduino&Raspberry Pi
前回は、analogReadの高速化にチャレンジした。

今回は、digitalReadやdigitalWrite、pinModeの高速化にトライしてみる。


参考にしたもの
 Arduinoの高速化 | なんでも独り言
 Arduinoプログラムの高速化
 ポート・レジスタについての説明 | Arduino 日本語リファレンス
 ATmega168/328P-Arduino Pin Mapping | Arduino.cc (英語)



1.高速化の原理&Arduinoのピン配置
 Arduinoのデジタル入力/デジタル出力を高速化するには、Arduinoの関数(digitalRead()など)を使わずに、
 マイコンのレジスタを直接操作することで行う。
 この際、ピン番号の指定はArduinoのピン番号ではなく、マイコンのピン名を指定しなければならない。

 Arduino UNOの場合は、ATmega328Pというマイコンを使っているので、このマイコンのピン名と
 Arduinoのピン番号の関連付けを調査した。

 
 上の図は、Arduino.ccのサイトから抜粋したものである。
 これを見ると、Arduinoのdigital pin 7はマイコンのPD7と、digital pin 13はマイコンのPB5と
 紐づいていることがわかる。


2.高速化の方法

◆digitalRead : デジタル入力の高速化

 ポート入力レジスタ(読み取り専用)のPINxレジスタを使って、高速化する。
 PDのところを読み込みたい場合は『PIND』、PBのところを読み込みたい場合は『PINB』とする。

 int val = digitalRead(7);
      ↓
 int val = PIND & _BV(7);

 int val = digitalRead(13);
      ↓
 int val = PINB & _BV(5);


◆digitalWrite : デジタル出力の高速化
 ポートデータレジスタであるPORTxレジスタの該当ビットへ、HIGH, LOWを直接代入することで高速化する。
 PDのところを動かしたい場合は『PORTD』、PBのところの場合は『PORTB』とする。
 HIGHの時はPORTxと_BV()の間を『|=』で括る。
 LOWの時は、PORTxと~_BV()の間を『&=』で括る。

 digitalWrite(7, HIGH);
      ↓
 PORTD |= _BV(7);

 digitalWrite(13, LOW);
      ↓
 PORTB &= ~_BV(5);


複数ピンを同時に操作する場合は、以下のようにする。

 PORTD |= _BV(5) | _BV(6) | _BV(7);
 PORTD &= ~(_BV(5) | _BV(6) | BV(7));



◆pinMode : ピンモード選択の高速化
 ポート方向レジスタであるDDRxレジスタの該当ビットへ、OUTPUT, INPUTを直接セットすることで高速化する。
 PDのところを操作したい場合は『DDRD』、PBのところの操作は『DDRB』とする。
 OUTPUTの時はDDRxと_BV()の間を『|=』で括る。
 INPUTの時は、DDRxと~_BV()の間を『&=』で括る。

 pinMode(7, OUTPUT);
      ↓
 DDRD |= _BV(7);

 pinMode(13, INPUT);
      ↓
 DDRB &= ~_BV(5)



3.高速化の検証
 下記スケッチでdigitalReadの高速化の検証を行った。

void setup() {
  // シリアルポート初期化
  Serial.begin(9600);
}

void loop() {

  int moji;
  // シリアルポートより、文字を1字読み込む
  moji = Serial.read();

  // 文字入力があった場合のみif関数を実行
  if(moji != -1){


    // 開始時間を記録
   unsigned long StartTime = micros();

    // 100,000回 digitalReadを実行
    for(long i=0; i<100000; i++){
      int val = digitalRead(7);
    }

    // digitalRead後の時間を記録
    unsigned long CheckTime = micros();

    // 100,000回 高速化を実行
    for(long i=0; i<100000; i++){
      int val = PIND & _BV(7);
    }

     // 高速化Read後の時間を記録
    unsigned long StopTime = micros();
    

    // 結果を出力
    Serial.print("digitalRead(100,000cyc)   = ");
    Serial.print(CheckTime - StartTime);
    Serial.println(" [us]");

    Serial.print("Speed-Up Read(100,000cyc) =  ");
    Serial.print(StopTime - CheckTime);
    Serial.println(" [us]");
  }
}


digitalRead 100,000回の実行時間は238,944[us]だったので、1回あたり2.39[us]だった。
一方、高速化して100,000回実行した結果は44,020[us]だったので、1回あたり0.44[us]となった。
レジスタから直接読み取ることで、digitalRead関数を使った時より5倍強の高速化をすることができた。

Arduino UNOのanalogReadの高速化

2018-02-03 14:56:56 | Arduino&Raspberry Pi
Arduinoであれこれしようと思った時、アナログ電圧をモニターしたくなることがある。

例えば、CdSを使った明るさセンサーなどが該当する。

こんな時は、analogRead関数が便利だ。

しかし、周波数を判別したい場合などは、マイクロ秒[us]オーダーでアナログ電圧をモニターしたくなる。

しかし、analogRead関数は、1回当たりの処理に100[us]~200[us]程度かかってしまうことが判明。

そこで、analogRead関数の高速化の方法を調査した。


参考にしたもの
 ArduinoのADCを高速化してみた | あれたうみと ひるのすなはま
 analogRead()の内部構造 | garretlab
 C言語入門::付録 ビット演算




1.高速化前のスピードの確認
 高速化をする前に、現状でどの程度のスピードか確認してみた。
 確認のため、以下のスケッチを実行してみる。
 (シリアルポートで文字を一文字送信すると実行するスケッチ)

void setup() {
  // シリアルポート初期化
  Serial.begin(9600);
}

void loop() {

  int moji;
  // シリアルポートより、文字を1字読み込む
  moji = Serial.read();

  // 文字入力があった場合のみif関数を実行
  if(moji != -1){
    
    // 開始時間を記録
   unsigned long StartTime = millis();

    // 100,000回 analogReadを実行
    for(long i=0; i<100000; i++){
      int result;
      result = analogRead(0);
    }

    // 終了時間を記録
    unsigned long StopTime = millis();

    // 結果を出力
    Serial.print("analogRead(100,000cyc) = ");
    Serial.print(StopTime - StartTime);
    Serial.println(" [ms]");
  }
}


 analogRead100,000回で11,200[ms]なので、1回当たり112[us]かかっている。



2.analogReadを高速化
 analogReadを高速化させるためには、マイコンの設定レジスタを変更する。
 このため、マイコンの種類ごとに設定方法が異なるということになる。
 今回は、Arduino UNO (マイコン:ATmega328P)の場合で説明する。

 高速化するためには、『ADCSRA』というAD(アナログ-デジタル)変換器の制御を行うレジスタの
 分周比という部分の値を書き換える。

 以下の2行をArduinoのスケッチに追加すると、分周比を標準値の128=>16に書き換えることで高速化できる。

ADCSRA = ADCSRA & 0xf8;   // 分周比を決めるビット(ADPS2:0)を000へ
ADCSRA = ADCSRA | 0x04;   // 分周比を決めるビットに分周比16(100)をセット

 analogRead100,000回で1,506[ms]なので、1回当たり15.06[us]となり、高速化に成功した。



3.なぜ高速化できるか
 なぜ、上記の2行を追加すると高速化できるか勉強してみた。

 Arduino UNOではAD(アナログ-デジタル)変換器を6個持っていて、analogRead関数はこのAD変換器を使って、
 アナログピンから値を読み取っている。
 analogRead関数は、4つのレジスタを使っており、そのうちADCSRAレジスタでAD変換器の制御を行っている。

 ADCSRAレジスタは8bitで構成されていて、下位3bitが分周比を決めている。
 分周比を上げると時間はかかるが、精度が出る。
 今回のように分周比を下げると速度は上がるが、精度は悪くなる。
 使用目的に応じて、分周比を決めるとよい。


 なぜ、上の2行を追加するとレジスタの特定部分を書き換えることができるのか調べてみた。
 やっていることはビット演算で、1行目はAND『&』を使って下位3bitを0にし、
 2行目はOR『|』を使って下位3bitに100とセットした。

 ちなみに、0xとは16進数を意味しており、0xf8を2進数で表すと『11111000』となり、
 0x04を2進数で表すと『00000100』となる。

Raspberry PiでIM920のシリアル通信を受信

2017-10-21 11:47:10 | Arduino&Raspberry Pi
下図のように、センサーを設置したArduinoからデータを送信して、数100m離れた所のRaspberry Piで受信したい。
通信には、920MHz特定小電力無線モジュールのIM920を使用する。
前回までに、IM920のペアリングArduinoからの送信がうまくいったので、今回はいよいよRaspberry Piでの受信に挑戦する。



参考にしたもの
 Raspberry PiとArduinoでシリアル通信
 【入門】Linux機にUSB-シリアル変換ボードをつなげてみる【備忘録】| 團長の小部屋




用意するもの
 ・Rasspberry Pi 3スターターキット スイッチサイエンス
    Raspberry Pi 3 Model B本体
    microSD 8GB class10 (Raspbian OSイメージ 書き込み済)
    ACアダプター 5V/3.0A(USB Micro-Bコネクタ)1m
    Raspberry Pi 3/2/B+ 用RSコンポーネンツ製ケース 白

 ・IM920 ×2個  amazon 秋月電子

 ・Arduino amazon 秋月電子

 ・USBシリアル変換アダプタ  スイッチサイエンス
  ブレットボード、ジャンパー線、LED、抵抗

  または
  インタープラン製 USBインターフェースボード IM315-USB-RX  amazon 秋月電子

 ・PuTTY_jp (ソフト)  ダウンロード元



1.Raspberry Piにcuコマンドを入れる
 Raspberry PiにはTera Termのようなターミナルソフトがはじめは入っていない。
 そこで、ターミナルソフトのcuをインストールする。
pi@raspberrypi : ˜ $ sudo apt-get install cu


2.Raspberry PiにIM920をUSBにて接続
 写真の通り、IM920をUSBシリアル変換アダプタを介してRaspberry PiにUSBにて接続。
 (インタープラン製のIM315-USB-RXは、USBシリアル変換アダプタが内蔵)
 IM920とシリアル変換アダプタ間の配線方法については過去記事参照。
 


3.認識されているか確認
 Raspberry Pi側でUSBシリアル変換アダプタを認識しているかを確認する。
 はじめに、dmesgコマンドで確認。
pi@raspberrypi : ˜ $ dmesg

 今回使用したUSBシリアル変換アダプタは、FTDI社の変換ICが使われているので、それを探す。
 今回の場合だと、ttyUSB0で認識されている。
 

 次に、/dev以下に今回認識したttyUSB0があるか確認。
pi@raspberrypi : ˜ $ ls -l /dev/ttyUSB*

 


4.cuコマンドを使ってIM920からの通信をRaspberry Piで受信する
 送信側には、以前作製したArduino+IM920を使用。
 このArduino側IM920とRaspberryPi側のIM920は、すでにペアリング済みのものである。
 IM920のペアリングについては、過去記事参照。
 

 いよいよcuコマンドで、通信の受信を行う。
 cuコマンドでは、-lオプションで使用デバイス、-sオプションでボーレートを指定する。
 IM920との間はボーレート19200bpsで通信するため、以下のコマンドを打ち込む。
pi@raspberrypi : ˜ $ cu -l /dev/ttyUSB0 -s 19200

 無事にRaspberry Piで受信ができた。
 なお、cuコマンドを終了させるときは~. (チルダドット)と打ち込む。
 

Raspberry Pi 3 無線Wi-Fi接続設定

2017-07-29 15:03:30 | Arduino&Raspberry Pi
前回のRaspberry Piの初期設定では、有線LAN経由でSSH接続できるようにした。
今回は、無線LANの設定を行い、無線でRaspberry Piを使えるようにする。


参考にしたもの
 Raspberry Pi 3を買ってMacを使ってWiFi接続とSSHの接続するまで
 Raspberry Pi | viより直感的!標準エディタ”nano”の使い方ガイド | たぷん日記
 端末で使うテキストエディタ nano | Linux Mintのメモ

 



用意するもの
 ・Rasspberry Pi 3スターターキット スイッチサイエンス
    Raspberry Pi 3 Model B本体
    microSD 8GB class10 (Raspbian OSイメージ 書き込み済)
    ACアダプター 5V/3.0A(USB Micro-Bコネクタ)1m
    Raspberry Pi 3/2/B+ 用RSコンポーネンツ製ケース 白

 ・PuTTY_jp (ソフト)  ダウンロード元



0.セットアップ条件
セキュリティーを考慮して、Raspberry Piに無線LANの生パスワードを残さない方法にて行う。


1.無線ルーターのSSID・パスフレーズの確認
無線ルーターの設定画面や取説などから、無線ルーターのSSIDとパスフレーズを確認する。


2.無線LAN情報のインプット
Raspberry PiにSSH接続したら、以下のコマンドを実行。
なお、SSIDとPASSPHRASEは自分の環境のものを入力する。
pi@raspberrypi : ˜ $ sudo sh -c 'wpa_passphrase SSID PASSPHRASE >> /etc/wpa_supplicant/wpa_supplicant.conf'


3.生パスワードの削除
テキストエディターを使って、/etc/wpa_supplicant/wpa_supplicant.confファイル内の
生パスワードコメントを削除する。
テキストエディターは、『nano』を使う。
使い方の詳細は、参考元サイトに詳しい。

以下のようにコマンド入力して、wpa_supplicant.confファイルを開く。
pi@raspberrypi : ˜ $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

#でコメントアウトされている、生パスワードの『#psk="PASSPHRASE"』の一文を削除する。
下図は、生パスワード削除後のイメージ図。


『Ctrl』+『O』で上書き保存し、『Ctrl』+『X』でnanoを終了させる。


4.無線の確認
一度、Raspberry Piをシャットダウンして、LANケーブルを抜く。
pi@raspberrypi : ˜ $ sudo shutdown -h now

その後、Raspberry Piの電源を入れなおす。

前回の初期設定で行ったように、下記の確認方法で、Macアドレスが『B8:27:EB』から始まっている
インターフェイスのIPアドレスを探す。

  確認方法1:ルーターの設定画面に入ってRaspberry Piに割り振られたアドレスを確認する。
  確認方法2:コマンドプロンプトから『arp -a』を実行する。

Raspberry Piの無線LANに割り当てられたIPアドレスで、SSH接続できれば作業完了。

毎回、IPアドレスを検索するのが手間な場合は、IPアドレスを固定化すればOK。

Raspberry Pi 3の初期設定

2017-07-29 12:22:08 | Arduino&Raspberry Pi
こんな感じで、センサーを設置したArduinoからデータを送信して、数100m離れた所に置いたRasspberry Piで受信したい。
そこで今回は、Rasspberry Piの初期設定にトライしてみた。



参考にしたもの
 Raspbianのインストールと初期設定 | 純規の暇人趣味ブログ
 第7回 Raspberry Piのセットアップ – ローカル環境編 | ツール・ラボ
 Raspberry Piの設定【raspi-config/言語・タイムゾーン・キーボードの設定 | Aldebaranな人のブログ



用意するもの
 ・Rasspberry Pi 3スターターキット スイッチサイエンス
    Raspberry Pi 3 Model B本体
    microSD 8GB class10 (Raspbian OSイメージ 書き込み済)
    ACアダプター 5V/3.0A(USB Micro-Bコネクタ)1m
    Raspberry Pi 3/2/B+ 用RSコンポーネンツ製ケース 白

 ・PuTTY_jp (ソフト)  ダウンロード元



0.セットアップ条件
今回のセットアップでは、Rasspberry Piにマウス・キーボード・モニターをつながずに、
ヘッドレスでセットアップを行う。
Rasspberry Piに接続するのは、ACアダプターとLANケーブルのみでトライする。

また、今回はRaspbian OSイメージが書き込まれたmicroSDを購入した。
自分でOSイメージを書き込む際は、『DD for Windows』などを使って、OSイメージをSDカードに書き込む必要あり。
詳細は、参考サイトのRaspbianのインストールと初期設定 | 純規の暇人趣味ブログが詳しい。


1.SSHを有効にする
参考サイトによると、2016/11/25のRaspbianからSSHがデフォルトで無効にされたようだとのこと。
そこで、SSHを有効にする準備をする。

方法としては、Raspbianの書き込まれたSDカード内のbootパーティションに、
『ssh』という名前のファイルを作るだけとのこと。
この時、『.txt』などの拡張子なしでファイルを作るのがポイントのようだ。
Windows環境で、拡張子を非表示にしている場合などは特に注意が必要と思われる。

Windows環境の私は、右クリック→テキストドキュメント→拡張子なしの『ssh』に名前を変更
→拡張子を変更すると、ファイルが使えなくなる可能性があるが変更するか?ときかれるので、
『はい』をクリックで作成した。



2.接続と起動
SDカードとLANケーブルを接続したのち、電源ケーブル(microUSB)を接続する。
電源ケーブルを差し込めば、Rasspberry Piは起動する。



3.IPアドレスの確認
LANケーブルを指しているので、Rasspberry PiにルーターからIPアドレスが割り振られているはずである。
そこで、割り振られたIPアドレスを確認する。
下記の確認方法で、Macアドレスが『B8:27:EB』から始まっているインターフェイスのIPアドレスを探す。
これが、Raspbery Piに割り振られたIPアドレスとなる。
なお、『B8:27:EB』はRaspberry PiのベンダIDである。

  確認方法1:ルーターの設定画面に入ってRaspberry Piに割り振られたアドレスを確認する。
  確認方法2:コマンドプロンプトから『arp -a』を実行する。


4.puttyの設定
Raspberry PiへのSSH接続に、puttyというソフトを使う。
はじめに、文字コードの設定を行う。
下記の要領で、文字コードをUTF-8へ変更する。
 ウィンドウ→変換→リモートの文字セットの設定で、『UTF-8』を選択する。
(これを忘れたがために、のちの日本語化後に文字化けしてすったもんだした…)


毎回確認するのも大変なので、セッションに保存しておくと簡単。


5.SSHでログインする
puttyを使って、Raspberry PiにSSHでログインする。
ホスト名(またはIPアドレス)の欄に、先ほど調べたIPアドレスを入れ『開く』をクリック。


次に、ユーザー名とパスワードを聞かれるので、入力する(ただし、パスワードは非表示)。
Raspbianの初期設定は、
 ユーザー:pi
 パスワード:raspberry



6.ソフトウェアのアップグレード
ログインが完了したら、はじめにソフトウェアのアップグレードを行う。
下記コマンド(白文字部分)を入力し、Enterキーを押す。
pi@raspberrypi : ˜ $ sudo apt-get update

いろんな表示が出てくるが、比較的短時間で終了する。

処理が終わって、コマンドプロンプトが入力できる状態になったら、次のコマンドを実行。
pi@raspberrypi : ˜ $ sudo apt-get upgrade

これは結構時間がかかる。
また、途中でyesかnoか聞かれることもある。
(Do you want to continue? [Y/n])
yesの場合は、『y』と入力してEnterすればOK。

続いて、ファームウェアのアップデートも行う。
pi@raspberrypi : ˜ $ sudo rpi-update


7.日本語環境の準備
まずはじめに、日本語フォントのインストールから行う。
pi@raspberrypi : ˜ $ sudo apt-get install fonts-vlgothic

続いて、環境設定を行う。
下記コマンドを実行すると、環境設定画面が出てくる。
pi@raspberrypi : ˜ $ sudo raspi-config

この画面では、『↑』『↓』キーでカーソルを移動する。
また、<Select> <Finish>へは『←』『→』キーや『Tab』キーで移動する。
選択は『Space』キーで、決定は『Enter』キー。



まず、Localisation Options → Change Localeへ進む。
次に、『ja_JP.UTF-8』をスペースキーで選択して、『Enter』キーを押す。
(選択すると*が表示される)


そうすると次の画面へ進むので、カーソルを『ja_JP.UTF-8』へ持ってきて『Enter』キーを押す。

続いて、タイムゾーンも変更する。
Localisation Options → Change Timezoneへ進む。
Asia→Tokyoと選択。

ここまで設定したら、Raspberry Piを一度リブートする。
以下のコマンドを入力するとリブートがかかり、puttyが一度切断される。
pi@raspberrypi : ˜ $ sudo reboot

再度ログインして、ロケールの設定画面へ進むと、日本語が出てくるのが確認できる。



8.電源OFF
必要最小限の初期設定が完了したので、Raspberry Piの電源をOFFする。
電源を切る際は、以下のコマンドを実行する。
pi@raspberrypi : ˜ $ sudo shutdown -h now

ArduinoからIM920で送信する

2017-06-17 23:35:14 | Arduino&Raspberry Pi
前回ペアリングまでうまくいったので、今度はArduinoからIM920を使って送信してみる。

将来的には、センサーのデータを送信するとして、今回は実験なので、Arduinoの起動時間を一定時間ごとに送信してみる。



参考にしたもの
 IM920cをArduinoで使う | みやかわのあしあと
 インタープラン社 HP




用意するもの
・IM920 ×2個  amazon 秋月電子

・Arduino amazon 秋月電子

・USBシリアル変換アダプタ  スイッチサイエンス
 ブレットボード、ジャンパー線、LED、抵抗

 または
 インタープラン製 USBインターフェースボード IM315-USB-RX  amazon 秋月電子

・Tera Term (ソフト)  ダウンロード元



1.AruduinoとIM920の配線 ~ブレッドボードの場合~
 (インタープラン製のIM315-USB-RXを使用の際は参考サイト参照)

 メーカーの取説をもとに接続。取説の『外部マイコン』がArduinoに該当する。
 PORTは使わないので接続しない。
 

 ArduinoとIM920との通信には、ソフトウェアシリアル機能を使う。
 そこで、『外部マイコン』部のRXDをArduinoの10pin、TXDをArduinoの11pinとする。
 IM920のVccはArduinoの3.3Vに、GNDはArduinoのGNDに接続する。
 IM920とブレッドボード間の細い線は、LANケーブルの中のツイスト線を使用した。
 


2.Aruduinoのプログラム
 以下のようなスケッチをArduinoへ書き込む。

#include <SoftwareSerial.h>

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

void setup() {
  IM920Serial.begin(19200);
}

void loop() {
  IM920Serial.print("TXDA ");       //TXDA(可変長データ送信)コマンド
  IM920Serial.println(millis());    //Arduino起動時間を出力し改行

  delay(2000);    //2秒間待機
}




3.パソコン側にUSBでIM920を接続
 インタープラン製のIM315-USB-RXを使用の際はUSB端子をPCへ接続。

 USBシリアル変換アダプタを使用した場合の接続法は、前回参照。
 


4.Tera Termで受信
 [設定] => [シリアルポート]を選択し、ボーレートを19200に変更し、OKをクリック。
 

 すると、こんな感じで受信する。
 

 2秒ごとにArduinoから起動時間を送信したものを受信することができた。

 これにて、ArduinoからIM920を使った送信実験は完了。

IM920をペアリングする

2017-04-02 00:49:18 | Arduino&Raspberry Pi
こんな感じで、Arduinoにセンサーを付け、数100m離れた所に設置したRaspberry Piで受信したい。


Wi-Fiや3Gも検討してみたが、Wi-Fiは通信距離に、3Gはイニシャルコストやランニングコストに難があった。。。

そこで、いろいろ調べてみると920MHz帯特定小電力無線なる規格が。

この920MHz帯の無線通信だと通信速度は低いが、通信距離は長いという特徴があるとのこと。
コストに関しても、イニシャルコストはWi-Fiに劣るが、ランニングコストはほとんどかからない。

そこで、インタープラン社の920MHz無線モジュールIM920を使ってみることにした。

スペック等は、下記の通り。



さっそく、ペアリングを行ってみる。


参考にしたもの
 インタープラン社 HP
 インタープラン社 無線モジュールアプリケーションノート ペアリングの方法
 IM920同士のペアリング | みやかわのあしあと




用意するもの
・IM920 ×2個  amazon 秋月電子

・USBシリアル変換アダプタ  スイッチサイエンス
 ブレットボード、ジャンパー線、LED、抵抗

 または
 インタープラン製 USBインターフェースボード IM315-USB-RX  amazon 秋月電子

・Tera Term (ソフト)  ダウンロード元



0.ペアリングしたいデバイスIDの確認
 ペアリングしたいデバイス(送信側デバイス)のIDを確認する。
 製品に張られているシリアルナンバー(10進数表記)を16進数に変換したものがIDとなる。
 下記画像は、メーカーのアプリケーションノートより。
 


1.IM920とUSBシリアル変換アダプタ間の配線
 (インタープラン製のIM315-USB-RXを使用の際は省略)

 メーカーの取説をもとに接続。取説の『外部マイコン』がUSBシリアル変換アダプタに該当。
 今回使用したUSB変換アダプタにはPORTはないので接続していない。
 
 

2.USBでパソコンと接続

3.Tera Termを起動し、接続したCOMポートを選択

4.[設定] => [シリアルポート]を選択し、ボーレートを19200に変更する
 

5.[設定] => [端末]を選択し、受信を『AUTO』にし、ローカルエコーにチェックを入れる
 ローカルエコーにチェックを入れることで、入力したコマンドをターミナル上に表示できる。
 また、受信をAUTOにすることで、IM920からの応答を正しく改行表示してくれる。
 

6.コマンドを入力し、ペアリングを行う
 ENWR   ※IM920のメモリの書き込み許可コマンド。
 SRID 013E ※受信ID(送信側デバイスID)登録コマンド。デバイスIDの例として013E。
 RRID   ※登録してあるIDの表示コマンド。登録がうまくいったかの確認。
 DSWR   ※IM920のメモリの書き込み禁止コマンド。
 


これで、登録したIDのデバイスからの通信を受信できるようになった。
もし、双方向で通信をしたい場合は、もう一つのデバイスも同様の方法でID登録すればできる。

Arduino IDEのインストール

2017-03-11 14:30:30 | Arduino&Raspberry Pi
ほぼほぼ10年ぶりくらいのブログ更新。
意外とアカウント残っているものですね。

閑話休題

Arduinoやラズベリーパイで遊び始めたので、その備忘録としてブログに書いておこうかと。

Arduinoで遊ぶためには、IDEをインストールする必要があります。

最近まで、Arduinoの内部分裂があり、本家サイトやIDEが2つある状態でしたが、
現在はIDEは共通化されているとのこと。

そこで、安心してwww.arduino.ccからIDEをダウンロード。


バージョン1.8.1をインストール完了。