Androidのメモとか

ポキオの日記です。今日も遅延してない。

Sonosのスピーカーを置く場所をDIYで作ってみた

セリアは神。

ポキオ Sonos One ツーバイフォー DIY ラブリコ

DIYの時間だよー!

我が家に舞い降りたSonos One。

オーディオに詳しくはないですが、心を揺さぶる音に感動して、いつまでも聞いていたいような感覚です。

[asin:B07HSBKTFH:detail]

ただし、我が家の子どもたちには完全におもちゃとしてしか認識されておらず・・・

ポキオ Sonos One ツーバイフォー DIY ラブリコ

スピーカーが到着した直後とか、ちょっと目を離すとおもちゃになってたり・・・。

ポキオ Sonos One ツーバイフォー DIY ラブリコ

置き場がなく当初は床においてたんですが、流石に壊されてはたまらないので、今回はスピーカー置き場をDIYで作ってみました。

ツーバイフォー材を買いまくる

もともとDIYは大好きなので、今回もツーバイフォー材とラブリコで壁に柱を増設して、そこから棚を作って見ようと思います。

relativelayout.hatenablog.com

relativelayout.hatenablog.com

ツーバイフォー材を突っ張り棒として使えるようにするアタッチメント。もともとディアウォール派だったんですが、再調整(増し締め)できたり、Amazonのセールで安売りしがちなので、今回はラブリコを使っていきます。

ポキオ Sonos One ツーバイフォー DIY ラブリコ

この子。なんかパッケージが変わってますね・・・。でも中身は一緒でした。

あとは、ひたすらツーバイフォー材をホームセンターから買ってきて、

ポキオ Sonos One ツーバイフォー DIY ラブリコ

家にある端材も使いつつ、

ポキオ Sonos One ツーバイフォー DIY ラブリコ

テキトーに切り刻んで、

ポキオ Sonos One ツーバイフォー DIY ラブリコ

ニスを塗り塗りして天日干し。あとはラブリコで突っ張り棒化します。

100円ショップ「セリア」は神

いやー、最近の100円ショップは何でも手に入って最高なんですよね。さっきのニスモ実は100円ショップ「セリア」で買ったやつ。

ポキオ Sonos One ツーバイフォー DIY ラブリコ

多めの水で薄めたやつを2度塗りするといい感じです。

ポキオ Sonos One ツーバイフォー DIY ラブリコ

こういうアイアンな棚受けや、

ポキオ Sonos One ツーバイフォー DIY ラブリコ

アイアンなパーも100円で買えちゃいます。これらを組み合わせて・・・

ポキオ Sonos One ツーバイフォー DIY ラブリコ

じゃーん。棚ができました。

Sonos Oneを置いて、Let's Listen!

Sonos Oneを置くとこんな感じ。スマホからコントロールできるので、棚の上に置いていても不便さは一切感じないのもSonosの良さですねー。

Node.jsのSSDPライブラリを使ってSonosのスピーカーを見つけてみる

S・S・D・P!

ポキオ Node.js SSDP Sonos

Sonosのスピーカーを見つけるよー

ひょんなことから我が家にやってきたSonosのスピーカー「One」。

www.youtube.com

この前のポキオ・カープールでもお伝えしましたが、

  • SonosはWi-Fiでつながるスピーカー
  • SSDPで機器発見できる
  • コマンドなどもSSDPで投げられるらしい

こんな感じの、エンジニアリングし甲斐がありそうなガジェットでもあるわけです。今回はNode.jsのSSDPライブラリを使って、まずはSonosのスピーカーを見つけてみようと思います。

いざコーディング

今回は、node-ssdpというライブラリを使ってみました。

www.npmjs.com

まずは、愚直にプロジェクトを作って、モジュールをインストールしていきます。

$ mkdir ssdp-test
$ cd ssdp-test/
$ npm init -y
$ npm install node-ssdp

