npm installのオプションメモ

npm installする時につけるオプション、すぐ忘れるのでメモ。

インストール場所

command mean
-g グローバルインストール

package.jsonに追記する系のオプション

command mean
--save dependencies に追記
--no-save
--dry-run
-P, --save-prod
-D, --save-dev devDependenciesに追記|開発時のみに使用するパッケージ
-O, --save-optional
-E, --save-exact
-B, --save-buldle

devDependenciesとDependenciesの違いは、このpackege.jsonをnpmのパッケージとして公開した時、インクルードした場合はnpm install でDependencies(依存パッケージ)がインストールされ、このプロジェクトをgit clone してnpm install した時には開発用の依存パッケージdevDependenciesがインストールされる

ArduinoでDMXを受ける

DMXSerial使っただけ。この方法だとHardwareSerialを使うので、スケッチ書き込み時にTX,RXからピンを抜いておかないと書き込みエラーが出たりするので、組み込みで半田付けしてからスケッチ修正できない。ムムム

f:id:MagmaChocolate:20180105190616p:plain

https://qiita.com/loveandsheep/items/e1295ec9ce589 ...

DMXプロトコルをまとめる

DMX512-A仕様

  • シールド付きツイストペアケーブルを使用すること
  • RS-485では1500mまでの通信が保証されているが、RS-485の仕様の中でケーブルの長さを伸ばすと通信速度が下がるとされているので、DMX512-Aの通信速度250kbpsが保証されるのはケーブル長400mまでとされている。
  • RS-485の仕様では1Masterで32Slaveまでとされている
  • DMX512-Aのボーレートは250kpbsなので、1bitあたり4μsec (※1)
  • 端末にはターミネータ(終端抵抗)をつけるDMX512-Aでは基本的に120Ωとなっている(100-120)と幅を効かせて定義もされている。
  • 仕様上では1パケット長が最小で22.7msecになり、リフレッシュレートは最大で44Hzになる

※1: 仕様では基本250kbpsとしているが245 ≤ n ≤ 255kbpsまで認めているので、1bitは3.92 ≤ n ≤ 4.08µsecまでと幅がある。

パケット仕様

パケットは以下のフレームで構成されている。

http://www.iar.unicamp.br/lab/luz/ld/C%EAnica/Manuais/dmx_usit.pdf

f:id:MagmaChocolate:20180102234649p:plain f:id:MagmaChocolate:20180102234658p:plain

No. Frame Time Level
1 "SPACE" for Break 88µsec < 1sec ※1 LOW
2 "MARK" After Break (MAB) 8µsec≤n<1sec HIGH
3 START Bit 1bit (4µsec) LOW
4 SLOT nnn Data 8bit (32µsec) (0~512 SLOT)
5 STOP Bit 2bit (8µsec) HIGH
6 "MARK" Time Between slots 0sec≤n<1sec HIGH
7 "MARK" Before Break (MBB) 0sec≤n<1sec HIGH

3~6を513回繰り返します。

※1:仕様では88µsec以上としか書かれていないが、パケット全体を1sec以内に収めることが書かれているので、事実上制限があることになりそう?

この調子で1パケットで513 SLOTのDataを送信します、このDataを仕様内ではSLOTと呼び、最初の0SLOTはSTART CODEで1SLOTがDMXの1ch,2SLOTが2ch...

START CODE

DMX512-Aでは調光信号の他、イロイロな信号を流せるようになった、この時にこのStart bitに仕様で定義されているコードを送信することで受信側はなんの信号か判断できるようになっているがこのコードをちゃんと識別しれくれない機器もある。RDM信号流したら安物ムービングがピクピク動くからなんだと思ったら受け取った信号を全て調光信号として受け取る仕様らしく何しても動くやつとかある。 パケットの0 SLOTに以下の通りのコードを送信すればいいらしい。

NAME CODE
Lighting Data 0x00 (0000 0000)
Network Test 0x55 (0101 0101)
Text Packet 0x17 (0001 0111)
Remote Device Management 0xCC (1100 1100)
System Information Packet 0xCF (1100 1111)
Dimmer Curve Select 0xFF (1111 1111)

ArduinoでDMX送信

格安ArudinoでDMXを送信する

部品

配線

f:id:MagmaChocolate:20180101214426p:plain

スケッチ

DmxSimpleをとりあえず書き込んでサンプルを動かしてみた。 このライブラリデフォルトのPinアサインは上の図の通りだが、コード内で別途指定すれば変更できるっぽい。

SerialToDmxはPCからのシリアル画面から{ch番号}c{ゲージ}wって感じで送ってやれば送信できる、5chに255を出力すると5c255wと送信すればいいらしい。

FadeUpはPinアサインがデフォルトから変更されているので、

// DmxSimple.usePin(3);

しとけばとりあえず動いた。

NetlifyとGithubで独自ドメインのサイトをHTTPS化したメモ

事の発端

