NDロードスターのオーディオユニット交換

去年購入したNDロードスターLink は最安のSタイプだったので、カーオーディオも最低限。納車されたら早いうちに交換するつもりだったのですが、クラウドファウンディングで注文したドライブレコーダーLink が到着してからまとめてやろうとしたら、案の定レコーダーの到着が遅れて1年塩漬けになったという。

ネットで検索すれば先人たちの記録が示すように、交換させる気がさらさらない車体デザインなのでそれなりの工作スキルが必要。車体本体には加工してないので、戻すことは可能です。

購入した物

パイオニア DEH-7100Link オーディオユニット。選定理由は1) 日本語表示ができる 2) ディスプレイパネルが分離できる
ENDY EPP-043ZLink 車側のコネクタから線を引き出すため。オーディオ・電源線だけなら反対側がギボシ端子になったやつの方が便利ですが、ステアリングに付いてるリモコンスイッチからの線を引き出すため、他にいいものが見つかりませんでした。
マツダ C900V6014 ラジオアンテナのコネクタ変換。マツダ純正品なのでディーラーで購入可能かも。
アルミ板 100×300×1.5mm オーディオユニット本体の固定のため。曲げ・切断が大変なら1mm厚でもいいかも。
スチール製L字金具 ホームセンターで購入。
5mm厚スポンジ ホームセンターで購入。クッション目的ですが、気休め(^^;)
オーディオステレオミニプラグ DEH-7100のリモコン接続用。
フラットケーブル 20線 分離するオーディオユニット本体とフロントパネル間の信号線を結ぶため。
MILコネクタ 20ピン 上記フラットケーブルの途中を切り離しできるようにするため。無くてもいいが、作業が面倒になる。
途中の写真は残してなかったので、いきなり取り付け直前の状態。写真はユニット上下がひっくり返されてます(CD挿入口が下側になっている)
  • このページLink を参照に回路基板から線は引き出し済み。
  • アルミ板を50mm-180mm-50mmサイズでコの字に曲げ、側面にねじ穴を開けユニットに取り付け。300mm長の板だと20mm余るので60-180-60に曲げたいところですが、車体に入らなくなるおそれあり。
  • アルミ板の底面にL字金具を取り付け。購入した金具の短辺には4mm径の穴が2個開いているだけだったので、6mmの穴を追加。ステンレス製買わなくて良かった(^_^)
Blog2016_DEH7100a

Blog2016_DEH7100b

ステレオミニプラグをユニット背面のW/Rに差し込み。
ミニプラグ側 EPP-043Z側
L(先端) 15番
R(中央) 接続無し
GND(根本) 16番
Blog2016_DEH7100c

が、いざ車体にユニットを入れようとすると入らない。理由は赤いケーブル分岐パーツと使わない白いコネクタ(写真右側)が大きすぎるため。
Blog2016_DEH7100d

要らない白コネクタを取り去り、分岐パーツの使用をやめてスリム化。これで難なく入るようになりました。
Blog2016_DEH7100e

元のユニットがあった場所にDEH-7100本体を設置。L字金具に開けた6mm穴を使ってM6ボルトで固定。
Blog2016_DEH7100f

動作確認。
  • アクセサリ電源をOnにして起動することを確認。
  • ユニットの操作パネルで全ボタン・ダイヤルが機能することを確認。最初半田の一か所が隣の端子にショートしていたようで、ダイヤルだけが機能しないことを経験したので、全ボタンが動くことを確認しましょう。
  • ラジオ・USBなどの使う予定の音源が鳴ることを確認。
  • システム設定のステアリングリモコン設定を開き、プリセット→マツダを選択。VOL+とVOL-の長押しを求められるので、ハンドルのスイッチを操作する。完了後、音量調整・MUTE・チャンネル切り替えが機能することを確認。
