66
パート2 「わくどきワークショップ」 阿部和広 青山学院大学・津田塾大学 非常勤講師 Raspberry Pi+Arduino+Scratchフィジカルコンピューティング体験!

配布用Raspberry pi+arduino+scratchでフィジカルコンピューティング体験!

Embed Size (px)

Citation preview

パート2 「わくどきワークショップ」

阿部和広 青山学院大学・津田塾大学 非常勤講師

Raspberry Pi+Arduino+Scratchで フィジカルコンピューティング体験!

今日やること

• 背景

• Raspberry Piに触ってみる

• 用語について

• Arduinoに触ってみる

• LEDを点滅させる(LEDチカチカ=Lチカ)

• Scratchでネコを歩かせる

• ScratchでLチカ

• スイッチを作ってみる

• ゲームのコントローラーを作って遊ぶ

• ボリュームを作ってみる

• 全部はできないかも

Raspberry Piに触ってみる

Raspberry Piについて

• イギリスのケンブリッジ大学のエベン・アプトンさんたちが開発 – 4年間で500万台が出荷されています

• とても小さい(カードサイズ)

• とても安い(2,620円~4,800円)

• スマートフォンやタブレットと同じしくみ

• 10年前のパソコンと同じくらいの性能 – ARMv6 もしくは v7, 1~4 コア,700~900MHz

– RAM 256MB~1GB

• いろいろなものをつなげられる(GPIO)

Raspberry Piの各部の名前

Raspberry Pi Model B

Raspberry Piの特徴

• 地デジのテレビやアナログテレビにつながる – 映像出力はHDMIとコンポジット

• キーボードやマウスはパソコン用のもの – USB接続でそれぞれ1000円以下

• SDカードに記憶する – ハードディスクの代わり。8GBで1000円以下

• 電源はスマートフォンやタブレット用 – USB充電器も1000円以下

• ネットにもつながる – 有線LANは普通の100BASE-T(RJ45)

Raspberry Piについて

Raspberry Piのソフトウェア • ソフトウェアは無料

– OSはLinux (DebianベースのRaspbian)など

– ウィンドウシステム(X11, LXDE)はWindowsそっくり

• アプリケーションがたくさんある – Webブラウザー (Midori, Epiphany)

– オフィススイート (LibreOffice)

– グラフィックスソフト (GIMP, Inkscape)

– ゲーム (Minecraft Pi) など

• 自分でプログラムを書くためのソフトもたくさん – C, Python, Ruby, Java, JavaScript, ドリトル, Arduino

– Scratch, Squeak Etoys

Raspberry Piのデスクトップ

Raspberry Piを組み立てよう

※ 今回はVGAアダプター経由でディスプレイに接続

※ 今回は使用しない

組み立てる部品一式

Raspberry Piの起動

※ 差し込む前に、ディスプレイの電源を入れる。差し込むと同時に本体の電源が入る

Raspberry Piの起動

※ しばらくして、この画面が出れば起動成功

Raspberry Piの終了方法

シャットダウンボタン

「シャットダウン」ボタンをクリックし、「シャットダウンダイアログ」から、「シャットダウン」を選択 画面が暗転し、左上で点滅している横棒が消えたら、USB電源アダプターから、マイクロUSBケーブルを抜く

用語について

電圧・電流・抵抗

http://www.max.hi-ho.ne.jp/lylle/denryu5.html

電源

電位差

地面の高さ ||

グランド ||

GND

アナログ・デジタル

• アナログ

– 連続値

– 例) 1.43 V, 4.61 V

• デジタル

– 離散値

– 例) LOW, HIGH

• 0から5 Vの間のどこかに閾値 – 0から3.3 Vの場合も

アナログ入力・デジタルI/O • アナログ入力

– 入力のアナログ値を測定する

• 返り値は、0 V~5 Vを0~1023で表したものなど

• デジタルI/O

– I (Input; 入力)

• 入力のデジタル値を測定する – 返り値は、LOW, HIGHなど

– O (Output; 出力)

• 指定された値により出力する – LOWだと0 V, HIGHだと5Vなど

• PWM (Pulse Width Modelation; パルス幅変調) – オンオフを高速で繰り返すことで擬似的にアナログ出力する

– 512だと2.5 Vなど

USBコネクタ Bタイプ

DCジャック

デジタルI/Oピン

アナログ入力ピン 電源ピン

プルダウン・プルアップ

• 入力ピンになにも接続しないと、値が不安定になる

• プルダウン

– 入力ピンを抵抗を通して、GNDにつなぐ

– 通常はLOW, 入力ピンをGNDにつなぐとHIGH

