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)

2020年3月31日火曜日

ラズパイ(IOT・73)

前回、電源をGPIOポートから取れるようにしました。
接続して起動は可能です。
動作も可能です。
ですが、電力不足の注意ランプが表示されてしまいました。
今回、モーターの電力も使っているので、
その分の影響も出てしまったようです。
そこで、モバイルバッテリーについている
2つ目のプラグから電源を取得して起動できるように
接続してみます。
そこで、コネクタが飛び出さないように、
スリムケーブルを購入してみました。

2020年3月30日月曜日

ラズパイ(IOT・72)

USB電源を直接GPIOに接続してみます
この電源用マイクロUSBコネクタDIP化キットを使うと
USBの電源を2つに分岐して使えるようになります。

ついでに、背面に乗せていたモバイルバッテリーですが、
本体に入るように内部のフレームを若干削って、
スッキリ収まるに調整してみました。

2020年3月27日金曜日

ラズパイ(IOT・75)

一通りの実行環境ができたので、
動かしてみたいと思います。
今回は、Webアプリとして作成してますので、
スマホからアクセスしてみます。
アドレスは、デフォルトで
raspberrypi.local:3000
コントローラーが表示されます。
そこから、WiFiでラズパイに接続します。
ジョイスティックを動かすと、駆動できることが
確認できました。

ラジコンみたいに遠隔操作できますね

ラズパイ(IOT・71)

タミヤのカムプログラムロボットにラズパイを載せてみました
横幅ぴったりですが、ただ電源用のMicroUSBポートのスペースが
飛び出てしまいます。
動作に支障がないと言えばないのですが、
スッキリさせたい感じです。
そこで、電源回りを考えてみます。
ラズパイの場合、電源は電源用のMicroUSBポートを利用する
ことが前提でできているのですが、
USBポート自体に電源を流して使うセルフパワーや、
GPIOポート上にある5Vのピンに電源を繋げることで、
動作させることができます。
ただ、本体のMicroUSBからの接続では、過電流対策の
ブレーカーが効いていたりしますが、
直接流す場合は、ここが働かないので注意が必要です。

今回は、接続をスッキリさせるために、取り付け位置を
変更させるために別のMicroUSBポートを接続し、
直接電力を接続する方法を試してみます。
で利用するのがこちらです。
電源用マイクロUSBコネクタDIP化キット

2020年3月26日木曜日

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

普段使いにしているMacMiniのキーボードを有線から
無線に変えてみました。
これまでは、USB接続の純正品を使っていたのですが、
Magic Trackpad2を使うようになるとテンキー部分の幅分が横に
伸びるので、置き場所と取り回しがやりにくくなってしまっていました。


そして、こちらの現在販売されているものへ移行です。


普段はノートパソコンを使っていることもあり、
テンキーはほぼ使ってなかったので、机の上をスッキリさせられました。
場所をとらず、使用感がノートと同じになったので、
違和感が無くなりました。
また、バタフライキーボードのペタペタ感でない、この慣れ親しんだ
キーの沈み具合は最高です。
(時代とともに、Optionキーの位置が変更されたりと、若干の差異もこれで解消です。)


2020年3月25日水曜日

ラズパイ(IOT・70)

前回使ってみたjQueryのアナログパッドプラグインの
動作を試してみます。
サンプルのコードを試してみます。
  $(function() {
    var analogpad = $('#analogpad').analogpad();

    var width = 300;
    var height = 300;
    var x = width / 2;
    var y = height / 2;
    var scale = 3;

    var draw = function() {
        var canvas = document.getElementById('canvas');
        var context = canvas.getContext('2d');
        context.fillStyle = '#000';
        context.fillRect(0, 0, width, height);
        context.fillStyle = '#fff';
        context.fillRect(x-5, y-5, 10, 10);
    };

    setInterval(function() {
        var input = analogpad.input();
        x = x + input.x * scale;
        y = y - input.y * scale;
        draw();
        $('#x').val(input.x);
        $('#y').val(input.y);
    }, 50);
});


とすると、アナログパッドを動かしたときのX・Y軸の
値が-1~1までの値で取れている事が
確認できました。

2020年3月23日月曜日

ラズパイ(IOT・69)

