2016年11月16日

DIY: デスクライトのヒンジを無理矢理修理する

ウチの子供が、学習机に付いてるデスクライトのヒンジをへし折ってしまった。
修理と買い換えはほぼ同額、どちらも7000~8000円。
学習机自体が部屋の隅にあるので、照明なしという選択肢はない。

自前で修理しようにも、力の掛かる部分なので接着剤での修理はできず、
何かいい方法はないかと考えた結果、以前買った10mmの自遊自在の存在を思い出したので、これを使って修理してみた。

いろいろこだわった挙げ句に7000円を超えたら元も子もないので、とにかく今回は機能の復元と低コスト優先でやっていく。見た目は切り捨て。
ヒンジをくりぬいてソフトワイヤーを差し込み、太めのタイラップで縛る。ソフトワイヤー自体もヒンジ部の中にキチキチに入っていて、それに加えてタイラップで縛るので、これだけでも十分固定できてる。予想外。

で、反対側もタイラップでアームに縛り付けて完成。
見た目切り捨てで作業した結果、あまりにアレな出来映えになってしまったので完成の写真は割愛したい。とはいえ、酒飲みながら2分で思いついた内容にしては案外サクッと、しかも家にあるものだけでできたので満足。7000円浮いたし。


しかし、このヒンジの作りは、、、、、ヒンジ自体は金属だが、それをプラ部品で受けているから力掛けたら簡単に割れちゃうよね、、、、、やはり安物だなぁ、と思った次第。

ちなみに、「お、値段以上」の店のヤツだ。

2016年11月15日

recalboxのNTSC出力設定

カーナビの動画再生が貧弱すぎるのでメディアプレイヤーを導入したい。
ついでにファミコンで遊べるとうれしい。
今のカーナビは外部入力がNTSCしかないので、NTSC出力できるもの。

ファミコン互換機はファミコン相当の機能しか無いので動画再生は期待できない。
3000円ぐらいの動画再生機で足りるんだけど、リモコンがショボいし、ファミコンでも遊びたい。

で、いろいろ探してみた結果、recalboxに行き着いた。
recalboxとは何ぞや?という話は他のサイトで各自調べていただくこととして、我が家の用途(カーナビにNTSC接続&テレビにHDMI接続)に沿った設定を備忘録として残しておく。
ちなみに4.0.0-beta5。現時点(2016/11/15)ではbeta6が出ているので設定方法変わってるかもしれない。

  • /boot/config.txt
    • sshで接続、デフォルトのID/PWは root/recalboxroot。
    • /bootを読み書きモードで再マウントしてconfig.txtをエディタで開く
      > mount -o remount, rw /boot
      > nano /boot/config.txt
    • 内容は以下の通り。sdtv_modeとsdtv_aspectあたりを弄ったはず。
      disable_overscanも指定したかもしれない。
    • # uncomment if you get no picture on HDMI for a default "safe" mode
      #hdmi_safe=1
      
      disable_overscan=1
      
      # uncomment to force a specific HDMI mode (this will force VGA)
      #hdmi_group=1
      #hdmi_mode=1
      
      # comment to get jack audio
      hdmi_drive=2
      
      config_hdmi_boost=0
      
      # force hdmi while the tv can take time before sending the signal on the hdmi o$
      # hdmi_force_hotplug=1
      # hdmi_ignore_hotplug=1
      
      # uncomment for composite PAL
      #sdtv_mode=2
      sdtv_mode=1
      
      # sdtv_aspect=1 #  4:3
      # sdtv_aspect=2 # 14:9
      # sdtv_aspect=3 # 16:9
      sdtv_aspect=3
      
      # uncomment for lirc-rpi
      #dtoverlay=lirc-rpi
      
      # if you plug your tv at the same time as your rpi and that the rpi switches fr$
      boot_delay=3
      
      # uncomment if you don't want the rainbow at startup
      disable_splash=1
      
      # Overclock
      gpu_mem_256=128
      gpu_mem_512=256
      gpu_mem_1024=512
      
      avoid_safe_mode=1
      
      kernel=zImage
      
      # NOOBS Auto-generated Settings:
      overscan_scale=0
  • /recalbox/share/system/recalbox.conf
    • sshで接続して編集、あるいはsmb経由で編集する。smb経由の場合も同じ場所。
    • たしかこの辺を弄ったはず。
    • #global.videomode=CEA 4 HDMI
      global.videomode=default

ここによればconfig.txtに"hdmi_ignore_hotplug=1"を設定しろと書いてあるが、これやるとコンポジット出力のみになると思うので、↑では設定してない。

あと、ラズパイのコンポジット出力は普通の4極プラグとは配線が違うので注意が必要。

