【随時更新】僕のモナーコイン採掘専用PCを紹介するぞ(7/2 更新!)

2017/7/2 追加・更新しました!下に行くほど新しいです。

僕のモナーコインマイニング用パソコンを紹介したいと思います。他人のマイニングパソコンを見るのが凄く楽しいので、僕のも公開しようと思いました。

こういうの好きな人、結構多いんじゃないかな?

僕のマイニング専用PCは常に改造・改良を続けているので、変更するたびに追記していく予定です。下に行くほど新しいです。

随時更新なので、僕のマイニングPCの変化に興味がある方は、Twitter(@netatank)でもフォローしてください。更新情報や制作過程のツイートもしてます(大量ツイートするのでウザイかもw)



スポンサーリンク

2017/6/13:メインPCでモナーコイン採掘

僕は実は2014年ごろにもモナーコインを発掘していたんですが、電気代で大赤字を計上し引退してました(ASICが登場しつつあったことも要因)。久しぶりにモナーコインの価格を調べてみると、昔に比べて何十倍にも上がっていて、十分電気代をペイ出来ることがわかり、再参入を決めましたw

とりあえず、お試し。メインPCでマイニングを開始しました。

さすがに、普段使っているパソコンでマイニングするのは無理がありますねwカクカクしてマトモに使えません。

関連記事:コンパクトなRyzen搭載自作PCが遂に完成!パフォーマンスや安定性は?
関連記事:【AMD Ryzen】僕が買った自作PC用パーツはコレだ!(開封レビュー)

2017/6/14:マイニング専用PC 初号機

メインPCでマイニングしてしまうと、他の作業が全くできなくなるという問題が発生して、マイニング専用機(初号機)を自作しました。

排熱性・コンパクトさ・コストなどから、ベニヤ板PCになりました。グラボはメインPCの1050Tiを流用。

余っていたMINI-ITXマザーで作ったので、グラボが1枚しか刺さらないのが致命的すぎる欠点です。

CPUが低スペックになったこともあり、電力が30Wも下がりました。ハッシュレートはOCを強めたため少し上がりました(OCしても数Wしか上がってないよ。壊れるかもしれないけどさ)

関連記事:【ベニヤ板PC】Monacoinマイニング専用PCを作ってみたぞ!(初号機)



スポンサーリンク

2017/6/15:初号機を1080に換装

2号機制作のために購入したNVIDIA GeForce 1080を初号機の取り付けました。2号機が完成するまで、1080は初号機で運用中です。

かなりハッシュレートはあがりましたが、電力も大幅上昇です。正直なところ、これだったら下位モデルを複数台搭載した方がコスパ良いかもと思いました。1060あたりを2個つければ、1080を超えそうだし・・・電力も大して変わらないんじゃない?

関連記事:木材を使った「最強のマイニング専用PC」製造計画(2号機)

2017/6/16:マイニング専用機 2号機の仮運用

部品代を償却するためには、できるだけ長い時間マイニングし続けないといけないので、取り急ぎ2号機を仮組みしました。無固定でむき出し状態です。

専用のベニヤ板ケースを作成中のため、このような酷い状態で仮運用となってます。

グラボは初号機につけていた1050Tiです

Core i5なので少し電力が気になっていましたが、Celeronの初号機と大差ありませんでした。良かったw

関連記事:木材を使った「最強のマイニング専用PC」製造計画(2号機)

2017/6/17 木製フレームを使ったマイニング2号機計画を破棄

木材を使った「最強のマイニング専用PC」製造計画(2号機)を実現するために近所のホームセンターで木材を買ってきました。

現物合わせで木材を切断し、それっぽく組み立ててみたのですが、強度上の問題があることが判明。

ネジ止めすると木が割れてしまうので、木工用ボンドで固定したのですが、重たいパーツを載せると外れてしまいます。ネジ止めするためには、下穴を開けなければならなくて、かなりの手間なので、この法案は諦めました。

ネジ止めが少なくなるように、もう少し簡易的なタイプも試作してみたのですが、GTX1080などの重たいグラボを載せると、ネジ止めしていても接合部分が外れそうになりました。

根本に大掛かりな補強が必要で、木でフレームを作る計画は破棄しました。



スポンサーリンク

2017/6/18 金属フレームを使ったマイニングリグ(2号機)

木製は諦めて、金属を使ったPCケース(いわゆるマイニングリグ)を作ることに。作り方は別途記事にしますが、ホームセンターで売られている金属棚用パーツを組み合わせて、マイニングリグにしました。

ちょうどいいサイズ感のフレームが売っていたので、特に切断や穴あけをせずに作ることができました。ボルト止めだけでつくったのですが結構いい感じでしょ。