接続したモーターの制御ができるように
操作するためのコントローラーを作成しようと思います。
コントロールは、どこからでも操作できるようにしたいので、
Web画面で動作できるようにしようと思います。
イメージとしては、ゲームコントローラーのように
アナログジョイスティックのようなものを
ドラッグさせた方向へ動くような感じです。
JSに丁度よさそうなプロジェクトがあったので
改良してみたいと思います。
https://github.com/hakobera/jquery-analogpad-plugin

2020年3月19日木曜日

ラズパイ(IOT・68)

前回組みあがったタミヤのカムプログラムロボットに
ラズパイで作ったモータードライブに配線を
組み合わせを行っていきます。
もともとこの製品は、色々なマイコンが組み合わせられるように
考えられているものでもありますので、
サイズ的にも、胴体部分にラズパイの基板を乗せられる分
のスペースがありますので便利ですね~。

あとは、モーターからはノイズが多く発生されるので、
ノイズキラーコンデンサをはんだ付けしておきます。

2020年3月18日水曜日

ラズパイ(IOT・67)

まず、現状の動きも気になったので、
タミヤのカムプログラムロボットを作ったものを
動かして遊んでみることにしました。

胴体部分にカムを取り付ける
とこがあるので、前進・カーブ・ストップと
組み合わせることで、面白い動きをさせることが
できるようになっています。
これはこれだけでも十分面白いですね。

2020年3月17日火曜日

ラズパイ(IOT・66)

タミヤのカムプログラムロボットを組み立ててみました。
まず、普通に組み立てていくとこんあ感じに仕上がります。
組み立てには、2時間くらいで完成します。

2020年3月16日月曜日

ラズパイ(IOT・65)

お次は、キャラピラー構造をもつものを簡単に作るために
おもちゃから改造です。
今回は、タミヤのカムプログラムロボットを改良してみます。
この製品はもともと、カムを組み替えることで、
動作する動きをカスタマイズして遊ぶキットなのですが、
IOTを組み合わせ動かすには最適な組み立てキットとなっています。

2020年3月13日金曜日

ラズパイ(IOT・64)

モーターもひとつが動かせるようになりました。
ですが、戦車タイプの駆動の場合、2つのモーターをつかって
左右のキャタピラーを制御する必要がでてきます。
そこで、今回は2つめのモータードライバーを導入してみます。

前回と同じように、もうひとつ
DRV8830使用DCモータードライブキット を追加します。
今回はふたつを同時に利用する形になるので、
二つ目側のアドレスが別のものになるように、
アドレス変更用にはんだを流し込みます。

2020年3月12日木曜日

ラズパイ(IOT・63)

モータドライバーに接続したモータを
制御できるようにするため、Pythonでプログラムを作成してみます。
Pythonからの制御は、シリアル通信をつかって
信号を送る形となります。

まずライブラリのインストール
 sudo apt-get install i2c-tools
 sudo apt-get install python3-smbus


次に以下のコマンドで、接続されたアドレスを確認します。
sudo i2cdetect -y 1


64番ということが分かったので、
このアドレスをめがけて命令を送ります。
import time
import smbus
i2c = smbus.SMBus(1)
adr1=0x64

time.sleep(5)
i2c.write_byte_data(adr1,0,0b10100101)  # アドレス、コマンド、バイト


これで回転ができるようになりました。

2020年3月11日水曜日

ラズパイ(IOT・62)

まずは、配線!基板にピンソケットを
はんだ付けします。
そして、ピンをラズパイに接続します。
プログラムとマイコンを接続する
インターフェースが充実してるのが
ラズパイの魅力のひとつでもありますね。

SDA(シリアルデータ)
SCL(シリアルクロック)
あとは、モーターの配線と
電源の配線を接続します。

2020年3月10日火曜日

ラズパイ(IOT・61)

これまでは、センサーを付けている場所での
測定であったりと、固定して作動させることが前提でしたが、
移動手段としてDCモーターを取り付けて
自由に動き回ることができるようにしてみたいと
思います。
まずは、モータードライバーの基板を
使えるようにしてみます。
基板には、DRV8830使用DCモータードライブキットを
利用してみます。

2020年3月9日月曜日

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

テレビって色々な機器を接続しますよね~。
最近はほとんどがHDMIの端子を利用するようになった事もあり、
HDDレコーダー・Nintendo Switch・AppleTV・Microsoft Xboxなど
テレビの本体についているHDMIの端子だけでは足りなくなってきて
しまいました。
そこで、HDMI切り替え機を試してみました。
購入の条件としては、
・見た目がかっこいい
・シンプル
・低電力(できれば、電源を別途使わない)
という感じから、ELECOM HDMI切り替え機をチョイスです。

