URL: https://github.com/ogai-lab/ArduinoProcessingLecture
ArduinoとProcessingを用いた講義の資料。 過去の授業資料はpastディレクトリ以下に置く。
2024年7月の東京工芸大学工学部機械コース体験型模擬授業では以下の内容を行う。
- タイトル:未来を操れ!ロボット、ドローンの心臓、モータ制御を学ぼう!
- 概要:パソコン(PC)からの入力により、マイコンボード Arduino 互換機を通して DC モータを制御する方法について学びます。使用したマイコンボードやモータ、電子部品などはお持ち帰りいただけます。
- Windows 10
- Arduino IDE
- https://www.arduino.cc/en/software より無料でダウンロードできる。
- Processing
- https://processing.org/download より無料でダウンロードできる。
- お持ち帰りいただけるもの
- Arduino互換機 1台
- USBケーブル 1本
- DCモータ 1個
- ワニ口クリップ 4本
- ジャンパ線 7本
- 抵抗内蔵5mmLED赤 1個
- 光センサ 1個
- MOSFET (IRF520) 1個
- 整流ダイオード (1N4007) 1個
- 抵抗10kΩ 1本
- 単三電池4本用電池ボックス 1個
- 単三電池 4本
- ブレッドボード 1個
https://ja.wikipedia.org/wiki/Arduino
本授業では互換機を使用する。
まずはPCと接続する。計算機室のPCでは後ろ側のUSBポートに接続した方がなぜか挙動が安定する。
Arduinoボード上の"L"と書かれている小さいLEDを点滅させる。
メニューから以下のサンプルプログラムを開く。
ファイル -> スケッチ例 -> 01.Basics -> Blink
メニューのツールから、ボードとポートの設定を確認してから、左上の右向きの矢印(→)ボタンを押すと、プログラムがArduinoにアップロードされる。アップロード後、自動的にプログラムが実行される。
"delay(1000)"と書かれているところの括弧中の数字を変えて再アップロードし、LEDの点滅速度を変えてみよう。
参考Webサイト:ArduinoとPCを接続してみよう
https://fabkura.gitbooks.io/arduino-docs/content/chapter3.html
抵抗内蔵LEDをArduinoに直に差して動作を確認してみよう。
通常、LEDの足の長い方がアノード(プラス)、短い方がカソード(マイナス)と呼ばれる。
以下のように接続する。
- 抵抗内蔵LED長い足 <-> Arduino 9番ピン
- 抵抗内蔵LED短い足 <-> Arduino GND
メニューから以下のサンプルプログラムを開く。
ファイル -> スケッチ例 -> 01.Basics -> Fade
"int fadeAmount = 5"や"delay(30)"の数値を変えたときの、LEDの明るさの変化を見てみよう。
光センサで周囲の明るさを数値化してみよう。
以下のように接続する。Arduino A0にはうまいこと2つの線を差す。線が途中で接触しないように注意しよう。
- 抵抗内蔵LED長い足 <-> Arduino 5v
- 抵抗内蔵LED短い足 <-> Arduino A0
- 光センサ <-> Arduino A0
- 光センサ <-> Arduino GND
メニューから以下のサンプルプログラムを開いて書き込む。
ファイル -> スケッチ例 -> 01.Basics -> AnalogReadSerial
スマホのライトなどを光センサに当てて、シリアルモニタに出力される値の変化を確かめよう。
シリアルモニタはメニューの以下から起動できる。
ツール -> シリアルモニタ
光センサに当てる光の強さを変えて、LEDの明るさの変化を確かめよう。
あまり変化しなかったら、数字を変えたりしてみよう。
メニューから以下のサンプルプログラムを開く。
ファイル -> スケッチ例 -> 03.Analog -> AnalogInOutSerial
TinkercadによるDCモータ1個の回路図
https://www.tinkercad.com/things/7tMNzty2JFr
回路図内では抵抗のサイズが大きかったのでこのように示しているが、実際は抵抗はMOSFET左(ゲート)とMOSFET右(ソース)をまたぐように差せばよい。
ブレッドボードは**部は縦方向に、上下部は横方向に内部で接続されている。(内部の画像:https://m.media-amazon.com/images/I/713Uj2JUJaL._AC_SL1355_.jpg)
DCモータと電池ボックスは直接ブレッドボードに差さらないので、各端子をワニ口クリップではさみ、ワニ口クリップの反対側でジャンパ線をはさむ。そのジャンパ線の反対側をブレッドボードに差す。
電池ボックスに単三電池4本を入れるのだが、赤線と黒線が直接接続されると高温になり危険なので注意すること。
モータはギアを付けると動きが分かりやすくなる。
以下がつながるようにする。整流ダイオードは線が記載されている側をカソード、記載されていない側をアノードと呼ぶ。
- DCモータ1の線1、電池ボックス赤線、整流ダイオード(カソード)
- MOSFET左(ゲート)、Arduino 9番ピン、抵抗の片側
- MOSFET中(ドレイン)、DCモータ1の線2、整流ダイオード(アノード)
- MOSFET右(ソース)、電池ボックス黒線、抵抗の反対側、Arduino GND
メニューから以下のサンプルプログラムを開き、書き込むとDCモータが動くはずである。こちらも数値をいろいろ変えて試してみよう。
ファイル -> スケッチ例 -> 01.Basics -> Fade
光センサに当てる光の強さを変えて、モータの変化を確かめよう。
メニューから以下のサンプルプログラムを開く。
ファイル -> スケッチ例 -> 03.Analog -> AnalogInOutSerial
LEDに当てる光の強さを変えて、9番ピンに接続されているモータの動きが変わることを確認しよう。
https://ja.wikipedia.org/wiki/Processing
サンプルプログラムがメニューのサンプルにいろいろあるので、動かしてみよう。 例えば以下など。
ファイル -> サンプル -> Topics -> Cellular Automata -> GameOfLife
左上の三角マークのボタンを押すと実行され、ウィンドウが表示される。
参考Webサイト: Videoライブラリなどを追加インストールすることで、カメラなども使うことができる。 Slit Scanの例。 https://www.youtube.com/watch?v=WCJM9WIoudI
PCのマウス入力をProcessingが受け取り、シリアル通信によってArduinoに送る。
Arduinoは受け取ったデータを元にモータを動かす。
ファイルは以下の場所に置いてある。授業では各PCに配布済。
- Arduino用プログラム /Arduino/SerialByteDCmotor/SerialByteDCmotor.ino
- Processing用プログラム /Processing/MouseXByte2Serial/MouseXByte2Serial.pde
Processing用プログラムのSerial.list()[]の数値を変える必要があるかもしれない。
Processingで起動したウィンドウ上のマウスの横方向の位置により、モータを動かすことができる。
PCのキーボード入力をProcessingが受け取り、シリアル通信によってArduinoに送る。
Arduinoは受け取ったデータを元にモータを動かす。
ファイルは以下の場所に置いてある。授業では各PCに配布済。
- Arduino用プログラム /Arduino/SerialByteDCmotor/SerialByteDCmotor.ino
- Processing用プログラム /Processing/KeyLRByte2Serial/KeyLRByte2Serial.pde
Processing用プログラムのSerial.list()[]の数値を変える必要があるかもしれない。
lキー(left)とrキー(right)を押すと、モータを動かすことができる。
speedの値を変えたりして挙動を確かめよう。
様々な研究などでもマイコンやモータは使用されている。 持ち帰って自分でも自宅で試してみれば、きっと将来につながるだろう。
Arduino Drone With GPS
https://www.instructables.com/Arduino-Drone-With-GPS/
"Implementation of Digital Image Processing Using NI myRIO and Arduino Mega 2560 as Controller On Rover Bogie Robot"
Arif Ainur Rafiq, Muhamad Yusuf, Pujono, Conference: 2018 International Conference on Applied Science and Technology (iCAST)
https://www.researchgate.net/publication/334155810_Implementation_of_Digital_Image_Processing_Using_NI_myRIO_and_Arduino_Mega_2560_as_Controller_On_Rover_Bogie_Robot
今回の内容はWebページ https://github.com/ogai-lab/ArduinoProcessingLecture で公開しています。 このURLをメモをして、お持ち帰りいただいたマイコンとモータで御自宅で再度試していただけたらと思います。
また、何でもご質問があれば制作者の大海のメールアドレスまでご連絡下さい。 担当されている方はホワイトボードにアドレスを書いておいて下さい。
- Arduinoをはじめよう 第4版 https://www.oreilly.co.jp/books/9784814400232/
- Processingをはじめよう 第2版 https://www.oreilly.co.jp/books/9784873117737/
https://www.switch-science.com/catalog/181/
Arduinoは互換機をそのまま使えるので、以下のような必要そうな部品だけ別に購入してもよい。
- ブレッドボード
- スイッチボタン
- 抵抗
- ジャンパ線、等々
ArduinoとMax30102でSpO2を計測する
https://qiita.com/ogailab/items/390ac4cb290b5b0802da
ブライテンベルグビークル(Braitenberg Vehicle)というロボットをArduinoで実装した例。
使用部品の例
- タミヤ ダブルギヤボックス https://www.tamiya.com/japan/products/70168/index.html
- Arduino用モータードライバシールド「Ardumoto」https://www.switch-science.com/catalog/3262/
- PCに各IDでログインする。
- Arduino IDE, Processingを起動しておく。
- Arduino互換機をあらかじめPCの裏側にUSBケーブルで接続をする。
- Arduino IDE上で"Arduino Uno"に接続し、必要なライブラリをインストールさせておく。
- 東京工芸大学PC演習室のPCのDelivery(V:)以下のV:\common\arduino_test\ArduinoProcessingLectureフォルダをTEMP(D:)以下ににコピーしておく。
- 上のarduino_testフォルダ内のhttps://github.com/ogai-lab/ArduinoProcessingLectureのリンクをダブルクリックしておく。