SlideShare uma empresa Scribd logo
1 de 111
Baixar para ler offline
© PUREYES

ラズベリーパイ GPIO と スクラッチ ではじめる

電子工作 & ブロック プログラミング 速
習キット

[ 学習教材 V106 ]

http://pureyes.webstarterz.com
© PUREYES

はじめに

● PUREYES(プレイズ)ラズベリーパイ GPIO と スクラッチ ではじめる 電子工作 & ブロック プロ
グラミング 速習キット をお買い上げいただき誠にありがとうございます。


● ラズベリーパイGPIO(ハード)やスクラッチ(ソフト)の登場で電子工作やプログラミングが気軽に
学べる時代になってきました。

● 本書は豊富なイラストと平易な文章を使って初心者の方がサクサク学べるようにやさしく仕上げ
ました。また、わからないところはLINEでのサポートも行っていますのでどんどん質 問して下さ
い。

LINEサポート窓口

≫ https://lin.ee/3qvAwiFGB



1

© 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

© PUREYES

3

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

4

© PUREYES

ラズベリーパイ GPIO と スクラッチ ではじめる


電子工作 & ブロック プログラミング 速習キット[ 学習教材 ]


目次

Step1 Scratch3 で簡単プログラミング
・Lesson1 LED を点滅させてみよう
・Lesson2 スイッチ を使ってみよう
・Lesson3 人感センサ を使ってみよう
・Lesson4 監視 カメラ を作ってみよう
・Lesson5 モーターの正転逆転をやってみよう


 

5

© PUREYES

ラズベリーパイ GPIO と スクラッチ ではじめる


電子工作 & ブロック プログラミング 速習キット[ 学習教材 ]


目次

Step2 Python で本格 プログラミング
・Lesson6 Step1で作ったプログラムを Python で書いてみよう
・Lesson7 ADコンバータ と 光センサ で光量を測ってみよう
・Lesson8 温度センサ で温度を測ってみよう
・Lesson9 LCD 文字表示器に温度を表示してみよう


 

6

© PUREYES

Step1 Scratch3 で簡単プログラミング



Lesson1 LED を点滅させてみよう



7

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

概要 

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




 

8

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

電気回路の電流や電圧を変えたりと地味だけど実は重要な部品です。


このレッスンではLEDに流す電流を決めています。電圧を変える方法についてはあとのモー
タ―を制御するレッスンで解説します。


【 本キットで使用している抵抗 】


100Ω(茶黒黒黒茶) 5.1KΩ(緑茶黒茶茶)10KΩ(茶黒黒赤茶)


部品解説 抵抗器

 

9

【抵抗のカラーコードの読み方】
抵抗にはカラーコードと呼ばれる帯が付いておりこれを読む
ことで抵抗値や抵抗値のばらつき精度や温度特性が分かりま
す。カラーコードは帯が4つ、5つ、6つのものが有り、それぞれ
右図のように読むことができます。


              



© 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です。

© 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



電子部品の特性はインターネットに多数


公開されているデータシートを見るとわ


かりますので検索してみてください。






© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

部品解説 ブレッドボード

 

12

たくさんの穴が各種電子部品の足のピッチに合わせた2.54mm間隔で空いていてここに電子部品を
差し込むことでハンダ付け等無しで電気配線がでる、電子工作の実験に便利なボードです。


内部は電気的に下記の様につながっています。外側 2 列は横方向につながっており、主に電源用
として利用します。

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

RaspberryPi GPIO

13

© 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
© PUREYES

15

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

接続図

16

それでは接続イラストのように配線をしてみましょう。


と、、ここで注意です。

配線をする時は必ずラズパイの電源が切れていることを確認
してください。電源が入ったまま作業すると電子部品や大事な
ラズパイ本体を破壊してしまうことになりかねませんのでここ
は慎重に。

電線はオスーメスのリボンケーブルを使用します。ちなみにこ
のケーブルは何本も連なっていますが手で簡単に割けますの
で必要な分だけ割いて使ってください。


LEDは足が長い方を抵抗
およびGPIO18側にしま
す。
詳しくはLesson1 部品説
明ページへ
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

回路

17

先ほどの接続図を回路図にするとこういう形になります。回路図なんか見るとエンジニアになった気分
ですね。



回路で実現したいことのみが簡潔に書かれていますので、何か問題が起こったときに回路を調べるの
に役立ちます。 あれっ と思ったときに見直してみてください。


© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Scratch3

18

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Scratch3 ソフトを起動する

19

デスクトップ右上のラズパイマーク→プログラミング
→Scratch3をクリックします。 

Scratch3 が入っていない場合は LXterminal に下記
を入力して ENTERキー を押していただくと自動的に
インストールされます。 



sudo apt get scratch3 



LXterminal
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Scratch3公式チュートリアル

20

