ラズベリーパイ - RasPi ▲factory top


基本構成を考える 2022 Jan 4-7

ラズパイを使って、生活周辺をコントロールしたり、 インターネットラジオ など ライフオーディオ の音源にしたいと考えました。 それらに必要な要素を集めると以下のような構成となります。

ACコネクタ → Left side panel 電源基板(ピンにより給電)
電源SW
ラズパイ基板 シリアルバッファ基板
シリアル出力コネクタ
DAC基板
音量ボリューム、入力切換えSW
Right side panel ← Line in アナログピンジャック
→ Line out アナログピンジャック
  ↓
  シリアルケーブル (USB Type-C コード)

ラズパイの電源は入れっぱなしを想定。 Line in(アナログテープ等)も頻繁には聞かないので入力切換えもあまりしない。 ボリューム操作は主にソフトで行う。 すなわち、手動操作のSWやボリュームがあっても基本的に触らないので、 それらをソフトウェア制御する手間は考えないことにします。

 

ネット上の情報を参考にラズパイの設定 2022 Jan 9-12

Raspberry Pi OS (32-bit) 2021-10-30 を用意します
  • Raspberry Pi OS より、Windows PC に Raspberry Pi Imager をインストール
  • microSD カードを Erase(Format)し、OS を選択しカードへ書き込む
  • そのカードをラズパイにさし Keyboard, Diaplay 等を接続し通電する
OSの初期設定をします
  • 起動したラズパイの初期設定画面に従うと、 あっという間に Linux OS が動作しました
    その昔 UNIXマシンを使っていてマシン更新の度に 設定に1日かかっていたことを思うと隔世の感です
  • user=pi, pw=**** を設定します、 ラズパイは初期状態で root pw が未設定とのことで
    $ sudo passwd root にて password を設定すると
    $ su root 出来るようになります
virtual network computing 接続を行います
  • Download VNC Viewer より Windows PC に VNC viewer をインストールします
    この接続により Windows PC 側のディスプレイやキーボードで ラズパイが操作できるようになります
  • ラズパイ側の設定
    ラズパイのスタートアイコン→設定→Raspberry Piの設定、より、 インターフェースタブの VNC を有効にします、 また画面右上のVNCアイコンより ip adr - 192.168.1.10(本機の場合)を得ます (アドレスが変わった時は HDMI と USBマウスの接続が必要になる)
  • Windows PC 側の設定
    viwer にて ip adr, user=pi, pw を入力します
  • その後 Raspberry Pi OS (32-bit) 2022-01-28 に更新あり
    この更新でVNC画面サイズが Raspberry Pi の設定で (1600x1200等)指定出来るようになりました

 

(左)食卓で USBキーボード、USBマウス、食卓テレビ(HDMI)をつなぎ 初期設定を行います
(右)VNC接続後は キーボードやディプレイなしでOK、アナログ出力から internet radio が聞けました
VNC接続で Windows PC側にラズパイの Desktop 画面が表示され操作出来ます
表示と操作だけがリモートで、インターネットラジオの音はラズパイ側から出ます

左右のサイドパネル 2022 Jan 17

アクリル製の左右のサイドパネルは アクリル屋 セミオーダー から発注しました。
アクリル見本 なども参考になります。

  • 注意点、サイズ等
  • ラズパイ基板はトップ側に SDcard が 2mm はみ出す
  • ラズパイ基板はボトム側に USBコネクタが 3mm はみ出す、 さらに将来 USB マイクを装着予定
  • アクリル屋の加工制約で ACメガネコネクタ取付穴に手作業が発生
  • H:105mm、W:59mm、D:3mm、color:ホワイト、端面:磨き仕上
    加工費含めコスト 左:\4565-、右:\2638-

左パネル:基板取付け穴4 + ACメガネコネクタ穴1(両サイドに手作業で楕円拡張した)
右パネル:基板取付け穴4 + ピンジャック穴4 ピンジャックと基板への接続コネクタを取り付けます

 

電源基板 2022 Jan 13, 24

  • AC-DC コンバータ
  • ドイツメーカー Recom Power の AC100V -> 5V 4A (20W) RAC20-05SK/ 277
  • 1次側ラインフィルター内蔵
  • ラズパイは常時通電予定なので気休めですが1次側にヒューズを入れておきます
  • 将来 液晶パネルを装着予定なのでその電源用に出力ピンを2組用意

左パネルに取り付けた電源基板(クリックで拡大) その上にラズパイ基板をスタック(クリックで拡大)

なんと、ラズパイ基板の取付穴がΦ3.2ではなくΦ3.0のようで Φ3mmのネジが通らない!ユニバーサル基板の取付穴も同じ。 しかし、どちらも薄い基板なので Φ3.2のドリルの歯を手持ちで回し簡単に拡張出来ました。

 

シリアルバッファ基板 2022 Jan 14, 24-28