• プルアップ

– 入力ピンを抵抗を通して、電源につなぐ

– 通常はHIGH, 入力ピンをGNDにつなぐとLOW

Arduinoに触ってみる

Arduinoとは

• Arduino(アルドゥイーノ)は、AVRマイコン、入出力ポートを備えた基板、C++風のArduino言語とそれの統合開発環境から構成されるシステム。Arduino LCC および Arduino SRL が設計・製造を行い、登録商標を持っている。 – https://ja.wikipedia.org/wiki/Arduino

• Arduino LCC – https://www.arduino.cc/

• Arduino SRL – http://www.arduino.org/

• オープンソースハードウェア

Arduino UNO R3 • マイコンチップ:ATmega328P

• 動作電圧:5V

• 入力電圧(推奨):7~12V (DCジャックもしくはVIN端子から入力)

• デジタルI/Oピン:14本(うち6本はPWM出力可能)

• アナログ入力ピン:6本(デジタルI/Oピンとしても利用可能)

• DC出力電流:1つのI/Oピン当り20mA程度、I/Oピン全部の合計100mAまで (1ピンあたり40mA以上流すと壊れます)

• DC出力電流:3.3V出力ピン 50mA

• Flashメモリ:32KB (うち0.5KBをブートローダーで使用)

• SRAM:2KB

• EEPROM:1KB

• クロックスピード:16MHz – https://www.switch-science.com/catalog/789/

重要な端子

• USBコネクタ(Bタイプ)

– パソコンにつないでシリアル通信と電源供給

• DCジャック(7~12V)

– 電源供給 (消費電力の大きなデバイスを使うときなど)

• デジタルI/Oピン

– 14本(うち6本はPWM出力可能)

• アナログ入力ピン

– 6本(デジタルI/Oピンとしても利用可能)

Arduino IDE

今回使うのは、中国製 Arduino UNO R3 互換機

本家との違い

• マイコンチップ – ATmega328P → ATmega328P-AU

– DIPから表面実装に

– 取り外し、交換が困難

• USBシリアル変換器 – ATmega16U2 → CH340

– CH340のドライバが必要(Windows, Mac, Linux) • 「CH340 ドライバ」で検索

• http://www.wch.cn/download/CH341SER_ZIP.html

• Raspbianにはデフォルトでインストール済

• 本日お持ち帰りいただけるのはArduino互換機本体とUSBケーブル(Bタイプ)

LEDを点滅させる (LEDチカチカ=Lチカ)

ブレッドボード

• はんだ付け不要で、リード線を差し込むだけで配線できる

※ 縦の5つの穴は中でつながっている

ジャンパーワイヤー

• Arduinoやブレッドボードの配線に使う

• ピンがある方がオス、ソケットの方がメス

– 今回はオス-オスとメス-メスを使う

– オス-メスにしたいときは、オス-オスとメス-メスをつなぐ

LED

• LED(発光ダイオード)

– 豆電球と違って、極性がある

• 逆につなぐと光らない

– 大電流を流すと壊れる

足が長い

足が短い

抵抗

• LEDに流れる電流を制限するため、LEDと直列につなぐ

– 今回は1KΩを使用

• カラーコードは、 茶黒赤金

– ブレッドボードに 差すときはリード 線をコの字に曲げ て使う

– 極性なし

このように配線します

足が長い

オス-オスの ジャンパー ケーブル

デジタル13番ピン GNDピン

USBケーブルをつないでからArduino IDEを起動

ボードの種類を選択

Arduino Uno

シリアルポートを選択

/dev/ttyUSB0

サンプルスケッチ「Blink」を開く

※ プログラム = スケッチ

コンパイルと書き込み

Scratchでネコを歩かせる

Scratchって?

• 米マサチューセッツ工科大学(MIT)メディアラボのミッチェル・レズニックさんたちが開発

• ものづくりを楽しみながら学べる

• ビジュアルプログラミング言語

– マウス操作で命令のブロックを組み立てる

– エラーが起こらない

• いろいろなパソコンで動く

– Windows, Mac OS X, Linux

• 作品をネットに共有して、みんなで見られる

三鷹市立中原小学校 中原はちのすけクラブ

仙台市立 荒町小学校

44

「試行錯誤するようになった」 「自ら進んで取り組むようになった」 パパートの言う「学ぶことを学ぶ」ができている

学年 科目 単元

1年生 市民科 パソコンをつかおう(パソコンの基本操作)

2年生 算数科 かけ算(1)

3年生 理科 風やゴムのはたらき

4年生 国語科 言葉から風景を想像しよう~短歌をデジタル画で味わおう~