この設定で、ブート時にHDMIが繋がっていればHDMIへ、そうでなければコンポジットへ出力されるはず。

特に意味もなくおうち仕様のウチのrecalbox。
4.0.0-beta5ではラズパイ3のBTを使えないので汎用のBTドングル挿してDualShock3繋いでる。
使ってるケースはこれ。どうせGPIO使わないし、すっきりした見た目が気に入ってる。



2018/10/08追記:
この記事の後、recalboxがなかなかオンボードBTをサポートしてくれないのにしびれを切らして Lakkaへ乗り換えたのだが、現行の Lakka 2.1.1ではデフォルトで「HDMIが接続されていればHDMIへ、そうでなければコンポジットへ」出力されてるっぽい。すごい。
ただ、PALと NTSCってどこで切り替えてんのかよく分からない。どこの設定弄ればいいのだか。

2016年11月12日

似非MINDSTORMS計画: サーボモータのマウント

サーボモータSG90をレゴに取り付けるための方法。

プラ板工作で作ってみるかなと思ってたが、そのものズバリな3Dデータを見つけたので、これをDMM.makeに発注してみた。ナイロンで1個862円。11/8の夜に5個発注して、11/12の夕方に到着。

とりあえず2個仮組み。 

モータはどっち向きに取り付けても大丈夫そうだけど、どっちにしてもネジ穴の位置が微妙にズレてるんだなぁ。次に発注するときはデータ修正してから出しておこう。


というわけで、レゴと組み合わせることができるようになった。

出力の細工が残っているので、次回に。

2016年10月29日

似非MINDSTORMS計画: サーボモータの連続回転化


上の息子がMINDSTORMSなりマイコンなりでのロボット工作に興味があるっぽい。
本家のMINDSTORMSは個人では入手できないし、そもそもコスト面で却下なので、個人で入手できる部品で似たようなことができないかなと考えていた。

ウチの子はそれなりにscratchが触れるので、マイコンにはStuduinoを選定。IDEはここで無料でDLできる。
Studuinoのセットでもよかったが、こちらも1万円強、ブロックが独自規格で入手性も難ありっぽいのでやはりレゴをターゲットとして基板のみを入手。

次にモーター。
DCモーターはLEGO Power Functionsのものがそのまま使えそうだけど、同じくPower Functionsのサーボモータは4線になっててStuduino/Arduinoから制御できるのかコレ?という点でモヤモヤしていた。
いろいろ考えた結果、レゴのサーボモータをマイコンに繋ぐより、普通のサーボモータをレゴで使えるようにした方が手っ取り早いし安くすむんじゃないの、という点に気付いたので、SG90とかいうサーボを入手。
5つセットで買ったので、2つは0~180度の制限を取っ払って連続回転できるように改造してみたい。


まずサイズの比較。小さい。

webを漁ってみたところ、

  • ファイナルギアのリミッターを切る
  • ファイナルギアとポテンショメータの連動を解除
  • ポテンショメータを90度位置で固定
という加工をやっているらしい。


結論から言うと、今回は以下のように加工してみた。

  1. ファイナルギアのリミッターを切る
  2. ポテンショメータを破壊して軸受け化 (リミッターを切る、金属接点潰す、回路切る)
  3. 第2のポテンショメータを追加

まず解体。赤丸の場所がファイナルギアとポテンショメータのリミッター。それぞれ切り落とす。

切り落としました。失敗してポテンショメータの側面割っちゃいましたが。
連続回転時にポテンショメータ内の金属接点が端子に干渉するので、干渉しないように接点を端子から離すように折り曲げます。

これでファイナルギアがくるくる回るようになれば、機械側の加工は終わり。
ギアを元通りに組み上げていきます。

次に電気側。もともとポテンショメータが付いていた3本の線に、

別のポテンショメータを足します。抵抗値は特に考えず手元にあった5KΩを使用。

最後に、マイコン等から90度を出力した状態でモーターが回転しないところまでポテンショメータを調整して完了。


連続回転するサーボモータができたので、これをレゴに繋ぐ方法を模索します。

2016年9月5日

Verilog HDL: ビットスワップ

SoCの仕事してると、区間によってはエンディアンが揃ってなくて、単にbig/littleが揃ってないだけならまだしも、byte単位ではlittle、word単位でbig、みたいな変則的な並びになってるデータを取り扱うことがよくあり、しかもそれが検証序盤でシステム仕様を巻き込んだ大騒動になったりすることもしばしば。

で、もっと柔軟に入れ替えできないもんかな、と以前ちょっと考えてみた回路を書いてみた。
案外あっさりと動いた。


module bitswap_recursive (
    A,
    Y,
    P
);

parameter P_WIDTH = 64;
parameter P_DEPTH =  3;

