arduinoをこれから始める人のためのarduino紹介スライドβ版

99
Arduino Arduino! Arduino! 2015-05-25 Katsuhiro Morishita(森下功啓) 1 β

Upload: katsuhiro-morishita

Post on 22-Jul-2015

203 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ArduinoArduino!

Arduino!

2015-05-25

Katsuhiro Morishita(森下功啓)

1

β版

Page 2: Arduinoをこれから始める人のためのArduino紹介スライドβ版

Index

• 自己紹介• What• How• Warning• Key Word• IDE• Circuit

– 工事中

• Reference• Appendix

2

Page 3: Arduinoをこれから始める人のためのArduino紹介スライドβ版

自己紹介

• 2010年 熊本大学情報電子工学専攻修了(修士)

• 2013年 熊本大学情報電子工学専攻修了(博士)

– 1年間、民間経験, 5ヶ月間、熊大で研究補助

• 2014年~ 熊本高専助教

• 専門:GPS/GNSS、いろいろ計測

• 得意技:電子工作, プログラミング

• 好きなこと:登山、釣り、作ること

3

Page 4: Arduinoをこれから始める人のためのArduino紹介スライドβ版

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

• 自動走行ロボ

• 全身反応測定器

• 温度場計測デバイス

• 野生動物追跡システム

• 無線制御式LED制御デバイス

• 遠隔雨水タンク監視・排水システム

• 車椅子利用者負荷量計測デバイス

4

Page 5: Arduinoをこれから始める人のためのArduino紹介スライドβ版

5

What

Page 6: Arduinoをこれから始める人のためのArduino紹介スライドβ版

Arduinoの特徴

6

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

• マイコンボード(基板)の一種

• イタリア生まれ

• 芸術大学の学生用に開発

• オープンソース,オープンハードウェア

• 世界中の人がソースコードを提供

• 様々な種類– UNO, mega, DUE, TRE, etc.

• 同じ命令体系

• 様々なセンサーを簡単に接続

Page 7: Arduinoをこれから始める人のためのArduino紹介スライドβ版

電子楽器

7http://www.nicovideo.jp/watch/sm22816367?ref=search_key_video

Page 8: Arduinoをこれから始める人のためのArduino紹介スライドβ版

メルトを鉄筋で自動演奏

8http://www.nicovideo.jp/watch/sm20247257

Page 9: Arduinoをこれから始める人のためのArduino紹介スライドβ版

フリスクケース温度計

9http://www.nicovideo.jp/watch/sm23222368

Page 10: Arduinoをこれから始める人のためのArduino紹介スライドβ版

曲に合わせてネギ振りミク

10http://www.nicovideo.jp/watch/sm25830554

Page 11: Arduinoをこれから始める人のためのArduino紹介スライドβ版

鉄道模型の自動運転

11http://www.nicovideo.jp/watch/sm25521443

Page 12: Arduinoをこれから始める人のためのArduino紹介スライドβ版

全自動ひきこもり機

12http://www.nicovideo.jp/watch/sm14365038

Page 13: Arduinoをこれから始める人のためのArduino紹介スライドβ版

あかりついったー

13http://www.nicovideo.jp/watch/sm25833332

Page 14: Arduinoをこれから始める人のためのArduino紹介スライドβ版

LEDイルミネーション

14http://www.nicovideo.jp/watch/sm22296707

Page 15: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ロボットハンド

15https://youtu.be/P9nfWO4lWd8?t=2m2s

Page 16: Arduinoをこれから始める人のためのArduino紹介スライドβ版

空き缶ピアノ

16

https://www.youtube.com/watch?v=Ttm62RBdOuo

Page 17: Arduinoをこれから始める人のためのArduino紹介スライドβ版

鉢植えモニタリング

17

https://www.youtube.com/watch?v=hGd4SU0xo6g

Page 18: Arduinoをこれから始める人のためのArduino紹介スライドβ版

電子錠

18https://www.youtube.com/watch?v=mHJhTMvtmPQ

Page 19: Arduinoをこれから始める人のためのArduino紹介スライドβ版

19

How

Page 20: Arduinoをこれから始める人のためのArduino紹介スライドβ版