かなりコンパクトなので気に入ってます。

スペックとしては

です。

一応、物理的には8台までのGPUがくっつきますが、電源容量的に僕は3台までかなぁと思ってます。

2017/6/20 2号機にGTX1080を追加、冷却ファン2個追加

1080を追加購入して、マイニング2号機に取り付けました。これで、1号機の1080、2号機の1080+1050Tiの3枚体制になりました。

予想以上に1080が発熱するので、前面に12cmファンも2個付けました。無くても問題ない気もしますが、将来的にはグラボを売却する予定なので、壊れないようにとの配慮です。

ちなみに、グラボとマザーボードの接続には、ライザーケーブル(ライザーカード)を使ってます。調達性の問題から、手前の1050tiはフラットケーブルタイプ、奥側の1080はUSBタイプで繋げてます。

フラットケーブルの方は×1用なので、後方をカッターで削って無理やり差してます。若干固定が甘いですが、とりあえず動いてます。安定性については、僕の環境下ではフラットケーブルの方が優秀ですね。USBの方は線が長くてノイズがのるのか、USBケーブルの位置によってはクラッシュします。

今後の予定は、電気代節約のため、1080が載っている1号機を廃止して、2号機に集約する予定です。ライザーケーブルが届かないので到着待ちの状態です。いろいろなところで合計4枚も注文したんですが、シンガポールや中国から送らってくるらしく、当分は届きません・・・。

2017/6/22 マイニング専用機をスチールラックに移動

マイニング専用PC1号機(右)と2号機(左)をスチールラックに移動させました。今まではテーブルの上に置いてありましたが、当分改造する予定も無いので邪魔にならない場所に移動です。

本当は電気代節約のため1号機を廃止したいんですがライザーケーブルが届かないんですよ。ライザーケーブルが無いとグラボの増設もできず手詰まり状態です。

近所のPCデポに税抜3500円で売ってはいるんですが、ちょっと高すぎるよなぁ・・・。

ちなみに、もう少し広範囲を写すとこんな感じです。

左側の小さいラックが、ネタンクを公開している自宅サーバーです。煙突みたいなのはメインPCで、その隣にある小さいのが自宅サーバー本体です。

パソコンが大量に動作しているので、耳栓しないと眠れないほどウルサイです。サーバールーム並の爆音をたてています。

関連記事:自宅サーバーの記事一覧

関連記事:メインPCの記事一覧

2017/6/24 1号機を廃止して2号機に集約

遂にライザーケーブル(ライザボード)を入手できたので、1号機のGTX1080を2号機に移植しました。電気代節約のため1号機は廃止です。

早速取り付けてみると、フラットタイプのライザーケーブルだと縦方向に長いのでCPUファンに干渉してしまいました。なので、CPU付近には他のスロットで使用していたUSBタイプのライザーケーブルを使いました。

それでもCPUファンにスレスレで整備性も最悪です。もう少し高い位置にグラボを取り付けられるようにした方がよかったですね。

最初は起動できなくて焦ったのですが、マザーボードが電力不足に陥っていたみたいです。未接続だったPCIe用の補助電源を繋いだら起動しました。

どれくらい電気代が安くなったかというと・・・PC2台体制の時が520Wくらいだったので、何故か1台に集約したら電力がUPしてしまいました。

理由はよくわかりませんが、電源の変換効率が悪い領域で使ってしまっているのかも。

当初の目的であった電気代節約には繋がりませんでしたが、不用になった1号機のパーツを流用して3号機を計画中。お楽しみに。

2017/6/26 2号機:グラボ間の隙間を広げて冷却性UP、ファン廃止

これ以上グラフィックボードの追加購入はしないと決めたので、2号機のグラボ間隔を広げました。

限界まで広げた結果、2スロット分くらいの隙間ができました。空いた隙間に追加のグラボを設置することも可能ですが、現在使っている電源容量の問題があって、3台が限界ですね。

1050Tiを撤去して、代わりのハイエンドグラボを設置することも検討中ですが、赤字幅をこれ以上増やしたくないので、いったん保留です。1080の入手性も悪化しているし、モナーコインの採掘難易度も上がっていますしね。

あと、前面に取り付けていた12インチファン2個を撤去しました。グラボ間隔を広げたことでファンなしでも冷却性能に問題ないことが分かったためです。ちなみに、ファンを撤去しても、GPU温度が75℃から65℃まで下がりました。

2017/6/28 2号機:超苦労して無線LAN化に成功する

2号機を無線LAN化しました。詳しくは下記記事を読んでほしいのですが、グラフィックボードのノイズで無線LANにつながらないというトラブルが発生しました。

