More Related Content
Similar to 平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測 (20)
More from Katsuhiro Morishita (20)
平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測
- 4. 講師紹介
• 2006年八代高専機械電気工学科卒
• 2008年八代高専専攻科修了
• 2010年熊本大学情報電子工学専攻修了(修士)
• 2013年熊本大学情報電子工学専攻修了(博士)
– 1年間、民間経験, 5ヶ月間、熊大で研究補助
• 専門:GPS/GNSS、いろいろ計測
• 得意技:電子工作, プログラミング
• 好きなこと:登山、釣り、作ること4
- 6. 逆自己紹介
• 自慢の一品
• これから何を作りますか?
• 興味のあること
• 今日、身につけたいこと
• プログラミングの経験
• 第1回に関する質問があればどうぞ
6
- 12. 基本ワード
12
ワード意味
AD変換電圧を計測して、デジタル情
報とすること
シリアル通信1本の電線で1 bitずつデータ
を伝送する通信方式
ブロードキャスト接続された全ノードを対象と
してデータを送信する行為
ユニキャスト特定のノードに対してデータ
を送信する行為
- 16. ブートローダによるプログラム書き込み
• ブートローダ
– プログラム書き込み器を省略できる
– マイコンに予め書き込んでおく
• ブートローダの動作
– 電源ON直後に起動
– 起動後一定時間、特定の信号入力を待つ
– 書き込み信号を検出するとプログラムを受信
– 自身とは重ならない部分に受信したコードを書き込む
*ブートローダがなくても書き込みは可能ですが、専用のハードウェアが必要です16
- 21. C言語の基本構造
#include<stdio.h>
#define IO_NUM 6
int io_status = 0;
void sub(int value1, int value2)
{
return vaule1 - value2;
}
int main(void)
{
int fuga = sub(100, 50);
return 0;
}
21
#incude
#define
グローバル変数
様々な関数
main関数
- 22. Arduinoのプログラム構造
#incude
#define
右では略
グローバル変数
様々な関数
setup関数
loop関数
22
NEW
NEW
*Arduinoはコンパイルの直前にタイマー処理とmain関数を自動的に貼り付けて
いる。main関数の中身は、{(void)setup();while(1){(boid)loop();}}
- 25. Arduinoの開発言語はC++
• オブジェクト指向に対応
• クラスを利用できます
25
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;
}
};
クラスの例
- 26. クラスを利用するメリット
• アクセス制御
– デバッグし易い
– プログラム設計上、考慮項目数が減る
• コードの相互依存性を減らせる
– 脱スパゲッティコード!
• 複数人でのプログラム開発
– 役割分担の明確化
• コードの再利用性が上がる
26
- 29. 演算子の優先度
29
“*” == “/” > “+” == “-”
例:int a = 100 * 20 + 40
aには何が代入される?
*同位の演算子は左にあるものが優先
**丸括弧()で囲われた中を最優先で処理
- 32. 電波==電磁波
• 電磁波
– 電界と磁界の相互作用で伝搬する波
– 電気を帯びた粒子と相互作用
– 周波数で伝搬特性が大きく変わる
• 水中は無理
32
*図はWikipediaより引用
- 33. 通信方式と特徴
通信規格スループットネットワーク対応消費電力
メーカー独自NA NA NA
3G 製品次第× 高
Wi-Fi 大対応製品が必要高
Wi-Sun 未知数30ホップ対応未知数
Bluetooth 3.x 大× 中
Bluetooth 4.x 極小× 極小
ZigBee 小
メッシュ対応
ホップ数は10程度
小
33 *3G, Wi-Fiはインターネットへの接続性が高い
- 38. XBee
• Digi-International社が開発
• オフィシャルサイト
– 日本語:http://www.digi-intl.co.jp/products/wireless-wired-embedded-solutions/
zigbee-rf-modules/zigbee-mesh-module/index.html
– 英語(より詳細):http://www.digi.com/products/wireless-wired-embedded-solutions/
zigbee-rf-modules/zigbee-mesh-module/
• IEEE802.15.4規格を利用
38
- 40. 日本で利用可能なXBeeの種類
• アンテナタイプ
– ウィップ、PCB、ダイポール(DP)
@2014-09-12
通信規格周波数(@2014-09 日本)
Wi-Fi 2.4 GHz
40
IEEE802.15.4ベース
/DigiMesh (S1)
2.4 GHz
いつか920MHZがでるらしい
ZigBee
(S2)
2.4 GHz
いつか920MHZがでるらしい
*無線機は、電波を出すために国の認可を受けている必要があります。
- 43. API通信モード
API通信モードでは以下を実現できる
• データの到達判定
• 受信時の電界強度取得
• ホップ数の調整
• ブロードキャスト/ユニキャストの選択
• 送信者の判別
43
header length address others 送りたいデータcheck sum
APIデータフレームのイメージ(正確にはちょっと違う)
- 44. APIモードの使い分け
• API OFF:
– 有線のシリアルを無線に置き換えるだけ
– バイナリデータも送れる†
– 文字化けに弱い
• API通信モード(with escapeモードがおススメ)
– 半端に文字が化けることがほぼ無い
– 受信電界強度(RSSI)や送り主が分かる
44
†:”+++”は送らないこと。ATコマンドモードに入ってしまう。
- 46. XCTU
• XBeeの設定,モニタリング用ツール
• Windows/MacOSで動作
• 入手先@2014-09-13
– http://www.digi.com/products/wireless-wired-embedded-
solutions/zigbee-rf-modules/xctu
46
- 47. 最低限のXBeeに必要な設定
XCTUを使って以下の項目を設定
• ファームウェア†
• チャンネル(周波数選択)†
• PAN ID†
• APIモード利用の有無
• 通信速度(ボーレート, baudrate, bit-rate)‡
†:設定が一致したXBee同士で通信可能
‡:有線で接続されたArduinoと同じ値に設定のこと
47
- 53. 課題5
Arduinoを使って、
• “Hi, [your name]!”に返事する
– [your name]: 森下なら、”morishita”
– 返事文はなんでもOK
53
- 58. 電気的接続
エアカウンター
ポート名
ライン色(配布した
機材にのみ有効)
接続する
Arduinoポート名
備考
VBAT 白D6 3.0 – 5.0 V印加OK
GND 黒GND
Tx 紫D8
Rx 灰D9 要:抵抗による分圧
SW 青D7 2 kOhmを介すこと
58
図抵抗の配置
330Ω
200Ω
330Ω
Arduino
UNO
エアカウンター
3.3V
Rx
D9
D7
SW
2kΩ
- 65. 参考図書
• Arduinoをはじめよう
• Prototyping Lab
• Arduinoで計る、測る、量る
• ZigBee開発ハンドブック
• 超お手軽無線モジュールXBee
• XBeeでつくるワイヤレスセンサネットワーク
65
- 73. Arduinoとパソコンの接続と
COMポート確認for Windows
• 目的
– Arduinoへのプログラムの書き込み,通信
• 手順
– ArduinoをUSBで接続
• ドライバのインストールが必要な場合は、Arduino IDEのディレクト
リ中にある「drivers」フォルダを指定してドライバをインストール
– シリアル通信のために、COMポートを確認
• 「コンピュータ」のプロパティからデバイスマネージャ
• デバイスマネージャの中にCOMxはあるか?
– xはローマ数字
– Arduino IDEを立ち上げて、
• マイコンボードの種類をセット
• COM番号をセット
• シリアルモニタを起動
• 通信速度をArduinoに合わせる
73
*Arduino DUEはWindowsでのみシリアル通信可能です
- 74. Arduinoとパソコンの接続と
COMポート確認for Mac
• 目的
– Arduinoへのプログラムの書き込み,通信
• 手順
– ArduinoをUSBで接続
– シリアル通信のために、シリアル通信ポートを確認
• terminal立ち上げ
• “cd /dev” を実行
• “ls” を実行
• 表示された中から、Arduinoっぽいのを探す
• USBケーブルを切断してもう一度確認すると消えている名前がある。
それがArduinoとの通信に利用しているシリアルポート
– Arduino IDEを立ち上げて、
• マイコンボードの種類をセット
• シリアルポートをセット
• シリアルモニタを立ち上げ
• 通信速度をArduinoに合わせる
74
*Arduino DUEはWindowsでのみシリアル通信可能です