parameter P_SPLIT_WIDTH_L =            P_WIDTH/2 ;
parameter P_SPLIT_WIDTH_H = P_WIDTH - (P_WIDTH/2);
parameter P_SPLIT_DEPTH   = P_DEPTH-1;

input  [P_WIDTH-1:0] A;
output [P_WIDTH-1:0] Y;
input  [P_DEPTH-1:0] P;

wire   [P_SPLIT_WIDTH_L-1:0] lower;
wire   [P_SPLIT_WIDTH_H-1:0] higher;

generate begin : gene
    if ( P_DEPTH == 1 ) begin
        assign lower  = A[                          P_SPLIT_WIDTH_L-1:0];
        assign higher = A[P_WIDTH-1:P_SPLIT_WIDTH_L                    ];
    end
    else begin
        bitswap_recursive
        #(  .P_WIDTH( P_SPLIT_WIDTH_L ),
            .P_DEPTH( P_DEPTH-1   )
        )
        ins_lower (
            .A( A[P_SPLIT_WIDTH_L-1:0] ),
            .Y( lower                  ),
            .P( P[P_SPLIT_DEPTH  -1:0] )
        );

        bitswap_recursive 
        #(  .P_WIDTH( P_SPLIT_WIDTH_H ),
            .P_DEPTH( P_DEPTH-1   )
        )
        ins_higher (
            .A( A[P_WIDTH-1:P_SPLIT_WIDTH_L] ),
            .Y( higher                       ),
            .P( P[P_SPLIT_DEPTH-1:0]         )
        );
    end
end //
endgenerate //

assign Y=(P[P_DEPTH-1])? { lower, higher } : { higher, lower };

endmodule //


使い方はこんな感じ。

  • P_WIDTHでデータのビット幅、P_DEPTHで深さを指定。P_WIDTHを(2^P_DEPTH)分割した単位で入れ替えるので、P_WIDTH=64, P_DEPTH=3なら byte単位の入れ替えということになる。 
  • 入れ替えのパタンは 入力ポートPで指定し、MSBが 1であれば 入力ポートAの上半分と下半分を入れ替える。これを再帰的にP_DEPTH=1まで繰り返すだけ。
  • 一応記述では P_WIDTHが2^nに乗っていない場合もカバーしたつもりだけど、まったく未確認、というかたぶん使い道ないのでP_WIDTHは2^nに合わせた方が吉。
  • P_DEPTHは1~log2(P_WIDTH)の範囲で動くはず。これ以上大きくするとビット未満のスワップという意味分からない状態になってしまうはずなので設定禁止。



シミュレータでコンパイル通って、思った通りに動いていることまでは確認したが、これ、論理合成できるの??という。
やりたいことが何となくできちゃったので、ここから先の検証とかやらずこのまま寝かせちゃう。


2016年8月16日

CRプレマシーのパドルシフト

CR型のプレマシーに乗っている。
パドルシフト付きの革ハンドルに交換したので活用したいが、シフトレバーをMモードに倒さないとパドルシフトが一切使えない。

Mモードに倒しっぱなしだと発進時のシフトアップもすべて手で行わねばならず面倒くさい。普段はDモードでダラダラ流して、カーブに進入するときだけパドル操作でシフトダウンしたい。
・・・という目的でこういうのがあるらしいが、入手方法もよく分からんし、配線もよく分からん。
パドルを引いたらMモードに入り、5秒たったらMモードから抜けるだけ、の簡単な工作をやってみた。
1年ぐらいグダグダとやったので経緯を書くと大変なことになってしまい、結果だけサクッと書いておく。


Arduino Microを中心に、パドルの電圧をA/Dで読み取ってアップ/ダウンを判断、7407でMモードとシフトレバー+/-に介入、という構成を取っている。
回路図はこんな感じ。
左側がArduino周り、中央の囲みがシフトレバー、右の囲みがパドルシフト。

パドルシフト側はスパイラルケーブルの根元にあるコネクタから、シフトレバー側もレバー根元にあるコネクタからそれぞれ配線を引き出している。Arduinoは運転席左足下のパネルの内側に設置。

当初電源周りはアクセサリの12Vを直結してArduinoに乗っている5Vレギュレータ任せでやっていたが、レギュレータの発熱でマイコンが暴走?する現象が頻繁に起きたので100円ショップのシガレット-USBアダプタをバラして5V電源として使用している。


工夫したのは3カ所、
  • シフトレバー側に介入するのはパドルを引いた最初の操作のみ。
    電圧を読んでMモードに切り替えるだけでもよいが、切り替えるタイミングによっては操作がすっぽ抜けてしまう。逆の発想で、Mモードに入れるのを遅らせて最初の操作が完全に無視されるようにしておき、その補償として最初の操作分のみシフトレバー側に介入する動作としている。
    2発目以降の操作はArduinoは一切関与せず、パドルシフトから通常の操作が行われるだけとなる。
  • Mモードの状態をフィードバックしている。
    パドルシフトを引いた最初の操作のみシフトレバー側に介入する動作なので、シフトレバーがMモードに入った状態でパドルシフトを引くと、パドルシフトから+Arduinoが介入したシフトレバー側、の計2回操作が行われてしまう。このため、すでにMモードに入っているならばArduinoは動作を開始しないようにしている。
  • A0のアナログ入力の前段にリードリレーを追加してある。
    エンジンの回転数によってはパドルシフト側で勝手にシフトアップが入ってしまう現象への対策として急遽取り付けたもの。パドルシフト側の5VプルアップとArduino側の5Vにズレが生じ、Arduino側5Vとシフトアップの電圧が一致したために誤動作したのではないか=A0の線を遮断してしまえばよいのではないか、と考えたが、取り付けた以降は安定しているので理由については深く考えないことにした。
    弊害として、以前は最後にパドルシフトを引いた時間から5秒間維持としていたが、最初にパドルシフトを引いた以降はアナログ入力をモニタできなくなるので最初にパドルシフトを引いてから5秒間、という操作に限定されてしまう。
Arduinoのソースコードはこんな感じ。実際に使っているソースコードから要素だけ抽出したのでコンパイル通るかどうかよく分かりませんが。

// ピン設定
// PIN_AD      : 5V 480Ω pull-upのパドル抵抗入力
// PIN_MANUAL  : マニュアルモードリレー出力        0: Dモード   1: Mモード (導通)
// PIN_UP/DOWN : シフトリレー出力                  0: OFF       1: ON      (導通)

    //    up      470±20    2.26V/4.95V     467
    //    down    610±20    2.92V/4.95V     604

// パドルからの電圧入力    input  analog
// 5V 440Ω pull-up, UP 360Ω (2.26V),  DOWN 620Ω (2.92V)
#define PIN_PAD_AD        A0

// パドル入力のリレー      output digital
// arduinoからパドル本線へのノイズ?抑制のため
#define PIN_PAD_AD_RELAY  12

// Mモード状態監視       input  digital
// 1: Dモード    0: Mモード
#define PIN_FEEDBACK       2

// Mモード制御          output digital
// 1: Mモード (7407 lo出力)
#define PIN_PAD_MANUAL     3

// シフトレバー UP制御    output digital
// 1: on (7407 lo出力)
#define PIN_PAD_UP         5

// シフトレバー DOWN制御  output digital
// 1: on (7407 lo出力)
#define PIN_PAD_DOWN       7


// マニュアルモードの継続時間[ms]
#define MANUAL_TERM 5000


void setup(){

    // パドルスイッチ入力
    pinMode     ( PIN_PAD_AD      , INPUT  );

    // AD入力遮断リレー制御
    pinMode     ( PIN_PAD_AD_RELAY, OUTPUT );
    digitalWrite( PIN_PAD_AD_RELAY, HIGH   ); // 0: AD入力遮断

    // モード監視
    pinMode     ( PIN_FEEDBACK    , INPUT  ); // 車体側 5V pullupのため、内部 pullupは指定しない

    // 7407制御
    pinMode     ( PIN_PAD_MANUAL  , OUTPUT );
    pinMode     ( PIN_PAD_UP      , OUTPUT );
    pinMode     ( PIN_PAD_DOWN    , OUTPUT );
    digitalWrite( PIN_PAD_MANUAL  , LOW    ); // 0: OFF
    digitalWrite( PIN_PAD_UP      , LOW    ); // 0: OFF
    digitalWrite( PIN_PAD_DOWN    , LOW    ); // 0: OFF
}



void loop(){
    unsigned int ad_val;
    boolean is_up_on;
    boolean is_dw_on;

    // Dモードになっている  (マイコン介入 or レバー操作どちらも)
    if ( digitalRead(PIN_FEEDBACK) == 1 ){
        ad_val = analogRead( PIN_PAD_AD );

        is_up_on = ( (ad_val > 400) & (ad_val < 529) ) ? true : false;
        is_dw_on = ( (ad_val > 530) & (ad_val < 649) ) ? true : false;

        // パドルが引かれている
        if ( (is_up_on == true) || (is_dw_on == true) ) {

            // パドル検出から ウェイトして Mモードへ遷移 → 既存回路側から操作が入り込むのを回避
            delay(50);

            digitalWrite( PIN_PAD_MANUAL  , HIGH );   // Mモードへ遷移
            digitalWrite( PIN_PAD_AD_RELAY, LOW  );   // AD入力遮断

            // UP/DOWNを入れる
            delay(50);
            if ( is_up_on == true ) digitalWrite( PIN_PAD_UP  , HIGH );
            if ( is_dw_on == true ) digitalWrite( PIN_PAD_DOWN, HIGH );

            delay(200);
            digitalWrite( PIN_PAD_UP  , LOW );
            digitalWrite( PIN_PAD_DOWN, LOW );

            // 2回目以降のシフト操作は既存回路側から行われるので マイコンからは介入しない
            // マイコン介入は Mモードの維持のみ

            // MANUAL_TERM[msec] 後に Mモードを解除      
            delay(MANUAL_TERM);
            digitalWrite( PIN_PAD_MANUAL  , LOW  );   // Mモードを解除
            digitalWrite( PIN_PAD_AD_RELAY, HIGH );   // AD入力再開
        }
    }
}


現時点では基板と車体との接続に7本(電源2本、パドル入力2本(片方はGND)、Mモード, シフト+/-)必要だが、操作のすっぽ抜けが発生してもOK、と割り切ってしまえば電源2本、パドル1本、Mモード、の計4本まで圧縮できるはず。
あとは、障害時に手早く機能を切り離せるようにしておきたいな、とかそのあたりが今後の課題。

2016年8月9日

VAIO typeRmasterのATX化 #4

入りました。
VAIO側とSOTEC側は電源とIOパネルの間の黒いタッピング1本で留めてます。
大きなガタツキもないし横置きならこのままでも大丈夫そう。ただし縦置きするならもう2カ所ぐらいは固定しておきたいところ。


元のCPUファンを取り付けた状態でマザーボードもきれいに収まってます。
心配していた電源ケーブルの取り回しも、大きな問題とはならなさそう。
元の拡張ボード側のファンはケーブルが届かなかったので未接続。


それと、うれしい大きな誤算が、
元のVAIOについてた電源スイッチ/LEDのコネクタ、ピン数もキーの位置も一致してたので、試しに挿してみたら使えちゃった、という。


あとはネジ留めと、PT2どうするの?ってぐらいですかね。

IOパネル上の隙間にブラケットが出てくるように配置するぐらいしか場所がないけども、CPUの真上にボードが来るのってどうなの?という点も心配。

2016年8月7日

VAIO typeRmasterのATX化 #3

昨日の続き。

今日は干渉していた箇所をハンドニブラでガシガシ切り取っただけ。
何か、とても素敵な塩梅でぴったり収まっております。

それと、ブラケットの耳が入る隙間が必要っぽいので例の5mmぐらいの縁は残すことに決定。
それも含めて、バックパネル側がちょうど同じ高さに揃ってしまったのはかなりうれしい誤算。
(VAIO側の出っ張りを切り取ったのが半分ぐらい無駄にはなったが。。)

残った作業としては

  • バックパネルのメッシュ部分を切り取り
  • 同じくバックパネルの隙間埋め
  • SOTEC側の鉄板を固定
  • 電源スイッチとLEDの配線加工 (おそらく互換ないはずなので)
という感じかと。

2016年8月6日

VAIO typeRmasterのATX化 #2

前回からの続き。

今度はVAIO側を毟っていきます。
目測で、VAIO側のフレームからマザーボードまでの高さに対して、前回SOTEC機から毟った鉄板からマザーボードまでの高さの方が低いので、VAIO側の出っ張りを取っ払ってSOTECの鉄板を置けば何とかなるんじゃないか、という方針で作業進めます。
手書きで失礼。

まず赤丸で囲った箇所が上に出っ張っているのでこれを切り取ります。同時にバックパネルも撤去します。

バックパネルは上の図右側の 2つが邪魔していて、最初からは外せません。
この2つを切り取った後、リベットをバラすと外すことができます。

一通り取っ払うとこんな感じ。一応内側はフラットになりました。
最初の写真 左上の赤丸だけは外せなかったので放置してます。(最初の写真 右上のは簡単に外せたんだがなー)

次にSOTECの鉄板側の細工。
ねじ穴を頼りに、microATXの外枠に合わせて切断しました。

5mmぐらいの縁がついているので、このままではVAIOの内側に置くことができませんが、これは後日ハンドニブラでガシガシ切り取ります。
(追記: この縁を切り取ると、拡張カードのブラケットの端にある耳が収まらないんじゃないかという気がしてきたので、ここを確認しておく必要ありそう)

試しにVAIOの内側にSOTECの鉄板をおいてみたところ、赤丸の部分で干渉していてきちんと入りません。

ここで気力が尽きたので今回はここまで。

どうでもいいが、microATXとmicroBTXでライザカードのスロット数が違うことに今気付いた。
IOパネルのサイズがATXとBTXで違う(BTXの方が短いので、もう1スロット分入る)のね。
ということは、こんなのを使って5番目にPT2入れようと思っていたけど、ソレ実現できないわけで。。。
PT2の配置を考えておかねばならんですな。

