Physical Computing

Network and Information, Senshu Univ.

Menu
  • Home
  • Tips
  • About
  • admin

Month: November 2018

9 Analog Input

November 26, 2018
| No Comments
| Class materials

今週は、アナログ入力について勉強します。 目次 9.1 アナログ入力 9.2 可変抵抗器 9.3 CdS 9.4 加速度センサ 9.5 実習 9.1 アナログ入力 デジタル入力は、端子に一定以上の電圧がかかっているか、かかっていないかという2状態を入力として識別することでした。アナログ入力は、端子にかかる電圧の変化を複数の状態として識別します。 ここでは例として、部屋の明るさを光センサーで測定している場面を考えましょう。部屋の明るさは、太陽の位置等によって滑らかに変化していきます。光センサーは、その変化を電圧の変化に変換してマイコンに伝えます。しかし、マイコンの中では、受け取った電圧の値をデジタルデータとして保持することになります。音楽データも、写真データも、動画データも、コンピュータの中では全てデジタルデータですよね。それと同じことです。つまり、アナログからデジタルへの変換が必要になるということです。マイコンの中でそれを行なってくれるのが、Analog to Digital Convertor(ADC)と呼ばれるデバイスです。一般的には、ADコンバータと呼ばれます。 マイコンでアナログ入力といったときには、端子から入力されるアナログデータをADコンバータを使ってデジタルデータへ変換して、それを入力として扱うということを意味します。F303K8は12ビットの解像度を持つADコンバータを備えているので、4096段階で電圧の変化を表現します。0.0から1.0の間の数値で考えると、4096の各段階の幅は1.0 / 4096 = 0.000244くらいになります。 Analog Input on F303K8 それでは、実際にF303K8を使って実験してみましょう。まず、以下のような回路を作ります。3.3Vから抵抗を介して直接A5に接続しています。こうすることで、A5に3.3Vかかった時にアナログ入力で得られる値が実験できるはずです。 以下に示すプログラムを転送しましょう。

1
2
3
4
5
6
7
8
9
10
11
12
#include "mbed.h"
 
AnalogIn myInput(A5);
Serial pc(USBTX, USBRX);
 
int main() {
    while(1) {
        pc.printf("%f\n", myInput.read());
        wait(1);
    }
}
 

PCに出力を送っていますから、MacのTerminalを開きcatコマンドでシリアルポートを開いてください。すると、以下のようになっているはずです。 ほぼ、1.0ですね。これがアナログピンで計測できる最大の電圧です。3.3Vよりも大きな電圧をかけてはいけません。 それでは、プログラムの説明をしましょう。AnalogInは、端子をアナログ入力として使うためのクラスです。アナログピンA5を指定しています。pc.printf()の中で、myInput.read()というAnalogInのread()メソッドが呼び出されていますね。このread()メソッドを呼び出すと、端子の状態を読み取ってくれます。返値は実数で、0.0から1.0の範囲です。F303K8の場合、アナログ入力で読み取れる最大の電圧は3.3Vまでなので、もし、A5に3.3Vがかかっていれば1.0になります。回路を良く見て、実際に3.3VがA5にかかっていることを確認しましょう。 AnalogInには、端子の状態を読み取るためのメソッドがread()の他にもう1つ用意されています。read_u16()を使うと、端子の状態を16ビット符号なし整数として読み取ります。こちらも試しておきましょう。

1
2
3
4
5
6
7
8
9
10
11
12
#include "mbed.h"
 
AnalogIn myInput(A5);
Serial pc(USBTX, USBRX);
 
int main() {
    while(1) {
        pc.printf("%d\n", myInput.read_u16());
        wait(1);
    }
}
 