5年生 音楽科 音楽づくり

6年生 市民科 自分たちの学校, プレゼンテーション力をつける

品川区立京陽小学校 全校児童にRaspberry Piを配布

総合ではなく教科の授業でScratchを活用

教科の学習とScratch

第2 各分野の目標及び内容 2 内容

D 情報に関する技術 (3) プログラムによる計測・制御について,次の事項を指導する。 ア コンピュータを利用した計測・制御の基本的な仕組みを知ること。 イ 情報処理の手順を考え,簡単なプログラムが作成できること。

中学校学習指導要領 第2章 各教科 第8節 技術・家庭 http://www.mext.go.jp/a_menu/shotou/new-cs/youryou/chu/gika.htm

ものづくり教育とScratch

計測・制御との親和性

• センサー入力とモーター出力のための仕組みを備える

– センサーボード

• スライダー, 音, 光, ボタン, 抵抗x4

– LEGO WeDo

• 傾き, 距離, モーター

• 外部機器接続のためのインタフェース

– ユーザーの拡張により、任意の機器を接続可能

– Kinect, Wiiリモコン, Arduino, Mindstorms

– Raspberry PiのGPIO(汎用入出力)

PicoBoard (Scratchセンサーボード)

NanoBoardAG (Arduino互換機)

Raspberry PiのGPIOからモーターを制御 (ScratchGPIO)

上板橋第二中学校 技術・家庭科でRaspberry Pi, Scratch, Arduinoを活用

スクラッチの起動方法

• デスクトップのネコのアイコンをダブルクリック

– 初回の起動にはしばらくかかる

– 何度もダブルクリックすると、複数起動してしまうので、その場合は右上の「x」をクリックして閉じる

Scratchで簡単プログラミング体験

スクラッチでゲームを作ろう

• 例題「ネコからにげろ!」

– http://swikis.ddo.jp/abee/77

ScratchでLチカ

ラズベリーパイのGPIO • GPIO(General Purpose Input Output)

– 汎用入出力端子

• 電源: 3.3V 50mA: 1, 17 5V 300mA: 2, 4 • 入力: 3, 5, 7, 8, 10, 19, 21, 22, 23, 24, 26

– Scratch GPIOでは、すべての入力ピンは最初プルダウンされている(プルダウン抵抗あり)

• 出力: 11, 12, 13, 15, 16, 18 – 電圧は0~3.3Vの間で可変(PWM) – 電流は最大で16mA

Arduinoにつないでいたジャン パーワイヤーを抜き、メス-メス のジャンパーケーブルで延長 して差し込む

ジャンパーワイヤーの差し替え

Scratch GPIOの使い方

• GPIOを制御するために、専用のスクラッチ「Scratch GPIO」を使う

• Scratch GPIOを起動するには、デスクトップの「Scratch GPIO4」のアイコンをダブルクリックする

– 「Scratch GPIO4plus」は使わない

– 「遠隔センサ接続が有効になりました」のダイアログは「OK」で閉じる

LEDを点滅させる例題

• 「ファイル」メニューから、「開く…」を選び、「blink11」を選んで「OK」ボタンをクリックする。すると例題が開く

• 緑の旗をクリックすると LEDが1秒点灯、2秒消灯 を繰り返す

• 「pin11highを送る」で 11番ピンが3.3V(HIGH)になる

• 「pin11lowを送る」で 11番ピンが0V(LOW)になる

• 秒数の数字をクリックして キーボードから数値を入力 できる(入力後Enterキー)

スイッチを作ってみる

段ボールスイッチをつくろう!

• 約10cm x 20cmに切った段ボールを二つに折り曲げ、その支点の近くに、少し離した2本アルミテープを貼ります

• それぞれのアルミテープにワニ口クリップをつけます

• この開閉により、スイッチをオンオフできます

• カスタネットのように握っても良いし、椅子に置いても良いです

• このスイッチをユーザーインターフェースとして、いろいろな応用ができます

それぞれのワニ口ケーブルから、 オス-オス、メス-メスのジャンパー ワイヤーで延長してつなぎます。 極性はありません。

スイッチの配線

スイッチでLEDを制御するスクリプト

ゲームのコントローラーを作って遊ぶ

Pongを開く • 「ファイル」メニューから、「開く…」、「例」、「Games」、

「4 Pong」を選んで「OK」ボタンをクリックする。

Pongを改造する

• 右下のスプライトの一覧から「paddle」をクリックして選び、スクリプトを書きかえる

• 段ボールスイッチでパドルをコントロールできる

日経BP 関連書籍 http://www.amazon.co.jp/-/e/B00DUV6S3E/