Raspberry piと5Vﾘﾚｰﾓｼﾞｭｰﾙ搭載による車ｳｪﾙｶﾑﾗｲﾄ

安い車を購入しましたのでｳｪﾙｶﾑﾗｲﾄが標準で付いて無く、構造上ｽﾏｰﾄｷｰを利用する事は不可能である事がわかったのでﾏｲｺﾝｷｯﾄを利用し自分のｽﾏﾎを車に近づいただけで点灯するLEDﾗｲﾄを取り付けてｳｪﾙｶﾑﾗｲﾄとしました。
自分への備忘録として残します。

#1.使用機器
・12V LED(外付けLEDを車に取り付け）
・raspberry pi zero wh
・SODIAL(R)ﾘﾚｰﾓｼﾞｭｰﾙ

#2.実装写真
![IMG_5947.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561834/218e2678-8a9f-24dd-f2ef-fa179b5995b7.jpeg)

ﾘﾚｰﾓｼﾞｭｰﾙの端子にLEDを配線を繋ぎ、ﾗｽﾞﾊﾟｲ電源は車の常時電源をUSBｷｯﾄﾞを噛まして5Vに降圧して繋ぎます。

#3.python3ﾌﾟﾛｸﾞﾗﾑ

```
import subprocess
import re
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23,GPIO.OUT)
import time
from time import sleep
bltcount = 0

　while True:
 　try:
        bd = '"ｽﾏﾎ bluetooth MAC ｱﾄﾞﾚｽ"'
        p1 = subprocess.Popen(["echo","connect",bd], stdout=subprocess.PIPE)
        p2 = subprocess.Popen(["bluetoothctl"], stdin=p1.stdout, stdout=subprocess.PIPE)
        p1.stdout.close()
        outs,errs = p2.communicate() 
       
        sleep(1)  
      
        try:
          cmd = 'hcitool rssi "ｽﾏﾎ bluetooth MAC ｱﾄﾞﾚｽ"'
          res = subprocess.check_output(cmd.split())            
          res = res.decode()
          m = re.search( r'([+-]?\d+)', res)            
          n = int(m.group(1))
          print(n)                 
          if n >= ”好きなRSSI閾値”:
              bltcount += 1                           
              if(bltcount <= "好きな秒数"):
                  print('LED on')
                  GPIO.output(23, GPIO.LOW)                        
              else:
                  print('LED off')
                  GPIO.output(23, GPIO.HIGH)                    
          else:
              bltcount = 0
              GPIO.output(23, GPIO.HIGH)
             
        except subprocess.CalledProcessError:
            bltcount = 0
            GPIO.output(23, GPIO.HIGH)

 　except:
       　pass
```

#4.出力
```
pi@DMC:~ $ sudo python3 "cl.py"
cl.py:6: RuntimeWarning: This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.
  GPIO.setup(23,GPIO.OUT)
rssi 0
LED on
--------------
rssi 0
LED on
--------------
rssi 0
LED on
--------------
rssi 0
LED on
--------------
rssi 0
LED on
--------------
rssi 0
LED on
--------------
rssi 0
LED on
--------------
rssi 0
LED on
--------------
rssi 0
LED on
--------------
rssi 0
LED on
--------------
#ｶｳﾝﾄup
rssi 0
LED off
--------------
rssi 0
LED off
--------------
rssi 0
LED off
--------------
rssi 0
LED off
--------------
rssi 0
LED off
--------------
rssi -12
LED off
--------------
#rssi閾値以下
rssi -18
--------------
rssi -17
--------------
rssi -16
--------------
#rssi閾値以上　復活
rssi 0
LED on
--------------
rssi 0
LED on
--------------
rssi 0
LED on
--------------
rssi 0
LED on
--------------
rssi 0
LED on
--------------
#bluetooth off
Read RSSI failed: Input/output error
Read RSSI failed: Input/output error
Read RSSI failed: Input/output error
Read RSSI failed: Input/output error
Read RSSI failed: Input/output error

#bluetooth on
rssi 0
LED on
--------------
rssi 0
LED on
--------------
rssi 3
LED on
--------------
rssi 0
LED on
--------
```

5.補足
ﾗｽﾞﾊﾟｲとｽﾏﾎをﾍﾟｱﾘﾝｸﾞしておけば、ﾗｽﾞﾊﾟｲの方から常に接続を要求しｽﾏﾎが近づき接続されて更に"好きなRSSI閾値”を越える程近づけばLEDが点灯します。
”好きな秒数”を超えるとLEDが消えます。
もちろんRSSIが下がったり、接続が切れてもLEDが消えます。
一度消えるとｶｳﾝﾄ秒数は0にﾘｾｯﾄされます。

すいません。初めての投稿なのでいろいろと見づらい所があると思いますがご容赦願います。

ﾌﾟﾛｸﾞﾗﾑに不必要な部分がありもっとｼﾝﾌﾟﾙになる所があればご教授よろしくお願いします。
特にsubprocessのPIPE部分をもっとｼﾝﾌﾟﾙにしたいと思ってます。
自分への備忘録なのにお願い文章を載せて変な感じですが…。

ちなみにACC電源ONでもLEDが消えるようにﾘﾚｰを取り付けます。

万が一真似される方いましても自己責任でお願いします。