結果は、以下のとおりです。 16ビット符号なし整数の最大値は65535ですから、おおよそ最大の値が読み取れていることがわかります。 9.2 可変抵抗器 可変抵抗(potentiometer) とは、抵抗値を変えることができる抵抗器です。典型的なものとしては、以下の写真に示すようなボリュームつまみのようなものが挙げられます。 このつまみを、回すことによって、抵抗値を小さくしたり大きくしたりすることができます。通常、可変抵抗には3つの端子があります。両端がVccとGNDで、真ん中の端子をその先の電子部品に繋ぎます。 可変抵抗の原理は、抵抗の分圧則によって説明されます。以下の回路図を見てください。 2つの抵抗はそれぞれxΩ、yΩです。このとき、アナログピン(A5)にかかる電圧はyΩの抵抗にかかる電圧と等しくなります。yΩにかかる電圧は以下のように計算されます。 Vout = (y / x + y) × 3.3v つまり、xとyの比によってA5の電圧は計算されるわけです。 […]

Read More »

Posted in Class materials

8 IoT

November 19, 2018
| No Comments
| Class materials

今週はIoTの演習です。 目次 8.1 IoTとは? 8.2 mbedをインターネットに接続する 8.3 シリアル通信 8.4 HTTP通信 8.5 Examples 8.6 実習 8.1 IoTとは? 最近は、普通の新聞等でもIoTという言葉をよく聞きますね。これはInternet Of Thingsの略で、モノとモノがインターネットを通じて通信することで構築されるシステムのことです。ここでいうモノとは、コンピュータと通信機能が搭載された物であればなんでもよくて、家電製品や監視カメラ、センサーを搭載したデバイスなどのことです。 少し前までは、インターネットといえば電子メールやWeb、SNS、電子商取引であり、人と人、あるいは人とモノの間のネットワークというイメージが強かったのですが、モノとモノもインターネットにつなげると色々な可能性があるよ、ということです。概念としては全く新しいものではないのですが、マイコンや無線通信のデバイスが安価で小型になったこと、大量のデータを処理することがクラウドコンピューティング技術の進歩によって容易になったこと、AIの進歩などにより様々な応用分野が現れたこと等によって広く認知されたというべきでしょう。語呂が良かったことも流行った一因だと思います。 所詮は流行り言葉なので、IoTという言葉自体はすぐに消えていく運命にありますが、技術それ自体とそれがどのように応用可能であるかはきちんと理解しておく必要があります。この演習では特に、IoTがどのように応用可能であるかに焦点を当てて学修していきます。 IoTで何が実現できるのか IoTを活用すると、どんなことができるのでしょうか。製品をベルトコンベア式に生産する工場を考えてみましょう。工場には生産目標があり、そのための生産計画があります。順調に生産が行われていれば利益が出るのですが、ベルトコンベアや生産設備に故障が起こると生産がストップして損が出ます。最適解は故障が起こる直前で生産設備の部品を交換することですが、これはなかなか難しいです。また、問題が発生した時に、どこが壊れたのかが即座にわかると嬉しいです。そのために、生産設備にセンサーをつけて、機器の状態をサーバに逐一送ることが考えられます。例えば、機器の温度を測ったり、機器から発生する音を録音したりして、そのデータを蓄積するわけです。蓄積されたデータを解析することによって、温度が何度になったら故障の前兆であるとか、機器からどんな音がし始めたら故障の前兆であるかなどのことが分かるかもしれません。 少し前に話題となったAmazonのDash ButtonもIoTの応用の一例と考えて良いでしょう。Amazonのサイトで、Dashと検索してみましょう。妙なボタンがたくさん出てくるはずです。例えば、コカコーラのボタンとか、じゃがりこのボタンなどがあります。これは、ボタンを押すだけでその商品の注文がAmazonで完了してしまうというものです。 要するにIoTは、監視作業や計測作業の自動化、少し面倒な作業の単純化などをやる仕組みということですね。監視作業や計測作業の自動化をすれば、当然膨大なデータが蓄積されます。これを世の中ではビックデータなどと呼んでいて、そのデータを解析し問題の最適化を行うためにAIを使ったりするというわけです。そいういう文脈でIoTとビックデータ、AIはセットで語られることが多くなっています。 この演習では、データの分析・解析及び最適化については扱いません。モノとモノとが通信するというところだけを取り出して演習をしてみたいと思います。Dash Buttonの簡易版のようなものですね。 8.2 mbedをインターネットに接続する それでは、この演習で使う基本的な仕組みについて説明しましょう。以下の図を見てください。 上記の図のIoTデバイスと書かれた水色の点線で囲まれた範囲が、今回演習で作る部分です。この部分がIoTの”モノ”に対応します。一部、MacBook Airにかかっていますね。この部分は学内無線LANに接続する機能で、本来であればMacBook Airに依存せずに独立のWiFiモジュールを使いたいところなのですが、そこはかなり面倒なことになりますので、今回はこのような形で妥協しています。しかし、本質的にはなんら変わりありませんから基本はしっかりと学修できるものと思います。 Node.js この仕組みでは、Node.jsを使ってF303K8とMacBook Airの間の通信を行い、データをインターネットへ送ります。Node.jsとは、WebブラウザではなくサーバでJavaScriptを動かすためのプログラムです。 まずはNode.jsをMacBook Airにインストールしましょう。 1. nvmをインストールする nvmはNode.jsのバージョン管理をしてくれるプログラムです。まずはnvmをインストールし、その後nvmからNode.jsをインストールします。Terminalを起動して、以下の1行をコピペしてエンターキーを押します。

