ラベル iPod の投稿を表示しています。 すべての投稿を表示
ラベル iPod の投稿を表示しています。 すべての投稿を表示

2018年7月14日

iPod Classicに大容量ストレージとバッテリーを搭載してみた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
というわけで、長年考えていた「最強のiPod Classicを作りたい」という目標を実行してみたお話です。

改造に必要なiPod Classic(最終世代)の調達
ヤフオクやメルカリ等で電池消耗はあるけど外観の状態が良さそうな物を4つ(シルバーとブラック2個ずつ)購入、うち2個はApple Storeにてバッテリー交換して保管用に、残り2つのうち1個を比較用に未改造状態、もう1個を改造用として用意しました。

iPod Classic ... 1個 約1万円

ストレージ用の変換基板
iPod 第5世代やiPod Classic(6世代以降)に対応した、microSDカードが4枚挿しできる基板を購入。
https://www.iflash.xyz/store/iflash-quad/

iFlash Quad ...  42ドル = 約5,000円

ストレージ用のSDカード
ここ1年くらい大容量MicroSDカードの値動きを追っていて、200GBが1枚6000円を切ったら実行しようと思っていて...
ついに、先日、テクノハウス東映でSanDisk Ultraの200GBが6000円を切ったため4枚まとめ買い。


SanDisk Ultra microSD 200GB ... 1枚5,880円 x4 =23,520円

256GBを4枚挿しで1TBというのも憧れるけど、200GBと比較して256GBはまだまだ高いので、次やる時の楽しみにとっておきます。

「800GB」刻印のバックパネル (スリム仕様)
せっかく大容量化するので、刻印も実際の容量と同じ 800GB の物を購入。
あと、フロントもバックパネルも金属製のClassicは開ける作業が非常に難しく、歪みや傷が入ること必至なので元のバックパネルは使わないという前提です。
Aliexpressにて購入。


バックパネル ... 950円 + 送料 200円くらい = 1,150円

1950mAhのバッテリー
iFlash QuadとmicroSDの組み合わせでは元のHDDと比較してかなりスリム化するので、空きスペースに大容量バッテリーが入ります。
eBayでフレキが互換の交換用バッテリーを購入。

バッテリー ... 14.99ドル + 送料 350円くらい = 2,050円

これでパーツは一通り揃ったので分解作業開始...


想定どおり非常に開けづらいので、開腹作業には1時間くらい要しました...
今回はフロント側に傷を入れないようにし、バックパネルはどうなっても良いというスタンスで作業をしたので、バックパネルは縁が歪んで再度の取り付けは厳しい状態に。
また、クリックホイール操作時にクリック音を鳴らすための圧電スピーカーがイヤホンジャック下部のフレキに付いていましたが脱落... 慌てて追加でこのフレキ部品を発注するも、結局使わないことに(後述)


HDDを取り外して、iFlash QuadにmicroSDカードを4枚セット、HDDと同じ部分に置いてみる。
この状態だと元のHDDと比べて非常に薄いので、スッカスカです。
一応、iFlashにはバッテリーを増量せずにデフォルトのバッテリーで筐体を閉じるために、スペーサーとなる黒いスポンジも付いています。


次にバッテリーの接続。
左は元々の550mAhバッテリー、右が1950mAhバッテリーです。


1950mAhバッテリーを入れるには少々フレームに加工が必要で、元のHDDを固定するために付いている突起を削る必要あり。


こうして完成したものを閉めようとすると...
クリック音用のスピーカーが絶妙にバッテリーと干渉して液晶画面側が僅かに浮いてしまいます。
ということで結局、分解時にスピーカーが脱落してしまったフレキを再利用することに...


iPodをMacと接続し、iTunesからファームウェアを復元、実際に使用できる容量は730GB程度のiPod Classicが完成。

試しに90GBくらいの音楽ライブラリを同期して、LossLess音源を連続再生することでバッテリー持続時間を計測中...
48時間程度経過した段階で、バッテリー表示上は7割くらい残っているようです。

掛かった費用は4万5000円くらいでしょうか。
最近流行りのハイレゾ対応プレイヤーだと物によるけど5万円以上したりするので、ハイレゾとまでは行かないものの48kHz/16bitまで再生できて大容量で長時間再生できるプレイヤーとしては割とお得なのでは?と思ったり...

iTunesで10年以上続く音楽ライブラリを管理しているので、これからもiPod Classicには活躍してもらうことにします。

追記:重さの比較してみました。