Scratch3のチュートリアルボタンを押すとたくさんの
動画による解説が有りますのでまずはこの演習を何
個かやってScratchに慣れるのをおすすめします。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Scratch3 文部科学省公式教師用教材

21

文部科学省公式scratch3教師用教材


教師用として公開されていますが一般向けとしても非常にわかりやすいのでおすすめの動画です。
https://www.youtube.com/watch?v=ZQNDpS2GpvU&list=PLGpGsGZ3lmbDT1aiatXSOfKexgsjfzJ1F&index=3
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Scratch3 画面構成

22

カテゴリ
ブロックパレットに
表示させるブロッ
クの種類を選ぶ
スクリプトエリア
ここでプログラムを書きます。
ステージ
プログラムの
実行結果や
カメラで移し
た画像が表
示されます。
ブロックパレット
カテゴリで選んだ
ブロックが表示さ
れるので、ここか
ら選んでスクリプト
エリアにドラッグ&
ドロップします。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Scratch3 初期設定 拡張機能の追加

23

初期設定としてScratch3の拡張機能の追加を行います。




①左端のカテゴリバーの一番下の青いアイコンをクリックすると
拡張機能一覧が現れるのでRaspberrypiGPIOとビデオモーショ
ンセンサーを選択してください。



②スクリプトエリアにRaspberrypiGPIOとビデオモーションセン
サーのブロックが現れると追加完成です。




① ②
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング LEDを点滅させるプログラムを作ってみよう

24

見よう見まねで上記プログラムを作ってみましょう。
該当するカテゴリを選ぶとそのカテゴリのブロックがずらっと出てくるので該当するブロックをスクリプトエリ
アにドラッグ&ドロップします。
ブロック中の白いエリアには文字や数字を記入できます。また、ドロップダウンボックスから該当のものを
選びましょう。
© 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)
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング LED点灯

26

猫ちゃんが LEDひかった!  LEDきえた! を10回繰り返して おわり と言っ
てくれましたか?
また猫ちゃんの言葉通り LEDが光ったり消えたりしたでしょうか?
もしうまくいかなかったらもう一度配線やプログラムを見直して何が違うか考えて
みましょう。
うまくいかなかった時の方が解決したときに深い理解が得られることが多いです
よ。がんばってください!
LEDは足が長い方を抵抗
およびGPIO18側にしま
す。
詳しくはLesson1 部品説
明ページへ
© PUREYES

Step1 Scratch3 で簡単プログラミング



Lesson2 スイッチ を使ってみよう





27

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

概要 

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


 

28

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

タクトスイッチは真ん中のボタンを押すと左右の端子が


導通します。

右側上下どうしと左側上下どうしは常に繋がっています。




部品解説 スイッチ

 

29

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

接続図

30

今回はLesson1の回路にスイッチを追加します。




© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

回路図

31

回路図だとこんな感じです

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング スイッチを使ってみよう

32

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

Step1 Scratch3 で簡単プログラミング



Lesson3 人感センサ を使ってみよう

33

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

概要 

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


 

34

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

人体検知センサーは人体から出ている熱(赤外線)を検知して、人がいる、いない を判断するセンサーで
す。

人がいないとOUTからhighの電圧を出します。




部品解説 人感センサHC-SR501

 

35

検知時間調整
3秒(右いっぱい)
~
5分(左いっぱい)
検知距離調整
3m(右いっぱい)
~
5m(左いっぱい)
VCC
5V
OUT
HIGH(3V)
/LOW(0V)
GND
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

接続図

36

今回はLesson2の回路に人感センサを追加します。


スイッチは今回使わないので外してもOKです。




.



© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

回路図

37

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング 人感センサ

38

人感センサの出力端子と接続した GPIO4ピンを※プルダウン付き
のインプット端子に設定します。
もし でなければ という制御ブロックを使います。
人感センサの出力が high(3.3V)なら だれかいる と言って LEDを点けま
す。
人感センサの出力が high(3.3V)でなければ だれもいない と言って LED
を消します。
※プルダウン付きのインプットの場合外部から電圧をかけない時は 0V、外部か
ら電圧をかけると外部から与えた電圧になります。
今回は人感センサの出力信号なので人が来ると high(3.3V)、常時は0Vです。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング 人感センサ

39

プログラムを実行してみましょう。
センサに近づくとLEDが光り、離れて待つと消灯します。
※延長時間が長すぎたり検知距離が遠すぎたりすると
待ったり離れたりするのが辛いので センサについている
2つのボリュームは共に 右いっぱい(半時計周りいっぱ
い)の状態から実験をはじめるといいでしょう。このボ
リューム設定時は3m以上離れて約3秒待つと消灯しま
す。
今回はLEDを光らせましたが人が来たらモーターを回し
てゲートを動かして自動ドアのようなものを作るのも面白
いですね。ただしラズベリーパイの出力端子は数十ミリ
アンペア程度した流せないのでモーター等大きな電流を
流す場合はリレーと呼ばれる電気的なスイッチを使う必
要が有ります。
© PUREYES