おもむろに、index.jsと名付けた本体のスクリプトをこんな感じで作っていきます。

var ssdp = require('node-ssdp').Client
var client = new ssdp({})

client.on('response', function inResponse(headers, code, rinfo) {
    console.log('%d\n%s\n%s', code, JSON.stringify(headers, null, '  '), JSON.stringify(rinfo, null, '  '))
})

setInterval(function () {
    client.search('upnp:rootdevice')
}, 5000)

5秒おきにSSDPの機器探索のコマンドを投げていますが、対象はupnp:rootdeviceとして、ルートデバイスのみを探索します。

実行!

実行してみますー。

$ node index.js

すると・・・

200
{
  "CACHE-CONTROL": "max-age = 1800",
  "EXT": "",
  "LOCATION": "http://xx.xx.xx.xx:1400/xml/device_description.xml",
  "SERVER": "Linux UPnP/1.0 Sonos/54.2-72031 (ZPS13)",
  "ST": "upnp:rootdevice",
  "USN": "uuid:RINCON_xxxxx::upnp:rootdevice",
  "X-RINCON-HOUSEHOLD": "Sonos_xxxxx",
  "X-RINCON-BOOTSEQ": "2",
  "X-RINCON-WIFIMODE": "1",
  "X-RINCON-VARIANT": "2",
  "HOUSEHOLD.SMARTSPEAKER.AUDIO": "Sonos_xxxxxx"
}
{
  "address": "xx.xx.xx.xx",
  "family": "IPv4",
  "port": xxxxx,
  "size": 445
}

おー!Sonosっぽいのが見つかりましたー。

ちゃんとSSDPできてるっぽいですねー。

[asin:B07HSBKTFH:detail]

ChromebookのLinux環境上にNode.jsをnvmを使って導入する

メモ。

ポキオ Chromebook Linux

Chrome OSLinuxが使えます!

実は、こっそりChromebookを買ったんですが、実はLinuxも使えるんですよね・・・。

japan.zdnet.com

すごいですよね。

というわけで、まずは手始めに、Node.js環境を構築してみようと思います。

いざ構築

pokiiio@penguin:~$ node
-bash: node: command not found

もちろん、Linux環境を作ったばかりだと、nodeコマンドもnpmコマンドも動かないのでインストールしていきたいわけですが、おいおいNode.jsのバージョン管理がめんどくさくならないように、nvmを使って管理したいと思います。

github.com

とりあえず、GithubページのREADMEの通り、コマンドを叩く。

pokiiio@penguin:~$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash

インストール完了後に、ターミナルを再起動して、

pokiiio@penguin:~$ nvm install v12.14.0

を叩くと、所望のバージョンのNode.js環境がダウンロードできます。ダウンロード後は、そのバージョンをコマンドで指定して、使えるようにします。

pokiiio@penguin:~$ nvm use v12.14.0
Now using node v12.14.0 (npm v6.13.4)

これでNode.js環境ができましたー。さっそくバージョンを調べると・・・

pokiiio@penguin:~$ node -v
v12.14.0
pokiiio@penguin:~$ npm -v
6.13.4

これで違うバージョンが入ってたらウケるんですが、ちゃんと所望のバージョンが入っています!

これでモリモリ開発できそうですね!

オーディオのド素人だけどSonosの体験イベントに行ってきた

逆から読んでもSonos。

ポキオ Sonos

Sonosって?

この前のポキオ・カープールでも取り上げたアレです。

スピーカーなどのサウンドシステムな機器を売ってるブランドなんですが。

  • Wi-Fiで接続できる
  • ストリーミングサービスとの親和性がすごい
  • APIが開いていてハッカブル

このあたりが個人的に特異的なポイントかなって思ってます。ひょんなことからSonosの体験イベントの存在を知り参加応募したところ、オーディオ素人なのにも関わらず当選してしまったので、参戦してまいりました。

参戦!

まずは腹ごしらえ。

