平成26年度熊本高専arduino講座 第2週 xbeeを用いた遠隔放射線量計測

76
XBee ををををををををを をををををををを H26 ををををををををを Arduino ををををををををををを を2を 2014-09-13 Katsuhiro Morishita ををををを () 1

Upload: katsuhiro-morishita

Post on 24-May-2015

1.459 views

Category:

Engineering


0 download

DESCRIPTION

熊本高等専門学校が行ったH26年度社会人講座のArduinoによる実用講座 第2週で利用されたスライド資料です。電子工作入門者向けに、XBeeという無線デバイスを用いた観測データの無線伝送をテーマとしました。講義担当はAC科の森下です。 第1週の復習を兼ねて、Ardinoの基本やC/C++の基本に関しても解説しています。足りない情報もあるかと思いますが、ご了承下さい。

TRANSCRIPT

Page 1: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

1

XBeeを用いた無線による遠隔放射線量計測

H26熊本高専社会人講座Arduinoによるマイコン実用講座 第 2回

2014-09-13Katsuhiro Morishita(森下功啓)

Page 2: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

2

Index

• 講師紹介• テーマ説明• 電子回路の基礎• 無線通信• 放射線量の計測• 参考情報

Page 3: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

3

講義スケジュールと諸注意• 講義時間: 9:00〜 16:50• 昼食: 11:50〜 13:00• 休憩インターバル: 50分講義 , 10分休憩

• ICTセンターでは飲食禁止です

質問は随時!!

Page 4: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

4

講師紹介• 2006年 八代高専機械電気工学科卒• 2008年 八代高専専攻科修了• 2010年 熊本大学情報電子工学専攻修了(修士)• 2013年 熊本大学情報電子工学専攻修了(博士)– 1年間、民間経験 , 5ヶ月間、熊大で研究補助

• 専門: GPS/GNSS、いろいろ計測• 得意技:電子工作 , プログラミング• 好きなこと:登山、釣り、作ること

Page 5: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

5

これまでの代表作品(予定含む)

• 自動走行ロボ• 全身反応測定器• 温度場計測デバイス• 野生動物追跡システム• 無線制御式 LED制御デバイス• 遠隔雨水タンク監視・排水システム• 車椅子利用者負荷量計測デバイス

Page 6: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

6

逆自己紹介• 自慢の一品• これから何を作りますか?• 興味のあること• 今日、身につけたいこと• プログラミングの経験• 第 1回に関する質問があればどうぞ

Page 7: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

7

本日のテーマ

Page 8: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

8

到達目標• 無線デバイスを用いてシリアル通信ができる

• 無線でセンサデータの通知ができる

• 放射線の種類を説明できる• 放射線量の計測ができる

• 部品の資料を調べられる• 最新のライブラリを入手できる

Page 9: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

9

観測データの処理は各自の課題• データの継続的収集• データのデータベース登録• サーバ立ち上げ• 機械学習• ノイズ除去• 処理の自動化• etc.

今日は扱いません

リクエストはなかったし・・・

Page 10: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

10

データフレーム設計も各自の課題• 通信に慣れてくると必要性を感じるはず• 通信速度、誤り検出、パケットロス、再

送処理、データ転送形式、、、考慮すべきことは多い

今日は扱いません

Page 11: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

11

電子工作の基礎

Page 12: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

12

基本ワードワード 意味

AD 変換 電圧を計測して、デジタル情報とすること

シリアル通信 1本の電線で 1 bit ずつデータを伝送する通信方式

ブロードキャスト

接続された全ノードを対象としてデータを送信する行為

ユニキャスト 特定のノードに対してデータを送信する行為

Page 13: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

13

Q:マイコンの構成

*ここは CPUとか RAM/ROMとか IOとかが含まれているということを思い出して欲しいスライド。後に続く C 言語へ繋げたい。

Page 14: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

14

マイコンとプログラムの関係• マイコンは CPU、 RAM、 ROM、他を内蔵• ROMといっても、書き換えが可能• プログラムは ROMに書き込まれる• マイコンは起動後に ROMの先頭から実行• 命令を 1つずつ CPUに入力しながら処理• 命令は 0と 1( Lowと High)で人間には分かり辛い

Page 15: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

15

コンパイル• 計算機の理解できる書式に変更

Page 16: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

16

ブートローダによるプログラム書き込み

• ブートローダ–プログラム書き込み器を省略できる–マイコンに予め書き込んでおく