フロントパネルの取り付け後。
  • 元のディスプレイがあった場所にそのまま置くとBANDとDISPボタンが押しにくかったので、3mm厚のアクリル板と1mm厚の両面テープで約4mmのかさ上げ。
  • 丸で囲んだところがMILコネクタ(この場所はエアコンの通風道なので最終的には別の場所においてます)。
  • USBケーブルはDEH-7100付属の物を使用。フロントパネルの裏側(EJECTボタン辺り)にコネクタを張り付け。変速レバー近くにある元のUSBコネクタはお飾りとなりました(コネクタ作るのが面倒だったので…)
Blog2016_DEH7100g

取り外したパネルをすべて戻して完成。
Blog2016_DEH7100h

事前調査と一部の品物は購入してあったのに、実作業&ホームセンター通いでこの前の3連休含めて5日かかりました orz。まぁ内3日は使わなくてもよかった(元のUSBコネクタを有効にしようとした、DEH-7100がマツダのリモコンに対応していると知らず変換回路を作ろうとした、ラジオアンテナの形状が予想外で慌てた)時間ですが。

…この時間と情熱をなぜ大掃除と年賀状に向けられないのか? > 自分

[参考]

[2016/12/29 追記] 特に問題なく動いてますが、やはりプジョーのステアリングリモコンは便利だったなと思う次第。オーディオユニット本体を隠れた場所に設置するためCDプレーヤーは使用できないのですが、ユニット内にあるCDドライブはケーブルを抜いても他の機能は動作するようなので、完全に外してしまっても大丈夫そうです。この空間に他の物も入れたい場合や、1グラムでも削るライトウェイトスポーツを目指す方はどうぞ。

— posted by mu at 05:30 pm   commentComment [0]  pingTrackBack [0]

MySQLでUPSERTとパーティショニングの両立方法が分からない

MySQLでUPSERTとパーティショニングを設定したいとします。運悪くパーティショニングをしたい列は一意にはなれないとします。

少し具体的にいうと、こんなテーブル。データが挿入された月毎でテーブルを分け、古いパーティションは後日捨てたい。timeがパーティショニングキーになります。一方システム要件として一意なデータを指定するにはidで十分なので、行の選択はidのみで指定されます。
create table test(id int, datetime time default current_timestamp);

MySQLでパーティショニングキーになる列には以下の要求事項があります。Partitioning Keys, Primary Keys, and Unique Keys (MySQL documentation)Link

  • そのテーブルに設定されている全てのUnique key/Primary keyに含まれていること
先にも言ったとおりtimeは一意性を保証できないので、idと組み合わせて一意性を確保することにします。
create table test(id int, datetime time, primary key(id, time)) 
partiotion by range columns(time)
 (partition p201612 values less than ('2016-12-01 00:00:00'),
  partition p201701 values less than ('2017-01-01 00:00:00'),
  partition p201702 values less than ('2017-02-01 00:00:00'),
  ...
 )

ここまでは問題なし。次にUPSERTとして有名なのは、INSERT ... ON DUPLICATE KEY UPDATE ...構文。が、Unique keyはidとtimeの二つで設定されているので、idだけ指定してtimeが適当ではINSERTしても重複と判定されずupdate文が実行されません。

重複判定させるためにid単独で別のUnique keyを作成しようとするとエラー。パーティションキーになる列は全てのUnique/primary keyに含まれるという制限に反するからです。

それならばとbefore updateのトリガーを指定して、更新しようとするidがテーブルになければidだけの行をinsertしておこうとする。

delimiter $$
create trigger test_updatetrigger
before update on test
for each row
begin
  if not exists (select 1 from test where id=new.id) then
    insert into test(id) values(new.id);
  end if;
end$$

これはトリガー発動時にエラー。トリガー関数内ではテーブルに対する操作は禁止されているLink とのこと。

というわけで現在ここで行き詰っており、王道であるアプリケーション側でのselect→insert/update対応になりそうです。こんな案件珍しくないと思うんだけど、なぜパーティションキーにUnique key設定が必要なんて使いにくい仕様があるんだろ。以前もちょっと複雑なSQL書こうとしたらハマった(で、MySQL捨てた)とか、どうも私はMySQLと馬が合わないようです。

— posted by mu at 07:03 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0194 sec.
prev
2016.12
next
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31