関連記事:マイニングPCが無線LAN接続できない!グラボが出すノイズが原因だったよ

いろいろと試しまくった結果、USB延長ケーブルを使ってケース底に無線LAN子機を設置。これで何とか無線LANに繋がるようになりました。ここまでたどり着くのに2日も掛かりましたよw

原因がわかれば簡単なんですけどね。。。

2017/7/2 2号機:自動再起動装置の開発をはじめる

マイニングPCあるあるだと思うのですが、僕の2号機は動作が安定しません。グラボをライザーケーブルで接続しているためか、定期的マイニングが停止します。

ずっと監視しているわけにもいかないので、マイニングが止まっていることに何時間も気が付かないことも多くて、結構無駄が生じています。

何かいい方法ないかなぁと思って、いろいろ考えた結果、異常発生時にマイニングPCを自動的に再起動する装置の開発を進めることにしました。

実はもうほとんど完成してしていたりします。Arduinoというマイコンボードを使用し、マイニングPCを常時監視して、マイニング停止を検知したら自動的にPCを再起動させるという装置です。

具体的な動作としては、

  • 電流センサーで、マイニングPCの消費電力を測定する
  • 消費電力値が設定値より下回ったら、マイニングPCの電源ボタンを押して再起動を試みる
  • 再起動に失敗したら、マイニングPCのリセットボタンを押して、強制的に再起動を試みる
  • それでも再起動に失敗したら、LEDをピカピカ光らせて知らせる

マイニングが停止すると消費電力が下がるという特性を利用しています。

一応、プログラミングまでは完了して、動作に不具合がないことまでは確認しました。ただ、リレーが届かないので、実際には使用できない状況ですw

完全に完成したら、作り方の記事でも書きたいなぁと思ってます。

役に立つかわからないけど、参考にArduinoのプログラムを貼り付けておきますねw

//ポート設定
const int PIN_ANALOG_INPUT_I = 0; //電流値読み込みポート
const int PIN_LED_G = 8; //正常LED 緑
const int PIN_LED_R = 9; //エラーLED 青
const int PIN_LED_R_ERROR = 10; //再起動実行したことを表示
const int PIN_RELAY_POWER = 11; //PCのパワースイッチ制御用リレー
const int PIN_RELAY_RESET = 12; //PCのリセットスイッチ制御用リレー

//動作設定
volatile int ERROR_THRESHOLD = 5; //何回ERRORを観測したらERROR確定するか
volatile int W_THRESHOLD = 100; //ERROR判定する電力閾値
volatile int POWER_SWITCH_TIME = 800; //再起動させる際の電源ボタンを押す長さ(ミリ秒)
volatile int REBOOT_TIME = 100; //パソコンの再起動にかかる時間(秒)

//共通の変数
volatile float W = 0; //電力値
volatile int ERROR_COUNT = 0; //ERRORの回数,999で再起不能
volatile int REBOOT_COUNT = 0; //再起動回数

 

void setup() {
Serial.begin( 9600 );

//デジタルPINを出力に設定する
pinMode(PIN_LED_G, OUTPUT);
pinMode(PIN_LED_R, OUTPUT);
pinMode(PIN_LED_R_ERROR, OUTPUT);
pinMode(PIN_RELAY_POWER, OUTPUT);
pinMode(PIN_RELAY_RESET, OUTPUT);

//ERROR判定用タイマー
//MsTimer2::set(10000, ErrorCheck);
//MsTimer2::start();
}

int i = 0;
void loop() {

//初回起動時の処理
if (i == 0) {
RebootLED();
i++;
}

DnryuAnalogReed(); //電流センサーの値を読み込む
DenryokuLedON(); //電力LEDをONにする
ErrorCheck(); //エラーチェック
Saikihuno(); //再起不能時処理
delay(2000); //チェック間隔
}

void DnryuAnalogReed() {
int analog = analogRead( PIN_ANALOG_INPUT_I );
float I = analog * 5.0 / 1023.0;
W = I * 1000;
Serial.println(W);

}

 