1
2
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
 

2. Terminalを再起動する Terminalを一度終了して立ち上げなおします 3. Node.jsをインストールする Terminalに以下の1行をコピペしてエンターキーを押します。

1
2
nvm install v10.13.0
 

以下のような出力結果になるはずです。 これでNode.jsが使えるようになったはずです。確認するには以下のようにします。先頭の$はプロンプトを表していますから入力しません。以降、頭に$がついているのはTerminalでの入力だと思ってください。

1
2
$ node -v
 

バージョン番号であるv10.13.0が出力されれば成功です。 Example […]

Read More »

Posted in Class materials

Mini Project Day 2

November 8, 2018
| No Comments
| Class materials

今回から実際に自走ロボット制作を始めます。 目次 6.1 アイディアの交換 6.2 自走ロボットの材料 6.3 実習 6.1 アイディアの交換 まずは、火曜日のフィジカルコンピューティング開発論で作成したマインドマップをもとに、全員のアイディアを交換しましょう。アイディアの交換が終わったら、班としての作品のコンセプトを決めます。どんな機能・効果を提供するロボットなのかを考えてください。複数の班員のアイディアを組み合わせたり、まったく新しいアイディアを追加したりしてもOKです。また、このあとの作成を進める中で微調整することもあるかもしれません。 6.2 自走ロボットの材料 このミニプロジェクトでは、以下の材料を追加で配付します。 ギアボックス モータとギアが一体となった台車作成ユニットを2つ配付します。配付するギアボックスは、作り方によって2通りのギア比を設定することができますので、1つは低速ギア比・1つは高速ギア比に設定して作成してください。作成したら、PWM出力により2つのギアボックスのモータを回転させてみて、違いを見比べてください。モータには導線をはんだづけして使用します。はんだごてはワーキングスペースにあります。 ユニバーサルプレート ロボットの台座になる部分です。ちょうどギアボックスの幅と同じ小さいプレートが2つと大きいプレートを1つ用意しています。コンセプトに応じてどれをどのように使うかを選択してください。大きいプレートにギアボックスを取り付ける場合は、タイヤがあたる部分に穴を開けなければなりません。ニッパーで切ると穴を開けることができます。 タイヤ いわゆるタイヤです。ホイール(黄色のプラスチック)とタイヤゴム(黒色のゴム)からできています。ギアボックスのシャフトに取り付けます。 ボールキャスター ボールが主要な素材のキャスターです。キャスターは動力を持ちませんが、タイヤの動きに応じてなめらかに回転します。標準のロボットの形態(前回資料の動画)では、前方2つのタイヤと後方1つのボールキャスターで三角にバランスをとっています。 バンパースイッチ バンパースイッチは、壁にぶつかったことを検知するような用途に用いるタクトスイッチです。金属部分が押されるとスイッチがショートします。 6.3 実習 今日は実験はありません。コンセプトを示した文章・マインドマップ、作成したギアボックスや回路などハードウェアの進捗状況が分かる写真、全体の感想(全員分)をまとめてPDFにし、グループで1つの報告書を作成してください。代表者がCoursePowerにアップロードします。   — by 石井 健太郎、飯田 周作 専修大学ネットワーク情報学部

