2020年4月21日火曜日

新しい機器について(色々・7)

MacMiniのSSDを換装してみました。
前のモデルですが、容量を増やせばまだ色々つかえます。
FusionDriveモデルでしたので、2.5インチ側を2TBで増強です。
まずは、交換するSSD。サムソンの2TBを利用します。


特殊ねじが利用されているので、事前にツール類を用意してました。

分解していきます。
小さいスペース内を有効に使われるのが分かります。

もとあったHDDのフレームへSSDをのせかえます。

完了です。これで仮想マシンを複数設置してもラクラク運用可能です。
手間はかかりましたが、現役復活でまだまだ使えそうです。

2020年4月13日月曜日

ラズパイ(IOT・78)

実際に接続して起動してみます。
走行の操作と同時にカメラでとらえた
動画がリアルタイムに配信され、表示すること
が確認できました。

多少、動画が遅れるときもありますが、
ご愛敬ということで

2020年4月6日月曜日

ラズパイ(IOT・77)

カメラの画像は、コントローラーの背面において
操作の邪魔にならないようにするのと、画像をより
広く見えるようにしたいと思います。
動画の撮影には今回 pistreamingを利用してますので、
iframeに表示させてます。
このiframeの上に、divを重ねてコントローラーを設置してます。
上下に重ねる場合、なかなか苦労しますが、以下のような
感じで配置完了です。

<style>
.console_panel {
 position: absolute;
 top: 0;
 left: 0;
 width: 100%;
 height: 100%;
 z-index: 1;
}
</style>

  <div class="console_panel">
    ...
  </div>
  
  <iframe class="img_view" src="http://192.168.1.26:8082/index.html" width="100%" scrolling="no" frameborder="no" style="position: absolute; z-index:0;" />

2020年4月3日金曜日

ラズパイ(IOT・76)

動画を見ながら走行の操作できるように、カメラを繋げてみます。
動画の遅延は、低遅延でないと動作に支障がでますので、
node.jsを使った画像配信のものを利用します。
まず、接続です。
本体のカメラ専用のコネクタに接続して起動させます。

2020年4月1日水曜日

ラズパイ(IOT・74)

jQueryアナログパッドプラグインをラズパイ上で動作できるように
Webサーバーに設置し、node.jsと連携してみたいと思います。
今回追加するjQueryアナログパッドのjsとcssファイルを
組み込みます。

まず、node側
  socket.on('set_motor', function(msg) {
    console.log('set_motor: ' + msg);
    io.emit('set_motor', msg);
  });

ページ側
  setInterval(function() {
    var input1 = _analogpad1.input();
    var x1 = input1.x;
    var y1 = input1.y;
    var input2 = _analogpad2.input();
    var x2 = input2.x;
    var y2 = input2.y;
    if (_x1 != x1 || _y1 != y1 || _x2 != x2 || _y2 != y2) {
      _x1 = x1;
      _y1 = y1;
      _x2 = x2;
      _y2 = y2;
      $('#x1').val(_x1);
      $('#y1').val(_y1);
      $('#x2').val(_x2);
      $('#y2').val(_y2);
      socketio.emit('set_motor', { "x1": _x1, "y1": _y1, "x2": _x2, "y2": _y2 });
    }
  }, 50)

Python側もnodeに接続して制御します
    @sio.on('set_motor')
    def on_set_motor(data):
        print('I received a set_motor x1: ' + str(data['x1']) + ' y1: ' + str(data['y1']) + \
            ' x2: ' + str(data['x2']) + ' y2: ' + str(data['y2']))
        
        if (data['y1'] > 0.1):
            i2c.write_byte_data(adr0, 0, 0b10100101)
        elif (data['y1'] < 0.1):
            i2c.write_byte_data(adr0, 0, 0b10100110)
        else:
            i2c.write_byte_data(adr0, 0, 0b110100)
        
        if (data['y1'] == 0):
            i2c.write_byte_data(adr0, 0, 0b110100)
        
        if (data['y2'] > 0.1):
            i2c.write_byte_data(adr1, 0, 0b10100101)
        elif (data['y2'] < 0.1):
            i2c.write_byte_data(adr1, 0, 0b10100110)
        else:
            i2c.write_byte_data(adr1, 0, 0b110100)
        
        if (data['y2'] == 0):
            i2c.write_byte_data(adr1, 0, 0b110100)