外苑といえばシェイクシャック。行くしかないですね。安定の美味しさです。

この投稿をInstagramで見る

まずは腹ごしらえ。

pokio(@pokiiiiio)がシェアした投稿 -

サクッとシャックバーガーを食べたあとに、そこから徒歩圏内にある会場へ。

会場の様子は・・・

  • 会場がオシャレ、トイレとかやばい(NTTぷらら青山ショールーム
  • ソファーに座りながら試聴するスタイル
  • オーディオに詳しそうな人がいっぱい(個人の感想です)

で、視聴したのは、サウンドバーみたいなBeamと。

ポキオ Sonos

コンパクトなOne。

ポキオ Sonos

これに加えて、サブウーファーのSubがありました。

ポキオ Sonos

[asin:B07HSBKTFH:detail]

イベント開始

Sonosの瀬戸さんとオーディオ評論家の土方さんの説明とともに、イベントが進んでいきました。

ポキオ Sonos

「日本人はより良い音楽の環境に乏しい」と瀬戸さんは仰ってました、自分のことを言われていたような気がして、すごく納得してしまいました(笑)

視聴は、音楽を聞いたり、映画のワンシーンをTVのスピーカーとBeamとの比較とかしましたが、やっぱり良いなぁ(小並感)という感じ。

感想

  • BluetoothではなくWi-Fiであるメリットを感じた
    • 電話がかかってきたり、Notificationの音がスピーカーから出てこない
    • スピーカーに音楽のすべてを任せられる
    • スピーカーがWi-Fi経由で連携ができる
    • 配線が非常にシンプル(基本的に電源だけ。たまにHDMI。)
  • コントロールだけでなく設定もスマホからできるUX
  • 音は良いと思う
    • 低音だけではなく、中高域もBeamだけでいい感じになる
    • BeamとOneとSubを組み合わせると、包まれてる感がすごい

一方で、イベントの方向性とかオーディオ素人だったりしたので、

  • ストリーミングサービスとの親和性についてもう少し聞きたかった
  • スマホを使ったUXについても聞いてみたかった
  • Oneだけで音楽を聞くとどうなるのかやってみたかった
  • いつも聞いてる音楽や映画を流して差を聞いてみたかった
  • あとは・・・APIのことも聞きたかった・・・(笑)

このあたりは気になりました。

とはいえ、Sonosから目が離せないですねぇ・・・サンタさんこないかな・・・(笑)

LEGOをサーボモーターで動かしてニヤニヤする

LEGO熱の再来!

ポキオ geekservo lego サーボモーター

LEGOにモーターを組み合わせる

子供の頃にハマったLEGO。楽しいですよね、時間が無限に溶けていくやつです。このLEGOが思い通りに動いたらどんなに楽しいか。

LEGO純正のモーターもあるので、これを使えばいい感じに動くものが作れるわけです。でも、やっぱり我々にはArduinoやらRaspberry Piがあって、それらでLEGOを動かしたいと思ってしまうのは、致し方ないですよね。そこで便利なのが、GeekservoというLEGO互換のモーターがあるんですよ。

ja.aliexpress.com

とりあえずポチってみました。

ポキオ geekservo lego サーボモーター

LEGOがくっつきそうな凹凸がありますねー。早速LEGOにつけてみます。

LEGOがうごくぞー!

今回買ったモーターは360度回るサーボモーターでした。とりあえずArduino Unoにつないで動かしてみました。

この投稿をInstagramで見る

ひたすらお花とカエルさんが回るやつ。

pokio(@pokiiiiio)がシェアした投稿 -

ちょっとさみしいので、草木でデコレーションしてみました。

LEGO Botanical Accessories polybag (xtra) 40310

LEGO Botanical Accessories polybag (xtra) 40310

  • メディア: おもちゃ&ホビー

仕組みはどうなってるの?

ArduinoのServo.hライブラリを使って動かしています。

#include <Servo.h>

Servo servo;

void setup() {
  servo.attach(A0);
}

void loop() {
    for (int i = 90; i <= 180; i += 1) {
      servo.write(i);
      delay(10);
    }
  
    for (int i = 180; i >= 0; i -= 1) {
      servo.write(i);
      delay(10);
    }
  
    for (int i = 0; i <= 90; i += 1) {
      servo.write(i);
      delay(10);
    }
}

サーボモーターの信号線をA0端子に、あとはGNDと5Vにつないでいます。サーボモーターというと、角度指定ができるものだと思っていましたが、

On a continuous rotation servo, this will set the speed of the servo (with 0 being full-speed in one direction, 180 being full speed in the other, and a value near 90 being no movement).

www.arduino.cc

今回のような360度回るサーボモーターの場合は、回転方向と速度が指定できます。これは嬉しい誤算で、通常のモーターのように扱えつつ、一方でモータードライバーは不要なので、マイコンでモーターを動かすにはかなり便利です。

さーて、これから色々作るぞー。

レゴ (LEGO) マインドストーム EV3 31313

レゴ (LEGO) マインドストーム EV3 31313

  • 発売日: 2013/09/20
  • メディア: おもちゃ&ホビー

YouTubeで「ポキオ・カープール」を公開しました!

カープールって?

ポキオ・カープール

YouTuberデビュー(笑)

アラサーにしてついにYouTubeデビューしました。Vlogみたいな感じ。

www.youtube.com

何を動画として流しているかというと・・・

  • 誰かとドライブしている動画
  • ドライブしながら「IoT」とか「Tech」な話をします
  • でも、話す内容は何でもいいです(笑)

カンのいい人はわかると思いますが、カープール・カラオケのパクリと言えばパクリです、ごめんなさい(笑)カラオケの代わりに、Techな話をしたいなぁと思い、ノリで公開してみました。

というわけで

もしご興味があればご覧くださいませ。また、「一緒にドライブしながら話してくれる人」「話してほしいネタ」などリクエストがありましたらご連絡くださいー。

ブラック・アンド・デッカーの電動ドライバーが付録になってる本があったので秒で購入した

ツーバイフォー案件。

ポキオ ブラックアンドデッカー

本屋さんで何故か売ってた

付録付きの雑誌は数あれど、まさか電動ドライバが付いてるだなって夢にも思ってませんでした。しかも大好きなブラックアンドデッカー・・・。

やるな、宝島社。まぁ速攻で買いました。

ポキオ ブラックアンドデッカー

電動ドライバとポーチが付録。

ポキオ ブラックアンドデッカー

電動ドライバは充電式ですが、充電用の端子はmicro USBではありません。

実際使えるの?

手持ちのminievoとmultievoと比較してみました。

ポキオ ブラックアンドデッカー

いい感じに沼にはまってますね。

せっかくなので、近くのホームセンターでツーバイフォーを買ってきて、テキトーにニスで色を塗ってラブリコで柱を立ててみました。

ポキオ ブラックアンドデッカー

これから飾り付けをするのでまだまだ殺風景ですが、とりあえず立てるだけたててみました。

Pros

  • 安い
  • 軽い
  • なのにラチェット機構がついてる
  • 明るいLEDライト
  • mini evo/multi evoのドライバーが流用できる

Cons

  • USB充電ができない
  • ちょっとチープな質感

まぁ、これが3000円以下で買えるのであれば、最高ですね。

冊子の方にはDIYの創作意欲を高めてくれるような作例がたくさん載っていて、こちらもなかなかいいですねぇ。

ちなみに

今回はディアウォールじゃなくて、ラブリコを使ってみました。

ポキオ ブラックアンドデッカー

ルックスは若干アレですが、木をちょっと短く切りすぎてもディアウォールより調整が効きそうなので、これはこれでいいですね。Amazonのセールで安くなったらまた買おう。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。