Read More »

Posted in Class materials

Mini Project Day 1

November 6, 2018
| No Comments
| Class materials

2018.11.6 これはフィジカルコンピューティング開発論(火曜日)の講義資料です。 Overview 今日からの2週間はここまで学修したことを活用して自走ロボットを作ります。以下のようなスケジュールで進めます。 11/6(火) Day 1 ミニプロジェクトの説明。個人でアイディア出し。 11/8(木) Day 2 グループ内でアイディアを交換してコンセプトを決定。キアボックス作成。制御回路・ソフトウェア作成。 11/13(火) Day 3 制御回路・ソフトウェア作成。評価と改良。 11/15(火) Day 4 4限に発表の準備(作品の最終調整を含む)。5限に発表会。 Mobile Robot 前回学修したDCモータをタイヤの動力として使うと、自走ロボットを作成することができます。モータをタイヤにつないで、2つのタイヤを同じ方向に動かせばまっすぐ動き、違う方向に動かせば転回することができます。同じ方向だけど異なる速度で動かすことでゆっくり曲がるというようなこともできます。 Gear ギアとは歯車のことで、回転の動力を別の場所や方向に伝えることができる装置です。さらに、回転する歯の数を変えることで、例えばモータが10回転すればタイヤが1回転するというようなこともできます。この場合、回転数をおさえただけ出力パワー(トルク)を大きくするということができます。ギアの歯の数の比をギア比と呼びます。 以下の2つの動画を見比べてください。上の動画はタイヤがゆっくり回転するようなギア比、下の動画は速く回転するようなギア比で動作させたものです。低速ギア比の場合は遅いですがバワーは大きいため、重いものを載せても同様に移動できます。高速ギア比の場合は速いですがパワーは小さいため、重いものを載せると移動できなくなってしまいます。 Rules and Evaluation 与えられた材料と手持ちの部品で、プログラムにより動く自走ロボットを作成してください。 前回学修したPWMでモータを制御することを利用します。ロボットの移動スピードを変えたい場合は、PWMのデューティ比を変えます。このことのほかに、これまでに学修した「LEDを光らせる」・「スイッチの状態を読みとる」といったことを1つ以上作品に実装してください。 ロボットのコンセプトを班で決定し、そのコンセプトに適した設計を施してください。ここでいう設計とは、高速ギア比を使うか低速ギア比を使うか、タイヤをどこに配置するか、マイコンをどこに配置するか、スイッチをどこに配置するか、といったことです。 なるべくほかの班と違うもの、つまり、独創性の高いコンセプトと設計に対して、よい評価を与えます。もちろん、完成度はどうでもいいということはなく、完成度も評価基準に含まれます。 具体的な方法は検討中ですが、最終日にプレゼンテーションを行い、作品のアピールをしてもらいます。実際のコンセプト・設計・完成度がよくても、それがうまく伝わらなければ台なしですので、うまく伝えられるような工夫をしてください。 Mind Map このミニプロジェクトで実現する自走ロボットのコンセプトをマインドマップで表現してください。つまり、マインドマップに、誰のために、どんなシチュエーションで、どんな機能や効果を提供するかというシステムのアイディアをまとめます。 このときに、タクトスイッチやバンバースイッチを利用して、ユーザや環境とのインタラクションを考えてください。さらに、将来こういう装置(アームなど)やこういうセンサが追加されればこういう機能のロボットになる、というところまでコンセプトを煮つめてください。 Practical Work 今日は実験はありません。そのかわり、作成したマインドマップのデータを提出してください。   — by 石井 健太郎、飯田 周作 専修大学ネットワーク情報学部

Read More »

Posted in Class materials

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.