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.
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0

Share

Download to read offline

Pureyes tutrial for raspberrypi kit

Download to read offline

PUREYES ラズパイ

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

Pureyes tutrial for raspberrypi kit

  1. 1. © PUREYES
 ラズベリーパイ GPIO と スクラッチ ではじめる
 電子工作 & ブロック プログラミング 速 習キット
 [ 学習教材 V106 ]
 http://pureyes.webstarterz.com
  2. 2. © PUREYES
 はじめに
 ● PUREYES(プレイズ)ラズベリーパイ GPIO と スクラッチ ではじめる 電子工作 & ブロック プロ グラミング 速習キット をお買い上げいただき誠にありがとうございます。
 ● ラズベリーパイGPIO(ハード)やスクラッチ(ソフト)の登場で電子工作やプログラミングが気軽に 学べる時代になってきました。
 ● 本書は豊富なイラストと平易な文章を使って初心者の方がサクサク学べるようにやさしく仕上げ ました。また、わからないところはLINEでのサポートも行っていますのでどんどん質 問して下さ い。
 LINEサポート窓口
 ≫ https://lin.ee/3qvAwiFGB
 
 1

  3. 3. © PUREYES
  ≪電子部品型式≫
 ・LED OSDR3133A
 ・タクト スイッチ & 
  黄色 スイッチ カバー 
 ・人感センサ HC-SR501 
 ・カメラ
  500万画素ラズパイCSI端子用 
 ・モーター FA-130RA 
 ・モータードライバIC  
   TA7291P 
 又は 
 TB6612FBG
 ・電池 単4型2本
 ・電池ボックス 単4型2本用 
 ・ADコンバータ ADS1015 
 ・光センサ CdS GL5528 
 ・温度センサ SHT30 
 ・LCD文字表示器 1602 I2C 
 ・ピン付き電線
 (オス―メス20本、
 オス―オス10本)
 ・抵抗器 各10本
  100Ω 5.6kΩ 10kΩ  
 ・ブレッドボード  BB-801 
 2

  4. 4. © PUREYES
 3
 ラズパイ本体はScratch3を動作させる ために1GB以上のRAMを搭載した機種 が必要です。 ≪推奨機種≫ Raspberry Pi4 Raspberry Pi3 Model B+ Raspberry Pi3 Model B Raspberry Pi2 Model B
  5. 5. © PUREYES
 4

  6. 6. © PUREYES
 ラズベリーパイ GPIO と スクラッチ ではじめる
 電子工作 & ブロック プログラミング 速習キット[ 学習教材 ]
 目次
 Step1 Scratch3 で簡単プログラミング ・Lesson1 LED を点滅させてみよう ・Lesson2 スイッチ を使ってみよう ・Lesson3 人感センサ を使ってみよう ・Lesson4 監視 カメラ を作ってみよう ・Lesson5 モーターの正転逆転をやってみよう 
  
 5

  7. 7. © PUREYES
 ラズベリーパイ GPIO と スクラッチ ではじめる
 電子工作 & ブロック プログラミング 速習キット[ 学習教材 ]
 目次
 Step2 Python で本格 プログラミング ・Lesson6 Step1で作ったプログラムを Python で書いてみよう ・Lesson7 ADコンバータ と 光センサ で光量を測ってみよう ・Lesson8 温度センサ で温度を測ってみよう ・Lesson9 LCD 文字表示器に温度を表示してみよう 
  
 6

  8. 8. © PUREYES
 Step1 Scratch3 で簡単プログラミング
 
 Lesson1 LED を点滅させてみよう
 
 7

  9. 9. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 概要 
 LEDを点滅させる実習を通して配線の仕方、抵抗の選び方、Scratchプログラミングでのデジタル出 力をする方法までを学びましょう。
 
  
 8

  10. 10. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 電気回路の電流や電圧を変えたりと地味だけど実は重要な部品です。
 このレッスンではLEDに流す電流を決めています。電圧を変える方法についてはあとのモー タ―を制御するレッスンで解説します。
 【 本キットで使用している抵抗 】
 100Ω(茶黒黒黒茶) 5.1KΩ(緑茶黒茶茶)10KΩ(茶黒黒赤茶)
 部品解説 抵抗器
  
 9
 【抵抗のカラーコードの読み方】 抵抗にはカラーコードと呼ばれる帯が付いておりこれを読む ことで抵抗値や抵抗値のばらつき精度や温度特性が分かりま す。カラーコードは帯が4つ、5つ、6つのものが有り、それぞれ 右図のように読むことができます。
               
 

  11. 11. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 部品解説 LED(Light Emitting Diode 発光ダイオード)
  
 10
 
 LEDは足の長さに違いが有り、長い方がアノード、短い方をカソードと呼びます。
 アノードを + 、カソードを - に繋いで使用しますが電源等に直接接続すると定格電流を超えて最悪 爆発してしまいますのでここは慎重に。。必ず直列に抵抗を入れましょう。
 
 では抵抗値はどうやって決めるのでしょう?
 LEDの順方向電圧、定格電流、電源電圧の3つがわかれば下記のように計算できます。
 LEDの順方向電圧2V、定格電流0.02A、電源電圧3.3Vの場合、(3.3V-2V)÷ 0.02A=65Ωで65Ω以 上の抵抗をつければOKです。

  12. 12. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 部品解説 LED(Light Emitting Diode 発光ダイオード)
  
 11
 今回は入手性の良い100Ωを選択します。
 ちなみに100Ωの場合電流は(3.3V-2V)÷ 100Ω=13mAになります。
 抵抗値が大きければ暗くなり小さければ明るくなります。
 壊れますので定格より小さい抵抗はダメですよ。
 
 順方向電圧(VF):LED の両端に加わる電圧
 定格電流(IF):LED に流す電流
 電源電圧:RaspberryPiのピンから出力される電圧 3.3V
 
 電子部品の特性はインターネットに多数
 公開されているデータシートを見るとわ
 かりますので検索してみてください。
 
 

  13. 13. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 部品解説 ブレッドボード
  
 12
 たくさんの穴が各種電子部品の足のピッチに合わせた2.54mm間隔で空いていてここに電子部品を 差し込むことでハンダ付け等無しで電気配線がでる、電子工作の実験に便利なボードです。
 内部は電気的に下記の様につながっています。外側 2 列は横方向につながっており、主に電源用 として利用します。

  14. 14. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 RaspberryPi GPIO
 13

  15. 15. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 RaspberryPi GPIO
 14
 5V(●)3.3V(●)の端子は電池で例えるとプラス端子です。常時5.5Vまたは3.3Vが出力されています。Ground (●)は電池でいうところのマイナスです。
 その他の端子●はすべて入出力GPIOとして使用できます。プログラム時に入力に設定すればスイッチのON かOFFの状態を読んだりできますし、出力にすればLEDを付けたり消したりということができます。
 ≪ここに注意!≫
 ピンの順番とGPIO番号は異なるので配線の時はこの表と配線のイラストをしっかり見て間違えないようにしま しょう。
 
 Raspberry Pi 公式ドキュメントより引用 https://www.raspberrypi.org/documentation/usage/gpio/README.md
  16. 16. © PUREYES
 15

  17. 17. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 接続図
 16
 それでは接続イラストのように配線をしてみましょう。
 と、、ここで注意です。
 配線をする時は必ずラズパイの電源が切れていることを確認 してください。電源が入ったまま作業すると電子部品や大事な ラズパイ本体を破壊してしまうことになりかねませんのでここ は慎重に。
 電線はオスーメスのリボンケーブルを使用します。ちなみにこ のケーブルは何本も連なっていますが手で簡単に割けますの で必要な分だけ割いて使ってください。
 LEDは足が長い方を抵抗 およびGPIO18側にしま す。 詳しくはLesson1 部品説 明ページへ
  18. 18. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 回路
 17
 先ほどの接続図を回路図にするとこういう形になります。回路図なんか見るとエンジニアになった気分 ですね。
 
 回路で実現したいことのみが簡潔に書かれていますので、何か問題が起こったときに回路を調べるの に役立ちます。 あれっ と思ったときに見直してみてください。

  19. 19. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Scratch3
 18

  20. 20. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Scratch3 ソフトを起動する
 19
 デスクトップ右上のラズパイマーク→プログラミング →Scratch3をクリックします。 
 Scratch3が入っていない場合はラズパイ公式ページ から最新OSをダウンロードしてインストールしてくだ さい。
 https://www.raspberrypi.org/downloads/raspberry-pi-os/
 参考)Scratch3の導入に役立つブログ 
 https://www.raspberrypi.org/blog/scratch-3-desktop-for-raspbian-on-raspb erry-pi/
  21. 21. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Scratch3公式チュートリアル
 20
 Scratch3のチュートリアルボタンを押すとたくさんの 動画による解説が有りますのでまずはこの演習を何 個かやってScratchに慣れるのをおすすめします。
  22. 22. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Scratch3 文部科学省公式教師用教材
 21
 文部科学省公式scratch3教師用教材
 教師用として公開されていますが一般向けとしても非常にわかりやすいのでおすすめの動画です。 https://www.youtube.com/watch?v=ZQNDpS2GpvU&list=PLGpGsGZ3lmbDT1aiatXSOfKexgsjfzJ1F&index=3
  23. 23. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Scratch3 画面構成
 22
 カテゴリ ブロックパレットに 表示させるブロッ クの種類を選ぶ スクリプトエリア ここでプログラムを書きます。 ステージ プログラムの 実行結果や カメラで移し た画像が表 示されます。 ブロックパレット カテゴリで選んだ ブロックが表示さ れるので、ここか ら選んでスクリプト エリアにドラッグ& ドロップします。
  24. 24. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Scratch3 初期設定 拡張機能の追加
 23
 初期設定としてScratch3の拡張機能の追加を行います。
 
 ①左端のカテゴリバーの一番下の青いアイコンをクリックすると 拡張機能一覧が現れるのでRaspberrypiGPIOとビデオモーショ ンセンサーを選択してください。
 
 ②スクリプトエリアにRaspberrypiGPIOとビデオモーションセン サーのブロックが現れると追加完成です。
 
 ① ②
  25. 25. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング LEDを点滅させるプログラムを作ってみよう
 24
 見よう見まねで上記プログラムを作ってみましょう。 該当するカテゴリを選ぶとそのカテゴリのブロックがずらっと出てくるので該当するブロックをスクリプトエリ アにドラッグ&ドロップします。 ブロック中の白いエリアには文字や数字を記入できます。また、ドロップダウンボックスから該当のものを 選びましょう。
  26. 26. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング LEDを点滅させるプログラムの解説
 25
 旗が押されたときに以下が動き出します。 これに囲まれた部分を上から下へ指定回数繰り返します。 ラズパイGPIOの出力制御です。 GPIO18番ピンをhigh(3.3V)にします GPIO18番ピンをlow(0V)にします ステージの猫が LEDひかった と0.2秒言います 0.2秒待ちます ステージの猫が LEDひかった と0.2秒言います 0.2秒待ちます 10回終わったらステージの猫が おわり と言います スクラッチ公式 ブロック解説ページ https://ja.scratch-wiki.info/wiki/ブロック_(3.0)
  27. 27. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング LED点灯
 26
 猫ちゃんが LEDひかった!  LEDきえた! を10回繰り返して おわり と言っ てくれましたか? また猫ちゃんの言葉通り LEDが光ったり消えたりしたでしょうか? もしうまくいかなかったらもう一度配線やプログラムを見直して何が違うか考えて みましょう。 うまくいかなかった時の方が解決したときに深い理解が得られることが多いです よ。がんばってください! LEDは足が長い方を抵抗 およびGPIO18側にしま す。 詳しくはLesson1 部品説 明ページへ
  28. 28. © PUREYES
 Step1 Scratch3 で簡単プログラミング
 
 Lesson2 スイッチ を使ってみよう
 
 
 27

  29. 29. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 概要 
 Lesson1ではLEDを点滅させる演習でGPIOの出力について学びました。 今回はこれにスイッチを追加して入力について学びましょう。 
  
 28

  30. 30. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 タクトスイッチは真ん中のボタンを押すと左右の端子が
 導通します。
 右側上下どうしと左側上下どうしは常に繋がっています。
 
 部品解説 スイッチ
  
 29

  31. 31. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 接続図
 30
 今回はLesson1の回路にスイッチを追加します。
 

  32. 32. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 回路図
 31
 回路図だとこんな感じです

  33. 33. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング スイッチを使ってみよう
 32
 GPIO15ピンを※プルアップ付きのインプット端子に設定します。 前回は10回の繰り返しにしましたが今回はずっとをつかってみましょう もし でなければ という制御ブロックを使います。 high(3.3V)ならスイッチオフと言って LEDを消します。 high(3.3V)でなければスイッチオンと言って LEDを付けます。 ※プルアップ付きのインプットの場合スイッチを押さない 時3.3V、押すと0Vになります。 常時はプルアップされている 3.3Vで、スイッチを押すと GND(マイナス)と繋がるので 0Vになります。
  34. 34. © PUREYES
 Step1 Scratch3 で簡単プログラミング
 
 Lesson3 人感センサ を使ってみよう
 33

  35. 35. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 概要 
 このレッスンでは人感センサを入力デバイスに使います。 よく人がいるときだけ自動で点灯する電灯とかに使われていますね。 
  
 34

  36. 36. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 人体検知センサーは人体から出ている熱(赤外線)を検知して、人がいる、いない を判断するセンサーで す。
 人がいないとOUTからhighの電圧を出します。
 
 部品解説 人感センサHC-SR501
  
 35
 検知時間調整 5分(左いっぱい) ~ 3秒(右いっぱい) 検知距離調整 3m(左いっぱい) ~ 5m(右いっぱい) VCC 5V OUT HIGH(3V) /LOW(0V) GND
  37. 37. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 接続図
 36
 今回はLesson2の回路に人感センサを追加します。
 スイッチは今回使わないので外してもOKです。
 
 .
 

  38. 38. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 回路図
 37

  39. 39. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング 人感センサ
 38
 人感センサの出力端子と接続した GPIO4ピンを※プルダウン付き のインプット端子に設定します。 もし でなければ という制御ブロックを使います。 人感センサの出力が high(3.3V)なら だれかいる と言って LEDを点けま す。 人感センサの出力が high(3.3V)でなければ だれもいない と言って LED を消します。 ※プルダウン付きのインプットの場合外部から電圧をかけない時は 0V、外部か ら電圧をかけると外部から与えた電圧になります。 今回は人感センサの出力信号なので人が来ると high(3.3V)、常時は0Vです。
  40. 40. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング 人感センサ
 39
 プログラムを実行してみましょう。 センサに近づくとLEDが光り、離れて待つと消灯します。 ※延長時間が長すぎたり検知距離が遠すぎたりすると 待ったり離れたりするのが辛いので センサについている 2つのボリュームは共に 右いっぱいの状態から実験をは じめるといいでしょう。このボリューム設定時は3m以上 離れて約5秒待つと消灯します。 今回はLEDを光らせましたが人が来たらモーターを回し てゲートを動かして自動ドアのようなものを作るのも面白 いですね。ただしラズベリーパイの出力端子は数十ミリ アンペア程度した流せないのでモーター等大きな電流を 流す場合はリレーと呼ばれる電気的なスイッチを使う必 要が有ります。
  41. 41. © PUREYES
 Step1 Scratch3 で簡単プログラミング
 
 Lesson4 監視 カメラ を作ってみよう
 40

  42. 42. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 概要 
 Lesson3では人感センサを使って人がいる、いないを検出しました。 こんどはラズベリーパイ専用カメラを使って画像で人を検出しましょう。  
 41

  43. 43. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 ラズパイ3、4のカメラ専用端子につなぐことができる500万画素のカメラモジュールです。
 
 
 部品解説 カメラモジュール
  
 42
 コネクタの頭の部分を少し引くと隙間ができるのでそこに カメラから出ている白いフラットケーブルを差し込んで先 ほどのコネクタの頭部分をもとに戻します。 
 
 注意! 
 この作業は必ずラズパイの電源を抜いてから行ってくだ さい。これで壊してしまう事例がたくさんでています。 

  44. 44. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 接続図
 43
 Lesson1と同じです。
 カメラも接続します。
 
 .
 

  45. 45. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 回路図
 44

  46. 46. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 ラズパイのカメラを有効にする
 45
 RaspberryPiの設定画面を開きカメラと I2Cを有効にしておきま す。 I2Cはあとのレッスンで使用しますのでついでです。
  47. 47. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング ビデオモーションを使ってみよう
 46
 ビデオモーションのブロックです。 今 30 の数字が入っているところはカメラ感度の設定です。 0から100の数字を入れられて、 0数字が小さいと感度が良くなり数字 が大きいと感度が悪くなります。 カメラ画像に何かが動いたら猫ちゃんに だれかいる と言ってもらっ て同時にLEDを光らせます。 5秒たったら猫ちゃんの言葉と LEDを消します
  48. 48. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング ビデオモーションを使ってみよう
 47
 スクラッチ3の拡張機能ビジョンモーションセンサを使ってみました。この写真のようにカメラに手などの動くものをかざすと ちゃんと猫ちゃんやLEDが反応してくれます。 一般的なC言語等のプログラムでこれを実現しようと思うとかなり難しい内容になりますが、この拡張機能を使うとこんなに 簡単に実現出来てしまいます。 Scratch3って素晴らしいですね。
  49. 49. © PUREYES
 Step1 Scratch3 で簡単プログラミング
 
 Lesson5 モーターの正転逆転をやってみよう
 
 48

  50. 50. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 概要 
 Step1 Scratch3編の最後のレッスンです。 このレッスンではモーターとモータードライバICを使ってラズパイGPIOでは扱えない大きな電 流が 流れる回路の作成方法とそれをどうプログラムしていくのかを見ていきます。 ※2020年9月出荷分以降のキットから随時モータードライバICがTA7291P→TB6612FBGに変更 しております。(TA7291Pのメーカー製造中止の為) 本レッスンではそれぞれについて解説しておりますのでお手元のキットに入っているモータードライ バのページをご参照くださいませ。 49
                モータ ―ドライバIC           TA7291P                    TB6612FBG 2020/9/10 V106 TB6612FBG追記
  51. 51. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 直流電圧1.5V~3V 電流0.2A で動くモーターです。
 
 
 部品解説 モーター & モータードライバIC
  
 50

  52. 52. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 モーターの正回転、逆回転、ストップ、
 速度制御をするためのICです。
 ピンがたくさん有って難しそうですが 
 ”習うよりなれよ” でまずは接続して動作を
 確認していきましょう。
 動きを見てからこの表を眺めると理解が速い
 と思います。
 電圧25V 電流1Aまで使えます。
 
 部品解説 モータードライバIC TA7291P
  
 51
 PIN 記号 説明 ① GND GND ② OUT1 モーターと接続 ③ 未使用 - ④ Vref PWM出力と接続 (Vsより小さい電圧 が必要) ⑤ IN1 GPIOの出力と接続 ⑥ IN2 GPIOの出力と接続 ⑦ Vcc ICの電源(5V) ⑧ Vs モーター駆動用電 源 ⑨ 未使用 - ⑩ OUT2 モーターと接続
  53. 53. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 こちらはモータードライバICの真理値表です。
 モードの列にモーターの状態(ストップ、正転、逆転、ブレーキ)が書かれていますのでやりたいモードの左側 を見ると入力ピン(IN1,IN2)の状態と出力ピン(OUT1,OUT2)の状態が分かります。
 入力ピンをGPIOでやりたいモードの状態にすると出力に書かれている状態になってモード通りの動作になり ます。
 部品解説 モータードライバIC TA7291P
  
 52
 入力 出力 モード IN1 IN2 OUT1 OUT2 Low(0V) Low(0V) 回路と分離 回路と分離 ストップ high(3.3V) Low(0V) 3V GND モーター正転 Low(0V) high(3.3V) GND 3V モーター逆転 high(3.3V) high(3.3V) GND GND ブレーキ
  54. 54. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 接続図 モータードライバ TA7291P 使用時
 53
 今回はモータードライバICの使い方がちょっと複雑なので集中 してこのICの使い方を学んでいただくためにシンプルにモー タードライバICとモーターに関係する回路だけにしました。
 .

  55. 55. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 回路図 モータードライバ TA7291P 使用時
 54
 ≪抵抗による電圧変更≫ TA7291P_ICのVref端子にはVccより も低い電圧が必要なので R2とR3の 抵抗で電圧を変えています 今回のように同じ抵抗値のものを直 列に2本使う場合はそれぞれの抵抗 の両端の電圧が半分になります。
  56. 56. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 モーターの正回転、逆回転、ストップ、速度制御をするためのICです。
 TB6621FBGはA、B最大2個のモーターを接続できます。今回はAのみ使用します。
 電圧13.5V 電流1.2Aまでのモーターで使えます。
 
 部品解説 モータードライバIC TB6621FBG
  
 55
 PIN 記号 説明 ① VM モーター用電源接続 (3V) ② Vcc ICの電源(5V) ③ GND GND ④ A1 モーターA接続 ⑤ A2 モーターA接続 ⑥ B1 モーターB接続 ⑦ B2 モーターB接続 ⑧ GND GND PIN 記号 説明 ⑯ PWM A ラズパイGPIOのPWM接続 モーターA用 ⑮ A IN2 ラズパイGPIOのIN2接続 モーターA用 ⑭ A IN1 ラズパイGPIOのIN2接続 モーターA用 ⑬ STBY 5Vに接続 ⑫ B IN1 ラズパイGPIOのIN1接続 モーターB用 ⑪ B IN2 ラズパイGPIOのIN2接続 モーターB用 ⑩ PWM B ラズパイGPIOのPWM接続 モーターB用 ⑨ GND GND 2020/9/10 V106 TB6612FBG追記
  57. 57. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 こちらはモータードライバICの真理値表です。
 モードの列にモーターの状態(ストップ、正転、逆転、ブレーキ)が書かれていますのでやりたいモードの左側 を見ると入力ピン(AIN1,AIN2)の状態と出力ピン(A1,A2)の状態が分かります。
 入力ピンをGPIOでやりたいモードの状態にすると出力に書かれている状態になってモード通りの動作になり ます。
 部品解説 モータードライバIC TA7291P
  
 56
 入力 出力 モード AIN1 (BIN1) AIN2 (BIN2) A1 (B1) A2 (B2) Low(0V) Low(0V) 回路と分離 回路と分離 ストップ high(3.3V) Low(0V) 3V GND モーター正転 Low(0V) high(3.3V) GND 3V モーター逆転 high(3.3V) high(3.3V) GND GND ブレーキ 2020/9/10 V106 TB6612FBG追記
  58. 58. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 接続図 モータードライバ TB6612FBG 使用時
 57
 今回はモータードライバICの使い方がちょっと複雑なので集中 してこのICの使い方を学んでいただくためにシンプルにモー タードライバICとモーターに関係する回路だけにしました。
 .
