Physical Computing

Network and Information, Senshu Univ.

Menu
  • Home
  • Tips
  • About
  • admin

Month: October 2017

Lamp Shade Day 3

October 30, 2017
| No Comments
| Class materials

2017.10.31 これは、火曜日のフィジカルコンピューティング開発論の講義資料です。今日の目標はハードウェアを完成させることです。 目次 I. Mechanics, Electronics and Software II. Practical Work Mechanics, Electronics and Software 組込みシステム開発には、大きく分けて3つの仕事があります。機械的仕組み、電子回路、そしてソフトウェアです。これはそれぞれ、メカ、エレキ、ソフトと呼ばれています。この3つの仕事はそれぞれに専門知識・技術が必要とされるので、一般的には分業されます。しかし、この演習ではこれら全てを体験してもらうことになります。 私たちの身近にある様々な”モノ”はデジタル化され、コンピュータによって制御されるようになって来ました。腕時計はスマートウォッチになり、自動車のエンジン制御がコンピュータ化され、ほぼ全ての家電製品にはマイコンが使われています。今や、子供用のおもちゃの多くにもコンピュータが入っています。今後ますますこの傾向は顕著になり、あらゆるものにマイコンが入るようになるでしょう。そのような世界で重要なのは、メカ、エレキ、ソフト、ヒューマンマシンインターフェイス、データ分析、ビジネス等の全体を理解し、サービスや製品を企画・提案できる能力です。 ランプシェードの演習では、メカ、エレキ、ソフトを含めた製品全体の企画、実装、評価を行います。それらの全てが重要であると意識しながら作業を進めてください。 Tips ハードウェアを作成するポイントをいくつか挙げておきます。 電池ボックスは単三2個のものから単三4個のものへ変更します。 LEDの電源は必ずF303L8の5Vからとってください。 LEDをどこに配置するかによって、ランプの光の感じが変わります。色々と実験をしてみてください。 配線に工夫をしてください。線が多くなると、それが邪魔になってランプが直立しなくなったり、断線が起きやすくなったりします。 RGBの配分を考えて、光の色をコントロールしましょう。 Practical Work 今日はハードウェアを完成させて、その写真をCoursePowerに提出してもらいます。   — by 綿貫 理明、石井 健太郎、飯田 周作 専修大学ネットワーク情報学部

Read More »

Posted in Class materials

6 Lamp Shade Day 2

October 26, 2017
| No Comments
| Class materials