本体もコンパクトで場合によっては、MicroUSBによる
電源供給も可能で(今のところ外部電源は使わなくても利用できてます。)
選択されている機器のランプが柔らかく光る感じで、
邪魔になることもなく、丁度いい感じでした。

2020年3月6日金曜日

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

Appleのワイヤレスヘッドホンもノイズキャンセリング機能付きなのが
出て気にはなっていたのですが、そのノイズキャンセリングが
如何程なのか試してみました。
サイズ的には、他の製品と比べても小型ですね。
ケースも持ち運びに負担がなく、Appleらしさを
感じられます。
そして、使ってみての実感としては、
周りの雑音・ざわざわ感が減る!といった感じです。
体から伝わる音もあるので、決して全てが消せるっという感じでは
ないのですが、雑音が消えた!っという感じでした。
でも、人の声とかは、そんなに消されているようにも
感じないので、消している周波数も調整されているような気がします。
初めての試したノイズキャンセリング製品でしたが、
面白いという印象でした~

2020年3月4日水曜日

ラズパイ(IOT・60)

Webの表示側に距離センサーから送られたデータが表示される
部分を追加します。
ここには、Socket.IOでリアルタイムに送られてきた
データが自動的に表示されるようにします。

  <ul id="messages"></ul>
  <form id="message_form" action="#">
    <input id="input_msg" autocomplete="off" /><button>Send</button>
    <input type="button" value="距離計測" onclick="sendGetDistance();" />
  </form>
  <script>
    var socketio = io();
    $(function(){
      $('#message_form').submit(function() {
        socketio.emit('message', $('#input_msg').val());
        $('#input_msg').val('');
        return false;
      });
      
      // メッセージを取得した場合
      socketio.on('message', function(msg) {
        $('#messages').append($('<li>').text(msg));
      });
      
      // 距離を取得した場合
      socketio.on('rec_distance', function(dat) {
        $('#messages').append($('<li>').text(
          dat.distance1 + 'mm ' + dat.distance2 + 'mm ' + dat.distance3 + 'mm ' + dat.distance4 + 'mm'
        ));
      });
    });
    
    function sendGetDistance() {
      socketio.emit('get_distance', '');
    }
  </script>

2020年3月3日火曜日

ラズパイ(IOT・59)

これでNode.jsとPythonをつないで連携がとれるように
なりましたので、この前接続できたレーザー距離センサーを
接続して、リアルタイムに距離が通知できるように
してみます。

まず、Node側のプログラムを拡張して、センサーからの
値を配信できるようにコマンドを増やします。

