#author("2023-05-13T10:59:53+09:00","","")
#author("2023-05-13T11:10:26+09:00","","")
#contents

*RPi + Volumio [#f2bd8b59]
-Volumio の最新版ではなく、2.x のバージョンを入れた。
--DACのHATは使わずに、[[I2S [IIS] 入力DAC PCM5101A搭載32bit 384kHz DAC完成基板 Raspberry Pi 動作OK:https://store.shopping.yahoo.co.jp/nfj/h134.html]]を繋ぎました。&br;結果的にHIFI Berry DAC と同じ接続にしました。
-Logitech Media Server プラグイン を入れ、LMS のプラグインとして「らじるこ」プラグインを入れ&br;
らじるらじる関連のNHK局、Radikoの地方局、いくつかのコミュニティFM局が聞けるようになった。
-問題点
--起動して自動でラジオが鳴る設定がわからない
--選曲はLMSのWeb、終了時はVolumioのWebなのでめんどくさい。直観的にシャットダウンボタンをつけたらちょっとましか。
---ただしこれでもDACの電源を落とす必要がある。
--2022年4月1日からコミュニティFMのグループ FM++, JCBA が方式を変えたようで、全然聞けない

**GPIOの基本 [#g8fa5262]
-%%RPiZeroW のコマンド gpio readall で嵌まった%% bullseys で gpio コマンド無くなった
-%%RPiZeroW のコマンド gpio readall で嵌まった%% bullseys で gpio コマンド無くなり、raspi-gpio get で代用する
 +-----+-----+---------+------+---+-Pi ZeroW-+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |    #|
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5v      |     |    *|
 |   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |    #|
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 1 | ALT0 | GPIO. 1 | 1   | 18 #|
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23 *|
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |    *|
 |*  6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |# 19 |  24 | GPIO.24 | ALT0 | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | ALT0 | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 1 | ALT0 | GPIO.29 | 29  | 21 #|
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+-Pi ZeroW-+---+------+---------+-----+-----+
-#:I2Sインターフェース, *:Shutdown SW及びLED
-Name列を見ると GPIO.0 GPIO.2 ... とあるので「GPIOの番号だ」と思い込んでたら実際は、&br;
BCMの番号がGPIOの番号だとわかる。 無駄時間を4時間ほど浪費。そのおかげで、Pythonのデバッグ&br;
の仕方を練習したので無駄だと思わないことにした(笑)。

 $ raspi-gpio get
 BANK0 (GPIO 0 to 27):
 GPIO 0: level=1 fsel=0 func=INPUT
 GPIO 1: level=1 fsel=0 func=INPUT
 GPIO 2: level=1 fsel=0 func=INPUT
 GPIO 3: level=1 fsel=0 func=INPUT
 GPIO 4: level=1 fsel=0 func=INPUT
 GPIO 5: level=1 fsel=0 func=INPUT
 GPIO 6: level=1 fsel=0 func=INPUT
 GPIO 7: level=1 fsel=0 func=INPUT
 GPIO 8: level=1 fsel=0 func=INPUT
 GPIO 9: level=0 fsel=0 func=INPUT
 GPIO 10: level=0 fsel=0 func=INPUT
 GPIO 11: level=0 fsel=0 func=INPUT
 GPIO 12: level=0 fsel=0 func=INPUT
 GPIO 13: level=0 fsel=0 func=INPUT
 GPIO 14: level=0 fsel=0 func=INPUT
 GPIO 15: level=1 fsel=0 func=INPUT
 GPIO 16: level=0 fsel=0 func=INPUT
 GPIO 17: level=0 fsel=0 func=INPUT
 GPIO 18: level=0 fsel=0 func=INPUT
 GPIO 19: level=0 fsel=0 func=INPUT
 GPIO 20: level=0 fsel=0 func=INPUT
 GPIO 21: level=0 fsel=0 func=INPUT
 GPIO 22: level=0 fsel=0 func=INPUT
 GPIO 23: level=0 fsel=0 func=INPUT
 GPIO 24: level=0 fsel=0 func=INPUT
 GPIO 25: level=0 fsel=0 func=INPUT
 GPIO 26: level=0 fsel=0 func=INPUT
 GPIO 27: level=0 fsel=0 func=INPUT
 BANK1 (GPIO 28 to 45):
 GPIO 28: level=1 fsel=0 func=INPUT
 GPIO 29: level=1 fsel=0 func=INPUT
 GPIO 30: level=0 fsel=7 alt=3 func=CTS0
 GPIO 31: level=0 fsel=7 alt=3 func=RTS0
 GPIO 32: level=1 fsel=7 alt=3 func=TXD0
 GPIO 33: level=1 fsel=7 alt=3 func=RXD0
 GPIO 34: level=1 fsel=7 alt=3 func=SD1_CLK
 GPIO 35: level=1 fsel=7 alt=3 func=SD1_CMD
 GPIO 36: level=1 fsel=7 alt=3 func=SD1_DAT0
 GPIO 37: level=1 fsel=7 alt=3 func=SD1_DAT1
 GPIO 38: level=1 fsel=7 alt=3 func=SD1_DAT2
 GPIO 39: level=1 fsel=7 alt=3 func=SD1_DAT3
 GPIO 40: level=0 fsel=1 func=OUTPUT
 GPIO 41: level=1 fsel=1 func=OUTPUT
 GPIO 42: level=0 fsel=0 func=INPUT
 GPIO 43: level=0 fsel=4 alt=0 func=GPCLK2
 GPIO 44: level=0 fsel=1 func=OUTPUT
 GPIO 45: level=1 fsel=1 func=OUTPUT
 BANK2 (GPIO 46 to 53):
 GPIO 46: level=1 fsel=0 func=INPUT
 GPIO 47: level=0 fsel=1 func=OUTPUT
 GPIO 48: level=0 fsel=4 alt=0 func=SD0_CLK
 GPIO 49: level=1 fsel=4 alt=0 func=SD0_CMD
 GPIO 50: level=1 fsel=4 alt=0 func=SD0_DAT0
 GPIO 51: level=1 fsel=4 alt=0 func=SD0_DAT1
 GPIO 52: level=1 fsel=4 alt=0 func=SD0_DAT2
 GPIO 53: level=1 fsel=4 alt=0 func=SD0_DAT3


**GPIO 入力ピン 物理的に抵抗がなければ、GPIOの機能でプルアップ/プルダウン [#wfcebab5]
-GPIO.setupのpull_up_down引数でプルアップ/ダウンを指定出来る。
 GPIO.setmode(GPIO.BCM)
 GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP) #add PullUp

*shutdown処理 [#d541c4a4]
-bin/shutdown.py
 # coding: utf-8
 
 import RPi.GPIO as GPIO
 import time
 import subprocess
 
 PIN_BUTTON = 6 # GPIO6
 PIN_LED = 23 # GPIO23
 WAIT_SEC = 0.1
 LONG_PUSH_SEC = 3
 LED_FLASH_PERIOD = 0.3
 LED_FLASH_COUNT = 10
 
 # Pin Configration
 GPIO.setmode(GPIO.BCM)
 GPIO.setup(PIN_BUTTON, GPIO.IN, pull_up_down=GPIO.PUD_UP) #add PullUp
 GPIO.setup(PIN_LED, GPIO.OUT)
 
 # Detect Button Action
 while True:
 	cnt = 0
 	long_pushed = False
 	
 	while GPIO.input(PIN_BUTTON) == GPIO.LOW:
 		GPIO.output(PIN_LED, GPIO.HIGH) # LED点灯
 		time.sleep(WAIT_SEC)
 		cnt += 1
 		if cnt > 1 / WAIT_SEC * LONG_PUSH_SEC:
 			long_pushed = True
 			break
 	GPIO.output(PIN_LED, GPIO.LOW) # LED消す
 	
 	if long_pushed:
 		# LED Blink
 		for i in range(LED_FLASH_COUNT):
 			GPIO.output(PIN_LED, GPIO.HIGH)
 			time.sleep(LED_FLASH_PERIOD / 2.)
 			GPIO.output(PIN_LED, GPIO.LOW)
 			time.sleep(LED_FLASH_PERIOD / 2.)
 		break
       else:
               time.sleep(WAIT_SEC)
 
 # ピン設定解除
 GPIO.cleanup([PIN_BUTTON, PIN_LED])
 
 # PowerOff
 subprocess.call(["sudo poweroff"], shell=True) 
-/etc/rc.local
--exit行より上に以下の行を追加
 su pi /usr/bin/python -c "/home/volumio/bin/shutdown,py &"

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS