Raspberry PiとNode.jsでWebからGPIO操作

Control your Raspberry PI GPIO in Real Time via the Browser using NodeJS, Socket.IO and pi-gpio – Grosan Flaviu Gheorghe

jsからRaspiのGPIOを操作する

jsGPIO を使う。

github.com

READMEにある通り準備をする。

Node.jsのインストール

よしなに。

quick2wire-gpio-admin のインストール

github.com

これもREADME通りに入れればいいが、少し説明が古いので追記。

make
sudo make install

gpioグループを追加する。
サンプルではsudo adduser $USER gpioとなっているが動かなかったので、usermodで。

sudo usermod -aG gpio $USER

debian系であるraspbianならadduser使えるはずなんですけどね。
Linuxでユーザーをグループに追加する - Qiita

次に22pinを例に以下のような操作があるものの、Permission Deniedばかりで全然うまくいかない。

% gpio-admin export 22
% cat /sys/devices/virtual/gpio/gpio22/value
0
% echo out > /sys/devices/virtual/gpio/gpio22/direction
% echo 1 > /sys/devices/virtual/gpio/gpio22/value

gpioのパスが変わってるんだそうな。 プルリクは飛んでるのにマージされてないらしい。

github.com

ということでプルリクの通りに src/gpio-admin.cを直す。28行目くらい。

