ラベル 53.硬件料理 の投稿を表示しています。 すべての投稿を表示
ラベル 53.硬件料理 の投稿を表示しています。 すべての投稿を表示

2020年8月2日日曜日

Raspberry Pi 4B のi2cバスにセンサーを接続

【お品書き】
Rapberry pi 4Bのi2cにバス繋いでみた。
#正確には、APDS9660モジュールは秋月のものではなく、同等品。
【接続】
ラズパイ4Bは、放熱のためにアルミ合金ケースに入れているが、GPIO(40pin)はフラットケーブルでケース外に引き出すことができる。
そこからブレッドボードに繋いでセンサーモジュールを接続してみた。


【接続確認】
# apt install i2c-tools
# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- 39 -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --              
  • 0x39がAPDS9660
  • 0x76がBME280
とりあえず、認識されているようだ。

ソフトウエアの設定については、別途。


2020年7月19日日曜日

M5Stack COCOA Counter + ENV.2 Sensor + GPS Unit その2

主に「M5Stack COCOA Counter + ENV.2 Sensor + GPS Unit」の補足情報です。

【今回のハード構成】
【各ユニットの接続】


【SDカードのログ出力例】
以下のようなログをファイルとして出力される。
緯度経度は一部数値をnで置き換えてます。
Loc: 35.nnnnnn 139.nnnnnn
2020/07/18 13:57:34.00 UTC
Sum5 Cocoa1
Tmp:  28.9C
Hum: 69.3%
Prs: 1013hPa