2016年7月29日

VAIO typeRmasterのATX化

今から9年前にVAIO typeRmaster VGC-RM92を買った。Windows Vistaなのは正直いただけなかったが、このデザインが個人的にかなりツボに入ってて、数年後にオークションでRM52だったかRM53だったかを買い足したほどだ。後から買った方はマザボが逝ってしまったけれど。

Windows7 x64に入れ替え、メモリを足し、Core2Quadに換装しようとしてどうにもならず、RAIDを数回飛ばして大騒ぎし、9年間こいつと付き合ってきたが、さすがにいろいろとキツくなってきた。

そろそろリフレッシュしたい。

ケースごと買い換えれば話は早いが、やはりこのデザインが気に入っているのでこのケースを使い続けたい。
ただ、そのためにはこのtypeRmasterが抱える最大の障害を乗り越えなければならない。
こいつ、BTXなのよ、、、、
背面コネクタと拡張スロットの位置が逆なのよ。。。。

バックパネル部分を加工してmini-ITXを押し込むという事例はあったけど、これからも母艦として使いたいのでそれなりのスペックを持っておきたい。PT2も使いたいし。

ということでこいつにmicroATXなマザボを乗せてみようと思う。
規格上 microBTXは264mm x 266mm、microATXは244mm x 244mm、なので入るはず。


パソコン工房でCore i7-6700+マザボ ASRock H170M Pro4+メモリ 8GBのセットがお得そうだったのでこれを購入。
レガシーPCIを持っているGigabyte GA-H170M-D3Hにしたかったけど、PT2のためだけにスロット2本無駄にするのもどうかと思うし、PCIe-PCIコンバータもそれなりに使えそうだったので妥協した。というかパソコン工房のセットはASRockしかなかったし。


次に用意したのが
たぶん弟が使っていた、Pentium-IIIのWin98機。
micro-ATXだし、フルハイトのライザカードが入る。こいつからマザボのマウントとバックパネル周りを毟り取ってtypeRmasterに移植しよう、という方法を考えている。

中を毟って・・・
Slot1とか Voodoo3とか、ISAバスなんかまで・・・!!
Win98なんで今から15年以上前とは思うけど、コレ、今どこまで流用できるんだろ、、、というレベルでコネクタというコネクタが世代交代しまくってる。
上のH170M Pro4と見比べてみたけどLEDぐらいしか使えないんじゃないかな。スイッチやケースファンも正直怪しい。

フレームはアルミのリベット留めだったのでドリルで小突いて解体。
この鉄板だけが欲しいわけで、あとは粗大ゴミで処分。

この鉄板を、typeRmasterに合わせてチョキチョキ工作していくわけです。

2016年7月9日

可動棚の試作

こんなもの作ってみた。
アルミのアングル材に小さい鋳物キャスターを取り付けただけですが。

これをカラーボックスの底面に取り付けて・・・

電設用レールを敷いて、押入れの中に可動棚を構築してみる実験。

耐荷重とかあまり考えてないけど、キャスターが1輪あたり12Kgなので、45Kgぐらいまでは大丈夫のはず。それよりも押入れの方を先に心配すべきだと思うので、突っ張り棒で下から補強したりいろいろと手を加える予定。

鋳物キャスターなんで移動させるとガラガラうるさいが、頻繁に動かすものでもないので許容範囲内。足回りはかなりイイ感じ。

ところが、実はこの押入れは階段下にあり、階段と僅かに干渉しているために端まで移動できないという悲しい状態。

見た目的にはほぼ同じ面なので、0.1mmとかそれぐらいの干渉。少し削ればサクッと通せそうな感じ。

2016年7月4日

bittorrent syncでやらかした

スティックPC絡みと言えばそうなのだが。

syncの母艦にWindows7 x64を使っているのだが、これをWindows10に更新した。
インストールしてたsyncがずいぶんと古いものだったので(確か1.xとかそのくらい古い)ついでに更新しようとしたのだが、どうにも上手くいかない。仕方なく上書きインストールしてフォルダの設定やり直して・・・・という辺りは記憶にあるのだが、どうやらどこかでフォルダの指定を1階層間違ってしまったようだ。

1階層ずれたので、同期対象のディレクトリの中に同じものが作られ、それを相手側に反映し、相手側からさらに1階層下に複製され・・・・と合わせ鏡の要領で延々と下に掘り続けたらしい。たぶん。

何か、物凄いことに・・・・・
階層が深すぎるとか何とか怒られてエクスプローラからも削除できない。