Step1 Scratch3 で簡単プログラミング



Lesson4 監視 カメラ を作ってみよう

40

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

概要 

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

41

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

ラズパイ2、3、4のカメラ専用端子につなぐことができる500万画素のカメラモジュールです。


、



部品解説 カメラモジュール

 

42

コネクタの頭の部分を少し引くと隙間ができるのでそこ
にカメラから出ている白いフラットケーブルを差し込ん
で先ほどのコネクタの頭部分をもとに戻します。 



注意!

カメラ接続時は電源を抜いてから行って下さい。  

また、カメラが動作しない場合は以下を 

ご確認お願いします。 

①フラットケーブルの差し込み方向が逆になっていな
いか?

②カメラのレンズ部上に有る横長四角で茶色のコネク
タが外れていないか? 



© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

接続図

43

Lesson1と同じです。

カメラも接続します。



.



© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

回路図

44

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

ラズパイのカメラを有効にする

45

RaspberryPiの設定画面を開きカメラと I2Cを有効にしておきま
す。
I2Cはあとのレッスンで使用しますのでついでです。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング ビデオモーションを使ってみよう

46

ビデオモーションのブロックです。
今 30 の数字が入っているところはカメラ感度の設定です。
0から100の数字を入れられて、 0数字が小さいと感度が良くなり数字
が大きいと感度が悪くなります。
カメラ画像に何かが動いたら猫ちゃんに だれかいる と言ってもらっ
て同時にLEDを光らせます。
5秒たったら猫ちゃんの言葉と LEDを消します
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング ビデオモーションを使ってみよう

47

スクラッチ3の拡張機能ビジョンモーションセンサを使ってみました。この写真のようにカメラに手などの動くものをかざすと
ちゃんと猫ちゃんやLEDが反応してくれます。
一般的なC言語等のプログラムでこれを実現しようと思うとかなり難しい内容になりますが、この拡張機能を使うとこんなに
簡単に実現出来てしまいます。 Scratch3って素晴らしいですね。
© PUREYES

Step1 Scratch3 で簡単プログラミング



Lesson5 モーターの正転逆転をやってみよう



48

© 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追記
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

直流電圧1.5V~3V 電流0.2A で動くモーターです。






部品解説 モーター & モータードライバIC

 

50

© 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 モーターと接続
© 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 ブレーキ
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

接続図 モータードライバ TA7291P 使用時

53

今回はモータードライバICの使い方がちょっと複雑なので集中
してこのICの使い方を学んでいただくためにシンプルにモー
タードライバICとモーターに関係する回路だけにしました。


.

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

回路図 モータードライバ TA7291P 使用時

54

≪抵抗による電圧変更≫
TA7291P_ICのVref端子にはVccより
も低い電圧が必要なので R2とR3の
抵抗で電圧を変えています
今回のように同じ抵抗値のものを直
列に2本使う場合はそれぞれの抵抗
の両端の電圧が半分になります。
© 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追記
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

こちらはモータードライバICの真理値表です。


モードの列にモーターの状態(ストップ、正転、逆転、ブレーキ)が書かれていますのでやりたいモードの左側
を見ると入力ピン(AIN1,AIN2)の状態と出力ピン(A1,A2)の状態が分かります。


入力ピンをGPIOでやりたいモードの状態にすると出力に書かれている状態になってモード通りの動作になり
ます。

部品解説 モータードライバIC TB6612FBG

 

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追記
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

接続図 モータードライバ TB6612FBG 使用時

57

今回はモータードライバICの使い方がちょっと複雑なので集中
してこのICの使い方を学んでいただくためにシンプルにモー
タードライバICとモーターに関係する回路だけにしました。


.

2020/9/10 V106 TB6612FBG追記
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

回路図 モータードライバ TB6612FBG 使用時

58

2020/9/10 V106 TB6612FBG追記
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング 変数の作り方

59

今回は変数を使用しますので変数の作り方から説明します。
変数はよく何かを入れる箱という説明がされます。変数(箱)にわかり
やすい名前をつけておくことでプログラムが読みやすくなります。
とはいえはじめての場合すぐに理解するのはむずかしいのでまずは
作ってみることをおすすめします。
作り方は簡単です。
左端のカテゴリから変数をクリック
↓
変数を作る をクリック
↓
後で見てわかりやすい変数名を入力して  OK ボタンを押す
↓
変数パレットに今入力した名前の丸い変数が出来ていれば完成で
す。その下のブロック中のドロップダウンボックスにも今作った変数名
が追加されています。
© 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ピンの番号を入れます。
猫ちゃんに モーター回転 と言ってもらうようにしておきましょう
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング モーター逆回転

61

