LoginSignup
6
13

More than 5 years have passed since last update.

Raspberry PiとSORACOM Airで動画と連携するハードウェアを作る

Posted at

Maker Faire Tokyo 2017で①ヒートガンでポップコーンを作り、②キャンディーを砕いて溶かしてポップコーンに色付けするという展示をしました。写真と動画はこちら。

私が担当したパートは

  • srt.jsを使ってYouTubeの字幕としてハードウェアにコマンドを送信
  • Raspberry Piでコマンドを受信して、接続されたソレノイドを駆動してキャンディを砕く
  • 砕かれたキャンディを手作業で心を込めてフライパンで溶かす

というシステム構成で仕立てたのですが、多くの来場者から不思議がっていただきまして、特にRaspberry PiにSORACOMのSIMを挿してPusher(WebSocket)で待ち受けるという構成は様々なところで使えると思いますので、書いてみることにします。

事前にすること

お買い物

スイッチサイエンスさんで入手できます。

Raspberry Pi 3
https://www.switch-science.com/catalog/2800/

SORACOMスターターキット
https://www.switch-science.com/catalog/2767/

Pusherにお申込み

こちらを参考にしてください。
http://qiita.com/alingogo/items/a52dfccc2e4711c5f521

PHPでPusherへ送る

こういうのを置いて、push.php?text=1にアクセスしてPusherのデバッグ画面に文字列が届いてると成功です。

push.php
require_once('external/Pusher.php');

$pusher_ini = parse_ini_file("api.ini",true)["pusher"];
$text = $_GET["text"];

$pusher = new Pusher(
    $pusher_ini["key"],
    $pusher_ini["secret"],
    $pusher_ini["app_id"],
    ['encrypted'=>true]
);
$data['message'] = $text;
$pusher->trigger('test_channel', 'my_event', $data);

Raspberry PiとSORACOM SIMが届いたら

Rasberry Piをソラコムに認識させる

このあたりを参考に。
http://qiita.com/CLCL/items/95693f6a8daefc73ddaa

node.jsでPusherから受け取り、Arduinoへ送信

こういうのを置きました。

pusher.js
var Pusher = require('pusher-js/node');
var SerialPort = require('serialport');
var conf = require('config');
var fs = require('fs');

var sp = null;

// Arduinoが刺さっているポートを探索
var files = fs.readdirSync('/dev/');
files.forEach(function(file){
    if( file.match(/tty.usbmodem/) ){
        sp = new SerialPort('/dev/'+file, {
            baudRate: 115200
        });
    }
})

if( sp == null ){
    console.log("disconnected");
    return;
}else{
    var pusher = new Pusher(conf.app_id, {
        encrypted: true
    });
    var channel = pusher.subscribe('test_channel');
    channel.bind('my_event', function(data) {
        // 送られてきた文字が数字1桁のときだけArduinoに送信
        if( data.message.match(/^[0-9]$/) ){
            sp.write(data.message);
        }
    });
}

Raspberry Piにサービスとして登録

このあたりを参考に。
http://qiita.com/yosi-q/items/55d6d3d6834c778ae2ea

まとめ

Maker Faire Tokyoのようなイベントでネットワーク環境を構築するのも一苦労だし、構築してもWiFiもBluetoothも混線しがちで一苦労なところを、ソラコムの登場により一気に解決した気がします。

6
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
13