2017.10.26 今日は、全グループがレーザーカッター演習を行います。その合間にハードウェアの作成を進めましょう。今日は座席が足りないので、端末4とワーキングスペースのどちらで作業をしても良いです。 目次 I. Hardware II. Practical Work I. Hardware ハードウェアを作成する際の注意点を書いておきます。 メンバー全員がマインドマップをきちんと理解することが必要です。全員が同じイメージを持って作業を進めます。 役割分担を決めます。LEDの回路を設計する人、モータの回路を設計する人、シェードのデザインを完成させる人、ランプの台や軸を作る人などに分かれます。プログラムをある程度先行して作っておくというのもアリだと思います。 役割分担をするのですが、頻繁に全員で作業を確認しましょう。役割分担をしたからといって、それぞれ独立に作業をしてはいけません。そうしないと最後になって全体が組みあがらないという最悪の事態になります。 回路図を必ず作成してください。回路図は今日の提出物の一部です。 完成したら、一度簡単なプログラムでテストします。簡単なプログラムとは、モータを一定速度で回すだけとか、LEDを全て点灯させるだけというようなものです。 単3電池でモータを回すと、思っていたよりも早く電池を使い切ってしまいます。また、アルカリ電池を使っている場合には、比較的電圧は一定に保たれていますが、マンガン電池を使った場合には電圧がどんどん低くなります。アルカリ電池を使いましょう。充電式の乾電池は1.5Vではなく1.2Vなので、そこも注意です。 LED ランプシェードの光源としては、LEDを使います。LEDには光を拡散させるためのキャップをはめます。 mbedをはじめようキットに入っているLEDは、あまり綺麗に光らないので、グループごとに別途高輝度LEDを配布します。配布するLEDの特性は以下のようになっています。 赤色LED: 順方向電圧降下1.8V〜2.4V、7000mcd@20mA 青色LED: 順方向電圧降下2.9V〜3.6V、8400mcd@50mA 緑色LED: 順方向電圧降下2.9V〜3.6V、8400mcd@20mA mcdは、ミリカンデラと読みます。1カンデラは、元々ろうそく1本分の明るさという意味ですが、現在ではちゃんとした定義が存在しています。上記の青色LEDは、50mAを流すとろうそく8.4本分の明るさで光るということですね。しかし、今回は全て10mAで光らせる事にします。 以下の値を参考に抵抗を決めましょう。 赤色LED: 順方向電圧降下2.0V 青色LED: 順方向電圧降下3.0V 緑色LED: 順方向電圧降下3.0V かなり適当ですが、まあ大丈夫でしょう。LEDは電圧をF303K8の5Vからとりシンク電流で光らせます。抵抗値は以下のように計算できますよね。 抵抗値 = (電源電圧 – 順方向電圧降下)/LEDに流したい電流 緑色LEDに使う抵抗は以下のように計算することができます。F303K8にかかる電圧は5Vよりも少し低めになります。ここでは4.6Vであるとして計算しています。 抵抗値 = (4.6V – 3V) / 0.01A = 160Ω 160Ωの抵抗の代わりに大学にある120Ωの抵抗を使います。計算上は10mAを超えますが、実際にはほぼ10mA程度になります。赤色LEDだけは順方向電圧降下が低いので各自で計算し直しましょう。 5Vを使うので、使えないピンがあります。D3とD6ですね。気を付けてください。 Electric Circuit 回路図はFritzingを使って描きます。 […]

Read More »

Posted in Class materials

Lamp Shade Day 1

October 23, 2017
| No Comments
| Class materials

2017.10.24 これはフィジカルコンピューティング開発論(火曜日)の講義資料です。 Overview 以下のようなスケジュールでランプシェードを作ります。 10/24(火) Day 1 マルチメディア実習室 グループごとにレーザーカッター演習。イラストレータでデータ作成。できたグループはレーザーカッター演習。 10/26(木) Day 2 端末4 グループごとにレーザカッター演習。全チームがレーザーカッター演習。マインドマップ作成。ハードウェア作成。 10/31(火) Day 3 マルチメディア実習室 ランプシェード作成。ハードウェア、ソフトウェア作成。 11/7(火) Day 4 マルチメディア実習室 ランプシェード作成。ハードウェア、ソフトウェア完成。 11/9(木) Day 5 端末4 4限に発表資料作成。5限に発表会。 Mind Map 先週作成した、誰のために、どんなシチュエーションで、どんな効果を、というマインドマップを改良して、システムのアイディアをまとめたマインドマップを作成します。改良するポイントは、どのような仕組みでユーザのニーズを満たすのかです。以降の作業はこの方針に則って進めます。 Lamp & Shade ランプの光源はLEDです。シェードは紙で作ります。DCモータはギア付きのものを使います。 LEDは赤、緑、青の3色で、輝度の高いものを使います。 ギア付きモータにはストローをさしてランプの傘の軸にします。 LEDをシェード内に配置するためには針金を使います。シェードは紙で作りますので、皆さんのアイディア次第です。 Rules シェードのデザインはイラストレータで作成します。このとき、素材としてフリーの画像を使うことができます。版権のあるものは使用できません。 発表会では作成したランプシェードを実際に動かしてもらいます。この時、音楽を流すことができます。 こちらで用意した材料以外のものを使いたい時には、必ず教員に相談してください。 LEDは赤、緑、青、それぞれ2個まで、合計6個まで使用できます。 Laser Cutter レーザーカッターを使用する際には必ず、教員かSAの立会いのもとで行ってください。使用方法を間違えると危険な機械であることを認識しておいてください。 イラストレータでデザインを作成する際には以下のことに注意してください。 細かい部分に分かれた絵にするとレーザーカッターで切った時に集塵機に吸い込まれて無くなります。できるだけ絵は連続しているように作りましょう。 用紙はA4にします。カラーモードはRGBにします。 線の太さは0.01ptにします。色は黒で塗りつぶしはなしです。 ファイルはAI形式で保存しておきますが、レーザーカッターに送る際にはEPS形式のデータが必要になります。EPS形式のデータにする際には、「ファイル」→「別名で保存…」でepsを選びます。 さらに、バージョンをIllustrator CS2 EPSにします。 […]