シルバーが今回改造したiPod Classicで123g、ブラックが未改造で135gでした。
体感としては、僅かに軽くなったかなというくらい。
バッテリーが550mAhのデフォルトの物だと凄く軽く感じるけど、逆にオモチャっぽさを感じたので、ある程度の重さがある方が質感アップに寄与する模様。

2017年5月12日

iPod miniを勝手に(PRODUCT)REDっぽくしてみた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

最近はスマホで音楽が聴けるので 携帯音楽プレーヤーを別に持つ人といえばハイレゾ趣味の人くらいになりつつある気がしますが、今回は12年前のiPod miniをリニューアルする話です。

まずは、ジャンクで購入した時のiPod miniがこちら。


起動しない問題がありましたが、これは内蔵Microdriveが故障しているのが原因だったので予備のMicrodriveに交換したら問題なく動作。
それよりも気になるのは、このクリックホイールに保護フィルムを貼ったまま日光に晒されたことが原因と思われるパンダ日焼け。
カラーアルマイトの色は紫外線で退色してしまいますが、プラの保護フィルムが貼ってあったところは元々の色に近い状態で残っています。

外装自体には傷一つないので、この日焼けだけが何とも残念... ということでiPod miniを再カラーアルマイト処理に出してみることに。


まずはアルミ外装から、ロジックボードやMicrodrive、バッテリー、クリックホイールなどの中身を取り出していきます。


クリックホイールと液晶部のアクリル窓も取り外し、アルミ外装側に接着剤や両面テープが残らないように掃除していきます。
アクリル窓を外すときは、窓の周囲をドライヤーで温めながら押し込むと簡単に外せます。


全部バラバラにして並べると、こんな感じに。
この完全にアルミだけになった外装を、アルマイトの再処理をしてくれる会社に送ります。
元々のカラーアルマイト処理をしていたのはYKKらしい...ですが今回は、ポスト投函して1週間程度でカラーアルマイト処理して返送してくれる株式会社コーケンの「光研アルパック10」を利用してみることに。
アルパックは秋葉原のヨドバシカメラにて3780円(税込)で購入。
10点、250gまでのパーツを入れることができるので、もう一つピンク色のiPod miniの外装を入れて合計2点でやってもらうことに。

今回依頼した会社は、普段は自動車やバイク、自転車の部品をアルマイト処理したり、ラジコンなどのホビーパーツをアルマイト処理するのがメインっぽい会社ですが、果たしてうまく行くだろうか...などと心配しつつパックに詰めてポストに投函したのが4月29日。

間にゴールデンウィークで休業が入っていたので、処理されて返って来たのが5月11日でした。


返って来た外装をシルバーのiPod miniと並べて撮影。
再度カラーアルマイト処理するときは、一旦元の色を抜いてから新しい色を入れるそうなので、ピンクが抜けているときはシルバーのような色になっていたはず...?
本来、iPodの刻印はアルマイト処理された上から行なっているので、再処理すると消えてしまうのは知っていましたが、なかなか良い具合に跡が残っています。


これを、CF変換に入れた128GBのSDカード、新しいバッテリーと共に組み上げていきます。
手順は分解と逆なので省略...


DockケーブルでMacと接続してiTunesで初期化すると、無事128GBのiPod miniとして認識。


12年前のiPodが最新のiTunesで問題なく認識、ファームウェアの復元、音楽の同期ができるのは地味にすごい。
Apple Lossless(ALAC)も同期、再生が可能なのでまだまだ長く使えそうです。


最後にiPod mini 2世代(ブルー、シルバー)、iPod Video(5.5世代)との比較写真を。
iPod 5.5世代は128GBのmSATA SSDに換装して、コンデンサも交換済みだけど... バッテリー持ちが少し悪いのとTriple.fi10で無音時にノイズが気になる問題があるので、これからはiPod miniがメインになりそう。

2013年2月11日

iPodをArduinoでコントロール

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

コントロールと言っても音楽やメディア(YouTube、ストリーミング等)の再生停止、送り戻し、音量の調節くらいですが、今更ながらDockコネクタ経由でやってみたり。
#時代はLightningとか言わない
一応、iOSデバイス(iPhone/iPad)も制御できますが、あくまでもメディア(音楽・動画)のコントロールのみなのでタイトルを「iPod」としました。

使用したのはArduino Pro mini 3.3V、スイッチ、抵抗(1kΩ*3、1MΩ*1)、Dockコネクタのbreakoutボードの4つ。
5V系を使う場合はTXからの出力を抵抗分圧等で3.3VにレベルシフトしてあげればOK。
(ただし、Arduinoへの電源供給は別途しなければならない)