必要なもの

20

Arduino IDE(これはWindows用のもの)

MacやPC

Arduino通信ケーブル

http://akizukidenshi.com/catalog/g/gC-07605/

Page 21: Arduinoをこれから始める人のためのArduino紹介スライドβ版

あったら楽になるもの

21

半田ごて

半田

はんだ吸い取り線

ピンセット

こて台

スズメッキ線 ポリウレタン銅線

テスター

オシロスコープ

シリアルUSB変換モジュール

ジャンパワイヤ

電源装置

小手先クリーナー

Page 22: Arduinoをこれから始める人のためのArduino紹介スライドβ版

あったら助かる知識

22

電圧

電流

仕事量

シリアル通信

電池の電圧・容量

電子素子の特性

電気素子の特性

Page 23: Arduinoをこれから始める人のためのArduino紹介スライドβ版

Arduinoの購入

• 取扱店

–スイッチサイエンス

–秋月電子通商

–千石電商

– Amazon

• Arduino UNOで1600~3300円です

• 品種に幅があるため、全体では1200~7000円

23

Page 24: Arduinoをこれから始める人のためのArduino紹介スライドβ版

Arduino IDEの入手先

• http://arduino.cc/en/Main/Software

24

古い安定版は無料

最新の非安定版も無料

最新の安定版は有料

Page 25: Arduinoをこれから始める人のためのArduino紹介スライドβ版

蛇足:Arduino開発チームの分裂

• Arduino開発チームが分裂しました

• ハードウェアに対する方針の不一致だそうです

• Arduino cc

– http://www.arduino.cc/

• Arduino org

– http://arduino.org/

25

Page 26: Arduinoをこれから始める人のためのArduino紹介スライドβ版

LEDが点滅するまでの流れ

LEDをArduinoに接続

プログラムを作る

書き込んで様子を見る

26

Page 27: Arduinoをこれから始める人のためのArduino紹介スライドβ版

LEDをArduinoに接続する

27

足の短い方がGND

差し込む

Page 28: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ArduinoとPCをUSBで接続する

• 電源をArduinoに供給しつつ、プログラムを書き込んだり、Arduinoとシリアル通信するためにUSBケーブルで接続します

28

USBケーブル

Page 29: Arduinoをこれから始める人のためのArduino紹介スライドβ版

プログラムを作る

29

• コード入手先– https://raw.github

usercontent.com/KatsuhiroMorishita/edu_ITD/master/2015/Arduino_codes/LED_test/LED_test.ino

*ここでは、LEDの電流制限抵抗を省略するために、ONの時間をOFFの時間の1/10にしている。

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

ここに書く

Page 30: Arduinoをこれから始める人のためのArduino紹介スライドβ版

設定して

30

• ボードのシリーズを選ぶ

• ポートのマイコンor電圧を選ぶ

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

Page 31: Arduinoをこれから始める人のためのArduino紹介スライドβ版

書き込んで

31

• コンパイル&書き込み(エラーが出たら修正)

クリック

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

Page 32: Arduinoをこれから始める人のためのArduino紹介スライドβ版

様子を見る

• 動作の様子

– https://www.youtube.com/watch?v=772S6MC7qZU&feature=youtu.be

32

Page 33: Arduinoをこれから始める人のためのArduino紹介スライドβ版

33

Warning

Page 34: Arduinoをこれから始める人のためのArduino紹介スライドβ版

電源電圧は決まっています

• マイコンに直接供給される電圧を「電源電圧」という

• proシリーズやDueの電源電圧は3.3 V

• 普通は5.0 V

• USBで電源を供給できる場合は特に何も考えなくてOK

• ACアダプタを使う場合は、電源電圧+2V~12Vを利用– ボード上の素子が電圧を落として給電(電源供給)します

34

Page 35: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ポートに入力できる電圧の上下限

• 許容範囲:0~電源電圧(通常は3.3または5.0 V)

• もし、範囲を超える電圧を入力した場合・・・ポートが焼けてしまいます

– マイコンが使えなくなります

35

Page 36: Arduinoをこれから始める人のためのArduino紹介スライドβ版