IOS 11キタ━(゚∀゚)━!  Safariからカメラの映像が取得できる! これでアプリではなくブラウザからARできるようになった!と喜んでいたら、このカメラのapihttpsじゃないとセキュリティ的な問題で動かないのである。

Github pagesで独自ドメインホスティングしているサイトをHTTPSにしたいけどお金はない。

すでに導入レポは検索すればいくつも見つかるものの、どうも日本語の情報が少ないのでメモすることにした。

使ったもの

  • Github
  • Netlify
  • お名前.com

手順

  1. お名前.comでドメインを取得します。
  2. Githubに公開するサイトのファイル一式をpushしておきます。

    一度Github pagesで公開してみて問題がないことを確認しておきましょう。設定で有効化して、HTTPSにチェックを入れればhttps://<username>.github.io/<repository name>/でアクセスできます。

  3. Netlifyに登録します。

    www.netlify.com Githubアカウントでログインし、先ほどpushしたリポジトリを選択し、デプロイしましょう。

  4. Netlifyのsite nameを変更しましょう

    デプロイをするとデフォルトでランダムな英単語が割り当てられるので、変更しなくても問題はないが変更しておきましょう。

    General -> Setting -> Site details -> Change site name から設定します。 f:id:MagmaChocolate:20171015014625p:plain

  5. カスタムドメインを設定しましょう

    Domain management -> Domains -> Custom domain に取得しておいたドメインを設定します。 ここで、Netlifyはwww付きのドメインにすることを勧めてきます。DoS攻撃から守りやすいとか、ロードが早いとか色々恩恵があるらしいのですが、それよりもURLが短くなる方がいいなって思ったので、自分はwwwなしにしました。 f:id:MagmaChocolate:20171015015607p:plain

    設定後、NetlifyのDNSを利用するので Use Netlify DNS を押します。4つURLが表示されると思います。これは次の作業で使うので覚えときましょう。

  6. ドメインの設定をしましょう

    今度はお名前.comでドメインの設定をしていきます。

    ログイン後、ネームサーバーの設定 -> DNS関連機能の設定 にAレコードとCNAMEを追加します。

    • Aレコードで 104.198.14.52を追加します。
    • CNAMEにwwwをつけてNetlifyで設定したURLを追加します。<site name>.netlify.comです

    f:id:MagmaChocolate:20171015021014p:plain

    次に、DNSを変更します。

    ネームサーバーの設定 -> ネームサーバーの変更 -> 他社のネームサーバーを利用 に4でNetlifyにドメインを設定した時に出てきた4つのDNSのURLを設定します。人によってこのURLは異なるみたいです。

    f:id:MagmaChocolate:20171015021555p:plain

    設定が反映されると、独自ドメインにアクセスするとHPが表示されると思います。このままではまだHTTPです。いよいよ次でHTTPSになります。

  7. NetlifyでSSLを有効化しましょう

    Netlifyで Domain management -> Domains -> HTTPS -> SSL/TLS certificateVerify DNS configrationをクリックしLet's Encypt certificateをクリックです。

    f:id:MagmaChocolate:20171015022037p:plain

    お疲れ様でした、試しにhttps://でアクセスしてみましょう、表示されれば成功です。セキュリティーがどーたらと表示されてしまう場合はしばらく待ってれば反映されるっぽいです。

    最後の仕上げとして、httpでアクセスがあった時にhttpsにリダイレクトさせたいので Force TLS connectionsを有効化して完了です。そんなの表示されてないよって時はリロードするとたぶん出てきます。

    f:id:MagmaChocolate:20171015023118p:plain

コメント

ドメイン周りの設定は順番が大切なので、3回ぐらい失敗してサイトを消してやり直してを繰り返してしまった。勉強不足だ。 そんなこんなで、準備は整ったので、AR.jsとやらに挑戦します。

Arduino互換品のドライバーメモ

買ったやつ

Amazon CAPTCHA

インストールしたドライバー

CH341SER_MAC.ZIP下载页面-江苏沁恒股份有限公司

安価でDMX機器をPCでコントロールしたかった

DMX機器を何種類か導入したはいいものの、卓がなかったり、単純にオペレータが不足してたりするので、PCで一括制御したくなったので作った。

ネットを検索しているとArudinoやラズパイを使いPCからDMX信号を出力しているものをいくつか見つけたが、たかがDMXにはオーバースペックだなぁとか、思ってたら、安上がりの記事を見つけたので実際に作ってみる。

https://stevenbreuls.com/2013/05/diy-usb-dmx-dongle-interface-for-under-10/

この記事にしたがって作っていけば困ることはなかった。何個か作っているうちに一番手頃に手に入ると思った材料を紹介します。

Amazonで購入したシリアルコンバーターですが、中国から直送されるため注文から1~2週間かかり、関税通過のために真っ黄色のプチプチ付き封筒で届きます。 これを使えば、元の記事にあるようにICの足を結線しなくても問題なく動作しました。触ってないのにたまにLEDパーが一瞬だけついたりしてたので、末端抵抗をつけたら大丈夫になりました。