2020/9/10 V106 TB6612FBG追記
  59. 59. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 回路図 モータードライバ TB6612FBG 使用時
 58
 2020/9/10 V106 TB6612FBG追記
  60. 60. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング 変数の作り方
 59
 今回は変数を使用しますので変数の作り方から説明します。 変数はよく何かを入れる箱という説明がされます。変数(箱)にわかり やすい名前をつけておくことでプログラムが読みやすくなります。 とはいえはじめての場合すぐに理解するのはむずかしいのでまずは 作ってみることをおすすめします。 作り方は簡単です。 左端のカテゴリから変数をクリック ↓ 変数を作る をクリック ↓ 後で見てわかりやすい変数名を入力して  OK ボタンを押す ↓ 変数パレットに今入力した名前の丸い変数が出来ていれば完成で す。その下のブロック中のドロップダウンボックスにも今作った変数名 が追加されています。
  61. 61. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング モーター回転
 60
 変数が出来たらそれを使ってプログラムをつくっていきましょう。 モーター回転、逆転、ストップの3つのプログラムを別々に作ります。 イベントブロックの”上向き矢印”を選ぶことでパソコンのキーボードの上 向き矢印キーを入力デバイスとして使います。 ラズパイGPIOのピン番号の選択とその状態( highかlowか)を指定しま す。 これはモータードライバ ICの部品説明のところの真理値表を見ながら 指定しましょう。PWMは常にhighでOKです。 IN1・・・high IN2・・・low ですね。 本当はここでモーターの回転数を制御したいのですが Scratch3では現 状できません。 IN1,IN2,PWMは変数ブロックです。前のページを見ながら変数を作っ てみましょう。 モータードライバICのピン名称=変数名としたことで何の変数なのかが すぐにわかるようにしています。 27は下のブロックで使います。 IN1等に 接続したGPIOピンの番号を入れます。 猫ちゃんに モーター回転 と言ってもらうようにしておきましょう
  62. 62. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング モーター逆回転
 61
 次は逆回転のプログラムです。先ほどの回転のプログラムの下に書け ばOKです。 イベントブロックの”下向き矢印”を選ぶことでパソコンのキーボードの上 向き矢印キーを入力デバイスとして使います。 今度は逆回転なので、 IN1・・・low IN2・・・high を指定します。 IN1,IN2,PWMの変数ブロックでのGPIOピンの指定は同じです。 猫ちゃんに モーター逆回転 と言ってもらうようにしておきましょう
  63. 63. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング モーターストップ
 62
 最後に ストップ のプログラムです。 イベントブロック の キーが押されたとき で スペース を選ぶことでパソ コンのキーボードのスペースキーを入力デバイスとして使います。 今度はストップなので、 IN1・・・high IN2・・・high を指定します。 IN1,IN2,PWMの変数ブロックでのGPIOピンの指定は同じです。 猫ちゃんに モーターストップ と言ってもらうようにしておきましょう
  64. 64. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング モーター
 63
 接続とプログラムが完成したら実際に動かしてみましょう。電池ボックスには電源スイッチが有るのでこれを ONしてからは じめましょう。 キーボードの矢印キーやスペースキーを押して意図したとおりモーターは動作しましたでしょうか? 今回はラズパイの出力では直接扱えない大きな電流が流れるモーターを制御する方法を学びました。今回使った専用 IC でなくてもリレー等でも大電流を ON/OFFすることは可能ですのでインターネットで検索してみてください。
  65. 65. © PUREYES
 Step2 本格 Python プログラミングに挑戦
 
 Lesson6 Step1で作ったプログラムを Python で書いてみよう
 64

  66. 66. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 Python
 65

  67. 67. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Python公式ページ
 66
 最初にPythonの公式ページを紹介しておきます。 特にチュートリアルにはPythonのプログラムに関することがしっかり書かれていますので辞書代わりにしていただ くといいですね。 Python公式ページ https://docs.python.org/ja/3/index.html#
  68. 68. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Thonny Python IDE ソフト立ち上げ 
 67
 ラズパイOSに標準で付いている Thonny Python IDE というソフトを立ち上げます。 無い場合はStep1 Scratch3を参照して編最新OSにアップデートして下さい。
  69. 69. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Thonny Python IDE の画面構成 
 68
 Thonny Python IDEの公式ページ
 https://thonny.org/ 新規 作成 ファイル 開く ファイル 保存 プログラ ム実行 プログラムス トップ プログラムの単純な間違 い等を指摘してくれる強 い味方です。 英語が苦手な方は翻訳 ソフト等で翻訳するとい いですね。 ここにプログラ ムを書きます プログラム実行 ボタンを押す と、ここに動作 状態やプログラ ムで指定した文 字が表示され ます。
  70. 70. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson1LED点滅 の Python プログラム 
 69
 Lesson1のプログラムをPythonで書くとこうなります。 プログラムはこの教材のダウンロードページでダウンロードできるのでまずは動作させてみたいという方はそれを読み込ん でもOKです。 import は外部のモジュールを読み込む時に使用します。 RPi.GPIO というモジュールを読み込みそれを GPIOという名前で 使用するという意味です。 2行目はtimeモジュールの中にある sleep関数を読み込んでいま す。 ラズパイGPIOピンの番号をBCM(GPIO番号)にする。(ピン番号で はなくGPIO番号) GPIO18番ピンを出力に設定 10回繰り返す forは繰り返しの関数 18番ピンをhighにしてLEDひかった!という文字を表示する 0.2秒待つ 18番ピンをlowにしてLEDきえた!という文字を表示する 0.2秒待つ GPIOの状態を初期化 おわり という文字を表示する
  71. 71. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson2 スイッチ入力 の Python プログラム 
 70
 GPIO15番ピンをプルアップに設定 while true: は以下の動作をずっと繰り返す時につかいますす。 tryは例外処理が入りそうな時に使います。 何か例外が起こった時に下に続く finally 以下の処理を行います。 今回の場合GPIOを初期化しています。
  72. 72. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson3 人感センサ入力 の Python プログラム 
 71
 Lesson2とinputのGPIO番号以外同じです。
  73. 73. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson4 ビデオモーション の Python プログラム ライブラリのインストール 
 72
 1~5行目はコメントです。#を先頭に付けて使用します。 プログラムの動作には影響を及ぼしませんがメモとして 活用できます。 今回はこの1~5行目のコメントに書かれている文字をラ ズパイのLXTerminalに打ち込んで実行することでビデオ モーションを実現するための外部ライブラリをインストー ルします。 ラズパイの左上に並んでいるアイコンの中から黒いアイ コンがLXTerminalなのでこれをクリックして立ち上げま す。 Pythonから1行づつコピーしてLXTerminalに貼り付けて キーボードのEnterを押します。 すると自動的にインストールが行われます。 ※1行目の opencv はPythonのバージョンが3.8*には まだ対応していません ので、もしPython3.8*をお使いの 時はPython3.7*にダウングレードをお願いします。 終わったらPythonの 2行目~4行目も順に実行しましょ う。 インストールがうまくいかない時はラズパイがインター ネットに繋がっているかどうか確認してみてください。
  74. 74. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson4 ビデオモーション の Python プログラム ライブラリのインストール 
 73

  75. 75. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson4 ビデオモーション の Python プログラム 
 74
 ラズパイに接続されているカメラの番号を指定します。 1台しか接続していないときは0番で OKです 写真のサイズを幅WIDTH、高さHEIGHT別に指定します。 avgという変数名を定義している カメラ画像を読み込む ラズパイのデスクトップ上にカメラ画像を表示する 1ミリ秒ごとに画像を更新 画像を白黒にする(判定精度を上げる為)
  76. 76. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson4 ビデオモーション の Python プログラム 
 75
 過去の画像が無い場合は今の画像をセット 過去の画像(基準画像)と撮影中画像の変化量を計算しま す。 上記で計算した変化量が閾値(1000)を超えたら なんかいたよ!パチリ という文字を表示して画像の保管( 38行 目で指定したパスとファイル名)を行います。 1000の部分を変更すると感度が変わります 。 スクラッチの時の ビデオモーション>30のとき の箇所と同じ感 じです。
  77. 77. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson5 モーター制御 の Python プログラム 
 76
 今回は curses というキーボード操作を GPIOの制御に使うので Thonny Python IDE ではプログラム実行の時にエ ラーが出ます。 いい機会ですのでまずは LXTerminalからPython3を実行する方法 を学びましょう 先のレッスンで使った LXTerminalのアイコンをクリック して立ち上げ LXTerminal上で下記を入力して Enterキーを押す   Python3 5_MORTOR.py 5_MORTOR.py はこのレッスンのプログラムファイル名 です。 ラズパイの /home/pi フォルダにいれましょう。 このファイル上で右クリック、プロパティ ―で名前のとこ ろをコピーしてLXTerminalに貼り付けると確実です。
  78. 78. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson5 モーター制御 の Python プログラム 
 77
 curses をインポートしてキーボード操作をプログラムで使用 できるようにします
  79. 79. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson5 モーター制御 の Python プログラム 
 78
 キーボードの z を押すとモーターが正転 、x で逆転 、cで ストップ します 何か例外が起こった時は終了処理を行う。  GPIOの初期化、キーボード入力を表示させる、通常の端 末状態に戻す LXTerminalでPythonプログラムを止めたいときは Ctrl+Cを 押します。
  80. 80. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson5 モーター制御 の Python プログラム  PWM制御追加
 79
 せっかくPythonを使うのでさきほどのモーター制御のプログ ラムにPWMでの回転数変更機能を追加してみましょう。 5_MOTOR_PWM.py というプログラムを先ほどの LXterminalから起動してください。 ≪≪ PWM(Pulse Width Modulation)って何?? ≫≫ 
 
 スイッチオン/オフの比率を変化させてモーターの速度や LED等の光の強さを変化させることができる方法です。 
 オン/オフの比率のことをデューティー比といいます。 
 

  81. 81. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson5 モーター制御 の Python プログラム  PWM制御追加
 80
 キーボードのボタンと動作の対応は下記になっています A =正転&PWMup Z =正転&PWMdown S =逆転&PWMup X =逆転&PWMdown C =ストップ キーボードの a が押されて かつ( and) dutyが100より小さい場合、 dutyに10を加えます IN1,IN2をTA7291Pの真理値表にしたがって 正転に設定しています。( IN1=HIGH、 IN2=LOW) 以下 elif からはじまる文でその他のキー (z,s,x,c)も設定しています。 elif は else if の意味で、上の行で使った if文 と違う内容で、さらに if文を作りたい時に使用 します。 key_in.getch() でキーボードの操作を受け 取ります。
  82. 82. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング Lesson5 モーター制御 の Python プログラム  PWM制御追加
 81

  83. 83. © PUREYES
 Step2 本格 Python プログラミングに挑戦
 
 Lesson7 ADコンバータ と 光センサ で光量を測ってみよう
 
 82

  84. 84. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 概要 
 このレッスンでは光センサのアナログ信号を取り込む方法を学習します。 実はラズパイGPIOにはアナログ信号を直接取り込める端子が有りません。 その為アナログ信号をデジタル信号に変換するADS1015というICに間に入ってもらいます。  
 83

  85. 85. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 光の量で抵抗値が変わる素子です。 
 これに抵抗と電源をつなげてその分圧される電圧を測定することで光の強弱を知ることができます。 
 昔のフィルムカメラで光量の測定によく使われていました。 
 部品解説 光センサ(CdSセル GL5528)
  
 84

  86. 86. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 部品解説 AD変換IC ADS1015
  
 85
 ALERT 閾値を設けて出力を出すことができます。今回は使用しません。 SCL,SDA I2Cという通信をするための端子です。 V、G ICの電源です。2~5Vで動作します。 ADDR  複数のADS1015を使用するときにI2Cアドレスを切り替える端子です。 ≪I2Cアドレス≫  接続なし:0x48 Vに接続:0X49 SDA接続:0x4A SCL接続:0x4B A0~A3 アナログ入力  4つのアナログ信号を同時に扱えます。今回は A0だけを使用します。 ADコンバータは光センサ等からのアナログ電圧を取り込んでラズパイ等が 扱えるI2C通信用信号に変換する部品です。 アナログは連続的に変化する値のことです。今回はラズパイ GPIOで使い やすいように0~3.3Vの電圧を扱いますが 2.23456とか中途半端な電圧も もちろんでてきます。 デジタルは0か1かという 2値だけの値です。通信規格通りに大量の0と1を 並べることでアナログ値をラズパイ等デジタル機器で扱えるデジタル信号 に変換しています。
  87. 87. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 接続図
 86
 200722 V103 ADS部配線修正
  88. 88. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 回路図
 87
 200722 V103 AIN0配線修正
  89. 89. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング ADコンバータと光センサによるアナログ値の読み取り
 88
 前回同様1,2行目の外部ライブラリを LXTerminalでインストールして おきましょう。 変数GAINとadcを設定 Adafruit_ADS1x15モジュールからADS1015をインポートします ADコンバータ(ADS1015)の読み込みチャンネルとゲインを設定。 ADS1015の4つの出力の0チャンネルを使用。電圧値に換算するため に500で割っています。 1V以上の時に 明るいね ~V 1V未満は 暗いね ~V と表示するよ うにしています。 通信エラーが出る場合はカメラのレッスンで行ったラズパイの I2C通信 機能の設定がONになっているか確認してください。
  90. 90. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 I2Cアドレスの確認方法
 89
 I2Cデバイスを使っている時にアドレスがわからなくなった時に調べる方法です。 LXTerminalを起動 ↓ sudo i2cdetect -y 1 を入力してキーボードの Enterを押す ↓ 接続されているデバイスのところに数字が表示されている この例では 0x44 が接続されているI2Cデバイスのアドレスです。 ちなみに 0x と書くのはあとに続く数字が hex(16進数) ですよ、という意味です。
  91. 91. © PUREYES
 Step2 本格 Python プログラミングに挑戦
 
 Lesson8 温度センサ で温度を測ってみよう
 90

  92. 92. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 今度はSHT30という温湿度センサを使って温度、湿度を測定する方法をまなびましょう。 
 このセンサもI2C通信を使って情報を取得しますがライブラリがまだ公開されていません。 
 そこでいい機会ですのでI2Cデータを直接扱う方法についてみていきましょう。 
 ただ、このあたりはプログラミングの知識とともに電子部品のデータシートを理解する能力が必要ですので、とりあへずこ のレッスンのプログラムを動作させてみて温度や湿度が取得できる体験をしてみるだけでもいいですね。 
 
 
 概要
  
 91

  93. 93. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 部品解説 温湿度センサ(SHT30)
 I2C通信によってラズパイなどに温度と湿度を送ることができる部品です。 
 先ほど行った光素子ではADコンバータが必要でしたが、こちらはADコンバータが部品に内臓されていますの で使いやすいです。 
 
  
 92
 SCL,SDA I2Cという通信をするための端子です。 V、G ICの電源です。2.2~5.5Vで動作します。 ≪測定範囲≫ 温度:0~65℃  湿度:10~90% ≪I2Cアドレス≫ 0x44
  94. 94. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 接続図
 93
 2020/7/12 v102 + - sda scl の誤配線を修 正
  95. 95. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 回路図
 94
 2020/7/12 v102 + - 逆を修正
  96. 96. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング 温湿度センサSHT30
 95
 I2C通信用のライブラリ  smbus をimportします I2CのBUSを1に設定(0か1 初期のラズパイ以外は1で OK) get_temperature_humidity()という関数を定義します。 SHT30から受け取った2進数データから温度の部分を抜き取って人間 がわかる ℃ 単位に換算します。0bはあとに続く数値が2進数ですよ という記号です。あとで説明します。 温度 湿度 を表示します 同じく湿度の部分を抜き取って人間がわかる %RH(相対湿度) 単位 に換算します。 SHT30のI2Cアドレス0x44に0x23、0x34を送信することで温湿度の連 続取得モードに設定しています 6バイト(8ビットを6個)分の温度湿度データを取得しています。
  97. 97. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 2進数、10進数、16進数について
 96
 パソコンについている電卓をプログラマー電卓にすると簡 単に計算できます。 2進数(bin) 0と1だけで表す数値 プログラムでは 0b から始めることであとに続く数値を 2 進数データであることを示します。コンピュータが扱える 数値です。 例:1111 16進数(hex) 0123456789ABCDEFで表す数値 プログラムでは 0x から始めることであとに続く数値を 16 進数データであることを示します。2進数を人間が読み やすくするために16進数に変換します。 例:F 10進数(dec) 0123456789で表す数値 私達が普段使っているおなじみの数値ですね。 例:15
  98. 98. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 2進数、10進数、16進数について
 97
 2進 数 Bin 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 16 進数 Hex 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 進数 Dec 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  99. 99. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング 温湿度センサSHT30
 98
 SHT30のデータシートから今回使用した部分を参考に貼り付けます。 雰囲気だけでも眺めてみてください。 6バイトのデータに温度、湿度データが入っている  1バイト=8ビット(2進数数字が8個)
  100. 100. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング 温湿度センサSHT30
 99

  101. 101. © PUREYES
 Step2 本格 Python プログラミングに挑戦
 
 Lesson9 LCD 文字表示器に温度を表示してみよう 
 100

  102. 102. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 最後のレッスンです。 
 前のレッスンで取得した温度、湿度をLCD表示器に表示させてみましょう。 
 概要
  
 101

  103. 103. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 部品解説 LCD表示器(Liquid Crystal Display)
 液晶画面に数字や文字を表示することができる表示器です。 
 これもI2C通信を使って接続します。 
  
 102
 SCL,SDA I2Cという通信をするための端子です。 V、G ICの電源です。5Vで動作します。 I2Cアドレス:0x27 LCDコントラスト調整用ボリューム抵抗 ※LCDの文字が見えない、見えづらいというときはこれを回 して調整してください。
  104. 104. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 接続図
 103
 200727 v104 SHT30 VCCとGNDの配線を修正  200812 v105 SDA SCL の配線を修正
  105. 105. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 回路図
 104
 200727 v104 SHT30 VCCとGNDの配線を修正  200812 v105 SDA SCL の配線を修正
  106. 106. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング LCD表示器に温度と湿度を表示
 105
 i2c_read_7 は温湿度センサのレッスンで作ったプログラムです。 同じフォルダに入れることでモジュールとして使うことができます 各変数を記述しています
  107. 107. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング LCD表示器に温度と湿度を表示
 106
 LCDを初期化しています
  108. 108. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング LCD表示器に温度と湿度を表示
 107

  109. 109. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング LCD表示器に温度と湿度を表示
 108
 それぞれの関数は下記を行っています。 lcd_string   文字列として入力を受け取る lcd_byte   文字入力をビット列に変換 lcd_toggle_enable  LCDにビット列を書き込む
  110. 110. © Presentation Design© Presentation Design© PUREYES
© PUREYES
 プログラミング LCD表示器に温度と湿度を表示
 109
 I2C_READ_7 は温湿度センサの時に作ったプログ ラムです。 lcd_string(f' の後の ondo___ 部分はTemp等 のお好きな半角文字を入れると LCDに表示ができ ますので試してみてください。  
  111. 111. © PUREYES
 
 110
 http://pureyes.webstarterz.com

PUREYES ラズパイ

Views

Total views

12,505

On Slideshare

0

From embeds

0

Number of embeds

12,338

Actions

Downloads

4

Shares

0

Comments

0

Likes

0

×