• ブートローダの動作–電源 ON 直後に起動– 起動後一定時間、特定の信号入力を待つ– 書き込み信号を検出するとプログラムを受信–自身とは重ならない部分に受信したコードを書き

込む*ブートローダがなくても書き込みは可能ですが、専用のハードウェアが必要です

Page 17: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

17

Arduino IDEと Processing IDE

• 似ているのは見た目だけ• 言語は C++と java

Page 18: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

18

Arduino IDEの入手先• http://arduino.cc/en/Main/Software

Page 19: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

19

Arduino IDEのボタン

コンパイル&書き込み(プログラムの転送)

シリアルモニタ起動コンパイルテスト

* Mac 版のスクリーンショットです

Page 20: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

20

Arduino IDEのメニュー

* Mac 版のスクリーンショットです

通信ポートの選択マイコンの選択

ライブラリの利用等

サンプルコード等

Page 21: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

21

#include<stdio.h>#define IO_NUM 6int io_status = 0;

void sub(int value1, int value2){ return vaule1 - value2;}

int main(void){ int fuga = sub(100, 50); return 0;}

C 言語の基本構造#incude

グローバル変数

#define

様々な関数

main関数

Page 22: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

22

loop関数setup関数

Arduinoのプログラム構造

*Arduinoはコンパイルの直前にタイマー処理とmain関数を自動的に貼り付けている。 main関数の中身は、 {(void)setup();while(1){(boid)loop();}}

#incude

グローバル変数#define

様々な関数

右では略

NEW

NEW

Page 23: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

23

setup関数の役割• setup()は起動直後に 1度だけ実行• ハードウェアの基本的な設定を記述すると楽

図  Srial ポートを使って 9600 bpsでのシリアル通信を行う準備を実施するコード

Page 24: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

24

loop関数の役割• loop()は無限に実行する内容を記述

図 無限に AD 変換値をシリアル出力するコード

Page 25: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

25

Arduinoの開発言語は C++

• オブジェクト指向に対応• クラスを利用できます