static void allow_access_by_user(unsigned int pin, const char *filename) {
  struct stat info;
  char *sys_path = "/sys/class/gpio/gpio%u/%s";
  if (stat("/sys/class/gpio", &info) != 0)
    sys_path = "/sys/devices/virtual/gpio/gpio%u/%s";

  char path[PATH_MAX];
  int size = snprintf(path, PATH_MAX, sys_path, pin, filename);

これで % gpio-admin export 22 が叩けるようになる。


あとは

npm start

なり、

nodejs example-server.js

なりを実行。localhost:8000で動作を確認。

忘備録

テストしまくってたらポートが被ってnode.jsが起動しなかった qiita.com

会社やめたらなにすればいいのさ

今まで会社におんぶにだっこすぎたので、結局何をしなきゃいけないのかよくわからなかった。

保険

前の会社が富士通グループだったので、富士通トータル保険サービスに加入していたことになります。

では富士通トータル保険サービスは何をやってくれていたのか?

そもそも何が保障されていたのか

あとは介護保険を含むところもあるそうですが、通常は以上をまとめて「社会保険」と言い、会社がうまいことやってくれていたそうです。
場合によっては、上2つを社会保険、下2つを労働保険と言ったりもするそうですね。

退職してどうなるのか

■ 健康保険
健康保険料を払っていないと、保険証がない。・・・それはまずい。
病院で保険証が出せない。3割負担が10割負担になってしまう。
ですからこれはどっかで入らないといけないですね。

■ 年金
年金は老後のために払わないといけません(もらえるとは言っていない)。
そのために、会社員でない人間は、国民年金に加入しないといけません。最低限これは必須です。

■ 労災
会社で起こった損害を保証してくれる制度です。
人を雇用する法人は入ってないといけません。

雇用保険
失業した時に保障を受けられる制度です。
労災と同じく、人を雇用する法人は入る義務があります。

ベンチャー企業の場合

ウチがそうだとは言っていませんが、起業したてのベンチャー零細企業の場合は
社会保険基盤がしっかりしておらず、健保、年金等々の社会保障制度が整っていない場合があります。

ベンチャー企業なんてほぼニートですよ。
どうすればよいのでしょうね?

■ 健康保険 → 国民健康保険
市役所で加入でき、そこで保険証も発行できます。
前職で社会保険を受けていたのならば資格喪失証明書を持っていく必要があります。
保険料の納付書は世帯に届きますので、これを支払うことになります。

国民年金+厚生年金+企業年金 → 国民年金
会社がやってくれなくなった以上、自分で動かないといけません。
口座振替の申請をするか、納付書を書いて納付する必要があります。

■ 労災・雇用保険 → なし
会社が入る保険なので、その会社が入ってないのならどうしようもありませんねえ。
「雇用者のいる法人」に加入義務があるので、法人を名乗ってなければ義務ではないんですけどね。
個人経営のベンチャーとかあるし。ウチがそうだとは言ってない。

4月から社会保険制度に加入するベンチャー企業に1月から入社した場合

私がそうだとは言っていませんが、そういう例もあるでしょう。

国民健康保険 → 健康保険
4月から入るとはいえ、1~3月の間は保険証がありません。病院等々行った時に10割負担する必要があるのでしょうか?
答えとしてはどうやら必要ないそうです(担当社労士A氏談)。
病院で保険証の提示を促された時、これこれこういう理由で現在加入中である旨伝え、遡って保険料を納付することで、後日、過払い分(7割)が返却されるという形になるそうです。
病院にかかった時点では10割払わなければいけないですが・・・まぁこれは仕方がないということですね。

国民年金 → 厚生年金
4月からは会社が払ってくれますが、1~3月分は?・・・まぁ3ヶ月くらい払わなくても死なないでしょう。
と思って調べたら死なないみたいです。
年収400万以上あって、13ヶ月以上滞納して初めて督促が来るみたいですね。ということはそれ以下なら?

■ 労災・雇用保険
会社が入る保険なので、会社がうまいことやるでしょう。しらんけど。本当に入るんかな?

f:id:izugch73:20160308180103j:plain:w400

納税

保険だけじゃないんですよ~。

会社がうまいことやってくれていた納税

引き続きうまいことやってくれる納税

f:id:izugch73:20160308181210p:plain
源泉徴収税=所得税 です。

じゃあ住民税は?

住民税は普通徴収と特別徴収があります。
普通徴収とは「家に届いた納付書を使って自分で納付する」こと、
特別徴収とは「会社が給与から天引きしてくれる」ことですね。

だから会社が特別徴収をやってくれていれば家に納付書は届きません。

一応、
> 原則として、事業主は(略)すべての従業員の住民税について特別徴収する義務がある
というように決められてはいますが、原則じゃないところもあるでしょう。
ウチがそうだとは言ってない。

まぁ、普通徴収だったら家に納付書が届くわけだし、特別徴収だったら天引きされるわけだし、
時の流れに身をまかせてればいい感じっぽいですね。

結局なにすんねん

結局(自分から起こすアクションとしては)何もしないで済みそうです。
納付書が来たら払えって感じ。徴収に関してはほんとよくできてるね。

Unity+Vuforiaで複数のマーカーを認識させる

英文を読むとMulti-Targetとかいうそれっぽい単語にぶつかるものの、どうやらMulti-Targetとは箱物のマーカーのことらしい。

複数のマーカー云々については、Multiple-Targetと呼ばれているようだ。

複数のマーカーを認識させる

変更すべきは、ARCameraのインスペクタにある以下の項目。
この値を2以上にすると、指定した数のマーカーを同時に認識する。

f:id:izugch73:20160302142840p:plain:w512

f:id:izugch73:20160302143025p:plain:w512

マーカー基点の設定

さて複数のマーカーを認識させると、ARCameraが認識すべき「仮想世界の基点」が定まっていないと困る場合がある。

たとえばカードゲームなんかをARで実現したい場合、常に表示されるべき「フィールド」となるマーカーと、プレイヤーが出す「カード」となるマーカーが存在することになるが、ARの世界は「フィールド」を基点に生成されるべきである。

となった時に設定するのが「World Center Mode」の項目。

f:id:izugch73:20160302143512p:plain:w512

World Center Modeは、「CAMERA」「FIRST TARGET」「SPECIFIC TARGET」のいずれかから選択できる。

上記の例のように、必ず特定のマーカーを世界の中心とするには、「SPECIFIC TARGET」を指定して、中心となるマーカーを「World Center」で選択すればよい。