情報デザイン演習1 「フィジカル・コンピューティング」(2024)
https://gyazo.com/3f46f310477b18c9d26d9ac1ec8da41a
授業の目的
情報と物質をまたぐガジェットのデザインを、Arduino互換基板(Grove Beginner Kit)によって経験します
教材
キット
Grove Beginner Kit for Arduino
https://akizukidenshi.com/catalog/g/gK-15515/
https://wiki.seeedstudio.com/Grove-Beginner-Kit-For-Arduino/
https://files.seeedstudio.com/wiki/Grove-Beginner-Kit-For-Arduino/res/Grove-Beginner-Kit-For-ArduinoPDF.pdf
Keestudio Leonardo
https://www.amazon.co.jp/dp/B0786LJQ8K
Grove Base Shield V2
https://jp.seeedstudio.com/Base-Shield-V2.html
参考書
小林茂「Prototyping Lab 第2版 」オライリージャパン (2017)
Arduinoの利用法について網羅的に書かれているので、購入をすすめます。
https://www.amazon.co.jp/dp/4873117895/
/icons/---.icon
スケジュール (全6週)
第1〜2回
Arduino 講習
キットの配布と環境構築
Arduino IDEのインストール
https://www.arduino.cc/en/software
COMポートがわからない/認識されない (Windows)
★この記事が参考になる
https://www.cs.k.tsukuba-tech.ac.jp/labo/koba/research/sigaci_ws_in_hi2022/install_driver/
CP2102 USB Driver (必要に応じて)
https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
Grove Beginner Kit レッスン
Grove Beginner Kit レッスン 補足
Arduino Leonardo + Grove Base Sheild レッスン
第3回
企画発表会
最終課題のテーマ
独自のインタフェースを作って、既存のアプリケーションを操作する
課題の目的
通常のキーボードやマウスでは入力できないような身体を使った活動を、Arduino+αを使って入力可能にする
ただのボタン入力は駄目
制作のルール
原則として配布したキットを使って実装する
履修者間で部品を貸し借りしても良い
数に限りがあるが、Grove ストック も貸し出せる
ストックにないGroveのモジュールを買ってもいい
購入依頼がある人は、企画発表のプレゼンテーションまでに ここに書き込んで ください
電子工作に慣れていれば、センサやスイッチを自作してもいい
3つ以上のセンサやスイッチを使用する (=3つ以上のパラメータを入力する)
操作するアプリケーションは自由
ブラウザゲームなどでも良い
自作のアプリも可
道具を使いやすく、丈夫にするために、追加の工作を施す
ボール紙でケースを作る、ゴム紐でリストバンドを作るなど
装着型のコントローラは、装着を容易に作りましょう
企画発表のルール
自分が作る道具と、操作するアプリケーションについて、3分±15秒でわかりやすく説明する
どういう動作で入力するのかについて述べること
使用する予定のセンサやスイッチについて述べること
3分±15秒で発表すること
パワーポイントなどの発表資料は使っても使わなくても良い
最終発表会のルール
最終発表時には、自分で作った道具を使いこなして操作を披露し、クラスメイトにも体験プレイをしてもらいます
壊れにくく、装着しやすい
第4-5回
もくもく会
出席自由
実装の相談と部品の受け渡しをします
養生テープ
ダンボール
Grove ストック
ケーブルが短い場合は、はんだづけで延長します
実装がうまくいかなかったら、新しく企画たててもいいです
実装で参考になりそうなページ
関数一覧(日本語)
http://www.musashinodenpa.com/arduino/ref/index.php
キーボード関数について
https://www.arduino.cc/reference/en/language/functions/usb/keyboard/
文字以外のキー入力をする場合
https://garretlab.web.fc2.com/arduino_reference/language/functions/usb/keyboard/keyboard_modifiers.html
マウス関数について
https://www.arduino.cc/reference/en/language/functions/usb/mouse/
加速度センサをキーボード化する
https://fieldwalking.jp/blog/arduino-kasokudo/
加速度センサをマウス化する
https://qiita.com/intel_outside/items/37c5ff45622aba352dfa
GPIOについて
https://synapse.kyoto/glossary/gpio/page001.html
https://www.switch-science.com/catalog/1293/
トラブルシューティング
Keyboard.hがインクルードできない
ボードをArduino Leonardoに設定する
https://teratail.com/questions/146817
Arduino Leonardoに書き込めない
完全にキーボードとして認識されてしまっている
Arduino Leonardのリセットボタンを押して、書き込む
https://qiita.com/enkatsu/items/107b9308889117076fac
MacとArduinoがうまく接続できない / 書き込みエラーが出てしまう
USBでまわりエラーが出ているのかも
SMCリセットを試してみよう
https://support.apple.com/ja-jp/HT201295
PRAMリセットも?
https://support.apple.com/ja-jp/HT204063
入力に即応したい
割り込み処理を使う
外部割り込み
https://novicengineering.com/arduinoの割り込み機能を使ってみる/
タイマー割り込み
http://zattouka.net/GarageHouse/micon/Arduino/TIMERtoLED/TIMERtoLED.htm
並列処理がしたい
Arduinoはマルチタスクができないが・・・
http://mukujii.sakura.ne.jp/arduino1.html
https://oshiete.goo.ne.jp/qa/9747139.html
段ボール工作の方法
https://www.ohmsha.co.jp/book/9784274222894/
https://www.oreilly.co.jp/books/9784873119649/
1. タクトスイッチの面積を10cm x 10cmに拡張し、端を押しても反応するようにする
code:beep.js
void setup() {
pinMode(2,INPUT);//D2にスイッチをつなぐ
pinMode(5, OUTPUT);//D5にブザーをつなぐ
}
void loop() {
int sw = digitalRead(2);
if(sw==HIGH){
tone(5, 261,500);
}else{
}
}
2. 加速度センサでデコピンの強さを計測する
code:deco.js
//Gravity Acceleration
#include "LIS3DHTR.h"
#ifdef SOFTWAREWIRE
#include <SoftwareWire.h>
SoftwareWire myWire(3, 2);
LIS3DHTR<SoftwareWire> LIS; //Software I2C
#define WIRE myWire
#else
#include <Wire.h>
LIS3DHTR<TwoWire> LIS; //Hardware I2C
#define WIRE Wire
#endif
void setup() {
Serial.begin(9600);
while (!Serial) {};
LIS.begin(WIRE, 0x19); //IIC init
delay(100);
LIS.setOutputDataRate(LIS3DHTR_DATARATE_50HZ);
}
void loop() {
if (!LIS) {
Serial.println("LIS3DHTR didn't connect.");
while (1);
return;
}
//3 axis
Serial.println(abs(LIS.getAccelerationX()*LIS.getAccelerationY()*LIS.getAccelerationZ()));
delay(50);
}
3. ロータリーエンコーダを360度回転可能にする
code:rota.js
void setup() {
Serial.begin(9600);
pinMode(A0, INPUT);
}
void loop() {
int n = analogRead(A0);
Serial.println(n);
delay(50);
}
第6回
作品発表会
タイムライン
セットアップとレポートの提出 (〜15:50)
提出先
デモビデオとコメント
https://forms.office.com/r/QX7ZkRQ0p7
Arduinoの.inoファイル (ファイル名の冒頭に学籍番号をつけてください)
https://tdu.app.box.com/f/618740cef9884e3cabcd6a0c668e7822
作品の発表 (15:50 〜 17:00)
1作品5分
まず作者自身がプレイして説明する (1分以内)
次に作者以外の履修者もプレイする
人気投票とキットの回収 (17:00〜)
人気投票
キットは貸出当初の状態に戻し、副手に渡してください
評価基準
企画発表会で時間が守れたか (40点)
課題の目的が作品で満たせているか (30点)
作品の作り込み、面白さ、意外性など (30点)
/icons/---.icon
過去の授業
情報デザイン演習1 「フィジカル・コンピューティング」(2022)
情報デザイン演習1 「フィジカル・コンピューティング」(2021)
情報デザイン演習1 「フィジカル・コンピューティング」(2020)
情報デザイン演習1 「フィジカル・コンピューティング」(2019)
#design #prototyping #2023