とりあえず、再生停止、曲送り、曲戻しの3ボタンを用意。
Dockコネクタとの接続はこちら(http://pinouts.ru/CellularPhones-A-N/iPhone_connector_pinout.shtml)を参考に、ArduinoのTXをDockコネクタの13ピン、VCCを18ピン、GNDを11ピンに。
Dockコネクタの21ピン(Accessory Indicator)は1MΩ経由でGNDに接続しました。(500kΩでも問題なし)

iPod(iPhone/iPad含む)のシリアル通信に関しては既に調べ尽くされているので、その情報を参考にしました。
https://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/s2007/awr8_asl45/awr8_asl45/index.html
http://web.student.tuwien.ac.at/~e0026607/ipod_remote/ipod_ap.html

シリアル通信には複数のモードがあり、最も簡単な制御モード(iPodへの一方行通信)がmode2、曲名やアルバム名なども取得できる制御モード(iPodとの双方向通信)がmode4となっている模様。
接続直後はmode0となっているので、そこにmode2への切り替えコードを叩いてあげるとmode2の制御コマンドを受け付けるようになってくれます。
と言うわけで、プログラムは上記ページを参考にしながら以下の様な感じで。
#include <Bounce.h>

#define BUTTON1_PIN 3
#define BUTTON2_PIN 4
#define BUTTON3_PIN 5

boolean state[3];

Bounce button1 = Bounce( BUTTON1_PIN,20 );
Bounce button2 = Bounce( BUTTON2_PIN,20 );
Bounce button3 = Bounce( BUTTON3_PIN,20 );

byte mode2[] =      {
  0xFF, 0x55, 0x03, 0x00, 0x01, 0x02, 0xFA};
byte playStop[] =   {
  0xFF, 0x55, 0x03, 0x02, 0x00, 0x01, 0xFA};
byte prevTrack[] =   {
  0xFF, 0x55, 0x03, 0x02, 0x00, 0x10, 0xEB};
byte nextTrack[] =   {
  0xFF, 0x55, 0x03, 0x02, 0x00, 0x08, 0xF3};
byte buttonReleased[] = {
  0xFF, 0x55, 0x03, 0x02, 0x00, 0x00, 0xFB};

void setup() {
  pinMode(BUTTON1_PIN, INPUT);
  pinMode(BUTTON2_PIN, INPUT);
  pinMode(BUTTON3_PIN, INPUT);
  Serial.begin(19200);
  for (int i = 0; i < 7; i++) {
    Serial.write(mode2[i]);
  }
}

void loop() {
  button1.update();
  if ((button1.read() == HIGH)&&(state[0] == 0)) {
    for (int i = 0; i < 7; i++) {
      Serial.write(playStop[i]);
    }
    state[0] = 1;
  }
  if ((button1.read() == LOW)&&(state[0] == 1)) {
    for (int i = 0; i < 7; i++) {
      Serial.write(buttonReleased[i]);
    }
    state[0] = 0;
  }
  button2.update();
  if ((button2.read() == HIGH)&&(state[1] == 0)) {
    for (int i = 0; i < 7; i++) {
      Serial.write(prevTrack[i]);
    }
    state[1] = 1;
  }
  if ((button2.read() == LOW)&&(state[1] == 1)) {
    for (int i = 0; i < 7; i++) {
      Serial.write(buttonReleased[i]);
    }
    state[1] = 0;
  }
  button3.update();
  if ((button3.read() == HIGH)&&(state[2] == 0)) {
    for (int i = 0; i < 7; i++) {
      Serial.write(nextTrack[i]);
    }
    state[2] = 1;
  }
  if ((button3.read() == LOW)&&(state[2] == 1)) {
    for (int i = 0; i < 7; i++) {
      Serial.write(buttonReleased[i]);
    }
    state[2] = 0;
  }
}
Bounceライブラリを使うとなんか冗長的な感じになってしまうのがアレですが、とりあえず仕組みは理解できたので今回はこれで良しとします。

これで何を作りたいのかと言うと、iOSデバイス上での音楽再生を停止させるスリープタイマーの外部インターフェース版。
普通はiOSデバイス単体でスリープタイマーを設定出来るようになっていますが、そういう設定が面倒くさい人(父)の為に、ボタンを「物理的に」何回か押せば簡単にタイマーが設定出来る装置を作ろうかと。

色々と資料を見ているとmode4も面白そうなので、次はmode4で取得した情報をLCDに表示させたりしてみようと思っているところ。