制御したい周辺機器はいろいろありますが、 それぞれに(パラレルで)制御線を出すとタコ足になってしまうので、 シリアル接続で制御することにします。

シリアル制御と言えば、まず I2C が思いつき、ラズパイもI2C専用端子を持っています。 しかし、I2Cのスレーブ側を汎用ロジックで作るとなるとそれなりに煩雑です。 I2Cプロトコルはソフト(マイコン)を前提としたような、 あるいは専用IC(IP)と組み合わせて使うような感じですね。

さらにUSB接続という案もありますが、UBSも本機には機能過剰です。 ただし、シリアル接続のコードとしては USB Type-C のコードを流用します。 コネクタ付きで大量に安価に出回っていて使わない手はないです。

さて、そんなわけで、 受け側のハードウェアが最も簡単になる独自プロトコルとして考えます。 ワードパケットにアドレスとコマンドを入れ、 最終に到達するアドレスの最上位ビットを拡張ビットとすることで ワード長拡張性を持たせます。 尚、この基板は、ラズパイのI2C機能とは独立していて干渉はありません。

  • GPIOポート割当て
  • 11pin GPIO17 を SDA とし USB Type-C D+ へ
    13pin GPIO27 を SCK とし USB Type-C D- へ
    15pin GPIO22 を WCK とし USB Type-C Configuration Channel(CC)1, 2 へ

  • 送信インジケータと電源
  • 16pin GPIO23 を IND
    2pin 5V
    6pin GND

シリアルバッファ基板(クリックで拡大) ラズパイ基板の上にスタック

ラズパイ標準の Thonny Python IDE を使い各端子の動作確認だけ行っておきます
import RPi.GPIO as GPIO
from time import sleep

vpin = 11
vsleep = 1

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(vpin,GPIO.OUT)

try:
    while True:
      GPIO.output(vpin,GPIO.HIGH)
      sleep(vsleep)

except KeyboardInterrupt:
    GPIO.cleanup()

ところで、ラズパイのロジックは3.3V、一方この基板は5Vです。 この 3.3V->5V 接続問題はこちら 「5V系・3.3V系信号レベル変換」 を参考にさせていただきました。

 

PCM5102A DAC基板 2022 Jan 14, 29-30

  • PCM5102A 端子による機能選択は以下の設定です
  • FLT=0/1 アンチエイリアシングデジタルフィルタ Low - Normal latency, High - Low latency
  • DMP:0 ディエンファシスをオフ
  • SCL:0 内部PLLを使う
  • FMT:0 入力デジタル信号が I2S(Low)か左寄せ(High)か
  • XMT:1 MUTEしない
DAC、ボリューム、入力SW基板(クリックで拡大) シリアルバッファ基板の上にスタック

ラズパイの標準 I2S で PCM5102Aを駆動する為、 /boot/config.txt を編集し device tree の設定を行う。
#hdmi_drive=2		変更
hdmi_drive=1

#dtparam=audio=on	コメントアウト

#I2S 追加
dtoverlay=hifiberry-dac

  • 動作確認
  • $ lsmod
    対象名は snd_soc_rpi_simple_soundcard
    ちなみに snd_bcm2835
  • $ aplay -l
  • $ aplay hoge.wav
  • $ aplay -D (plug)hw:1,0 hoge.wav

 

完成!

オーディオコーナーに設置したラズパイ

部品リスト 2022 Jan 15-16

ソフトウェア セットアップ 2022 Feb 1-4, 8-11, 26

SSH Tera Term
ソフトウェア開発時に Windows PC側からラズパイを操作する為、 Windows PCに標準的なターミナルをインストールします。 SSH(Secure Shell) をパスワード認証で使用します。 公開鍵認証で使用する場合は こちら を参照。
  • ラズパイ側の設定
    インターフェースタブ SSH を有効に
  • Windows PC側の設定
    Tera Term 4.106 Windows (teraterm-4.106.exe) をインストール
    raspi ip=192.168.1.10, port=22, SSH2, user=pi, pw=****
  • ラズパイとWindows PC間のファイルコピー
    ラズパイからは、メニューの SSH SCP
    ラズパイへは、tera term にファイルをD&D
Apache2
普段使いではラズパイをスマホ、タブレットやPCから操作するのが便利です。 簡単に実現するにはラズパイ側にラズパイ操作の Web アプリページを用意します。 その為に Web server をインストールします。
  • $ sudo apt install apache2 インストール
  • $ sudo systemctl restart apache2 (再)起動
  • $ cat /var/log/apache2/error.log エラー確認
    $ journalctl -xe

Git
Github を使うため Git をインストールしておきます。
  • $ sudo apt-get install git
emacs
私の常用テキストエディタは emacs なのでラズパイにもインストールします。
  • $ sudo apt install emacs
  • Windows を見て適当に ~/.emacs を修正

 

参考リンク