void ErrorCheck() {

//電力値がしきい値内かチェックする
if (W < W_THRESHOLD) {
//しきい値以下(異常)の場合はエラーカウントする

//エラー回数表示
int j = 0;
while (j < ERROR_COUNT) {
digitalWrite(PIN_LED_R_ERROR, HIGH);
delay(100);
digitalWrite(PIN_LED_R_ERROR, LOW);
delay(100);
j++;
}

ERROR_COUNT++;

}
else {
//しきい値以上(正常)の場合はエラーカウントを0に戻す
ERROR_COUNT = 0;
}

//エラー回数がしきい値を超えた場合の処理
if (ERROR_COUNT > ERROR_THRESHOLD) {
//再起動処理中の表示
digitalWrite(PIN_LED_G, HIGH);
digitalWrite(PIN_LED_R, HIGH);
digitalWrite(PIN_LED_R_ERROR, HIGH);

 

//PCの電源スイッチを押してPC電源OFF
digitalWrite(PIN_RELAY_POWER, HIGH);
delay(POWER_SWITCH_TIME);
digitalWrite(PIN_RELAY_POWER, LOW);

//PCが終了するまで待機
RebootLED();

//PC電源ON
digitalWrite(PIN_RELAY_POWER, HIGH);
delay(POWER_SWITCH_TIME);
digitalWrite(PIN_RELAY_POWER, LOW);

//PCが起動するまで待機
RebootLED();

 

//PCの状態再チェック
DnryuAnalogReed(); //電流センサーの値を読み込む
if (W < W_THRESHOLD) {
//しきい値以下(異常)の場合はPCのリセットボタンを押して電源OFF
digitalWrite(PIN_RELAY_RESET, HIGH);
delay(POWER_SWITCH_TIME);
digitalWrite(PIN_RELAY_RESET, LOW);

//PCが再起動するまで待機
RebootLED();

//電流センサーの値を読み込む
DnryuAnalogReed();
if (W < W_THRESHOLD) {
//強制再起動しても復帰しない
ERROR_COUNT = 999;//再起不能エラー
}
else {
//エラーカウントを0に戻す
ERROR_COUNT = 0;
//再起動LED点灯
digitalWrite(PIN_LED_R_ERROR, HIGH);
REBOOT_COUNT ++;
}

 

}
else {
//エラーカウントを0に戻す
ERROR_COUNT = 0;
//再起動LED点灯
digitalWrite(PIN_LED_R_ERROR, HIGH);
REBOOT_COUNT ++;
}

}

}

void DenryokuLedON() {

//状態表示LEDの表示
if (W > W_THRESHOLD ) {
digitalWrite(PIN_LED_G, HIGH);
digitalWrite(PIN_LED_R, LOW);
}
else {
digitalWrite(PIN_LED_G, LOW);
digitalWrite(PIN_LED_R, HIGH);
}

//再起動履歴がある場合はエラーLEDを点灯させる
if (REBOOT_COUNT > 0 && W > W_THRESHOLD) {
int j = 0;
while (j < REBOOT_COUNT) {
digitalWrite(PIN_LED_R_ERROR, HIGH);
delay(200);
digitalWrite(PIN_LED_R_ERROR, LOW);
delay(200);
j++;
}
digitalWrite(PIN_LED_R_ERROR, HIGH);

}
}

void RebootLED() {
int ledtime = 333;
int j = 0;
while (j < REBOOT_TIME) {
digitalWrite(PIN_LED_R, HIGH);
delay(ledtime);
digitalWrite(PIN_LED_R, LOW);

digitalWrite(PIN_LED_G, HIGH);
delay(ledtime);
digitalWrite(PIN_LED_G, LOW);

digitalWrite(PIN_LED_R_ERROR, HIGH);
delay(ledtime);
digitalWrite(PIN_LED_R_ERROR, LOW);
j++;
}

 

}

 

void Saikihuno() {

if (ERROR_COUNT == 999) {
while (true) {
digitalWrite(PIN_LED_G, HIGH);
digitalWrite(PIN_LED_R, HIGH);
digitalWrite(PIN_LED_R_ERROR, HIGH);
delay(100);
digitalWrite(PIN_LED_G, LOW);
digitalWrite(PIN_LED_R, LOW);
digitalWrite(PIN_LED_R_ERROR, LOW);
delay(100);

}
}
}

 

 

随時更新中です。Twitter(@netatank)で更新情報や作成過程を流してますので是非フォローをお願いします。

スポンサーリンク
 

5 件のコメント

  • ベニヤ版でパソコン!!
    高負荷をかけたとき扇風機の風でも当てておけば、かなりの冷却効果が期待できそうですね!!

  • 私も最近1080でモナーコイン掘り始めました!
    これからが楽しみです!期待しています!

  • 消費電力監視だと、プールがダウンしている間はずっと再起動を繰り返してしまうんですか

  • 2回連続で再起動に失敗したら、再起動動作は停止するようになってます。
    一応、消費電力が10回連続でしきい値を下回ったときに再起動動作するようになってるので、チェック間隔を伸ばせば、プールが少しの間ダウンしても問題ないです。

  • なるほど!よくできていますね!
    しかし最近は採掘者が増えて、もらえる割合がガクッと減ってしまいましたね。