class TimeOut{ private: long timeout_time; public: // set timeout time width void set_timeout(long timeout) { this->timeout_time = millis() + timeout; } // timeout check, true: timeout boolean is_timeout() { if(millis() > this->timeout_time) return true; else return false; } // constructer TimeOut() { this->timeout_time = 0l; }};

クラスの例

Page 26: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

26

クラスを利用するメリット• アクセス制御–デバッグし易い–プログラム設計上、考慮項目数が減る

• コードの相互依存性を減らせる–脱スパゲッティコード!

• 複数人でのプログラム開発–役割分担の明確化

• コードの再利用性が上がる

Page 27: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

27

コードを理解させない技• ファイル間をまたがるグローバル変数• 無関係な関数を1つのファイルに格納• 1つの関数が長い• インデントしない• 名前で中身が推察されない変数名

Page 28: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

28

分かりやすいコード• ファイル間で変数を共有しない–データ引き渡し用の関数を用意

• データに紐付いた関数を集めてクラス化• 関数はせいぜいモニタ 1.5 画面分と短く• インデントする• 変数名でデータが推察できる

Page 29: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

29

演算子の優先度

“*” == “/” > “+” == “-”

* 同位の演算子は左にあるものが優先** 丸括弧()で囲われた中を最優先で処理

例: int a = 100 * 20 + 40aには何が代入される?

Page 30: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

30

Arduinoでエラーが出たら• エラーメッセージを読む• 理解不可能な場合–メッセージをコピーして、ネットで検索– ””で括るのを忘れずに

図 エラーの例

Page 31: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

31

電波を使った無線通信

Page 32: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

32

電波 ==電磁波

• 電磁波–電界と磁界の相互作用で伝搬する波–電気を帯びた粒子と相互作用– 周波数で伝搬特性が大きく変わる• 水中は無理

* 図はWikipediaより引用

Page 33: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

33

通信方式と特徴

通信規格スループット

ネットワーク対応 消費電力

メーカー独自 NA NA NA

3G 製品次第 × 高Wi-Fi 大 対応製品が必要 高Wi-Sun 未知数 30 ホップ対応 未知数Bluetooth 3.x 大 × 中Bluetooth 4.x 極小 × 極小

ZigBee 小メッシュ対応ホップ数は 10 程度

小*3G, Wi-Fiはインターネットへの接続性が高い

Page 34: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

34

ZigBee

• センサネットワークを念頭に規格化された近距離無線通信規格

• ベース規格は IEEE802.15.4

Page 35: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

35

目的に合わせて、無線器を選択• 通信距離• 必要なスループット–通信速度– 平均通信データ量–バースト通信データ量

• 消費電力

Page 36: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

36

この講座では、 XBeeを利用• シリーズ 1( S1)を利用

図 左: 2009年購入品 右: 2011年頃の購入品

Page 37: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

37

XBEE

Page 39: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

39

XBeeのポートマップ

Page 40: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

40

日本で利用可能な XBeeの種類• アンテナタイプ– ウィップ、 PCB、ダイポール( DP)

通信規格 周波数( @2014-09 日本)Wi-Fi 2.4 GHz

IEEE802.15.4ベース/DigiMesh (S1)

2.4 GHzいつか 920MHZがでるらしい

ZigBee(S2)

2.4 GHzいつか 920MHZがでるらしい

*無線機は、電波を出すために国の認可を受けている必要があります。

@2014-09-12

Page 41: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

41

XBeeとマイコン間の通信速度• 最大、 57,600 bps(単位は baudと書くことも)

• 連続でさばけるスループットは 38,400 bps

Page 42: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

42

XBeeの電源電圧• シリーズによって異なるが、概ね 3.3 Vで動作

• 5 V 以上や、 0 V 以下を印加すると破壊する

Page 43: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

43

API通信モードAPI通信モードでは以下を実現できる• データの到達判定• 受信時の電界強度取得• ホップ数の調整• ブロードキャスト / ユニキャストの選択• 送信者の判別

送りたいデータ check sumaddresslengthheader others

APIデータフレームのイメージ(正確にはちょっと違う)

Page 44: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

44

API モードの使い分け• API OFF:– 有線のシリアルを無線に置き換えるだけ–バイナリデータも送れる†– 文字化けに弱い

• API通信モード( with escape モードがおススメ)– 半端に文字が化けることがほぼ無い– 受信電界強度( RSSI)や送り主が分かる

†:” +++”は送らないこと。 ATコマンドモードに入ってしまう。

Page 45: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

45

XBeeを使うために必要なもの• XBee-PC 接続デバイス• XCTU(ソフトウェア)

Page 46: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

46

XCTU

• XBeeの設定,モニタリング用ツール• Windows/MacOSで動作• 入手先 @2014-09-13– http://www.digi.com/products/wireless-wired-em

bedded-solutions/zigbee-rf-modules/xctu

Page 47: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

47

最低限の XBeeに必要な設定XCTUを使って以下の項目を設定• ファームウェア†• チャンネル(周波数選択)†• PAN ID†• API モード利用の有無• 通信速度(ボーレート , baudrate, bit-rate)‡

†:設定が一致した XBee 同士で通信可能‡:有線で接続された Arduinoと同じ値に設定のこと

Page 48: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

48

この演習での設定• ファームウェア: 802.15.4• チャンネル: D• PAN ID: 2221• API モード: OFF(透過モード)

Page 49: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

49

課題 1

• XCTUをインストール• XCTUを使って XBeeを設定

Page 50: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

50

課題 2

• パソコン同士で、 XBeeを使ってチャット

Page 51: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

51

課題 3

Arduinoを使って、• 自分の名前(ローマ字)をブロードキャスト

• 演者 PC モニタに表示されたら成功

Page 52: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

52

課題 4

• 照度を計測して、ブロードキャスト• 演者 PC モニタに表示されたら成功

Page 53: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

53

課題 5

Arduinoを使って、• “Hi, [your name]!”に返事する– [your name]: 森下なら、” morishita”–返事文はなんでも OK

Page 54: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

54

放射線量の計測

Page 55: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

55

放射線とは?

*γ線、 β線、 α線、その他 電離作用のある粒子や電磁波

Page 56: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

56

計測方法センサの例• 光電子増倍管• 結晶+フォトダイオード

Page 57: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

57

今日利用するデバイス• エステー社製 エアカウンター– http://www.st-c.co.jp/air-counter/

• ガンマ線に対応

これです

Page 58: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

58

電気的接続エアカウンターポート名

ライン色(配布した機材にのみ有

効)

接続するArduinoポート

名備考

VBAT 白 D6 3.0 – 5.0 V 印加 OKGND 黒 GND

Tx 紫 D8

Rx 灰 D9 要:抵抗による分圧SW 青 D7 2 kOhmを介すこと

図 抵抗の配置

200Ω

330Ω

330ΩArduino

UNO エアカウンター

3.3V

Rx

D9

D7SW

2kΩ

Page 59: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

59

スケッチ• 放射線量を計測し、シリアル出力します• 入手先– https://github.com/KatsuhiroMorishita/

AirCounterControler_for_Arduino

Page 60: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

60

課題 1

• 最新のソースコードを入手• プログラムを書き込んで、動作チェック• 実行したら何か表示されましたか?

Page 61: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

61

課題 2

• 放射線量の計測値を無線で飛ばしましょう

• 森下のモニタに表示されれば OK• データには自身の名前を添付しましょう– 例:「morishita: 0.07 uSv」

Page 62: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

62

参考文献

Page 63: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

63

Googleで検索• キーワードは大事• 日本語で資料がなければ英語で検索• 英語のサイトを見つけたら、自動翻訳

Page 64: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

64

参考サイト

• Arduino公式• Arduino日本語解説• ソフトウェア共同開発サイト  GitHub• 個人ブログ

Page 65: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

65

参考図書

• Arduinoをはじめよう• Prototyping Lab• Arduinoで計る、測る、量る

• ZigBee開発ハンドブック• 超お手軽無線モジュールXBee

• XBeeでつくるワイヤレスセンサネットワーク

Page 66: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

66

本講義の資料など• GitHub や SlideShare へアップロード• 本講義オフィシャルサイトにまとめます

Page 67: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

67

まとめ

Page 68: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

68

まとめ• 無線通信デバイスを使いました• 放射線の計測も行いました

Page 69: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

69

Fin.

作りたいものは作れそうですか?

Page 70: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

70

