無かったので造った話

**この投稿は、2023年JINSのアドベントカレンダー2日目の記事です。**

## 自己紹介

ITデジタル部の神崎(@r-kanzaki )と申します。
主に店舗や本部の機器選定とか調達とか設備の保守メンテナンスやら
運用や社内サポートなどを担当しております。
ざっくり表現すれば物理的なインフラや機器の担当です。


## 本社を引っ越ししたんですよ

前記事の岡田さんも書いていますが最近引っ越ししたんですよ。
検索して頂ければ引っ越しの準備段階からの[**記事も公開されていますので**](https://park.jins.com/series/hikkoshi/)よろしければご覧ください。
詳しくは記事を見て頂けると書かれているのですが、ビル丸ごと１棟が新社屋となります。

どこにどんな部屋を作るのか、どの部門がどこのフロアを使用するのか
議論が図面として具現化して
じゃあ複合機はどこに置くのかとか、無線APの物理的な位置がどこなのか、
回線の手配はどうするとか、工期と引き渡しとのタイミングはどうかとか
会議室に設置する設備は何にするのか、、、
ドンドン具体な情報を追加して密度を上げていく…　こういう部分は他社様でも同じですよね。
（この過程も[**公開されています**](https://park.jins.com/series/hikkoshi/)ので是非）

当職の場合は、機材選定や調整などの一部を担当しておりました。
今後発生するメンテナンスや、後からの追加要望での細かい手直しは暫く続いていくと思います。
工事日程などの都合で、一部の設置設定や通線工事なども自分でやったりはしたものの、
多くの機器ベンダーさんに助けて頂き、時間的な面で大変助けて頂き、ほんとに命拾いを致しました。
ただ、前日に岡田さんが書いてくださったり、カレンダーの題目にある「ハードウェアの話します」の予告をしていたものの、単なる製品紹介になってしまうので今回は触れません。


## 詳細は後から決まってくる

そして、具体的な計画の段階では保留されていて、大枠の計画が固まりつつある終盤に
「休憩のタイミングでお知らせを鳴らしたい」イメージは学校のチャイムみたいなやつが「欲しい」との要望が！
（この過程は公開されていませんが）

そもそも　「無くても良いけど、あっても良いよね…」　という感じだったようで
予算は考えていなかったけども、純正のタイマーモジュールが性能を考えると微妙に高いし、柔軟性も無く音声の差し替えが出来なかったり、スケジュールも柔軟な設定が出来ないらしい。

なので、これは何とかしようかなと（なるべく低予算で）
そもそも引っ越しの計画も[壊しながら造る](https://park.jins.com/series/hikkoshi/02/)。手作りしていくというような話もあったので

もう、この話が出た時点で作る気しかなかったですけど。



## まずはアンプの仕様を確認

まずは、新社屋への設置が決まっていた設備機材として、全館にスピーカーは設置され、そのスピーカーで館内に呼びかけをするマイクとアンプが設置される。という事は決定していたので、これ使って何とかすれば行けるはず。

**アンプ
　　ケンウッド製　PA-916（PA-900シリーズ）
　　160W　5系統　システムアンプ**
![IMG_8384_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630054/fac7eeb3-33b3-80dd-228e-9bdba18f2f87.jpeg)



このアンプは、複数のスピーカー系統別に繋いで、各系統ごとにスピーカーを選択して鳴らすことができるというシロモノで
弊社の場合は、社外の方も入って来られる会議室やエントランスと、執務エリアを区別しており
社外エリアだけ・執務エリアだけ・その両方、のようにエリアを区別して呼びかけできるようになります。

このスピーカーの切り替えは、裏面の端子をショートさせる事によって選択をするようになっております。専用マイクもこの端子に接続されており、ボタンスイッチで放送エリアを選べるようになっております。

今回は昼の休憩時間のお知らせなので、執務エリアだけで良いですね。

あと、通常はアンプの電源をOFFにしておりますが
エリアの選択と同様に裏面端子で電源をONにすることもできます。

具体的には、端子の"E (COM)" と "電源起動入力"をショートさせるとアンプの電源が入り
"E (COM)" と "スピーカー回線選択入力"をショートさせると、選択したスピーカーが鳴動します。

![IMG_8381_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630054/072a08de-6bea-8a64-35bf-369da6b7d7ee.jpeg)
（裏ブタを開けると端子があります。※ハイインピーダンススピーカー端子は高電圧が掛かっていることがあるので感電に注意）

アンプの仕様が解ったので、どうやって端子をショートさせるか。

マイクと同じように、その都度ボタンスイッチで制御するのは人力では不可能なので
Amazonでこんなものを２０００円くらいで調達しました（当時）
実は、個人的な工作では使用していて、こっちの仕様は把握済みです。
（自宅では通信回線が不調になったときにモデムのOFF/ONを自動でやるのに使ってたりします）
![IMG_8396_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630054/62edfcad-679e-143c-00fc-e76f16e9aa7e.jpeg)

はい。シリアルポート。レガシーです。
同様の機能を実現するもので、USB接続のものや、LAN(IP)の物もあるようですが
まぁそれらは基板単体で売られてて筐体とか用意するの、、、
なんか、ちょっと面倒ですよね？？
細かいことは一旦おいといてください。どうか見逃してください。

・・・というのは半分だけ冗談です。
Amazonなどで売られているデバイスを気軽にネットワークへ接続させたり、
やろうと思えばUSBで接続したデバイスから何らかの悪さが出来てしまうなど、脅威が内在している可能性もあります。（もちろん脅威が無い可能性の方が高いのですが、検証も大変ですし）
あえてシリアルポートで接続すれば脅威なる余地がありませんから。。。というのが半分です。

安かったですし。
でも、こんな製品が２０００～３０００円くらいで入手できるなんて、本当に良い時代です。

こんな感じに動作します（適当なアプリを作って動作確認）
![スライド1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630054/53c933d1-2362-6baa-a396-203d171d7089.jpeg)

こんな制御コードになっています。このバイナリを順番に８バイト送信するとリレーの ON/OFF を行えます。Amazonで購入したときには資料が添付されておらず検索しまくりました（自宅で使おうとしたときに）
![reray_module.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630054/b387ca81-5403-959a-c9e9-b3082a5b6deb.png)
（この製品では、9600bps パリティ無し データビット8bit ストップビット1でした）

COMポートなら開発言語も殆どなんでも良いですし、何ならRS232Cにデータ送信できるコマンドラインツールも存在する様で、それ使ったらwindowsスケジューラで似たようなこと出来ちゃいますから、プログラム作れない人でもなんとかなります。枯れた技術も良いですね。良いですよね？？


今回のような用途の場合には、複数のリレーを搭載した機器を使わずに１個のリレーに束ねて制御しようとすると、マイクなどの機器を操作したときに、選択されていない回線まで鳴動してしまうので注意が必要です。



## 完成形はこのようになります

アンプの端子と、リレーモジュール間の配線は、適当なLANケーブルを流用しております。そのままだと固定が華奢ですので、棒端子を圧着して熱収縮チューブを着せました。
![IMG_8375_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630054/036b32c5-8647-8270-fb0e-db705abe09bf.jpeg)

リレーモジュールの端子とアンプの端子を接続します。
本来は電気工事で撚り線を棒端子に変換するときなんかに使用するやつです
![IMG_8379_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630054/2b5e0ce4-ff18-0761-e3b4-3bce9d71d97a.jpeg)


余っていたwindows10IOTのPCのイヤホン端子と、アンプのRCA入力端子（赤白のやつ）に接続して
あとは適当に、時間になったらリレー駆動と、音声ファイルを再生するアプリケーションをサクッと書いて駆動させればOKです。
アプリは技術的にはありふれた話になるので詳細は割愛いたしますが
単純に100msごとに時刻を確認して、スケジュール指定ファイルと見比べて、合致していたら…みたいな感じです。
書いたコードからの物理的な出力方法の一例としてご参考になれば。

![IMG_8382_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630054/8da152c3-d458-2669-5a1c-73a254e451a6.jpeg)


適当な音声ファイルなら再生できるように書いたので、クリスマスにはクリスマスソングを流す…とかもできます。（たぶんやらない）

これ、そんなことを妄想しながら動かしてて思ったのですが
夜遅くにホラーなBGMを仕掛けておいたら、残業を抑制できるんじゃないかと！？？（怒られるので、絶対やらない）


## 明日は

明日は内田さんの『引越しインフラ3(混雑モニター開発)』の記事です。