次は逆回転のプログラムです。先ほどの回転のプログラムの下に書け
ばOKです。
イベントブロックの”下向き矢印”を選ぶことでパソコンのキーボードの上
向き矢印キーを入力デバイスとして使います。
今度は逆回転なので、 IN1・・・low IN2・・・high を指定します。
IN1,IN2,PWMの変数ブロックでのGPIOピンの指定は同じです。
猫ちゃんに モーター逆回転 と言ってもらうようにしておきましょう
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング モーターストップ

62

最後に ストップ のプログラムです。
イベントブロック の キーが押されたとき で スペース を選ぶことでパソ
コンのキーボードのスペースキーを入力デバイスとして使います。
今度はストップなので、 IN1・・・high IN2・・・high を指定します。
IN1,IN2,PWMの変数ブロックでのGPIOピンの指定は同じです。
猫ちゃんに モーターストップ と言ってもらうようにしておきましょう
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング モーター

63

接続とプログラムが完成したら実際に動かしてみましょう。電池ボックスには電源スイッチが有るのでこれを ONしてからは
じめましょう。
キーボードの矢印キーやスペースキーを押して意図したとおりモーターは動作しましたでしょうか?
今回はラズパイの出力では直接扱えない大きな電流が流れるモーターを制御する方法を学びました。今回使った専用 IC
でなくてもリレー等でも大電流を ON/OFFすることは可能ですのでインターネットで検索してみてください。
© PUREYES

Step2 本格 Python プログラミングに挑戦



Lesson6 Step1で作ったプログラムを Python で書いてみよう

64

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

Python

65

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Python公式ページ

66

最初にPythonの公式ページを紹介しておきます。
特にチュートリアルにはPythonのプログラムに関することがしっかり書かれていますので辞書代わりにしていただ
くといいですね。
Python公式ページ
https://docs.python.org/ja/3/index.html#
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Thonny Python IDE ソフト立ち上げ 

67

ラズパイOSに標準で付いている Thonny Python IDE というソフトを立ち上げます。
無い場合はStep1 Scratch3を参照して編最新OSにアップデートして下さい。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Thonny Python IDE の画面構成 

68

Thonny Python IDEの公式ページ


https://thonny.org/
新規
作成
ファイル
開く
ファイル
保存
プログラ
ム実行
プログラムス
トップ
プログラムの単純な間違
い等を指摘してくれる強
い味方です。
英語が苦手な方は翻訳
ソフト等で翻訳するとい
いですね。
ここにプログラ
ムを書きます
プログラム実行
ボタンを押す
と、ここに動作
状態やプログラ
ムで指定した文
字が表示され
ます。
© 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の状態を初期化
おわり という文字を表示する
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Lesson2 スイッチ入力 の Python プログラム 

70

GPIO15番ピンをプルアップに設定
while true: は以下の動作をずっと繰り返す時につかいますす。
tryは例外処理が入りそうな時に使います。
何か例外が起こった時に下に続く finally 以下の処理を行います。
今回の場合GPIOを初期化しています。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Lesson3 人感センサ入力 の Python プログラム 

71

Lesson2とinputのGPIO番号以外同じです。
© 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行目も順に実行しましょ
う。
インストールがうまくいかない時はラズパイがインター
ネットに繋がっているかどうか確認してみてください。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Lesson4 ビデオモーション の Python プログラム ライブラリのインストール 

73

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Lesson4 ビデオモーション の Python プログラム 

74

ラズパイに接続されているカメラの番号を指定します。
1台しか接続していないときは0番で OKです
写真のサイズを幅WIDTH、高さHEIGHT別に指定します。
avgという変数名を定義している
カメラ画像を読み込む
ラズパイのデスクトップ上にカメラ画像を表示する
1ミリ秒ごとに画像を更新
画像を白黒にする(判定精度を上げる為)
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Lesson4 ビデオモーション の Python プログラム 

75

過去の画像が無い場合は今の画像をセット
過去の画像(基準画像)と撮影中画像の変化量を計算しま
す。
上記で計算した変化量が閾値(1000)を超えたら
なんかいたよ!パチリ という文字を表示して画像の保管( 38行
目で指定したパスとファイル名)を行います。
1000の部分を変更すると感度が変わります 。
スクラッチの時の ビデオモーション>30のとき の箇所と同じ感
じです。
© 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に貼り付けると確実です。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Lesson5 モーター制御 の Python プログラム 

77

curses をインポートしてキーボード操作をプログラムで使用
できるようにします
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Lesson5 モーター制御 の Python プログラム 

78

キーボードの z を押すとモーターが正転 、x で逆転 、cで
ストップ します
何か例外が起こった時は終了処理を行う。
 GPIOの初期化、キーボード入力を表示させる、通常の端
末状態に戻す
LXTerminalでPythonプログラムを止めたいときは Ctrl+Cを
押します。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Lesson5 モーター制御 の Python プログラム  PWM制御追加

79