io.on('connection', function(socket) {
  // 距離計測開始を依頼
  socket.on('get_distance', function(msg) {
    console.log('get_distance: ' + msg);
    io.emit('get_distance', msg);
  });
  
  // 距離計測結果を受信
  socket.on('rec_distance', function(msg) {
    console.log('rec_distance: ' + msg);
    io.emit('rec_distance', msg);
  });

2020年3月2日月曜日

ラズパイ(IOT・58)

前回、Socket.IOの接続先サーバー用プログラムが
できたので、Python側からSocket.IOに接続するための
プログラムを作成します。

node_client.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import socketio

sio = socketio.Client()

@sio.event
def connect():
    print('connection established')

@sio.event
def my_message(data):
    print('message received with ', data)
    sio.emit('my response', {'response': 'my response'})

@sio.event
def disconnect():
    print('disconnected from server')

@sio.on('message')
def on_message(data):
    print('I received a message! ' + data)
    if (data == 'aaa'):
      sio.emit('my message', {'response': 'my response'})
      sio.emit('message', 'response')

sio.connect('http://localhost:3000')
sio.wait()

2020年2月28日金曜日

ラズパイ(IOT・57)

接続先のサーバーとして利用するのは、
https://nodejs.org/ja/ からダウンロードすることができる
WindowsやLinux、Macなどがある最も一般的なものを
利用します。汎用性が高いのが魅力ですね。

ラズパイですと、nvmでバージョン指定でインストールも便利です。

まず、サーバー側の簡単なプログラムをササッと
用意してみます。

app.js
var express = require('express');
var app = express();
var http = require('http').Server(app);
const io = require('socket.io')(http);
const PORT = process.env.PORT || 3000;

app.get('/' , function(req, res){
    res.sendFile(__dirname+'/index.html');
});

io.on('connection',function(socket){
    socket.on('message',function(msg){
        console.log('message: ' + msg);
        io.emit('message', msg);
    });
});

http.listen(PORT, function(){
    console.log('server listening. Port:' + PORT);
});


index.html
<!DOCTYPE html>
<html>
<head>
    <title>socket.io chat</title>
    <script src="/socket.io/socket.io.js"></script>
    <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
</head>
<body>
    <ul id="messages"></ul>
    <form id="message_form" action="#">
      <input id="input_msg" autocomplete="off" /><button>Send</button>
    </form>
  <script>
      var socketio = io();
      $(function(){
          $('#message_form').submit(function(){
            socketio.emit('message', $('#input_msg').val());
            $('#input_msg').val('');
            return false;
          });
          socketio.on('message',function(msg){
            $('#messages').append($('<li>').text(msg));
          });
        });
    </script>
</body>
</html>


2020年2月27日木曜日

ラズパイ(IOT・56)

さて、PythonとNode.js をつなぐ、python-socketio
のインストールから行ってみます。

サーバー用のもあるんですが、今回は既存のNode.jsに
つなぐことが目的ですので、クライアント版を使います。
 $ sudo apt-get update
 $ sudo apt-get -y install python3-dev  // 開発用パッケージのインストール
 $ sudo apt-get -y install python3-pip  // pipのインストール


まだ、pipを入れてない場合は、さきに開発環境も
含めてインストールを行います。

クライアントのインストール
 $ pip3 install "python-socketio[asyncio_client]"


すんなりと入れることができました。

2020年2月25日火曜日

ラズパイ(IOT・55)

前回までで、レーザー距離センサーから距離を取得するまで
ができました。取得した距離は、Pythonから値を取得することが
できますが、通常このプログラムを実行したときだけ
値がとれることになります。
例えば、センサーを設置しておき、一定の距離内に誰か
着たら知らせるとかを通知したいと考える場合、
センサー側からプログラムでイベントを発信する必要があります。

これまでは、Node.jsからPythonを呼ぶことはできましたが、
Python側からNode.jsを呼び出せるようにしたいと思います。

そこで、Node.jsとPythonをつないで動的にイベントをPython側から
発信できるようにするために、Python のSocketIOモジュールを
使ってみます。

2020年2月21日金曜日

ラズパイ(IOT・54)

配線もそのままでも使えなくはないのですが、
ちゃんとはんだ付けしないと、動作の途中で
動作不良を起こしたり、移動させるのも一苦労するので、
今回も基板に取り付けてみます。

今回はレーザー距離センサーを取り付けようと
思うのですが、基盤にはんだ付けだと、
外装に取り付ける際、配線が難しくなるので、
抜いたり刺したりが簡単にできるようにコネクタを
使った接続を行います。

前回、購入した圧着ペンチで
ケーブルにコネクターを取り付けて、

基板側に、2.54mmのピンヘッダーをはんだ付け
設定完了です。

2020年2月20日木曜日

ラズパイ(IOT・53)

レーザーセンサーの確認ができたので、
基板にはんだ付けしていきたいと思います。
今回は、取り回しの自由が利くように
コネクタの抜き差しができるようにしてみます。

ということで、配線をコネクター化するための
道具を入手しました。

それと、前前回ノーブランドので調子がわるかった
マルチプレクサ ブレークアウト ボードを
動作確認がとれた方の
HiLetgo TCA9548A
を追加購入しました。

2020年2月19日水曜日

ラズパイ(IOT・52)

サンプルでは、2つのセンサーまでの
利用でしたので、4つのセンサー値をとれるように
改良してみます。
概ね中身はシンプルなので、センサーの番号の部分と
センサーの数に合わせて、定義を増やします。

実行してみると、4つの値が取れていることが
確認できました。

2020年2月18日火曜日

ラズパイ(IOT・51)

色々とありつつも、センサーの取り付けが完了したので、
Pythonから接続されたセンサーを
制御してみます。

当初、レーザー距離計測センサーを導入した際
ダウンロードしたAPIに含まれる
サンプルプログラムの
VL53L0X_TCA9548A_example.py
を実行してみます。

お~。2つの距離がとれていることが
確認できます。
次回は、これを4つの距離が測れるように
改良します。

2020年2月17日月曜日

ラズパイ(IOT・50)

さて、接続が完成したのでラズパイをつかって、
アドレスの状態を確認してみます。

まずツールのインストール
sudo apt-get install i2c-tools python-smbus
機器の確認
sudo i2cdetect -y 1

上記のコマンドで利用されているアドレス部分に
数字が表示されるようになります。

あれっ!?
全てのアドレスが埋まってる(汗

繋いでいないのに...
どうやら、壊れた? はずれの基板をひいてしまったようです。
アマゾンで検索すると、TCA9548Aは色々出てくるのですが
安いのは250円ほど、高いのは1000円ほどです
今回使ったのは、安いやつでした。

しょうがないので、中間価格の
HiLetgo TCA9548A
を購入してみましたら動作確認を取ることができました。
まったく同じに見える基板でも、
中身に違いがあるのかもですね~

2020年2月14日金曜日

ラズパイ(IOT・49)

さて今回は、1つのアドレスで複数のセンサーを制御できるように
拡張ボードのマルチプレクサ ブレークアウト ボードを
配線していきます。


こんな感じで、データ線とクロック線を
複数接続することが可能です。

これを使うことで、接続できる距離センサーの数を
増やすことができるようになったので、
例えば、車のラジコンなど前方だけでなく四方の距離を計測したり
つかえる範囲を増やすことができるようになりました。


2020年2月13日木曜日

ラズパイ(IOT・48)

この前の時に、レーザー距離計測モジュールを
制御して距離を測れるようにしました。
今回は、距離計の数を増やして、これを拡張してみたいと思います。

通常、各センサーには信号を制御するための
アドレスが割り当てられているのですが、
一つ一つのセンサーを制御するためには、
アドレスがバラバラである必要があります。

このため同じアドレスをもつセンサーは、
複数とりつけられないか、アドレスをセンサー側で
変更する必要があります。

で、センサー側にアドレスを変更する機能がない場合に
制御するために使うのが、
TCA9548A I2C IIC マルチプレクサ ブレークアウト ボード 8チャンネル 拡張ボード
です。

これを使うと、1つのアドレスで最大8個の同じアドレスを持つ
センサーを制御することができるようになります。

2020年2月10日月曜日

ラズパイ(IOT・47)

これまで作成したものを実行してみます。
まず、node.jsを実行します。
node app.js
次にブラウザから、nodeに接続します。
http://localhost:3000
そして、しゃべらせたいメッセージを
書き込んでみます。

すると、遠隔操作で自由にしゃべらせる
ことができるようになりました。


https://www.filetalk.info/index.html

2020年2月7日金曜日

ラズパイ(IOT・46)

今度は、Node.js側にメッセージが届いたら、 Pythonへメッセージをパラメータとして送れるように app.jsのプログラムを調整します。
var express = require('express');
var app = express();
var http = require('http').Server(app);
var {PythonShell} = require('python-shell');
const io = require('socket.io')(http);
const PORT = process.env.PORT || 3000;

app.get('/' , function(req, res){
    res.sendFile(__dirname+'/index.html');
});

io.on('connection',function(socket){
  socket.on('message',function(msg){
    console.log('message: ' + msg);
    io.emit('message', msg);
    
      var pyshell = new PythonShell('com.py');
      pyshell.send(msg);
      pyshell.on('message', function(data) {
        console.log('ret:' + data);
      });
  });
});

http.listen(PORT, function(){
  console.log('server listening. Port:' + PORT);
});
webとの受け渡しようのプログラムができました。

https://www.filetalk.info/index.html

2020年2月6日木曜日

ラズパイ(IOT・45)

前回作成したPythonファイルから呼び出す、 音声合成するためのコマンドをsay.shファイルに作成します。
#!/bin/bash

TMP=/tmp/tmp.wav
echo "$1" | open_jtalk \
-m /home/pi/MMDAgent_Example-1.8/Voice/mei/mei_normal.htsvoice \
-x /var/lib/mecab/dic/open_jtalk_dic_utf_8-1.11 \
-ow $TMP && \
aplay -q $TMP
rm -f $TMP
このプロジェクトでパラメータを受け取り コマンドを作成して、音声合成用の処理を実行します。

https://www.filetalk.info/index.html

2020年2月5日水曜日

ラズパイ(IOT・44)

前回Node.jsからPythonを実行するために python-shellをインストールしました。 つぎに、メッセージをpython側でパラメータを受け取り 発音できるようにコマンドを実行する pythonファイルのcom.pyを作成します。
import sys
import subprocess

data = sys.stdin.readline()
args = ['./say.sh', data]
proc = subprocess.run(args, stdout=subprocess.PIPE)
print(proc)
これで、コマンドとPythonの連携ができるようになりました。

https://www.filetalk.info/index.html

2020年2月4日火曜日

ラズパイ(IOT・43)

Websocketのsocket.ioを利用して
リアルタイムの操作サンプルを作成してみます。
まず、前に作成していた音声合成プログラムに
Node.jsをつないで遠隔地から発生できるようにします。

今回使うものとしましては、
webからの接続用にNode.js
音声合成にopen-jtalk
コマンドの実行にpython
を利用します。

これを実現するために、
Node.jsとpythonを繋げるモジュールをインストールします。
npm install python-shell
そのあと、JavaScriptとして以下を追加します
 var {PythonShell} = require('python-shell');
 PythonShell.runString('print("実行OK!")', null, function (err, result) {
   if (err) throw err;
   
   console.log(result);
 });
実行すると、pythonが実行され結果が表示されるようになります。
https://www.filetalk.info/index.html

2020年2月3日月曜日

ラズパイ(IOT・42)

Websocktについて
Webサービスを提供するときに、従来の場合ですと、
情報をクライアントがリクエストしてきたものを、
サーバーが結果を返すという流れが主流でした。
この場合ですと、リクエストがないと、
サーバー側は新しい情報を送る手段がありませんでした。
そこに、Node.jsのWebsocket機能を使うことによって、
サーバー側からクライアントへ、任意のタイミングで
変更を通知できるようにすることが
できるようになりました。

Websocketを利用できるようにしていきます。
まず、Node.jsのインストール

ここで、Node.jsですが、いまだ発展中ということもあり、
各バージョンで動く動かないの差があったりもします。
そこで、バージョン管理の仕組みが取り入れらています。
Node.jsのバージョン管理に、nvmを利用します。
 $ git clone https://github.com/creationix/nvm.git ~/.nvm
 $ source ~/.nvm/nvm.sh
 $ nvm install 10.15.3
 $ nvm alias default v10.15.3
毎回コマンドを打たなくていいように調整します
 $ vi ~/.bash_profile

  if [[ -s ~/.nvm/nvm.sh ]];
   then source ~/.nvm/nvm.sh
  fi

2020年1月31日金曜日

ラズパイ(IOT・41)

今度は、Pythonで制御できるように、別のライブラリを試します。
Pythonを利用できるようにすることで、
他のモジュールとの組み合わせや、
様々な拡張が比較的簡単に作成することができます。
https://github.com/johnbryanmoore/VL53L0X_rasp_python
さっそくインストールします。
 git clone https://github.com/johnbryanmoore/VL53L0X_rasp_python.git
次にコンパイル
 cd VL53L0X_rasp_python
 make

 cd python
 sudo apt-get install python-smbus
 python VL53L0X_example.py
計測した内容が表示されました。

2020年1月30日木曜日

ラズパイ(IOT・40)

次はレーザー距離モジュールを制御できるように
ソフトウェアをインストールしてみます。
まず、API用のソフトウェアをダウウンロード
http://www.st.com/content/st_com/en/products/embedded-software/proximity-sensors-software/stsw-img005.html

次に、ラズパイで実行できるようにプロジェクトをダウンロード
git clone https://github.com/cassou/VL53L0X_rasp
パスの配置は同じフォルダに2つを置きます。
  VL53L0X_1.0.2
  VL53L0X_rasp
ライブラリをコンパイルします
 cd VL53L0X_rasp
 API_DIR=~/VL53L0X_1.0.2 make
サンプルのコンパイル
 API_DIR=~/VL53L0X_1.0.2 make examples
サンプルの実行
./bin/vl53l0x_ContinuousRanging_Example
計測した内容が表示されます。

2020年1月29日水曜日

ラズパイ(IOT・39)

ラズパイで raspi-config から Interfacing Options の
L2Cを有効にして、
配線を行うとこんな感じです。

比較的に配線以外、チャンネル等の設定も
デフォルトで試してみます。
制御側のパラメータとしては、長距離用や速度を
求めるタイプなどの指定もできるようです。

VL53L0Xは、3cmから200cmまでの距離を計測することが可能で、
秋月電子で販売されているものには、50cmのケーブル付きで
取り回しにも余裕があって使いやすかったです。

出来上がったら、センサー部分の保護フィルムを
とってから利用します。

2020年1月28日火曜日

ラズパイ(IOT・38)

センサーを使って各種連携できるように距離計測を試してみます。
距離の計測の方法も、赤外線・超音波・レーザーと色々ありますが、
温度や湿度、色や形状などに影響を受けにくいレーザーが
精度を求める場合には、おすすめです。

今回は、VL53L0Xというレーザー距離センサーモジュールを
使ってみます。

2020年1月27日月曜日

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

MacMiniを使っているのですが、最近マウスの調子が悪くなってしまいました。
そこで、AppleのMagic Trackpad 2を購入してみました。

これまでは、マウスとLOGICOOLの充電式トラックパッド T651 を使ってたのですが


このロジクールのトラックパッドは、ジェスチャーにも一部対応していますが、
Apple製品でいうところの3本指で、ドラッグしたりには対応できておらず、
不便に感じていました。
あと、クリックは、台座の底部分の足がボタン式になっており、
押し下げるとクリックやドラッグを保持できるようになってます。
これも、押し下げに微妙に力がいるので、慣れない感じでした。


そこからAppleの純正へ切り替えです。
いや~、さすが純正のトラックパッド。
Macbookについているトラックパッドとまったく同じ操作感になりました。
トラックパッドの奥側にスイッチが付いているのですが、
切らないとどうせすぐにバッテリーが無くなるタイプなんだろうなぁ~
と思ってましたが、意外に数日つけっぱなしにしておいても
充電が減るような感じではないので、あまり気にしないでも
よさそうでした。
これで、快適さが回復です。(純正最高

2020年1月24日金曜日

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

前回切り替えたMacbook12インチですが、
進化してました。(笑
初代のバタフライキーボードは、ほんとに突き指しそうな
感じが大変な機種でした。
今回の2017モデルでは、第二世代へと進化し全然別物ですね~
これは、最新機種が打ち切りとなったMacbookの12インチを
最後の12インチモデルとして購入するのにも十分な価値が
あるほどの違いを実感できました。
進化はすごいですね~。(もう3年まえのモデルですが)

2020年1月23日木曜日

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

Macbookの12インチを買い替えました!

重すぎないし移動時にサッと出せる絶妙なサイズ感。
しかも、MacbookAirと同等の処理速度。
というより最新のAir機種より、むしろ早い。
もう、このサイズの開発をAppleが打ち切ったこともあり、
2016モデルから、最後の機種である2017モデルへ切り替えました。

Geekbench BrowserのCPUのマルチCPUのスコア
・MacBook (Early 2016)
   Intel Core m5-6Y54 @ 1.2 GHz (2 cores) :1322

・MacBook (Mid 2017)
   Intel Core i5-7Y54 @ 1.3 GHz (2 cores) :1556

・MacBook Air (Late 2018)
   Intel Core i5-8210Y @ 1.6 GHz (2 cores) :1549

最小Macの保存版として、
みなさん如何ですか?

2020年1月22日水曜日

ラズパイ(IOT・37)

まず、配線を忘れないように写真で記録~

実際のはんだ付けは、直に取り付けてもいいのですが、
今後別のラズパイに、取り付けなおしたり
移設も簡単にできるようにも
考えて、この製品にしてみました。

Raspberry Pi用ユニバーサル基板
http://akizukidenshi.com/catalog/g/gP-11073/

これをつかって、配線をすっきりさせると、こんな感じになりました。
はい!すっきり。

そのほか、基盤が増えてくると場所も
いるようになるので、重ね合わせて増設できるように
スタック用のピンも用意しておきます。

https://www.filetalk.info/index.html

2020年1月20日月曜日

ラズパイ(IOT・36)

ラズパイに外部スピーカーを作成した件で、
動作確認もできたので、
ブレッドボードから外して、固定できるように
基板にはんだ付けしてみたいと思います。

以下のようなものを使ってみます。

まずは、はんだを付けるこて
ラズパイ用にサイズ調整された基板(スタックも可能)
はんだがはみ出た時の吸い取り線
あとこれがあれば便利。はんだこての台(こて先を冷やすスポンジ付き)
余分なはんだを取ったり 、暑すぎると付きが悪くなるので、調整するのにめっちゃ便利~

https://www.filetalk.info/index.html