出力できる電流には制限があります

• 出力ポート1つあたり、2 mA程度と見てください

36

Page 37: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ショートさせない

• 高い電圧と低い電圧間で、電気抵抗の少ない物体(例えば電線)でショート(短絡ともいう)させないで下さい

• 故障する可能性が高くなります

37

Page 38: Arduinoをこれから始める人のためのArduino紹介スライドβ版

参考文献

• http://ideahack.me/article/31

38

Page 39: Arduinoをこれから始める人のためのArduino紹介スライドβ版

39

Key word

Page 40: Arduinoをこれから始める人のためのArduino紹介スライドβ版

Arduino IDE

• Arduinoマイコンボードをプログラミングするための開発環境です

• エディタやコンパイラが一体になっています

40

Page 41: Arduinoをこれから始める人のためのArduino紹介スライドβ版

マイコン

• CPU,メモリ,入出力IOなどが一体になって販売されているIC

• プロセッサともいう

• プログラムを変更すると動作が変わる

• Arduinoはマイコンの一種

• 用例

– 「このマイコンは動作が速いなぁ。」

41

←マイコンの例

Page 42: Arduinoをこれから始める人のためのArduino紹介スライドβ版

Arduinoにおけるプロセッサの種類

42

↑基本的に、Arduinoにおいてボード名が異なるとプロセッサが異なります。なお、Arduino IDEでのプロセッサの選択画面では、同じプロセッサであっても動作電圧や周波数を選ぶ必要があります。

Page 43: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ボード

• 直訳すると「基板」ですが、マイコンが搭載された基板を指します

• 用例

– 「そのボード取って。」

– 「このマイコンボードって使いやすいね。」

43

Page 44: Arduinoをこれから始める人のためのArduino紹介スライドβ版

Arduinoにおけるボードの種類

44↑Arduinoだけでも沢山の種類があります

Page 45: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ポート

• 制御や通信に使うコネクタです

• 物理的なものも、ソフトウェア上のものも「ポート」です

• 特にArduinodではIOポートとか、シリアルポートなどと呼びます

45

Page 46: Arduinoをこれから始める人のためのArduino紹介スライドβ版

IOポート

• マイコンは、1)電圧が高いか低いかを検出する入力(Input)ポート、2)ポートから電圧を出すことができる出力(Output)ポートを持ちます

• Arduinoには出力ポートにも入力ポートにもなれるIOポートと、入力しかできないポートがあります

• 出力ポートにするにはプログラム中で設定が必要です

46

Page 47: Arduinoをこれから始める人のためのArduino紹介スライドβ版

シリアルポート

• シリアル通信を行うためのポート

• 用例

– 「シリアルポートが開かん!」

47

Page 48: Arduinoをこれから始める人のためのArduino紹介スライドβ版

シリアル通信

• シリアルポートを使って通信します

• 一本の電線を使って通信を行う方法をシリアル通信方式と呼びます

• 電圧の高いor低いで0と1を送ります

• 代表的シリアル通信規格– UART

– I2C

– SPI

– Eathernet

48

Page 49: Arduinoをこれから始める人のためのArduino紹介スライドβ版

シリアルモニタ

• Arduino IDEで利用するシリアル通信機能

49

ここをクリックすると起動

Page 50: Arduinoをこれから始める人のためのArduino紹介スライドβ版

スケッチ

• 直訳すると「スケッチ・草案・素描」ですが、Arduinoではプログラムを指します

• 簡単に書けるということを意図しています

50

Page 51: Arduinoをこれから始める人のためのArduino紹介スライドβ版

アナログーデジタル(AD)変換

• 電圧を計測します

• 結果は数値としてマイコン内部に記憶されます

• プログラムからはAD変換の指示が必要です

• 得られた数値に適当な係数をかけると実際の電圧[V]になります

• 入力できる電圧には制限があります

• 計測できる最小の電圧もあります

51

Page 52: Arduinoをこれから始める人のためのArduino紹介スライドβ版

コンパイル

• プログラムを人が読みやすい文章から、機械が理解できる様に変換します

52

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

Page 53: Arduinoをこれから始める人のためのArduino紹介スライドβ版