Read More »

Posted in Class materials

5 PWM

October 17, 2017
| No Comments
| Uncategorized

2017.10.19 今回の講義の目的は、マイコンを使って電圧を制御することです。電圧を上げたり下げたりできると、LEDの光る強さを変えたり、モータの回転速度を変えたりすることができます。 ※10月19日の演習には、未使用の単3電池2本を持参してください。持ってきていない場合には、演習時間内に購入しに行ってもらいますが、コンビニで買うと高いです。 目次 I. PWM II. Basics of Motor III. Practical Work I. PWM マイコンの世界はデジタルなので、プログラムで電圧を制御するのは、ちょっと難しいことです。そこで、PWMという手法が登場します。 Theory マイコンのデジタルピンからの出力は、HIGH(例えば3V)かLOW(例えば0V)のどちらかだけです。しかし、0Vから3Vまでの間の電圧を、自由に変えたいという場合があります。例えば、LEDの明るさを調整したい場合などです。こういう時には、PWM(Pulse Width Modulation)という方法を用います。 PWMの仕組みを一言で説明すると、HIGHとLOWを素早く切り替えることによって、その間の電圧を擬似的に作り出す方法です。以下の図をみてください。 このようにHIGHとLOWを規則的に繰り返す信号を、パルス波と言います。上記の図で示しているパルス波は、ある一定時間で同じパターンを繰り返していますね。このような繰り返しの間隔を周期と呼び、1秒間に何周期あるかを周波数と呼びます。周期の始まりは、LOWからHIGHに変わる瞬間で、周期の終わりは、次にLOWからHIGHに変わる瞬間です。周波数1kHzと言ったら、1秒間に1000回の周期が起こるような波形を意味します。 図で示したパルス波は、1周期におけるHIGH(3V)とLOW(0V)の間隔が、ちょうど1/2ずつになっています。周波数が十分に高い場合,このデジタルピンにかかる電圧は、3V / 2 = 1.5Vとなります。これがPWMです。実際に電圧を変えるのではなくて、擬似的に電圧を変えているのです。 PWMを使用する場合、どのくらいの周波数が必要かは難しい問題なので、あまり深入りしないことにしますが,1Hzではだめなことは明らかです。1Hzということは、HIGHとLOWが同じ時間であるとすると1周期内で0.5秒ずつです。LEDで実験すると単に点滅するだけです。PWMの周波数は、デジタルピンの用途によって変わるとされています。例えばLEDの時,モータの時という具合です。モータの場合には1kHz位が適当だと言われています。LEDだと、その半分くらいでも大丈夫でしょう。とりあえず、この講義では、PWMに必要な周波数は1kHzくらいと思っておきましょう。 PWMを使った場合にデジタルピンにかかる電圧は,デューティ比(duty ratio) によって決まります。デューティ比とは,1周期の間にHIGHになっている割合のことです。HIGHが3Vの場合、デューティ比50%ならば1.5V,10%ならば0.3Vとなります。 PWMを使って電圧を制御するには、パルス波を作り出す必要があります。パルス波は、タイマを使って作ります。非常に微小な時間をタイマによって作りだし,デジタル出力をHIGHにしたりLOWにしたりします。例えば、1kHzの周波数でPWM 制御をしたいとしましょう。1秒間に1,000周期ですから,1周期は1msです。1周期を10段階に分けると、1段階100μsになります。この100μsをタイマを使って作り1単位とすれば、10%刻みでデューティ比が設定できるようになります。 Practice mbedの基本ライブラリには、PWMを簡単に使うためのPwmOutというクラスが用意されています。よって、自分でタイマを使って波形を作る必要はありません。ただし、PwmOutに指定できるピンは決まっています。以下のURLで確認してください。紫色で”PWM何とか”と書いてあるピンが使えるピンです。 https://os.mbed.com/platforms/ST-Nucleo-F303K8/ ソース電流を使った回路でLEDを光らせることを考えます。定電流ダイオードではなくて、330Ωの抵抗を使っていることに注意してください。 以下のようなプログラムを作成して、実行します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "mbed.h"
 