せっかくPythonを使うのでさきほどのモーター制御のプログ
ラムにPWMでの回転数変更機能を追加してみましょう。
5_MOTOR_PWM.py というプログラムを先ほどの
LXterminalから起動してください。
≪≪ PWM(Pulse Width Modulation)って何?? ≫≫ 



スイッチオン/オフの比率を変化させてモーターの速度や
LED等の光の強さを変化させることができる方法です。 

オン/オフの比率のことをデューティー比といいます。 



© 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() でキーボードの操作を受け
取ります。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング Lesson5 モーター制御 の Python プログラム  PWM制御追加

81

© PUREYES

Step2 本格 Python プログラミングに挑戦



Lesson7 ADコンバータ と 光センサ で光量を測ってみよう



82

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

概要 

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

83

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

光の量で抵抗値が変わる素子です。 

これに抵抗と電源をつなげてその分圧される電圧を測定することで光の強弱を知ることができます。 

昔のフィルムカメラで光量の測定によく使われていました。 

部品解説 光センサ(CdSセル GL5528)

 

84

© 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を
並べることでアナログ値をラズパイ等デジタル機器で扱えるデジタル信号
に変換しています。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

接続図

86

200722 V103 ADS部配線修正
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

回路図

87

200722 V103 AIN0配線修正
© 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になっているか確認してください。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

I2Cアドレスの確認方法

89

I2Cデバイスを使っている時にアドレスがわからなくなった時に調べる方法です。
LXTerminalを起動
↓
sudo i2cdetect -y 1
を入力してキーボードの Enterを押す
↓
接続されているデバイスのところに数字が表示されている
この例では 0x44 が接続されているI2Cデバイスのアドレスです。
ちなみに 0x と書くのはあとに続く数字が hex(16進数) ですよ、という意味です。
© PUREYES

Step2 本格 Python プログラミングに挑戦



Lesson8 温度センサ で温度を測ってみよう

90

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

今度はSHT30という温湿度センサを使って温度、湿度を測定する方法をまなびましょう。 

このセンサもI2C通信を使って情報を取得しますがライブラリがまだ公開されていません。 

そこでいい機会ですのでI2Cデータを直接扱う方法についてみていきましょう。 

ただ、このあたりはプログラミングの知識とともに電子部品のデータシートを理解する能力が必要ですので、とりあへずこ
のレッスンのプログラムを動作させてみて温度や湿度が取得できる体験をしてみるだけでもいいですね。 





概要

 

91

© 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
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

接続図

93

2020/7/12 v102 + - sda scl の誤配線を修
正
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

回路図

94

2020/7/12 v102 + - 逆を修正
© 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個)分の温度湿度データを取得しています。
© 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
© 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
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング 温湿度センサSHT30

98

SHT30のデータシートから今回使用した部分を参考に貼り付けます。
雰囲気だけでも眺めてみてください。
6バイトのデータに温度、湿度データが入っている 
1バイト=8ビット(2進数数字が8個)
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング 温湿度センサSHT30

99

© PUREYES

Step2 本格 Python プログラミングに挑戦



Lesson9 LCD 文字表示器に温度を表示してみよう 

100

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

最後のレッスンです。 

前のレッスンで取得した温度、湿度をLCD表示器に表示させてみましょう。 

概要

 

101

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

部品解説 LCD表示器(Liquid Crystal Display)

液晶画面に数字や文字を表示することができる表示器です。 

これもI2C通信を使って接続します。 

 

102

SCL,SDA
I2Cという通信をするための端子です。
V、G
ICの電源です。5Vで動作します。
I2Cアドレス:0x27
LCDコントラスト調整用ボリューム抵抗
※LCDの文字が見えない、見えづらいというときはこれを回
して調整してください。
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

接続図

103

200727 v104 SHT30 VCCとGNDの配線を修正 
200812 v105 SDA SCL の配線を修正
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

回路図

104

200727 v104 SHT30 VCCとGNDの配線を修正 
200812 v105 SDA SCL の配線を修正
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング LCD表示器に温度と湿度を表示

105

i2c_read_7 は温湿度センサのレッスンで作ったプログラムです。
同じフォルダに入れることでモジュールとして使うことができます
各変数を記述しています
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング LCD表示器に温度と湿度を表示

106

LCDを初期化しています
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング LCD表示器に温度と湿度を表示

107

© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング LCD表示器に温度と湿度を表示

108

それぞれの関数は下記を行っています。
lcd_string 
 文字列として入力を受け取る
lcd_byte 
 文字入力をビット列に変換
lcd_toggle_enable
 LCDにビット列を書き込む
© Presentation Design
© Presentation Design
© PUREYES

© PUREYES

プログラミング LCD表示器に温度と湿度を表示

109