書き込み

• 「プログラムをコンパイルして出来たファイルをArduinoボードへ転送する行為」を「書き込み」といいます

53

USBケーブル

Page 54: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ブートローダー

• 初心者は意識しなくともOKです

• ブートローダーとはユーザの作ったプログラムを簡単にROMへ書き込むためのソフトウェア

• ブートローダの動作–電源ONやリセットの直後に起動

–起動後一定時間、特定の信号入力を待つ

–書き込み信号を検出するとプログラムを受信

–自身とは重ならない部分に受信したコードを書き込む

54

Page 55: Arduinoをこれから始める人のためのArduino紹介スライドβ版

組み込み系・組み込みマイコン

• 機器に埋め込まれるマイコンを含む回路を「組み込み」システムと呼びます

• ものを組み込むから「組み込み」です

55

Page 56: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ファームウェア

• 組み込み用のハードウェア上で動作するソフトウェアをファームウェアといいます

56

Page 57: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ハードウェア

• ハードウェアとは、主に電子回路を指します

• ソフトウェアの対比語です

57

Page 58: Arduinoをこれから始める人のためのArduino紹介スライドβ版

組み込み関数

• はじめから用意されている標準的な関数

• 同じ名前の関数を作れません

– クラス内の関数(メソッド)はOK

• 例:digitalWrite()

58

Page 59: Arduinoをこれから始める人のためのArduino紹介スライドβ版

予約語

• 予め用意されているキーワードです

• 特別な意味を持つワードです

59

Page 60: Arduinoをこれから始める人のためのArduino紹介スライドβ版

60

IDE

Page 61: Arduinoをこれから始める人のためのArduino紹介スライドβ版

Arduino IDEの見た目

• 検索窓で”arduino”と入力して検索して起動

• Processingに似ている

61

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

Page 62: Arduinoをこれから始める人のためのArduino紹介スライドβ版

Arduino IDEでできること

• プログラムの作成

• プログラムのコンパイル

• Arduinoへのプログラム書き込み

62

Page 63: Arduinoをこれから始める人のためのArduino紹介スライドβ版

Arduino IDEのボタンと機能

63

コンパイル&書き込み

シリアルモニタ起動プログラムの検証

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

Page 64: Arduinoをこれから始める人のためのArduino紹介スライドβ版

サンプルコードの選択

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

Page 65: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ライブラリの読み込み

65

*Windows版

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

Page 66: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ボードの選択

66

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

Page 67: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ポートの選択

• プログラムの書き込みや、マイコンとPCとの通信に利用するシリアルポートを選択します

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

Page 68: Arduinoをこれから始める人のためのArduino紹介スライドβ版

68

Programming

Page 69: Arduinoをこれから始める人のためのArduino紹介スライドβ版

#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関数

Page 70: Arduinoをこれから始める人のためのArduino紹介スライドβ版

loop関数

setup関数

Arduinoのプログラム構造

70

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

#incude

グローバル変数

#define

様々な関数

右では略

NEW

NEW

Page 71: Arduinoをこれから始める人のためのArduino紹介スライドβ版

setup関数の役割

• setup()は起動直後に1度だけ実行

• ハードウェアの基本的な設定を記述すると楽

71

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

Page 72: Arduinoをこれから始める人のためのArduino紹介スライドβ版

loop関数の役割

• loop()は無限に実行する内容を記述

72

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

Page 73: Arduinoをこれから始める人のためのArduino紹介スライドβ版

便利な関数やオブジェクト

• digitalWrite(pin, HIGH/LOW)

–電圧をVccと0 [V]に変更

• analogRead(pin)

–アナログ電圧の計測

• analogWrite(pin, duty)

– PWMによる擬似アナログ電圧出力

• Serial

– Streamを継承した、シリアル通信オブジェクト

73

Page 74: Arduinoをこれから始める人のためのArduino紹介スライドβ版

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;

}};

クラスの例

Page 75: Arduinoをこれから始める人のためのArduino紹介スライドβ版

クラスを利用できます

• アクセス制御

–デバッグし易い

–プログラム設計上、考慮項目数が減る

• コードの相互依存性を減らせる