スクリプト仕掛けて一晩寝かすとかも考えたが、一歩間違うと写真全滅とか怖すぎるし、仕方なくこれ以外のディレクトリを別HDDへコピー取ってフォーマットするしかないかな、とあきらめ中。

他のデータ自体が残っているのが不幸中の幸い。


# あ、スティックPCは前回記事のまま1ヶ月放置してますが、普通に動いてます。
# syncがこんな状態なので本来の用途としては機能停止してますが。

2016年6月4日

スティックPCのサーバ化:取り付けてみた

DG-STK1Bを外付けHDDのケースに接触させれば排熱が少しはマシになるかな、とは思うがSTK1は筐体が曲面なので取り付け方を考えてみた。というか、作ってみた。
すべて現物合わせのワクワクさんレベルの工作であることをご理解いただきたい。

まず、DG-STK1Bを包むようにアルミ板を加工。ボール紙を合わせながら型紙作って 0.3mm厚のアルミ板をハサミで工作。DG-STK1に巻き付けながら曲げ加工。
HDMI, USB-A, 電源ボタン, 電源入力だけが出るようにしました。電源LEDだけは穴を開けたけど、裏側のmicroSDとmicroUSBはおそらく使わないので封鎖しました。


これを直接HDDケースに貼り付ける、と。
ヒートシンク用の両面テープで貼り付けたいとは思ってますが、とりあえず現時点では普通の両面テープで。


これでCPU温度がどれくらい変わるのか気になるところ。



追記:
ただでさえ不安定な無線LANが、アルミで包んだことで余計に不安定になるんじゃないか、という気もしてきたが、今のところ大丈夫そう。
アクセスポイントから直線2mしか離れていないし。

2016年5月31日

スティックPCのサーバ化:マウスカーソルの出ないChromeリモートデスクトップ対策

対策と言うほどのものではなくて、使い方の問題なのだけれども。

マウスの接続されていないスティックPCに対してChromeリモートデスクトップで接続すると、マウスカーソルが表示されない現象があるらしく、ウチのDG-STK1も例外ではない。
で、この状態から無理矢理マウスカーソルが表示できちゃったので、そのやり方を残しておく。
もちろん、将来のWindows10あるいはChromeリモートデスクトップで同じやり方が通用するかどうかについては全く保証できないことはご了承いただきたい。

用意するもの:

  • ホスト側
    • Chromeリモートで接続する
    • Chromeリモートは最大化・全画面表示ではない方がやりやすい
  • リモート側
    • ログオンして、デスクトップが見えている状態にする
    • リサイズ可能なウィンドウを1枚開いておく。ワタシはいつも以下のようにやってエクスプローラで操作している
      • Chromeリモートのウィンドウ下側からマウスを進入させ、検索バー上にマウスカーソルを持って行く。色が変わるのでわかりやすいかと。
      • この状態で検索バーにexplorerとかexpとか入れると、エクスプローラが候補に出るのでEnterで起動する
    • ↑で開いたウィンドウの上側にデスクトップが見えていればよし。
ここまでが準備。

やり方:
  • この状態でChromeリモートのウィンドウ上側からマウスを進入させる
  • デスクトップ上をドラッグすると、範囲枠が表示されるはずなので、そのまま↑で開いたウィンドウの上端ギリギリまでドラッグしてボタンをリリース。
    こんな↓感じ。

  • このとき、本来のマウスカーソルはウィンドウの上端付近にあるはずで、ここから再度ドラッグするとウィンドウの上下リサイズになる。
    このとき、マウスカーソルが表示されるが、上下リサイズのカーソルになっている。
  • この状態で、ウィンドウのタイトルバーをドラッグして移動させると、通常のマウスカーソルに戻る。
挙動から察するに、マウス位置ではなく「ドラッグ&異なるカーソル」によってマウスカーソルが更新されているような感じ。なのでリサイズ状態に持って行ってドラッグすると更新されたんではないかな。
当然、この状態でウィンドウの隅にマウスカーソルを持って行ってもリサイズのカーソルにはならないし、リンクへ持って行っても指カーソルになりません。
表示されてるだけ儲けもん、程度に考えていただきたく。


追記:
ウィンドウのリサイズをやらなくても、タイトルバーのドラッグ(つまり移動)だけでマウスカーソルが出た。
デスクトップ上をドラッグしてウィンドウの上端ギリギリにマウス位置を合わせ、そこから気持ち下に移動(このときタイトルバーにマウスカーソルがある)させてドラッグ、とやればリサイズさせる手間をスキップできることになる、というか、できた。
「ドラッグ&異なるカーソルによってマウスカーソルが更新」ではなく、単にドラッグだけでよいのかも知れない。

2016年5月30日

スティックPCのサーバ化:仮組みしてみた