PwmOut pwm(D12);
 
int main() {
    pwm.period_ms(1);
    while(1) {
        pwm = 0.2;     // 20%
        wait(1);
        pwm = 1.0;     // 100%
        wait(1);
    }
}
 

LEDをよく見ていると、1秒ごとに光る強さが変わるのが観察できるはずです。暗い時にはPWMのデューティ比は20%になっています。 myled.period_ms(1);に注目してください。これは、PWMの周期を、1msの幅に設定しています。1周期が1msということは、1kHzということですね。それでは、これを100msにしたら、どうなるでしょうか。これは、演習で実際に実験することにしましょう。 デューティ比を変化させてLEDの明るさを連続して変化させて見ましょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "mbed.h"
 
#define BRIGHTNESS_MAX 100
PwmOut myled(D12);
 
int main() {
    int brightness = 20;     // initial brightness value
    int increment = 5;
    myled.period_ms(1);
    while(1) {
        brightness += increment;
        if(brightness > BRIGHTNESS_MAX) {
            brightness = BRIGHTNESS_MAX;
            increment = - increment;
        }
        else if(brightness < 0) {
            brightness = 0;
            increment = - increment;
        }
        myled = brightness / 100.0;
        wait(0.1);
    }
}
 

LEDの明るさが滑らかに変わることが観測されます。 PWMを使う際にもう1つ頭に入れておいて欲しいことがあります。デューティ比を変化させる際には少し間隔をおいてください。5msくらいあれば大丈夫だと思います。 II. Basics of Motor この講義では、DCモータとサーボモータという2種類のモータを使います。 What is DC Motor? 家庭にある電源コンセントを、AC100Vと呼ぶことは知っていると思います。このACとはAlternating […]

Read More »

Posted in Uncategorized

4 Digital Input

October 10, 2017
| No Comments
| Class materials

