Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

11,577 views

Published on

このスライドはArduinoをこれから始める人のために作成したArduino紹介スライドβ版です。Arduinoで何ができるのか、どうやって始めたらいいのか、どうやって動かすのかを分かり易くまとめました。

  • Be the first to comment

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

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

×