Download - Arduinoをこれから始める人のためのArduino紹介スライドβ版
ArduinoArduino!
Arduino!
2015-05-25
Katsuhiro Morishita(森下功啓)
1
β版
Index
• 自己紹介• What• How• Warning• Key Word• IDE• Circuit
– 工事中
• Reference• Appendix
2
自己紹介
• 2010年 熊本大学情報電子工学専攻修了(修士)
• 2013年 熊本大学情報電子工学専攻修了(博士)
– 1年間、民間経験, 5ヶ月間、熊大で研究補助
• 2014年~ 熊本高専助教
• 専門:GPS/GNSS、いろいろ計測
• 得意技:電子工作, プログラミング
• 好きなこと:登山、釣り、作ること
3
これまでの代表作品(予定含む)
• 自動走行ロボ
• 全身反応測定器
• 温度場計測デバイス
• 野生動物追跡システム
• 無線制御式LED制御デバイス
• 遠隔雨水タンク監視・排水システム
• 車椅子利用者負荷量計測デバイス
4
5
What
Arduinoの特徴
6
http://www.teu.ac.jp/press/2012.html?id=128
• マイコンボード(基板)の一種
• イタリア生まれ
• 芸術大学の学生用に開発
• オープンソース,オープンハードウェア
• 世界中の人がソースコードを提供
• 様々な種類– UNO, mega, DUE, TRE, etc.
• 同じ命令体系
• 様々なセンサーを簡単に接続
電子楽器
7http://www.nicovideo.jp/watch/sm22816367?ref=search_key_video
鉢植えモニタリング
17
https://www.youtube.com/watch?v=hGd4SU0xo6g
19
How
必要なもの
20
Arduino IDE(これはWindows用のもの)
MacやPC
Arduino通信ケーブル
http://akizukidenshi.com/catalog/g/gC-07605/
あったら楽になるもの
21
半田ごて
半田
はんだ吸い取り線
ピンセット
こて台
スズメッキ線 ポリウレタン銅線
テスター
オシロスコープ
シリアルUSB変換モジュール
ジャンパワイヤ
電源装置
小手先クリーナー
あったら助かる知識
22
電圧
電流
仕事量
シリアル通信
電池の電圧・容量
電子素子の特性
電気素子の特性
熱
Arduinoの購入
• 取扱店
–スイッチサイエンス
–秋月電子通商
–千石電商
– Amazon
• Arduino UNOで1600~3300円です
• 品種に幅があるため、全体では1200~7000円
23
Arduino IDEの入手先
• http://arduino.cc/en/Main/Software
24
古い安定版は無料
最新の非安定版も無料
最新の安定版は有料
蛇足:Arduino開発チームの分裂
• Arduino開発チームが分裂しました
• ハードウェアに対する方針の不一致だそうです
• Arduino cc
– http://www.arduino.cc/
• Arduino org
– http://arduino.org/
25
LEDが点滅するまでの流れ
LEDをArduinoに接続
プログラムを作る
書き込んで様子を見る
26
LEDをArduinoに接続する
27
足の短い方がGND
差し込む
ArduinoとPCをUSBで接続する
• 電源をArduinoに供給しつつ、プログラムを書き込んだり、Arduinoとシリアル通信するためにUSBケーブルで接続します
28
USBケーブル
プログラムを作る
29
• コード入手先– https://raw.github
usercontent.com/KatsuhiroMorishita/edu_ITD/master/2015/Arduino_codes/LED_test/LED_test.ino
*ここでは、LEDの電流制限抵抗を省略するために、ONの時間をOFFの時間の1/10にしている。
*Windows版のスクリーンショットです
ここに書く
設定して
30
• ボードのシリーズを選ぶ
• ポートのマイコンor電圧を選ぶ
*Windows版のスクリーンショットです
書き込んで
31
• コンパイル&書き込み(エラーが出たら修正)
クリック
*Windows版のスクリーンショットです
様子を見る
• 動作の様子
– https://www.youtube.com/watch?v=772S6MC7qZU&feature=youtu.be
32
33
Warning
電源電圧は決まっています
• マイコンに直接供給される電圧を「電源電圧」という
• proシリーズやDueの電源電圧は3.3 V
• 普通は5.0 V
• USBで電源を供給できる場合は特に何も考えなくてOK
• ACアダプタを使う場合は、電源電圧+2V~12Vを利用– ボード上の素子が電圧を落として給電(電源供給)します
34
ポートに入力できる電圧の上下限
• 許容範囲:0~電源電圧(通常は3.3または5.0 V)
• もし、範囲を超える電圧を入力した場合・・・ポートが焼けてしまいます
– マイコンが使えなくなります
35
出力できる電流には制限があります
• 出力ポート1つあたり、2 mA程度と見てください
36
ショートさせない
• 高い電圧と低い電圧間で、電気抵抗の少ない物体(例えば電線)でショート(短絡ともいう)させないで下さい
• 故障する可能性が高くなります
37
39
Key word
Arduino IDE
• Arduinoマイコンボードをプログラミングするための開発環境です
• エディタやコンパイラが一体になっています
40
マイコン
• CPU,メモリ,入出力IOなどが一体になって販売されているIC
• プロセッサともいう
• プログラムを変更すると動作が変わる
• Arduinoはマイコンの一種
• 用例
– 「このマイコンは動作が速いなぁ。」
41
←マイコンの例
Arduinoにおけるプロセッサの種類
42
↑基本的に、Arduinoにおいてボード名が異なるとプロセッサが異なります。なお、Arduino IDEでのプロセッサの選択画面では、同じプロセッサであっても動作電圧や周波数を選ぶ必要があります。
ボード
• 直訳すると「基板」ですが、マイコンが搭載された基板を指します
• 用例
– 「そのボード取って。」
– 「このマイコンボードって使いやすいね。」
43
Arduinoにおけるボードの種類
44↑Arduinoだけでも沢山の種類があります
ポート
• 制御や通信に使うコネクタです
• 物理的なものも、ソフトウェア上のものも「ポート」です
• 特にArduinodではIOポートとか、シリアルポートなどと呼びます
45
IOポート
• マイコンは、1)電圧が高いか低いかを検出する入力(Input)ポート、2)ポートから電圧を出すことができる出力(Output)ポートを持ちます
• Arduinoには出力ポートにも入力ポートにもなれるIOポートと、入力しかできないポートがあります
• 出力ポートにするにはプログラム中で設定が必要です
46
シリアルポート
• シリアル通信を行うためのポート
• 用例
– 「シリアルポートが開かん!」
47
シリアル通信
• シリアルポートを使って通信します
• 一本の電線を使って通信を行う方法をシリアル通信方式と呼びます
• 電圧の高いor低いで0と1を送ります
• 代表的シリアル通信規格– UART
– I2C
– SPI
– Eathernet
48
シリアルモニタ
• Arduino IDEで利用するシリアル通信機能
49
ここをクリックすると起動
スケッチ
• 直訳すると「スケッチ・草案・素描」ですが、Arduinoではプログラムを指します
• 簡単に書けるということを意図しています
50
アナログーデジタル(AD)変換
• 電圧を計測します
• 結果は数値としてマイコン内部に記憶されます
• プログラムからはAD変換の指示が必要です
• 得られた数値に適当な係数をかけると実際の電圧[V]になります
• 入力できる電圧には制限があります
• 計測できる最小の電圧もあります
51
コンパイル
• プログラムを人が読みやすい文章から、機械が理解できる様に変換します
52
*Windows版のスクリーンショットです
書き込み
• 「プログラムをコンパイルして出来たファイルをArduinoボードへ転送する行為」を「書き込み」といいます
53
USBケーブル
ブートローダー
• 初心者は意識しなくともOKです
• ブートローダーとはユーザの作ったプログラムを簡単にROMへ書き込むためのソフトウェア
• ブートローダの動作–電源ONやリセットの直後に起動
–起動後一定時間、特定の信号入力を待つ
–書き込み信号を検出するとプログラムを受信
–自身とは重ならない部分に受信したコードを書き込む
54
組み込み系・組み込みマイコン
• 機器に埋め込まれるマイコンを含む回路を「組み込み」システムと呼びます
• ものを組み込むから「組み込み」です
55
ファームウェア
• 組み込み用のハードウェア上で動作するソフトウェアをファームウェアといいます
56
ハードウェア
• ハードウェアとは、主に電子回路を指します
• ソフトウェアの対比語です
57
組み込み関数
• はじめから用意されている標準的な関数
• 同じ名前の関数を作れません
– クラス内の関数(メソッド)はOK
• 例:digitalWrite()
58
予約語
• 予め用意されているキーワードです
• 特別な意味を持つワードです
59
60
IDE
Arduino IDEの見た目
• 検索窓で”arduino”と入力して検索して起動
• Processingに似ている
61
*Windows版のスクリーンショットです
Arduino IDEでできること
• プログラムの作成
• プログラムのコンパイル
• Arduinoへのプログラム書き込み
62
Arduino IDEのボタンと機能
63
コンパイル&書き込み
シリアルモニタ起動プログラムの検証
*Windows版のスクリーンショットです
サンプルコードの選択
64*Windows版のスクリーンショットです
ライブラリの読み込み
65
*Windows版
のスクリーンショットです
ボードの選択
66
*Windows版のスクリーンショットです
ポートの選択
• プログラムの書き込みや、マイコンとPCとの通信に利用するシリアルポートを選択します
67*Windows版のスクリーンショットです
68
Programming
#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言語の基本構造
69
#incude
グローバル変数
#define
様々な関数
main関数
loop関数
setup関数
Arduinoのプログラム構造
70
*Arduinoはコンパイルの直前にタイマー処理とmain関数を自動的に貼り付けている。main関数の中身は、{(void)setup();while(1){(boid)loop();}}
#incude
グローバル変数
#define
様々な関数
右では略
NEW
NEW
setup関数の役割
• setup()は起動直後に1度だけ実行
• ハードウェアの基本的な設定を記述すると楽
71
Srialポートを使って9600 bpsでのシリアル通信を行う準備を実施するコード
loop関数の役割
• loop()は無限に実行する内容を記述
72
無限にAD変換値をシリアル出力するコード
便利な関数やオブジェクト
• digitalWrite(pin, HIGH/LOW)
–電圧をVccと0 [V]に変更
• analogRead(pin)
–アナログ電圧の計測
• analogWrite(pin, duty)
– PWMによる擬似アナログ電圧出力
• Serial
– Streamを継承した、シリアル通信オブジェクト
73
Arduinoの開発言語はC++
• オブジェクト指向に対応
• クラスを利用できます
74
class TimeOut{private:long timeout_time;
public:// set timeout time widthvoid set_timeout(long timeout){this->timeout_time = millis() + timeout;
}// timeout check, true: timeoutboolean is_timeout(){if(millis() > this->timeout_time)return true;
elsereturn false;
}// constructerTimeOut(){this->timeout_time = 0l;
}};
クラスの例
クラスを利用できます
• アクセス制御
–デバッグし易い
–プログラム設計上、考慮項目数が減る
• コードの相互依存性を減らせる
–脱スパゲッティコード!
• 複数人でのプログラム開発
–役割分担の明確化
• コードの再利用性が上がる75
コンパイルでエラー
• IDE下部にメッセージが出ます
• 英語なので読めます
76
エラーの例
代表的エラー
• 宣言されていない変数が使われた
77
代表的エラー
• 全角のスペースがある
78
ここに注目
代表的エラー
• セミコロン;がない
79
エラーを調べる
• エラーメッセージをネットで検索
• メッセージをダブルコーテーションで括って検索
–例
80
普通のプログラミングとの相違点
• ガベージコレクション(GC)がありません
• mallocは使えるものの、コンパイラが作成した
メモリ配置図を見ながらの作業となって普通のPC, Mac利用者には重い作業
• 全てのオブジェクト(≒変数)が静的にメモリ上に確保されると考えて下さい
81
82
Circuit
Arduino UNOの電気的特性
項目
マイコン ATmega328P
電源電圧 USB:5 VACアダプタ:7-12 Vマイコン自身:5 V
電流容量 1 A
マイコンの出力電流 実用範囲:2 mA
83
←UNOのクローン製品
IOポートの電流制限
84
IOポートの電圧制限
85
LEDの使い方
86
圧電スピーカーの使い方
87
サーボモーターの使い方
88
89
Reference
ggrksGoogleで検索
• キーワードは大事
• 日本語で資料がなければ英語で検索
• 英語のサイトを見つけたら、自動翻訳
90
参考サイト
• Arduino公式
• Arduino日本語リファレンス
• ソフトウェア共同開発支援サイト GitHub
• 個人ブログ
–たとえば“なんでも作っちゃう、かも。”
91
参考図書
• Arduinoをはじめよう
• Prototyping Lab
• Arduinoで計る、測る、量る
92
Fin.
93
94
Appendix• 以降のスライドは、将来的に別のスライドとしてまとめるかもしれないしまとめないかもしれないスライド達です。
Arduinoとパソコンの接続とCOMポート確認 for Windows
• 目的– Arduinoへのプログラムの書き込み,通信
• 手順– ArduinoをUSBで接続
• ドライバのインストールが必要な場合は、Arduino IDEのディレクトリ中にある「drivers」フォルダを指定してドライバをインストール
– シリアル通信のために、COMポートを確認• 「コンピュータ」のプロパティからデバイスマネージャ• デバイスマネージャの中にCOMxはあるか?
– xはローマ数字
– Arduino IDEを立ち上げて、• マイコンボードの種類をセット• COM番号をセット• シリアルモニタを起動• 通信速度をArduinoに合わせる
95*Arduino DUEはWindowsでのみシリアル通信可能です
Arduinoとパソコンの接続とCOMポート確認 for Mac
• 目的– Arduinoへのプログラムの書き込み,通信
• 手順– ArduinoをUSBで接続– シリアル通信のために、シリアル通信ポートを確認
• terminal立ち上げ• “cd /dev” を実行• “ls” を実行• 表示された中から、Arduinoっぽいのを探す• USBケーブルを切断してもう一度確認すると消えている名前がある。それがArduinoとの通信に利用しているシリアルポート
– Arduino IDEを立ち上げて、• マイコンボードの種類をセット• シリアルポートをセット• シリアルモニタを立ち上げ• 通信速度をArduinoに合わせる
96*Arduino DUEはWindowsでのみシリアル通信可能です
シリアル通信プログラムの書き方
• シリアルポートを設定• 通信速度[bps]のセット• 送りたいものを送信
97
Serial.begin(9600);Serial.println(“hellow”);Serial.print(“without linesep”);Serial.write(0x30);
while(1){Int c = Serial.read(); // if c==-1, it’s NoneIf(Serial.available()){適当な関数を呼び出すなど
}}
*適当なサンプルコード。setup()内に書くと動くはず。
ソフトウェアシリアル
• UNOでシリアル通信ポートを増やす
• ソフトウェアで対応
• 代表的ライブラリは2つ
98
SoftwareSerial
AltSoftSerial
4800 baudまで
なら安全@UNO
115200 baudまでなら安全@UNO, PWMと干渉