–脱スパゲッティコード!

• 複数人でのプログラム開発

–役割分担の明確化

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

Page 76: Arduinoをこれから始める人のためのArduino紹介スライドβ版

コンパイルでエラー

• IDE下部にメッセージが出ます

• 英語なので読めます

76

エラーの例

Page 77: Arduinoをこれから始める人のためのArduino紹介スライドβ版

代表的エラー

• 宣言されていない変数が使われた

77

Page 78: Arduinoをこれから始める人のためのArduino紹介スライドβ版

代表的エラー

• 全角のスペースがある

78

ここに注目

Page 79: Arduinoをこれから始める人のためのArduino紹介スライドβ版

代表的エラー

• セミコロン;がない

79

Page 80: Arduinoをこれから始める人のためのArduino紹介スライドβ版

エラーを調べる

• エラーメッセージをネットで検索

• メッセージをダブルコーテーションで括って検索

–例

80

Page 81: Arduinoをこれから始める人のためのArduino紹介スライドβ版

普通のプログラミングとの相違点

• ガベージコレクション(GC)がありません

• mallocは使えるものの、コンパイラが作成した

メモリ配置図を見ながらの作業となって普通のPC, Mac利用者には重い作業

• 全てのオブジェクト(≒変数)が静的にメモリ上に確保されると考えて下さい

81

Page 82: Arduinoをこれから始める人のためのArduino紹介スライドβ版

82

Circuit

Page 83: Arduinoをこれから始める人のためのArduino紹介スライドβ版

Arduino UNOの電気的特性

項目

マイコン ATmega328P

電源電圧 USB:5 VACアダプタ:7-12 Vマイコン自身:5 V

電流容量 1 A

マイコンの出力電流 実用範囲:2 mA

83

←UNOのクローン製品

Page 84: Arduinoをこれから始める人のためのArduino紹介スライドβ版

IOポートの電流制限

84

Page 85: Arduinoをこれから始める人のためのArduino紹介スライドβ版

IOポートの電圧制限

85

Page 86: Arduinoをこれから始める人のためのArduino紹介スライドβ版

LEDの使い方

86

Page 87: Arduinoをこれから始める人のためのArduino紹介スライドβ版

圧電スピーカーの使い方

87

Page 88: Arduinoをこれから始める人のためのArduino紹介スライドβ版

サーボモーターの使い方

88

Page 89: Arduinoをこれから始める人のためのArduino紹介スライドβ版

89

Reference

Page 90: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ggrksGoogleで検索

• キーワードは大事

• 日本語で資料がなければ英語で検索

• 英語のサイトを見つけたら、自動翻訳

90

Page 91: Arduinoをこれから始める人のためのArduino紹介スライドβ版

参考サイト

• Arduino公式

• Arduino日本語リファレンス

• ソフトウェア共同開発支援サイト GitHub

• 個人ブログ

–たとえば“なんでも作っちゃう、かも。”

91

Page 93: Arduinoをこれから始める人のためのArduino紹介スライドβ版

Fin.

93

Page 94: Arduinoをこれから始める人のためのArduino紹介スライドβ版

94

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

Page 95: Arduinoをこれから始める人のためのArduino紹介スライドβ版

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

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

• 手順– ArduinoをUSBで接続

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

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

– xはローマ数字

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

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

Page 96: Arduinoをこれから始める人のためのArduino紹介スライドβ版

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

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

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

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

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

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

Page 97: Arduinoをこれから始める人のためのArduino紹介スライドβ版

シリアル通信プログラムの書き方

• シリアルポートを設定• 通信速度[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()内に書くと動くはず。

Page 98: Arduinoをこれから始める人のためのArduino紹介スライドβ版

ソフトウェアシリアル

• UNOでシリアル通信ポートを増やす

• ソフトウェアで対応

• 代表的ライブラリは2つ

98

SoftwareSerial

AltSoftSerial

4800 baudまで

なら安全@UNO

115200 baudまでなら安全@UNO, PWMと干渉

Page 99: Arduinoをこれから始める人のためのArduino紹介スライドβ版

mbedもある

• ARM系のマイコンボード• https://mbed.org/

99