【バッテリーでの動作時間】
上記の【今回のハード構成】で、一晩窓際に置いてどのぐらいバッテリーが持つか、
位置情報の精度はどの程度か、確認してみた。
尚、増設のM5Stack用電池モジュールの他に、M5Stack Basicの底モジュールにも
小さいながらバッテリーが搭載されている。
あちこちのサイトに「2つのバッテリーを同時に搭載してはダメ」と書いてあるが、
まぁ実験なので、承知の上でやってみた(^^;
  1. バッテリー動作開始時刻
    上記のログが、バッテリーで動作させた際の最初の記録である。
    UTCとJSTは9時間の時差があるので、日本時間では2020/07/18の
    23時ちょっと前というところ。

  2. 最終ログ
    朝起きて、M5Stackを見て見たら、動作が止まっていた。
    microSDを取り外して、ログの最終データを見たところが、下記。
    ざっくり6時間動いている。
Loc: 35.nnnnnn 139.nnnnnn
2020/07/18 19:47:27.00 UTC
Sum4 Cocoa1
Tmp: 23.9C
Hum: 84.2%
Prs: 1012hPa 
【GPSの位置精度】
最終ログに出力されている緯度経度を緯度経度地図で確認してみた。
窓際に置いておいただけだけど、数m程度の誤差しかなかった。
結構優秀(^^)
 
【買っとけばよかったハード】

M5Stack COCOA Counter + ENV.2 Sensor + GPS Unit

【主な機能】
  • M5Stackの内蔵BLEを使って、厚労省の接触確認アプリCocoaを検出するもの。
  • BLE全体で検出した台数と内数としてのCoCoa台数を表示する。
  • 検出した情報は、microSDにログファイルとして記録する。
  • M5Stack Basicに温度湿度気圧センサであるENV.2 UnitをGROVE経由で接続し、
    それらの情報もついでに表示・記録する。
  • GPS Unitを接続し、検出した時の位置情報と日時を記録する。
【付加機能】
  • ボタンA(左)を押すと、Cocoa検出時のBeep音をon/offさせる。
  • ボタンB(中)を押すと、LCDのサイクリックに変わる。
  • ボタンC(右)を押すと、画面とログファイルに「memo」と出力する。
    何か気付いたことがあった時のイベント記録用。
【余談】
 追加で購入したGPS UnitのGROVEコネクタはUARTだった。
 M5StackのGROVEコネクタはENV.2 Sensorで埋まっているし、
 そもそもI2Cしか使えないようだし。

 ということで、UART2ポートに無理やり接続。
 最初は動かなくて悩んだが、M5Stack側TX2にGPS側RX、
 M5Stack側RX2にGPS側TXを繋ぐと動いた(^^;

    #UART(シリアル通信)なんで、考えてみれば当たり前なんだが、
    #こんなこともパッと思い出せないほどオッサン化が...。

 電池が届いたら、RTCも接続するかな。

[code]
/*
   Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleScan.cpp
   Ported to Arduino ESP32 by Evandro Copercini
*/
/*
   Thanks to https://gist.github.com/ksasao/0da6437d3eac9b2dbd675b6fee5d1117
   by https://gist.github.com/ksasao
*/
/*
   This sample sketch demonstrates the normal use of a TinyGPS++ (TinyGPSPlus) object.
   by Mikal Hart
*/
/*
   SD card wrie routine
   https://raspberrypi.mongonta.com/howto-write-csv-to-sdcard-on-m5stack/
*/

//////////////////////////////////////////////////////////////////////////////////
#include <M5Stack.h>
#include <TinyGPS++.h>
#include <BLEDevice.h>

//////////////////////////////////////////////////////////////////////////////////
/*
   note: need add library Adafruit_BMP280 & Adafruit_SHT31 from library manage
*/
#include <Adafruit_SHT31.h>
#include <Wire.h> //The SHT31 uses I2C comunication.
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>

//////////////////////////////////////////////////////////////////////////////////
#include <SPI.h>
#include <SD.h>

//////////////////////////////////////////////////////////////////////////////////
Adafruit_SHT31 sht31 = Adafruit_SHT31();
Adafruit_BMP280 bme;

//time out in seconds
int scanTime = 5;
BLEScan* pBLEScan;

const int chipSelect = 4;

TinyGPSPlus gps; // The TinyGPS++ object
HardwareSerial hsGps(2);// The serial connection to the GPS device

//接触確認アプリのUUID
const char* uuid = "0000fd6f-0000-1000-8000-00805f9b34fb";
int cocoaCnt = 0;

//log file name
const char* logfile = "/log.txt";

//文字列
const char* sumdevStr = "Sum";
const char* cocoaStr = " Cocoa";
const char* envStr = "Tmp: %3.1fC\r\nHum: %3.1f%%\r\nPrs: %3.0fhPa\r\n";
const char* locStr = "Loc: %lf %lf\r\n";
const char* dateStr = "%d/%02d/%02d ";
const char* timeStr = "%02d:%02d:%02d.%02d UTC\r\n";

//RTCまたはGPS
//bool hasRTC = false;
bool hasGPS = false;

//Sensor flag
bool hasSHT31 = false;
bool hasBMP280 = false;
float tmp = 100;
float hum = 0;
float pressure = 0;

//Other flags,Params
bool onBeep = true;
unsigned char bright = 0x03;
unsigned char brightPitch = 0x10;
static const uint32_t GPSBaud = 9600;
//////////////////////////////////////////////////////////////////////////////////
class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
    void onResult(BLEAdvertisedDevice advertisedDevice) {
      if (advertisedDevice.haveServiceUUID()) {
        if (strncmp(advertisedDevice.getServiceUUID().toString().c_str(), uuid, 36) == 0) {
          cocoaCnt++;
          if (onBeep) {
            M5.Speaker.beep();
            delay(10);
            M5.Speaker.mute();
          }
          M5.Lcd.setCursor(0, 110);
          M5.Lcd.setTextSize(2);
          M5.Lcd.setTextColor(GREEN, BLACK);
          M5.Lcd.printf("%d ", cocoaCnt);
          M5.Lcd.setTextSize(1);
        }
      }
      M5.Lcd.println(advertisedDevice.toString().c_str());
      M5.Lcd.setTextSize(1);
      M5.Lcd.setTextColor(WHITE, BLACK);
    }
};

//////////////////////////////////////////////////////////////////////////////////
void setup() {

  // Initialize the M5Stack
  M5.begin();
  M5.Power.begin();
  M5.Lcd.setBrightness(bright);
  M5.Lcd.setTextSize(1);
  M5.Lcd.println("Hello!, COCOA Scan");

  Serial.begin(115200);

  //BLE setup
  BLEDevice::init("");
  pBLEScan = BLEDevice::getScan(); //create new scan
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster
  pBLEScan->setInterval(100);
  pBLEScan->setWindow(99);  // less or equal setInterval value

  //ENV sensor on I2C setup
  Wire.begin();
  Serial.println(F("ENV.2 Chk"));

  if (sht31.begin(0x44)) {   // Set to 0x45 for alternate i2c addr
    hasSHT31 = true;
    Serial.println("SHT31 Ok");

    Serial.print("Heater: ");
    if (sht31.isHeaterEnabled())
      Serial.println("Enable");
    else
      Serial.println("Disable");
  }

  if (bme.begin(0x76)) {
    hasBMP280 = true;
    Serial.println("BMP280 Ok");
  }

  //GPS setup
  hsGps.begin(GPSBaud);
  delay(500);

  if (hsGps.available() > 0) {
    hasGPS = true;
    Serial.println("GPS Ok");
  }
}

void loop() {
  // print all found BLE devices
  M5.Lcd.setTextSize(1);

  if (hasGPS) {
    while (hsGps.available() > 0) {
      gps.encode(hsGps.read());
    }
    Serial.printf(locStr, gps.location.lat(), gps.location.lng());
    Serial.printf(dateStr, gps.date.year(), gps.date.month(), gps.date.day() );
    Serial.printf(timeStr, gps.time.hour(), gps.time.minute(), gps.time.second(), gps.time.centisecond());
  }

  BLEScanResults foundDevices = pBLEScan->start(scanTime, false);

  // clear screen and set cursor to the top
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setCursor(0, 0);
  M5.Lcd.setTextSize(2);
  M5.Lcd.setTextColor(WHITE, BLACK);
  M5.Lcd.printf(dateStr, gps.date.year(), gps.date.month(), gps.date.day() );
  M5.Lcd.printf(timeStr, gps.time.hour(), gps.time.minute(), gps.time.second(), gps.time.centisecond());

  // print counts of BLE devices
  int sumdev = foundDevices.getCount();

  M5.Lcd.setTextSize(3);
  M5.Lcd.print(sumdevStr);
  M5.Lcd.setTextColor(RED, BLACK);
  M5.Lcd.print(sumdev);

  // print count of cocoa APPs
  M5.Lcd.setTextColor(WHITE, BLACK);
  M5.Lcd.print(cocoaStr);
  M5.Lcd.setTextColor(GREEN, BLACK);
  M5.Lcd.println(cocoaCnt);

  // print env2 data
  if (hasSHT31) {
    tmp = sht31.readTemperature();
    hum = sht31.readHumidity();
  }
  if (hasBMP280) {
    pressure = bme.readPressure() / 100;
    // hPa = Pa / 100;
  }

  M5.Lcd.setTextColor(WHITE, BLACK);
  M5.Lcd.printf(envStr, tmp, hum, pressure);

  // print to the serial port too
  Serial.print(sumdevStr);
  Serial.print(sumdev);
  Serial.print(cocoaStr);
  Serial.println(cocoaCnt);
  Serial.printf(envStr, tmp, hum, pressure);
  Serial.println();

  // SDカードへの書き込み処理(ファイル追加モード)
  // SD.beginはM5.begin内で処理されているので不要
  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  File dfile = SD.open(logfile, FILE_APPEND);

  // if the file is available, write to it:
  if (dfile) {
    dfile.printf(locStr, gps.location.lat(), gps.location.lng());
    dfile.printf(dateStr, gps.date.year(), gps.date.month(), gps.date.day() );
    dfile.printf(timeStr, gps.time.hour(), gps.time.minute(), gps.time.second(), gps.time.centisecond());
    dfile.print(sumdevStr);
    dfile.print(sumdev);
    dfile.print(cocoaStr);
    dfile.println(cocoaCnt);
    dfile.printf(envStr, tmp, hum, pressure);
    dfile.println();

  }

  //Button controll
  M5.Lcd.setTextSize(3);
  M5.Lcd.println();
  M5.Lcd.setTextColor(BLUE, WHITE);
  M5.Lcd.println("A: Beep on/off");
  M5.Lcd.println("B: Brightness");
  M5.Lcd.println("C: Memo");

  int timer = 100;
  while (timer--) {
    if (M5.BtnA.wasReleased()) { //Aボタンでbeepをon/off切り替える
      onBeep = !onBeep;
    } else if (M5.BtnB.wasReleased()) { //Bボタンで輝度を変更
      bright += brightPitch;
      M5.Lcd.setBrightness(bright);
    } else if (M5.BtnC.wasReleased()) { //Cボタンでevent記録
      dfile.println("Memo");
      M5.Lcd.setTextColor(YELLOW, BLACK);
      M5.Lcd.println("Wrote");
    }
    delay(70);
    M5.update(); // update button state
  }

  //init for next loop
  dfile.close();
  pBLEScan->clearResults();   // delete results fromBLEScan buffer to release memory
  cocoaCnt = 0;

  M5.Lcd.setTextColor(WHITE, BLACK);
  M5.Lcd.setCursor(0, 110);
  M5.Lcd.setTextSize(1);

}
// Arranged and written by 柴田(ひ)
[/code]

2019年12月7日土曜日

EagleView 電池交換修理

ゴルフ用GPSの電池の持ちが悪くなったので、修理に出した。
電池交換と返送料(代引き手数料含む)で4180円(税込)だった。

1年間の保証とのことだが、これで数年持ってくれたらいいなぁ。


2019年12月6日金曜日

替刃購入

またもや髭剃りの刃が壊れてしまった。

前回は壊れた外刃だけ替えたのだが、
内刃がダメで外刃がイカかれたような気がするので
今回は両方とも交換。

今度はいつまでもつかなぁ。

2019年11月12日火曜日

Wooo FAN交換

2009年頃から頑張って動いているWooo。

1週間ほど前からFANの軸振れ音が大きくなっていたが、
本日とうとう電源が入らなくなった。

FANが回らず、パルスセンサーが異常を検知し、
電源が入らないように制御しているようだ。

そろそろ、こういうこともあろうかと(^^;、
一昨日Amazonで純正品に近いFANを注文していた。

本日夕方、良いタイミングでFANが配達されていた(^^)。

先ほど頑張ってFANの交換が終わり、
なんとか無事に電源が入るようになった。

いやぁ、良かった。
写真は回転できなくなり取り出した純正品。
ミネベアだった。

しかし、そろそろ買い替えどきかな。

iVDRが使える機器がもうあまりなさそうなので
どうしたもんかなぁ。

ちなみに、このWooo、すでにiVDRのドライブローディング機構が壊れており
ヤフオクで購入した中古品からドライブローディング部分を取り出して
交換済みでした。

2019年8月18日日曜日

空調服の電源コネクタ

備忘録

空調服のバッテリーは1万円ほどする。
純正品を購入したが、ちょっと癪だったので
モバイルバッテリー(USBで5V出力)を電源にできる
変換ケーブルを自作した。

コネクタが特殊で
マル信無線電機 DCプラグ・ジャック Φ3.8X1.4
をmonotaroで1個199円で購入したが
千石通商だと1個100円ぐらいのようだ(^^;

まぁ、仕方なし。

一応元気に動いている。


2013年9月17日火曜日

万歩計 不調→改善(?)

5月に万歩計の電池を交換してから、度々リセットされるような現象が起きていた。
��リセットとは、電池交換直後の初期設定モードに戻る感じ)

一度、雨がかかってからそういうことが起きたので、
中に水が入ったのかと考えていたが、どうも晴れた日にも調子が悪い。

電源回りであることはほぼ間違いないのだが、
分解してみたところ、特に異常は見受けられない。

電池に触れ合う電極を綿棒で拭いたところ、かなり汚れが見受けられた。
まぁ、これかなと言うことで、ケースをもとに戻して本日使ってみた。

1万3千歩ほどカウントしているが、今のところ快調(^^)。


2012年7月23日月曜日

MacBook Pro(2008)のバッテリー膨張

ここのところ、トラックパッドが押しづらくなったなぁと感じていたのでちょっと見てみたら
なんと内蔵バッテリーが膨らんでいてトラックパッドを押し上げている感じになっていた。
ケースもちょっと膨らみ気味。

あれこれ調べてみると、そう言う例が多く出ていた。

純正バッテリーは結構高そうだ。

電池の寿命はまだまだ持つみたいなので、もう少しこれでがまんするか、
純正バッテリーを買うか、はたまた互換バッテリーにするか。

悩み中。

2012年7月9日月曜日

MacBook Pro HDD交換(320GB→1TB)

もう、4年目に入るのかな? MacBook Pro。
��年ぐらい前に、320GB HDDに交換していたが、
そろそろ残容量と寿命が気になっていた。

タイの洪水の影響で値上がりしていて、延び延びにしていたHDDの交換を
先週ようやく行った。



押し入れの奥深くに入れていたOSのインストールメディアが発見できなかったり(^^;、
Time Machineからの復旧でファイルシステムタイプが違ったり、
なかなか作業時間が取れなかったりと、
足掛け1週間ぐらい掛かってようやく交換完了。

空きエリアが増えたせいか、ファイルのフラグメンテーションが減ったせいか、
Mac OS X上の動作も、BootCamp上のWindows Vista(古い!(^^;)の動作も、
仮想環境の動作も軽快になった。

Mac OS Xも7月中には新バージョンが出るようだし、
Windows8も比較的安価に出るようだし、
いじるための準備は、一応出来たかなぁ。

2011年12月13日火曜日

電解コンデンサー抜け

カミサンから古い液晶ディスプレイの調子が悪くなったと言われ、
ネットで調べてもらったところ、リコール品だったらしい。

リコールの内容は、電解コンデンサの抜けというもの。

中を開けてみてもらったところ、確かに抜けていた。
CIMG9332.JPG

CIMG9334.JPG
同じメーカらしい1000μF,16V品。
��リコール内容とは違うコンデンサだったらしいけど。


とりあえず、秋葉原で同等品を購入し、近々交換予定。
これで直ると良いなぁ。


2010年1月13日水曜日

イヤピース

ヘッドフォンのイヤピースが片方なくなったので、100円ショップで買ってみたのだが、耳の穴が大きすぎるのか、どうにも耳にあわない。

結局、これを購入。


おっさんに、この色は似合わないかなぁ(^^;
サイズはLでピッタリだった。
スカスカ抜けていた低音が聞こえるようになったo(^o^)o

2009年12月31日木曜日

SiI 3132 Mac OS X 10.6 & 10.6.1 BASE (non-RAID) BETA

SiliconImage Supportに、題記のドライバが出ていた。
��2009/10には出ていたらしい(^^;

MacBook Pro + eSATAの環境を、Snow Leopardにしてから、たまにSil3132チップを載せたSATAカードがハングアップする様になっていた。
どうしたもんかと思っていたが、これで良くなるかな?



2009年9月20日日曜日

カホパーツ ブログ

嘉穂パーツはBlogが出来ていた(^^;
カホパーツBlog

最近、なかなか立ち寄れていないなぁ。


2009年9月19日土曜日

マルツパーツ館 博多千代店

所用で千代町まで行ったところ、いつの間にかマルツパーツ館が出来ていた。

CIMG5810.JPG

パーツ屋さんが少ないこのご時世、生き残ってくれることを願います。
マルツパーツ館 博多千代店

2009年6月7日日曜日

蛍光灯の修理(2台目)

もう1台の蛍光灯も不調。
こちらもインバータ型であるが、時折明るくなったり暗くなったりする。
照度調整のスイッチをいじったときのような現象である。スイッチ周りが臭いと思い、明けてみて見る。
CIMG4221.JPG

スイッチからのリード線をハンダ付けしている辺りが黒くなっていて、嫌な感じ。

拡大して見ると、こちらも半田はがれっぽいところや明らかなクラックがある。
やはり、力が加わるところにクラックが発生しやすい。
CIMG4226.JPG

黒くなっているところは、半田吸い取り線で一度半田を取り除き、様子を見てみた。
CIMG4254.JPG
基板側には問題なさそうである。
もう一度半田を盛ってみる。
CIMG4255.JPG
その他にも数カ所、半田クラック状態になってい所に盛り半田を行い、終了。
一部、後で写真を見て気がついたところがあるけど、再発したときにやろう(^^;
最近、細かいところを見るのがつらく、
��この現象を老眼と言い、経年劣化に伴うもので、修理が難しいらしい(--;
見落としや作業ミスがある。
困った困った。

蛍光灯の修理(1台目)

購入して20年以上になるペンダント型室内蛍光灯の付きが悪く、修理して(させられて)みる。
これは、インバータ型で、ちらつきが少なく、当時としてはかなり高かった記憶がある。

現象は、
・両側とも点灯しないことがある。
・いきなり切れる。
・ふとした弾みに、何事も無かったように快調に動く。
・ここのところ、全く点かない。
などである。

基本的には、部品が壊れたというより、接触が悪い感じ。

蛍光ランプに延びているケーブルを差し込んでいるコネクタの基板側をみてみると、原因とマッチしそうな部分があった。
CIMG4209.JPG
両端の半田付け部分の根っこにクラック(亀裂)が入っている。
その昔も泣かされた「半田クラック」である。



��カ所とも拡大して見る。
CIMG4196.JPG
CIMG4200.JPG
とりあえず、半田を盛って終了。
その後は快調のようであるが、インターミッテントに発生する不具合減少なので、もうしばらく様子見。
これって、エコですよね?(^^;

2009年1月13日火曜日

MacBook Pro + eSATA

この組み合わせで動いております。




最初はSiliconImageのサイトからMac OS X用のデバイスドライバをダウンロードして動かしてたんだけど、頻繁にハングアップして、もうUSBのみで使おうかとも思ってました。

しかし、SATA2E2-EC34付属のCD-ROM内にMac用のドライバが入っていたのを発見して、だめ元でインストールしてみると、なんと非常に安定(^^;。

USBの時より、明らかに速い感じです。
今のところ、まだTimeMachineでのバックアップだけに使っていますが、
大容量動画の保存用にもこれで行くかも。

ただちょっとExpressCardが抜けやすいのが非常に難点>MacBook Pro

2008年8月22日金曜日

m68kアーキテクチャかぁ



会社帰りにフラッと寄った本屋で買ったは良いけど、いじる暇あるかなぁ。
m68kなんて、20年ぶりぐらいだなぁ。

知る人ぞ知る2050とか2050/32のハードウエアテストデータ(*)作りのときに
CP/M-68K上でアセンブラでしこしこ書いたなぁ。

(*)OSがポーティングされる前に、ハード屋がテスト用に作るもの。

2008年8月17日日曜日

SPARC station IPXもどき

IPXのケースにVIA EPIAを入れていたもう一台。
かれこれ、4年以上前に組んでいた。→PCIライザーカード

これまた、久々に手元に戻ってきたので写真を撮っておいた。
R0030537-s.JPG
フロントのFD挿入口はFDDを取り外して中にFANを置き、吸気口にしている。


R0030539-s.JPG
リアの排気口にもFANを取り付けている。
R0030538-s.JPG
見苦しい穴は、適当にアルミテープで塞いでいる(^^;
中の写真。
R0030541-M.JPG
テープなどで適当に取り付けている所もある。
ケース内の上側。
R0030544-s.JPG
アルミ板を取り付けて、HDDを取り付けられる様にしている。
電源は、市販の小型の電源をバラして、中身だけを取り付けている。
ケース内の下側。
R0030543-s.JPG
マザーボードが小さいので、結構スカスカ。
尚、このマシンは、某所でWebcamを取り付けて、24時間録画用に使っていました。
メモリは512MBしか載せていないけど、充分に動いてくれてた。
トラブルも全くなし。
マザーをIntel Atom搭載のものに取り替えるか、いっそCore2Duo搭載可能なmini-ITXボードに替えて蘇らせるかな。