ひとまずケースがなければ何にもならないということでケースを選んでたが、排熱の点で問題ありそうなのでケースに内蔵することはあきらめて外部に取り付けようと思う。
よって金属筐体でさえあればOKとして玄人志向のUSB2.0の外付けHDDケースが安かったのでこれをチョイス。
とりあえずケーブル繋いだだけ。HDDは以前のバックアップ機のものをそのまま移植。
外部と繋がってるのはスティックPCとHDDそれぞれの電源のみ。


早速BittorrentSyncにフォルダの設定を行って母艦と同期取ってみた。
今のところ使えてそうなんだけど、トラブってリモートデスクトップで接続できないときは強制電源Offしかないというのがやや心細い。その割に頻繁に熱暴走だかWi-Fiを見失ってるだかしてるっぽいし。扇風機の前に置いておくと割と安定しているようなので、ファンの追加が必要かも知れず。

しばらくコレで様子見かと思います。


追記:
WLANのアンテナに近い場所に移設して数時間放置してみたが、案外使えている。
ということは、上に書いたのは熱暴走ではなくて通信が途絶えているのだと思われる。DG-STK1のレビューに「WLANが安定しない」というのがよく見られるし、多分そうなのだろう。
なお、扇風機から離れてしまったため温度は80度前後を維持しており、非常に高い。これはよろしくない。

2016年5月20日

スティックPCのサーバ化:あっさりとヘッドレス運用できた



前の記事に書いたこれ↓、
追記:くんこくさんのところではヘッドレス云々のこと一切書いてないし、もしかしてChromeリモートデスクトップ使うとこの辺すっ飛ばせるってこと??
Chromeデスクトップ使うとすっ飛ばせるかどうか、確かめてみた。
もう、何も考える必要がないレベルであっさりとヘッドレス運用できちゃった。
しかも、ログイン前の状態から使える。

接続中のCPU負荷はこんな感じ。

写真のバックアップ用途なのでリモートから日常的に「使う」というよりはたまに「管理する」レベルであり、さほどパフォーマンスを求めないからこの程度のモタつきならば十分許容範囲。
キーボード・マウスを接続しない状態でもリモートから使えるが、マウスカーソルが表示されないので無線マウスのレシーバをダミーで挿しておくぐらいは必要かもしれない。

ソフトウェアだけでヘッドレス運用できちゃったので、ArduinoでEDIDを偽装して云々、の件はすべてすっ飛ばしてこのままHDDケースに組み込む方に入れそう。


ただ、この程度しか使っていないのに、かなりアツアツになっちゃってるので、排熱のことは割と慎重に考えなきゃダメかもね。



2016年5月19日

スティックPCのサーバ化を考える

今、デジカメ写真などのバックアップ用に自作PCを使っている。基本は母艦側にデータを蓄積し、それをBitTorrentSyncでバックアップ側に複製する、という体制。

地震や火事の際にバックアップごと持ち出せるように、このバックアップ用のPCをもっとコンパクトで置き場所を選ばないようにしたい、と考えて スティックPCでの置換を以下のような感じで考えている。

  • 外付けHDDケース+スティックPCで、箱ティッシュより一回り小さいくらいのフットプリント
  • もともとBitTorrentSyncでの複製なので、スティックPCがUSB2.0しか持っていなくても外付けHDDとの接続速度が極端に不足すると言うことはないはず
  • ネットワークについても同様で、802.11g程度の速度があれば十分のはず
  • 電源についても外付けHDDケース側のAC電源だけ確保し、そこからスティックPC用に 5Vを拝借すればよい
  • これならばWLAN圏内でコンセントがある場所ならばどこでも設置できる。ひとまずの置き場所は玄関を想定。非常持ち出し袋と一緒に置いておくことができるんじゃないか


で、ドスパラのDG-STK1Bを購入した。
ファンレスなので排熱が厳しいという評価らしいが基本はBTSyncだけだし、もしもの場合には外付けHDDケースを利用した排熱もできるんじゃないの、と考えている。

あとはヘッドレス運用のためにHDMIのダミーをどうするかという件と、キーボード・マウスの件。
これらはArduino Leonardo/Microを使えばまとめて対処できて良いこと尽くしなんじゃないか?と期待している。

  • HDMIのダミーは、結局はEDIDを騙せばよいだけなので、ArduinoのI2Cに繋いで何とかならないか
  • 32U4なArduinoはHIDとして動作するので繋ぐだけでOK
  • Arduinoの電源もスティックPC側から供給されるので接続が減ってお得

ひとあえず、こんな内容でダラダラと工作やっていこうかと。


追記:
くんこくさんのところではヘッドレス云々のこと一切書いてないし、もしかしてChromeリモートデスクトップ使うとこの辺すっ飛ばせるってこと??