Raspberry Piで入店音システム3

#【Raspberry Pi】 人感センサー設置と反応の取得

前回の記事：[【Raspberry Pi】Vim設定からプログラミングまで](https://qiita.com/namekuji/items/4adfdbfac7c3911a70ab#_reference-eab59702439343617817)

##第0章　全体の流れ
前回の記事では、Vimの設定をしてプログラミングを行いました。今回は入店を感知するセンサーを取り付けたいと思います。

**第1章**では、必要なアイテム（今回使用したもの）のリンクを載せています。
**第2章**では、センサーの物理的な接続を行います。
**第3章**では、プログラミングでセンサーの反応を取得します。

##第1章　必要なアイテム

どちらも前回使用したものです。事前に必要な設定などは[前回の記事](https://qiita.com/namekuji/items/4adfdbfac7c3911a70ab)を見てください。
1. [Raspberry Pi 3 model B](https://www.amazon.co.jp/gp/product/B01CD5VC92/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1)
2. [macbook](https://www.amazon.co.jp/MacBook-Display-13-3%E3%82%A4%E3%83%B3%E3%83%81-Graphics-MF839J/dp/B00UJK322O/ref=sr_1_8?s=computers&ie=UTF8&qid=1512355535&sr=1-8&keywords=macbook+pro)
3. [人感センサーHC-SR501](https://www.amazon.co.jp/HiLetgo-HC-SR501人体赤外線感応モジュール-人体の赤外線の感応器-3個セット-並行輸入品/dp/B010RYGEGM/ref=pd_nav_hcs_bia_t_2?_encoding=UTF8&psc=1&refRID=D794CDP9WZ31W7GE4DFN)
4. [ジャンパーワイヤー（メスーメス）](https://www.amazon.co.jp/gp/product/B00P9C2KE8/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1)

##第2章　Raspberry Piとセンサーの接続
1. **ジャンパーワイヤーとRaspberryPiを繋げる**
    1. ジャンパーワイヤーがくっついてると思うので、3本だけ分離してください。<br>
    *:sunny:この時なるべく別の色にした方がわかりやすいです*
    2. それぞれのワイヤーをA,B,Cとします。（色で覚えたらいいです。）
    3. Raspberry Piのピン（金色の尖ったやつたち）はこんな配列です。
    <img width="510" alt="raspi_gpio.png" src="http://tool-lab.com/wp-content/uploads/2015/11/raspberrypi-gpio-numbering.png"><br>
    *:sunny:詳細な説明は[このサイト](https://tool-lab.com/make/raspberrypi-startup-22/)などをみてください。*
    4. ワイヤーAをピン番号4、ワイヤーBをピン番号6、ワイヤーCをピン番号12へさしてください。
    5. 次に反対側をセンサーに差します。Aを一番左、Bを一番右、Cを真ん中へさしてください。<br>
    *:sunny:どっちが左右かわからない人は、センサーの裏側に書いてある文字通りで上下がわかります。ピンがある方が下です。* 
    6. 完成した時の実際の図です。
    <img width="510" alt="2_sensor1.png" src="https://qiita-image-store.s3.amazonaws.com/0/231619/1f484630-f3a1-e58d-173f-f1f08019809c.png">

##第3章　プログラムでセンサーの反応を確認する。
1. **プログラムをまとめるフォルダへ移動（前回フォルダを作りました。）**
    1. ```$cd Documents/Python3```でドキュメントフォルダのPython3フォルダへ移動する。
    *:sunny: この時Python3の部分は自分がつけた名前にしてください。*
2. **viでプログラムを書く**
    1. ```$vi jinkan_test.py```で、jinkan_test.pyというpythonのファイルをviで作って開く。
    2. ```i```を押すと入力モード（画面下にINSERT）になり、```esc```を押すと保存とか終了をするモードになります。プログラムを入力したいので、```i```を入力して入力モードにします。
    3. プログラム全体はこんな感じです。説明を読みながら手打ちでやってみましょう。
    <img width="413" alt="3_program_all.png" src="https://qiita-image-store.s3.amazonaws.com/0/231619/d60c0169-b09e-7b31-4e5a-b03f7e5d9a71.png">
3. **プログラムの説明（できない人向け）**
    1. ```import time```は```time```という時間を操作する能力を得る(```import```する)ことです。<br>
    2. ```import RPi.GPIO as GPIO```というのは、RPi.GPIOというGPIO（ピンを刺して操作すること）を操る能力を得ることです。```as GPIO```というのは、「それらをこのプログラム中ではGPIOと呼ぶことにした」って言ってます。
    3. ```SENSOR_GPIO = 18```というのは、18という数字を保存する箱です。つまり名前はなんでもいいんです。これは第2章-3のGPIOのピンの配列を見たらわかりますが、```GPIO18```という場所にピンを刺していますよね。ここにセンサーが反応したかどうかが来るので、それを使うために場所を指定してあげるためです。
    4. ```GPIO.setmode(GPIO.BCM)```というのは、GPIOのピンを指定するときに、どんな表記方法で指定するかってことです。つまり、さっきはGPIO18で指定しましたが、ピン番号12で指定することも可能です。今回はBCM（GPIO18とか）の方で行います。
    5. ```GPIO.setup(SENSOR_GPIO, GPIO.IN)```というのは、セットアップ、つまり初期設定です。```SENSOR_GPIO```は先ほども言った通り、18を格納しているので、ここに直接18と書いても結果は同じです。```GPIO.IN```はどんな挙動かを表しています。INなので、センサーからの反応をIN（取り込み）します。つまり、ここでは操作したい場所と挙動を示しています。
    6. ```while True:```は永遠に繰り返すという意味です。手動で終了させるしかありませんが、ずっと一定の処理を行ってくれます。
    7. ```print(GPIO.input(SENSOR_GPIO))```は、GPIO18がinputしてきた数字（反応ありなら1、なしなら0）を取得してprint（表示）しています。
    8. ```if(GPIO.input(SENSOR_GPIO) == GPIO_HIGH):```というのは、もし(if)、GPIO.input(SENSOR_GPIO)（GPIO18が反応有なら1、反応無なら0）が、GPIO.HIGH(1)と同じである時の処理を決めています。なのでGPIO.HIGHには1と直接入力しても問題ありません。
    9. ```print("人を検知しました")```は、先ほどifの条件が当てはまる（つまり反応あり）であればprint("人を検知しました")と表示されます。
    10. ```time.sleep(1)```は、if文の効力の外側にいますので、条件がなくても発動します。プログラムに1秒待ってもらうものです。
    11. ```GPIO.cleanup()```というのは、GPIOの初期化です。

3. **実行する**
    1. センサーを人のいない方に向けて固定しましょう。
    2. ```$python jinkan_test.py```で実行できます。<br>
    3. 正しく実行されれば、人がいない場合の判定結果(```GPIO.input(SENSOR_GPIO)```)が表示されています。つまり、0が永遠と表示されていれば反応なしでOKです。)<br>
    4. 次に反応ありの場合が欲しいので、センサーの周りをうろついたり手を振りかざしたりして見てください。
    5. 「人を検知しました」が表示されていれば成功です。

##第4章　最後に
今回は人感センサーの反応を確かめることができました。次回はUSBスピーカーとの接続をしていきます。お疲れ様でした。
次の記事：[【Raspberry Pi】 USBスピーカーから音を出す](https://qiita.com/namekuji/items/4b86899c2ecb910cdd88)