Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ラズベリー・パイでプログラミングと電子工作を体験してみよう

9,220 views

Published on

中学生にラズベリーパイ(Raspberry Pi)を用いてプログラミングと電子工作を体験してもらった講義の資料です。プログラミングの道具としてはスクラッチ(Scratch)を用います。電子工作としては、LEDの点滅、距離センサの利用、モーター搭載キャタピラ式模型の制御を行ないます。

Published in: Education
  • Be the first to comment

ラズベリー・パイでプログラミングと電子工作を体験してみよう

  1. 1. ラズベリー・パイで プログラミングと 電⼦⼯作を体験してみよう ⼯学院⼤学 先進⼯学部 機械理⼯学科 ⾦丸隆志 1 中学⽣を対象とした講義資料
  2. 2. 本資料の内容に必要なもの(1) 2 本講義のために、筆者があらかじめ⽤意した機器やパーツを紹介します ラズベリー・パイ(RaspbianをインストールしたmicroSDカードも必要) さらに、距離センサを使うためにシリアル通信機能を有効にしておく。 解説はこちらのページの「2. Raspberry Piでシリアルコンソールを無効に」に。 http://neuralassembly.blogspot.jp/2016/06/raspberry-piscratch.html <後半の電⼦⼯作編> ブレッドボード http://akizukidenshi.com/catalog/g/gP-05294/ ジャンパワイヤ(ピン-ソケットタイプ) http://akizukidenshi.com/catalog/g/gC-08933/ およびその⾊違い ジャンパワイヤ(ピン-ピンタイプ) http://akizukidenshi.com/catalog/g/gC-05371/
  3. 3. 本資料の内容に必要なもの(2) 3 <LED編> ⾚⾊LED http://akizukidenshi.com/catalog/g/gI-02320/ 330Ωの抵抗 http://akizukidenshi.com/catalog/g/gR-25331/ <距離センサ編> 距離センサ(シャープ測距モジュールGP2Y0E02A) http://akizukidenshi.com/catalog/g/gI-07546/ ピンヘッダ http://akizukidenshi.com/catalog/g/gC-00167/ 上記距離センサの配線にはんだづけし、ピン-ソケットタイプのジャンパワイヤを 取り付け、ブレッドボードに差し込みやすくしています PIC12F1822 http://akizukidenshi.com/catalog/g/gI-04557/ ただし、下記ページの「3. PICにプログラムを書き込む」に従い PICにプログラムを書き込んでおく必要があります。 Raspberry Piがあれば数百円のパーツ購⼊で可能です。 http://neuralassembly.blogspot.jp/2016/06/raspberry-piscratch.html
  4. 4. 本資料の内容に必要なもの(3) 4 <キャタピラ式模型編> 電池ボックス http://akizukidenshi.com/catalog/g/gP-00310/ モータードライバTA7291P http://akizukidenshi.com/catalog/g/gI-02001/ 10kΩの抵抗 http://akizukidenshi.com/catalog/g/gR-25103/ タミヤのタンク⼯作基本セット http://akizukidenshi.com/catalog/g/gK-09102/ 付属の電池ボックスは使わずに組み⽴てます。 モーター⽤配線 http://akizukidenshi.com/catalog/g/gP-06756/ モーターに⻑めの配線をはんだづけし、ピンヘッダをはんだづけして ブレッドボードに差し込みやすくしています
  5. 5. ラズベリー・パイとは 5 名刺サイズの超⼩型コンピュータ。2012年に登場して以来、⼤⼈気 プログラミングを学ぶ⽬的で作られたため、コンピュータについて 学びたい⼈に適しています Windows/Mac OS XやAndroid/iOSは巨⼤であったり、 内部構造が複雑だったりしますが、 ラズベリー・パイはシンプルで学びやすい また、電⼦⼯作など「ものづくり」に適しているという⾯もあります
  6. 6. ラズベリー・パイの電源の⼊れ⽅ 6 まず、OSの⼊ったmicroSDカードを裏⾯に押し込みます 通常はOSのインストールから ⾏いますが、今⽇は省略し、 OSをインストール済のものを ⽤います ディスプレイ (HDMIケーブル) キーボードとマウス (USBケーブル) 電源 (microUSBケーブル) ディスプレイ、キーボード、 マウスを接続したら、最後に 電源ケーブルを差し込みます 電源スイッチはありません microSDカードを⼀度⼊れたら 通常は⼊れたままで良いです
  7. 7. デスクトップからプログラミングの学習環境 Scratch(スクラッチ)を起動しよう 7 起動直後のデスクトップから、 メニュー(Menu)から「プログラミング」→「Scratch」を起動
  8. 8. Scratch(スクラッチ)の画⾯ 8
  9. 9. まずは猫の位置と向きを知ろう 9 x軸 y軸 240-240 180 -180 猫の位置は 座標で決まります 猫の座標 猫には「位置」と「向き」があります 猫の向きは ⻘線の⽅向で決まります 90度 0度 -90度 180度 猫の向き (猫の名前はスクラッチ・キャット)
  10. 10. では猫を動かしてみよう 10 それぞれマウスで クリックしてみよう 「猫の向き」へ 10だけ動きます 「猫の向き」 (この図では右) 「猫の向き」が 15度回ります 「猫の向き」が 15度回ります 何度もクリックすると、それに応じて猫が動きます
  11. 11. ⼀気に動かすには? 11 x軸 y軸 240-240 180 -180 90度 0度 -90度 180度 ⼀気に90度(右) に向きます ⼀気に画⾯中央 (x,y)=(0,0) に戻ります 例えば下の⼆つのブロックが使えます
  12. 12. なお、ブロック上の数値を 変更することもできる 12 キーボードで 数値を⼊⼒ すると 変更できます 4つの選択肢から 変更できます
  13. 13. 壁にぶつかったときに反転させる 13 右向きの時に を何度も押すと? 壁にぶつかって それ以上 進まなくなります 向きが反転します をクリック
  14. 14. 右向き以外での猫の描かれ⽅3種 14 ⾚丸で⽰したボタンを押すことで、3パターンが切り替わる 上下逆さに描画されます 猫は常に上下正しく 描画されます 猫は常に右向きに 描画されます どの描画法でも動き⾃体は変わらないので、 お好みで選んでよいです
  15. 15. もう少しプログラムらしくしていこう 15 ここまでは、「命令」を⼀つずつ実⾏してきました ここからは「命令」を組み合わせ、「プログラム」を作っていきましょう 「10歩動かす」命令をマウスでつかんで 「スクリプト」エリアに移動します 同じ命令を先ほどの命令の下につなげます (⽩い線の位置につながることに注意しよう) 2つの命令がつながる クリックすると、2つの命令が 上から順に実⾏されます
  16. 16. 端に着いたときの処理の命令も プログラムに追加してみよう 16 「10歩動かす」回数を増やすと、 それだけ端に着くのも早くなります そのたびに を押すのは⾯倒 もプログラムに組み込もう 50歩動いてからの 端チェックでも 良いけれど… 10歩動くたびに こまめに端チェック するのも良い 命令の間に 新たに命令を 追加していきます (⽩線の位置に 注意)
  17. 17. コピー、削除、切り離しを知っておこう(1) 17 取り扱うブロックが増えてきたので、その取り扱い⽅法をいくつか紹介します ⼀番上のブロックで マウスの右ボタンをクリック →「複製」 全 体が 複 製 さ れ る コピー(複製):全体 ⼀ 部 が 複 製 さ れ る 途中ブロックで マウスの右ボタンをクリック →「複製」 コピー(複製):⼀部
  18. 18. コピー、削除、切り離しを知っておこう(2) 18 削除 ⼀番上のブロックで マウスの右ボタンをクリック →「削除」 切り離し 切り離したい位置の 下のブロックを マウスでつかむ 切 り 離 さ れ る 削 除 さ れ る
  19. 19. プログラムが複数あったら? 19 原則的には、クリックしたもの のみが実⾏されます スクラッチにより詳しくなれば、 ⼆つのプログラムに 別々の役割を持たせることが できますが、今⽇はそこまでは 触れません
  20. 20. 歩いているような動きを追加(1) 20 ここまでは「歩く」と⾔っても ただ滑っているだけでした 実際に歩いているような 動きを追加してみましょう スクラッチはゲームを作ることにも向いているので、 「動き」を表現する仕組みがあります 猫を「歩いているように」⾒せたい
  21. 21. 歩いているような動きを追加(2) 21 キャラクター(猫)に ⼆つの絵(コスチューム) が⽤意されています。 この⼆つの絵を切り替えることで 猫が歩いているように⾒えます コスチュームを順に切り替える命令が 「⾒た⽬」セクションの 「次のコスチュームにする」です コスチュームについて知ろう 「コスチューム」タブをクリックすると…
  22. 22. 歩いているような動きを追加(3) 22 プログラムをクリックし、実際に猫が「歩いて」いるように ⾒えることを確認しよう! コスチュームの切り替えで歩きの実現 「10歩動かす」の後ろに 「次のコスチュームにする」 命令を追加します
  23. 23. 繰り返し処理を覚えよう(1) 23 3つの命令がひとかたまりとして 5回繰り返されています 同じ命令群を複数回繰り返すとき 便利な仕組みが「繰り返し処理」 「制御」セクションの 「ずっと」や「10回繰り返す」 などが「繰り返し処理」の 代表例です ここまでのプログラムは同じ処理が繰り返されていました
  24. 24. 繰り返し処理を覚えよう(2) 24 クリックして実⾏すると、 「10歩移動」が10回繰り返されますこの部分の数字は キーボードで書き換えられます (100回、など) まずは「10回繰り返す」を使ってみよう
  25. 25. 繰り返し処理を覚えよう(3) 25 回数を決めずに無限に繰り返したいときは「ずっと」ブロックを⽤います クリックすると、猫が無限に歩き続けます (もう⼀度クリックすると⽌まります)
  26. 26. 簡単なゲームを作ってみよう(1) 26 猫がずっと(勝⼿に)動き続けるようになったので、 これを利⽤して簡単なゲームを作ってみましょう ルール: 猫がマウスのポインターを追いかけてくる ユーザーはマウスのポインターが猫に触れられないように マウスポインターを動かし続ける マウスのポインターが猫に触れられればゲームオーバー
  27. 27. 簡単なゲームを作ってみよう(2) 27 「猫がマウスのポインターを追いかけてくる」というルールの実現 左のプログラムを出発点とします 猫の「向き」をマウスポインターが存在する⽅向とすれば良いわけです 猫の「向き」に関係しているのはこの命令なので、 これを別の命令に置き換えます ⽤いるのは「動き」セクションの「〜へ向ける」ブロック
  28. 28. 簡単なゲームを作ってみよう(3) 28 このブロックをマウスでつかんで「ずっと」から外します 同じ位置に「〜へ向ける」ブロックを挿⼊します 「〜へ向ける」の「〜」の部分をクリックし、 「マウスのポインター」を選択します これで「マウスのポインターを追いかけてくる」 機能の完成です 実際にプログラムをクリックし、マウスを動かして 動作を確認しよう 「猫がマウスのポインターを追いかけてくる」という機能の完成
  29. 29. 簡単なゲームを作ってみよう(4) 29 最後に、ゲームオーバー機能の実現 「制御」セクションの「もし〜なら」と 「すべてを⽌める」および 「調べる」セクションの「〜に触れた」 を⽤います。 これらをこのように組み合わせます
  30. 30. 簡単なゲームを作ってみよう(5) 30 「〜に触れた」の 「〜」の部分をクリックし、 「マウスのポインター」を 選択します これで完成! クリックして動作を 確認しよう なお、この部分の数字を キーボードで⼤きくすると 猫の動作が速くなり、 難易度が上がります。 (50にすると超⾼難度) 仕上げです
  31. 31. プログラミングという観点からの ここまでのまとめ 31 プログラムは 上から順に実⾏されます 同じ命令を 何度も実⾏する場合、 「繰り返し」を⽤います あるときのみ 命令を実⾏したい場合、 「条件分岐」を⽤います ゲームオーバーを 実現するために ⽤いました プログラムが複数あっても、 これらが全て 実⾏されるわけではありません ここでは 「クリックしたものだけが実⾏」 されることを学びました
  32. 32. ここからは… 32 ここまでは、画⾯の中のバーチャルな(仮想的な) 世界に対するプログラミングを⾏ないました ここからは、現実世界(リアル・ワールド) に対するプログラミングを⾏ないます これをフィジカル・コンピューティングといいます (フィジカル=物質的、⾝体的、物理的) LED 距離センサー キャタピラ式模型 以下のものを順に 試してみましょう
  33. 33. LEDをプログラミングしてみよう(1) 33 発光する電⼦パーツ。 電化製品のインジケータや、照明、信号機などにも使われます LEDを発光させる際に⽤います。 オレンジ、オレンジ、茶、⾦ のカラーコードは330Ω(オーム)の ⼤きさの抵抗を⽰します LED(Light Emitting Diode) 抵抗 LEDってなんだろう? アノード(+) ⾜の⻑い側 カソード(ー) ⾜の短い側
  34. 34. LEDをプログラミングしてみよう(2) 34 電池 など LED 抵抗 ⽐較 電池 など ⾖電球 LEDを点灯させるには、抵抗が必要です (電流を流し過ぎないため) LEDの接続の際には向きに注意します アノード (+)側 カソード (ー)側 ⾖電球を点灯させる回路はどうだった? +極 ー極 +極 ー極 LEDを光らせるための回路 ⾖電球を点灯 させる際、 向きもなく 抵抗も不要 でした
  35. 35. LEDをプログラミングしてみよう(3) 35 ラズベリーパイ の出⼒ LED 抵抗 GND(=0V) 「ラズベリーパイの出⼒」とは次の ⼆状態のどちらかをとることができます HIGH / LOW H / L 1 / 0 3.3V / 0V すなわち ラズベリー・パイがHIGH(3.3V)を出⼒ →LED点灯 ラズベリー・パイがLOW(0V)を出⼒ →LED消灯 これを以下の様に呼ぶこともあります これを ラズベリー・パイで こう実現 3V 0V
  36. 36. LEDをプログラミングしてみよう(4) 36 ブレッドボード ⽳にLEDや抵抗などの電⼦パーツや ジャンパワイヤ(後述)をさして 回路を作成します ブレッドボードの内部配線 灰⾊の部分が内部で電気的に つながっていることを覚えましょう 回路を作るために必要なもの
  37. 37. LEDをプログラミングしてみよう(5) 37 ジャンパワイヤ:2タイプあります ラズベリー・パイや ブレッドボードにさして 回路の配線とします 回路を作るために必要なもの(続き) ピンピン ピン ソケット
  38. 38. LEDをプログラミングしてみよう(6) 38 ラズベリー・パイの40本のピン をGPIO(ジーピーアイオー) といいます この資料で⽤いるピンを ピンク⾊で塗りました
  39. 39. LEDをプログラミングしてみよう(7) 39 以上の予備知識で作るべき回路 GPIO 17 LED 抵抗330Ω GND(=0V) 同じ カソード(ー) ⾜の短い側 アノード(+) ⾜の⻑い側 LEDには 向きがある (抵抗には 向きがない)
  40. 40. LEDをプログラミングしてみよう(8) 40 回路を組むときの注意 ピン・ソケットタイプの ジャンパワイヤを使います こちらを先に差そう こちらを後に差します 理由:⾦属製のピンが露出している時間が 短いほうがショートのトラブルが 起きにくいからです
  41. 41. LEDをプログラミングしてみよう(9) 41 ここでようやくスクラッチの登場 「制御」セクションの「〜を送る」ブロックで 「新規/編集」をクリックし、メッセージの名前に キーボードで「gpio17high」などと書きます。 そして、左のようなブロックをあらかじめ ⽤意しておくと後が楽です gpio17high/gpio17low はLEDは点灯・消灯に gpio27high/gpio27low gpio22high/gpio22low はモーターの制御に ⽤います
  42. 42. LEDをプログラミングしてみよう(10) 42 GPIOを⽤いるための準備 「編集」→「GPIOサーバーを開始」を 選択してください これは、スクラッチを起動した後 ⼀回だけの実⾏でよいです GPIOの動作確認 をクリック:LEDが点灯 をクリック:LEDが消灯 LED、モーターを使う前に この⼿続きが必要になります
  43. 43. LEDをプログラミングしてみよう(11) 43 LEDをチカチカ点滅させよう(Lチカ) このプログラムでLEDが0.5秒ごとに点滅し続けます 0.5秒待つ LED消灯 0.5秒待つ LED点灯 プログラムを作る上での注意 と はコピー(複製)して使おう 「0.5秒待つ」は「1秒待つ」ブロックをキーボードで書き換えて⽤います これです
  44. 44. LEDをプログラミングしてみよう(12) 44 応⽤:ゲームオーバー時にLEDを点滅させよう マウスポインタに猫が触れると ゲームオーバーになるゲーム はこうでした ここを追加 します ゲームオーバー時に LEDを3回点滅する プログラム ゲームオーバー時に処理を追加
  45. 45. 距離センサーをプログラミング(1) 45 ここが距離センサー。 ⼿などをかざすと、そこまでの 距離に応じた値が得られます 距離センサーとは 距離センサ―を⽤いるには、ラズベリー・パイとPICマイコンを 下記のページに従って準備する必要があります。 http://neuralassembly.blogspot.jp/2016/06/raspberry-piscratch.html
  46. 46. 距離センサーをプログラミング(2) 46 距離センサーを⽤いるための回路 横⼀列をそれぞれ3.3V(+)、 GND(0V)(-)としています 図とケーブルの⾊を合わせると、 回路を作るときに間違えにくいでしょう 距離 センサー このICには センサーを 読むための プログラムが 書き込まれて います
  47. 47. 距離センサーをプログラミング(3) 47 まず距離センサーの動作を確認してみよう 「調べる」セクションの「〜センサーの値」を マウスで右クリックし、 「ScratchBoard監視板を表⽰」を選択 「切」の上でマウスの右ボタンをクリック 「A」の部分の 数字が センサーの 読みです
  48. 48. 距離センサーをプログラミング(4) 48 距離センサーの性質を知ろう 距離 距離 センサーの 読み 25 65 5cm 20cm およそ25〜65程度が 距離に関係する値として 利⽤できます
  49. 49. 距離センサーをプログラミング(5) 49 距離センサーを⽤いてこんなゲームを作ってみよう ルール:距離センサーの値に応じて猫が左右に動く (遠ければ右、近ければ左、など) 猫が左右の端にぶつかるとゲームオーバー プレイヤーは猫が端にぶつからないように、 センサーと⼿のひらの距離を調節し続ける 端につくとゲームオーバー
  50. 50. 距離センサーをプログラミング(6) 50 作るべきプログラムはこうです ちょっと複雑に⾒えるので次のページで解説します
  51. 51. 距離センサーをプログラミング(7) 51 マウスを追いかけるプログラムとの違い ゲーム開始時の猫を 画⾯中⼼、右向きにセット ゲームオーバー条件を変えています マウスを追いかけるプログラム 猫の向きを変える部分を センサーの値に応じて変えるよう 変更しています(次ページでさらに解説)
  52. 52. 距離センサーをプログラミング(8) 52 猫の向きを変える左の部分は 次のような意味です 25<センサーの値<45なら 猫を右向き(90度)に 45<センサーの値<65なら 猫を左向き(ー90度)に プログラミングでは、「25<センサーの値<45」という不等式を 『「25<センサーの値」かつ「センサーの値<45」』と書きます (ちょっと⾯倒ですが、⽂法上そうなっていることが多いです) 猫の向きを変える部分の意味
  53. 53. 距離センサーをプログラミング(9) 53 猫の向きを変えるブロックの作り⽅ 下の4種のブロックを⽤います ブロックの「複製」を うまく使おう! 数字はキーボードで⼊⼒できます 「抵抗Aセンサーの値」で 距離センサーの値が とれます
  54. 54. 距離センサーをプログラミング(10) 54 完成したらクリックして実⾏してみよう! この部分の数字を⼤きくすると難易度が上がります
  55. 55. モーターをプログラミング(1) 55 モーターひとつを載せたキャタピラ式模型 スクラッチからモーターを動かして、キャタピラ式模型を操作します
  56. 56. モーターをプログラミング(2) 56 新たに⽤いるモータードライバー モーターをラズベリー・パイから制御する場合、 通常「モータードライバ」と呼ばれるICを⽤います 電池 ボックス モーター GPIO27 GPIO22 モーターを動かす電流は 電池ボックスから流します ラズベリー・パイはモーターに対する スイッチとして機能します モータードライバ TA7291P GPIO27とGPIO22の出⼒の組み合わせでモーターの動きが決まります GPIO27 HIGH GPIO22 LOW モーター正転 GPIO27 LOW GPIO22 HIGH モーター反転
  57. 57. モーターをプログラミング(3) 57 新たに⽤いる電池ボックス 表 裏 乾電池2本分 =1.5V×2=3V 配線⾚:+側 配線⿊:-側 ここにスイッチ 通常オフに 使うときのみオンに
  58. 58. モーターをプログラミング(4) 58 モーターを⽤いるための回路 電池 ボックス 模型の モーター 新たに追加するのは この部分 電池ボックスの スイッチは、 全て完成してから ONにしましょう
  59. 59. モーターをプログラミング(5) 59 モーターの動作を確認 「制御」セクションの「〜を送る」ブロックを⽤いて 下記のようなブロックをあらかじめ⽤意しておきます モーターが回転します(模型前進) モーターが逆⽅向に回転します(模型後退) モーターが⽌まります(模型静⽌)
  60. 60. モーターをプログラミング(6) 60 距離センサを⽤いるゲームでキャタピラ式模型も動かそう
  61. 61. モーターをプログラミング(7) 61 距離センサを⽤いるゲームにモーターの動きを追加 モーター回転 モーター逆転 モーター静⽌ ブロックを複製して 距離センサのゲームに 3つ挿⼊するだけです 猫と⼀緒に キャタピラ式模型が 動きます
  62. 62. ⾳を取り扱ってみよう(1) 62 スピーカーを取り付けると⾳を鳴らすことができます 「⾳」セクションに⾳を鳴らす命令があります 例えば… その名の通り、「ニャー」という 猫の鳴き声が聞こえます ドラムの⾳です。 「48」の部分のクリックで ⾳⾊を選択できます 「60」の部分のクリックで ⾳の⾼さ(ドレミファ…) が選択できます
  63. 63. ⾳を取り扱ってみよう(補⾜) 63 ⾳が出ない場合は? ターミナルLXTerminalを起動し、 下記のコマンドを⼀回実⾏します amixer cset numid=3 0 ただし、末尾の数字は環境により下記に変更してください 0:⾃動認識、1:ラズベリー・パイのイヤフォンジャック 2:HDMI接続のディスプレイから出⼒
  64. 64. ⾳を取り扱ってみよう(2) 64 ⾳を使ってこんな課題を考えてみよう 距離 センサとの距離で、⾳の⾼さ(ドレミファ…)が変わる楽器⾵のプログラム センサの値 65 60 55 50 45 40 35 30 25 ドレミファソラシド
  65. 65. ⾳を取り扱ってみよう(3) 65 使うのはこんなブロック これらはこのように組み合わせるのでした ここにはキーボードで数字を書きます
  66. 66. ラズベリー・パイの電源を切ろう 66 「メニュー(Menu)」→ 「Shutdown」を選択します 「Shutdown」 ボタンを 押します 最後に電源ケーブルを抜きます 緑⾊のLEDが点灯しっぱなしに なったら電源ケーブルを抜いてOKです お疲れ様でした

×