講義日: 2017.10.12 今回の講義の目的は、外部から情報をマイコンで受け取る方法をマスターすることです。ただし、今回扱うのはデジタル信号です。具体的には、スイッチが押されたことをマイコンで検知する、ということをやります。 目次 I. Basics of Switch II. Practical Work I. Basics of Switch Switch スイッチというのは、電線を連結したり、切断したりするためのデバイスです。ボタンということもあります。スイッチは、様々な種類が存在しますが、よく使うものはタクトスイッチと、トグルスイッチです。 タクトスイッチ(tactile switch)とは、通常ボタンの形状をしていて、押すと電線が連結され、離すと切断されます。 写真のタクトスイッチはとても小さくて、5ミリ角くらいです。このタイプのものは、そのままブレッドボードに差し込んで使うことができます。 足が4つ付いていますね。これらの足は、2つずつの2グループに分かれていて、同一のグループに属する足は、常に通電されています。どの足とどの足が繋がっているかは、背面にマークがあることが多いです。写真の製品の場合には、背面に線が書いてあって、繋がっている足がわかります。 タクトスイッチが押された時にLEDが光る回路は以下のようになります。電源と抵抗の間にあるのが、タクトスイッチの記号です。 トグルスイッチ(toggle switch)とは、電線の連結と切断を切り替えられるようにしてあるスイッチです。どちらかを選択すると、他を選択し直すまで同じ状態を保ちます。 スイッチの電子部品記号は、いくつかあります。この講義では以下の2つを使います。 おまけとして、ディップスイッチの写真も載せておきます。これは、複数のトグルスイッチが1つのパッケージになったものです。 How to Connect a Tactile Switch スイッチは、直感的にわかりやすいデバイスですが、マイコンへの入力として使うときには少し注意が必要です。以下のように回路を作ると、タクトスイッチが押されたかどうかをマイコンで検知できそうに思いますよね。 しかし、これはやってはいけません。タクトスイッチが押されているときにはD12が3.3Vにつながりますから正しく検知できます。しかし、タクトスイッチが離されているときには、D12はどこにも繋がっていない状態になります。このような状態を、オープンになっていると呼び、マイコンのピンでは電圧が測定できません。 そこで、代わりに以下のような回路を組みます。D12というラベルが付いている記号はF303K8のD12ピンです。 D12をデジタル入力として使用する際には、以下のようになっていると考えます。これはピンをデジタル入力として使う場合で、前回実験したデジタル出力の場合には当てはまりません。 D12をデジタル入力とすると非常に大きな抵抗を介してグランドに接続されます。図では仮に3MΩとしています。このような状態をハイインピーダンスと呼びます。D12では、この大きな抵抗にかかる電圧を計測します。 この例では、10KΩの抵抗と3MΩの抵抗は並列に接続されていますね。並列に接続されているということは、どちらにも同じ電圧がかかるということです。タクトスイッチが押されると、並列回路の部分に3.3Vの全てがかかるはずです。よって、D12では3.3Vが計測されます。タクトスイッチが離されている時には、D12はGNDにだけつながっているので、0Vになるわけです。 このような回路をプルダウン回路と呼び、10KΩの抵抗をプルダウン抵抗と呼びます。 プルダウン回路とは逆に、タクトスイッチが離されている時に3.3Vが計測され、押されている時に0Vとなる回路も作れます。 これをプルアップ回路と呼び、10KΩの抵抗をプルアップ抵抗と呼びます。この場合、スイッチが離されている時に3.3Vが計測されます。 今度は、以下の図のように考えます。 タクトスイッチが押されていない状態では直列回路です。10KΩにかかる電圧と3MΩにかかる電圧の和が3.3Vになります。こういう回路を分圧回路と呼ぶのですが、これはもう少し先の回で説明したいと思います。ここでは、10KΩと3MΩの差があまりにも大きいので、3.3Vのほとんどが3MΩの方にかかることになる、としておきます。 タクトスイッチが押された状態では直列回路と並列回路の組み合わせです。並列回路になっている抵抗は3MΩとタクトスイッチです。タクトスイッチはほぼ0Ωと思って良いはずですね。この2つの抵抗を組み合わせた抵抗値を求めてみましょう。 1/R = 1/R1 + 1/R2 R1が0Ω、R2が3MΩです。1/R1はほぼ無限大ですから、1/R1 + 1/R2もほぼ無限大です。ということは、Rはほとんど0Ωだということです。よって、10KΩに3.3Vのほぼ全てがかかり、3MΩにかかる電圧は0Vです。 Digital Input それでは実際に回路を作って試してみましょう。プルダウン回路にしてみます。回路図は、前の節で説明したものを参照してください。 […]

Read More »

Posted in Class materials

Posts navigation

1 2 Next

Recent Posts

  • NE22の学生さんたちへ
  • 13 発表会
  • 12 発表準備
  • 11 実装
  • 10 要素テスト

Archives

  • July 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • January 2018
  • December 2017
  • November 2017
  • October 2017
  • September 2017
  • July 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • September 2016

Categories

  • Announcement
  • Class materials
  • Tips
  • Uncategorized

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org

Physical Computing 2023 | Powered by WordPress.