I2C_READ_7 は温湿度センサの時に作ったプログ
ラムです。
lcd_string(f' の後の ondo___ 部分はTemp等
のお好きな半角文字を入れると LCDに表示ができ
ますので試してみてください。
 
© PUREYES



110

http://pureyes.webstarterz.com

Mais conteúdo relacionado

Semelhante a PUREYES Tutrial for Raspberrypi SCRATCH3 Python kit v106e1

Serverless LT 20201202
Serverless LT 20201202Serverless LT 20201202
Serverless LT 20201202ssuserebdd2a
 
Visual Studio 2017 で Azure Functions の開発
Visual Studio 2017 で Azure Functions の開発Visual Studio 2017 で Azure Functions の開発
Visual Studio 2017 で Azure Functions の開発Yasuaki Matsuda
 
プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方Yuichi Kato
 
作ってナットク!デジタル動画教材 第1回 動画撮影の基本ノウハウとオススメ機材
作ってナットク!デジタル動画教材 第1回 動画撮影の基本ノウハウとオススメ機材作ってナットク!デジタル動画教材 第1回 動画撮影の基本ノウハウとオススメ機材
作ってナットク!デジタル動画教材 第1回 動画撮影の基本ノウハウとオススメ機材Syuhei KIMURA
 
Enpit bizapp_aiit_20130902_for_WindowsEnvironment
Enpit bizapp_aiit_20130902_for_WindowsEnvironmentEnpit bizapp_aiit_20130902_for_WindowsEnvironment
Enpit bizapp_aiit_20130902_for_WindowsEnvironmentYukio Saito
 
パソコンであそぼ♪Scratchでだれでもかんたんプログラミング 発表資料
パソコンであそぼ♪Scratchでだれでもかんたんプログラミング 発表資料パソコンであそぼ♪Scratchでだれでもかんたんプログラミング 発表資料
パソコンであそぼ♪Scratchでだれでもかんたんプログラミング 発表資料高見 知英
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウKentarou Mukunasi
 
プログラミングってなに?
プログラミングってなに?プログラミングってなに?
プログラミングってなに?Kazuki Saito
 
Azure Functions あれこれ
Azure Functions あれこれAzure Functions あれこれ
Azure Functions あれこれYasuaki Matsuda
 
Hello Engineer World! 新人リケジョの1年
Hello Engineer World! 新人リケジョの1年Hello Engineer World! 新人リケジョの1年
Hello Engineer World! 新人リケジョの1年Satoko Shiroi
 
ユーザとの「初めまして」をより良くするために。
ユーザとの「初めまして」をより良くするために。ユーザとの「初めまして」をより良くするために。
ユーザとの「初めまして」をより良くするために。akatsuki174
 
Eclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsEclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsHiroki Kondo
 
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Yasuaki Matsuda
 
5minQues - SWET近況報告
5minQues - SWET近況報告5minQues - SWET近況報告
5minQues - SWET近況報告Masaki Nakagawa
 
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~SEGADevTech
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
ゲーム開発におけるスクラムのすゝめ
ゲーム開発におけるスクラムのすゝめゲーム開発におけるスクラムのすゝめ
ゲーム開発におけるスクラムのすゝめHatakeyamaAkihide
 
ゲーム開発におけるスクラムのすゝめ
ゲーム開発におけるスクラムのすゝめゲーム開発におけるスクラムのすゝめ
ゲーム開発におけるスクラムのすゝめAkihideHatakeyama
 
はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法Tatsuya Saito
 

Semelhante a PUREYES Tutrial for Raspberrypi SCRATCH3 Python kit v106e1 (20)

Serverless LT 20201202
Serverless LT 20201202Serverless LT 20201202
Serverless LT 20201202
 
Visual Studio 2017 で Azure Functions の開発
Visual Studio 2017 で Azure Functions の開発Visual Studio 2017 で Azure Functions の開発
Visual Studio 2017 で Azure Functions の開発
 
プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方
 
作ってナットク!デジタル動画教材 第1回 動画撮影の基本ノウハウとオススメ機材
作ってナットク!デジタル動画教材 第1回 動画撮影の基本ノウハウとオススメ機材作ってナットク!デジタル動画教材 第1回 動画撮影の基本ノウハウとオススメ機材
作ってナットク!デジタル動画教材 第1回 動画撮影の基本ノウハウとオススメ機材
 
Enpit bizapp_aiit_20130902_for_WindowsEnvironment
Enpit bizapp_aiit_20130902_for_WindowsEnvironmentEnpit bizapp_aiit_20130902_for_WindowsEnvironment
Enpit bizapp_aiit_20130902_for_WindowsEnvironment
 
パソコンであそぼ♪Scratchでだれでもかんたんプログラミング 発表資料
パソコンであそぼ♪Scratchでだれでもかんたんプログラミング 発表資料パソコンであそぼ♪Scratchでだれでもかんたんプログラミング 発表資料
パソコンであそぼ♪Scratchでだれでもかんたんプログラミング 発表資料
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ
 
プログラミングってなに?
プログラミングってなに?プログラミングってなに?
プログラミングってなに?
 
Azure Functions あれこれ
Azure Functions あれこれAzure Functions あれこれ
Azure Functions あれこれ
 
Hello Engineer World! 新人リケジョの1年
Hello Engineer World! 新人リケジョの1年Hello Engineer World! 新人リケジョの1年
Hello Engineer World! 新人リケジョの1年
 
ユーザとの「初めまして」をより良くするために。
ユーザとの「初めまして」をより良くするために。ユーザとの「初めまして」をより良くするために。
ユーザとの「初めまして」をより良くするために。
 
Eclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsEclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtips
 
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
 
5minQues - SWET近況報告
5minQues - SWET近況報告5minQues - SWET近況報告
5minQues - SWET近況報告
 
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
ゲーム開発におけるスクラムのすゝめ
ゲーム開発におけるスクラムのすゝめゲーム開発におけるスクラムのすゝめ
ゲーム開発におけるスクラムのすゝめ
 
ゲーム開発におけるスクラムのすゝめ
ゲーム開発におけるスクラムのすゝめゲーム開発におけるスクラムのすゝめ
ゲーム開発におけるスクラムのすゝめ
 
P5utda day1
P5utda day1P5utda day1
P5utda day1
 
はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法
 

Último

ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ssusere0a682
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料Tokyo Institute of Technology
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~Kochi Eng Camp
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラムKochi Eng Camp
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料Takayuki Itoh
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 

Último (8)

ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 

PUREYES Tutrial for Raspberrypi SCRATCH3 Python kit v106e1

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

  • 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

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

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

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

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

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

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

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

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

  • 20. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング Scratch3 ソフトを起動する
 19
 デスクトップ右上のラズパイマーク→プログラミング →Scratch3をクリックします。 
 Scratch3 が入っていない場合は LXterminal に下記 を入力して ENTERキー を押していただくと自動的に インストールされます。 
 
 sudo apt get scratch3 
 
 LXterminal
  • 21. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング Scratch3公式チュートリアル
 20
 Scratch3のチュートリアルボタンを押すとたくさんの 動画による解説が有りますのでまずはこの演習を何 個かやってScratchに慣れるのをおすすめします。
  • 22. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング Scratch3 文部科学省公式教師用教材
 21
 文部科学省公式scratch3教師用教材 
 教師用として公開されていますが一般向けとしても非常にわかりやすいのでおすすめの動画です。 https://www.youtube.com/watch?v=ZQNDpS2GpvU&list=PLGpGsGZ3lmbDT1aiatXSOfKexgsjfzJ1F&index=3
  • 23. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング Scratch3 画面構成
 22
 カテゴリ ブロックパレットに 表示させるブロッ クの種類を選ぶ スクリプトエリア ここでプログラムを書きます。 ステージ プログラムの 実行結果や カメラで移し た画像が表 示されます。 ブロックパレット カテゴリで選んだ ブロックが表示さ れるので、ここか ら選んでスクリプト エリアにドラッグ& ドロップします。
  • 24. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング Scratch3 初期設定 拡張機能の追加
 23
 初期設定としてScratch3の拡張機能の追加を行います。 
 
 ①左端のカテゴリバーの一番下の青いアイコンをクリックすると 拡張機能一覧が現れるのでRaspberrypiGPIOとビデオモーショ ンセンサーを選択してください。
 
 ②スクリプトエリアにRaspberrypiGPIOとビデオモーションセン サーのブロックが現れると追加完成です。 
 
 ① ②
  • 25. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング LEDを点滅させるプログラムを作ってみよう
 24
 見よう見まねで上記プログラムを作ってみましょう。 該当するカテゴリを選ぶとそのカテゴリのブロックがずらっと出てくるので該当するブロックをスクリプトエリ アにドラッグ&ドロップします。 ブロック中の白いエリアには文字や数字を記入できます。また、ドロップダウンボックスから該当のものを 選びましょう。
  • 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. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング LED点灯
 26
 猫ちゃんが LEDひかった!  LEDきえた! を10回繰り返して おわり と言っ てくれましたか? また猫ちゃんの言葉通り LEDが光ったり消えたりしたでしょうか? もしうまくいかなかったらもう一度配線やプログラムを見直して何が違うか考えて みましょう。 うまくいかなかった時の方が解決したときに深い理解が得られることが多いです よ。がんばってください! LEDは足が長い方を抵抗 およびGPIO18側にしま す。 詳しくはLesson1 部品説 明ページへ
  • 29. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 概要 
 Lesson1ではLEDを点滅させる演習でGPIOの出力について学びました。 今回はこれにスイッチを追加して入力について学びましょう。 
  
 28

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

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

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

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

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

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

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

  • 43. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 ラズパイ2、3、4のカメラ専用端子につなぐことができる500万画素のカメラモジュールです。 
 、
 
 部品解説 カメラモジュール
  
 42
 コネクタの頭の部分を少し引くと隙間ができるのでそこ にカメラから出ている白いフラットケーブルを差し込ん で先ほどのコネクタの頭部分をもとに戻します。 
 
 注意!
 カメラ接続時は電源を抜いてから行って下さい。  
 また、カメラが動作しない場合は以下を 
 ご確認お願いします。 
 ①フラットケーブルの差し込み方向が逆になっていな いか?
 ②カメラのレンズ部上に有る横長四角で茶色のコネク タが外れていないか? 
 

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

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

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

  • 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. © 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. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 接続図 モータードライバ TA7291P 使用時
 53
 今回はモータードライバICの使い方がちょっと複雑なので集中 してこのICの使い方を学んでいただくためにシンプルにモー タードライバICとモーターに関係する回路だけにしました。 
 .

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

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

  • 67. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング Python公式ページ
 66
 最初にPythonの公式ページを紹介しておきます。 特にチュートリアルにはPythonのプログラムに関することがしっかり書かれていますので辞書代わりにしていただ くといいですね。 Python公式ページ https://docs.python.org/ja/3/index.html#
  • 68. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング Thonny Python IDE ソフト立ち上げ 
 67
 ラズパイOSに標準で付いている Thonny Python IDE というソフトを立ち上げます。 無い場合はStep1 Scratch3を参照して編最新OSにアップデートして下さい。
  • 69. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング Thonny Python IDE の画面構成 
 68
 Thonny Python IDEの公式ページ 
 https://thonny.org/ 新規 作成 ファイル 開く ファイル 保存 プログラ ム実行 プログラムス トップ プログラムの単純な間違 い等を指摘してくれる強 い味方です。 英語が苦手な方は翻訳 ソフト等で翻訳するとい いですね。 ここにプログラ ムを書きます プログラム実行 ボタンを押す と、ここに動作 状態やプログラ ムで指定した文 字が表示され ます。
  • 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. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング Lesson2 スイッチ入力 の Python プログラム 
 70
 GPIO15番ピンをプルアップに設定 while true: は以下の動作をずっと繰り返す時につかいますす。 tryは例外処理が入りそうな時に使います。 何か例外が起こった時に下に続く finally 以下の処理を行います。 今回の場合GPIOを初期化しています。
  • 72. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング Lesson3 人感センサ入力 の Python プログラム 
 71
 Lesson2とinputのGPIO番号以外同じです。
  • 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. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング Lesson4 ビデオモーション の Python プログラム ライブラリのインストール 
 73

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

  • 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. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング Lesson5 モーター制御 の Python プログラム  PWM制御追加
 81

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

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

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

  • 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. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 接続図
 86
 200722 V103 ADS部配線修正
  • 88. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 回路図
 87
 200722 V103 AIN0配線修正
  • 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. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 I2Cアドレスの確認方法
 89
 I2Cデバイスを使っている時にアドレスがわからなくなった時に調べる方法です。 LXTerminalを起動 ↓ sudo i2cdetect -y 1 を入力してキーボードの Enterを押す ↓ 接続されているデバイスのところに数字が表示されている この例では 0x44 が接続されているI2Cデバイスのアドレスです。 ちなみに 0x と書くのはあとに続く数字が hex(16進数) ですよ、という意味です。
  • 91. © PUREYES
 Step2 本格 Python プログラミングに挑戦
 
 Lesson8 温度センサ で温度を測ってみよう
 90

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

  • 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. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 接続図
 93
 2020/7/12 v102 + - sda scl の誤配線を修 正
  • 95. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 回路図
 94
 2020/7/12 v102 + - 逆を修正
  • 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. © 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. © 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. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング 温湿度センサSHT30
 98
 SHT30のデータシートから今回使用した部分を参考に貼り付けます。 雰囲気だけでも眺めてみてください。 6バイトのデータに温度、湿度データが入っている  1バイト=8ビット(2進数数字が8個)
  • 100. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング 温湿度センサSHT30
 99

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

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

  • 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. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 接続図
 103
 200727 v104 SHT30 VCCとGNDの配線を修正  200812 v105 SDA SCL の配線を修正
  • 105. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 回路図
 104
 200727 v104 SHT30 VCCとGNDの配線を修正  200812 v105 SDA SCL の配線を修正
  • 106. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング LCD表示器に温度と湿度を表示
 105
 i2c_read_7 は温湿度センサのレッスンで作ったプログラムです。 同じフォルダに入れることでモジュールとして使うことができます 各変数を記述しています
  • 107. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング LCD表示器に温度と湿度を表示
 106
 LCDを初期化しています
  • 108. © Presentation Design © Presentation Design © PUREYES
 © PUREYES
 プログラミング LCD表示器に温度と湿度を表示
 107

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