 本講義を手伝ってくれた村山先生、湯治先生、ティーチングアシスタントの学生諸君、本当に有難うございました。

人 ´∀` ). .☆ 。 .:*ありがとぉ

Page 71: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

71

おまけのページ

以降のスライドは、将来的に別のスライドとしてまとめるかもしれないしまとめないかもしれないスライド達です。

Page 72: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

Arduinoの説明

72

http://www.teu.ac.jp/press/2012.html?id=128

• マイコンボード(基板)の一種• イタリア生まれ• 芸術大学の学生用に開発• オープンソース,オープンハードウェア• 世界中の人がソースコードを提供• 様々な種類– UNO, mega, DUE, TRE, etc.

• 同じ命令体系• 様々なセンサーを簡単に接続

Page 73: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

Arduinoとパソコンの接続とCOM ポート確認 for Windows

• 目的– Arduino へのプログラムの書き込み,通信

• 手順– ArduinoをUSBで接続

• ドライバのインストールが必要な場合は、Arduino IDEのディレクトリ中にある「 drivers」フォルダを指定してドライバをインストール

– シリアル通信のために、 COM ポートを確認• 「コンピュータ」のプロパティからデバイスマネージャ• デバイスマネージャの中に COMxはあるか?

– xはローマ数字– Arduino IDEを立ち上げて、

• マイコンボードの種類をセット• COM番号をセット• シリアルモニタを起動• 通信速度をArduinoに合わせる 73

*Arduino DUEはWindowsでのみシリアル通信可能です

Page 74: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

74

Arduinoとパソコンの接続とCOM ポート確認 for Mac

• 目的– Arduino へのプログラムの書き込み,通信

• 手順– ArduinoをUSBで接続– シリアル通信のために、シリアル通信ポートを確認

• terminal立ち上げ• “cd /dev” を実行• “ls” を実行• 表示された中から、Arduinoっぽいのを探す• USBケーブルを切断してもう一度確認すると消えている名前がある。それがArduinoとの通信に利用しているシリアルポート

– Arduino IDEを立ち上げて、• マイコンボードの種類をセット• シリアルポートをセット• シリアルモニタを立ち上げ• 通信速度をArduinoに合わせる*Arduino DUEはWindowsでのみシリアル通信可能です

Page 75: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

75

mbed もある• https://mbed.org/

Page 76: 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測

76

公開講座への要望募集以下は森下個人の感じていることです• 学校運営交付金が徐々に減少している• 地域貢献活動予算も縮小は避けられない• 社会人講座の参加料も上るかも?• どんどん、開催講座の内容を要望しよう