Linuxで 外 部 機 器 を 動 かそう Vmware appliance Remote-Hand DIO v0.32 Raspberry Pi + Piface=Remote-Hand OSC2013_Kansai@Kyoto 2013.8.3 会 議 室 B 14:00-14:45 Twitter@kujiranodanna pepolinux@users.sourceforge.jp IZAMUKARERA:くじらのだんな: 山 内
sourceforge もっと 早 く もっとクールにリモートで 解 決 1CDLinux 開 発 中 もっと 早 く もっとクールにリモートで 解 決
通 信 ソフトepicon 開 発 中 もっと 早 く もっとクールにリモートで 解 決
acm-foma Driver 開 発 中 もっと 早 く もっとクールにリモートで 解 決
acm-fomaとは USB 接 続 が 出 来 るFOMA 携 帯 電 話 用 のLinux Kernel-2.6 以 降 のdriver /drivers/usb/class/cdc-acm.cをdocomoのfoma のdriverとして 改 造 2007.3.31 初 リリース 当 初 FOMAの 機 種 毎 にコード 追 加 してリリースを 余 りに 早 い 新 機 種 ラッシュそれに 対 応 すべく 2007.11.17に 機 種 別 コードを 不 要 へ 従 来 からMODEMモードのみでしたが 2011.5.28 v0.26.10からはobexとatcommandの3モードを サポート 出 来 るように
Remote-Hand 開 発 中 もっと 早 く もっとクールにリモートで 解 決
Remote-Handとは network 繋 がってたらRemoteで 操 作 (Hand) network 機 器 コマンド 叩 きで 大 抵 はOK network 繋 がってなければFOMA 経 由 携 帯 電 話 をppp 接 続 Remote login 外 部 信 号 とのやり 取 り Digital Input Output 接 続 で 機 能 性 UP DIO 接 続 で 外 部 信 号 の 入 力 判 定 と 出 力 操 作 電 源 入 / 切 Resetボタン 警 報 ブザー パトライト 等 Gmailとの 連 携 Webカメラの 画 像 をで 送 信 mail 経 由 で 外 部 信 号 の 入 力 監 視 と 出 力
OpenMicroServer + FOMA Remote-Hand FOMA 網 64kデジタル 通 信 or 384kパケット 通 信 Open Micro ServerのDIO 端 子 を 使 い 動 物 を 監 視 USB 接 続 パソコンのping TimeOutを 電 話 で 通 知 うさぎが 人 参 を 食 べたら 人 参 を 補 充 し 電 話 で 通 知 リモートハンド トラが 檻 を 破 って 脱 走 したら パトライトを 点 灯 うさぎやトラをどうやって 認 識 させる もっと 早 く もっとクールにリモートで 解 決
OpenMicroServerでRemote-Hand OpenMicroserverはDIOを4ビット 内 蔵 Digital 信 号 (0v,3.3v) 出 力 でAC100 駆 動 させるには 別 途 Driver(TR,SCR, FLS 等 ) 必 要 如 何 せんとも 遅 いmips 系 CPU(400MHz) 値 段 が6 万 位 とお 高 い 割 に 結 構 しょぼい 2011 年 早 々 製 造 中 止 次 機 種 にはDIOは 内 蔵 されてない もっと 早 く もっとクールにリモートで 解 決
ハードウェア Open Microserver 代 替 を 探 して シリアルDIOボード+ 出 来 るだけ 安 く 1 万 円 位 入 手 し 易 い 家 電 量 販 店 や 通 販 再 現 性 重 視 特 殊 工 具 不 要 半 田 ごて 圧 着 ペンチ ラジ オペンチ ソフトウェア シリアル 経 由 なら 拙 者 のepicon GUIはOpen MicroserverのWEBインターフェース 流 用 Vmplayer + + DIO 用 コマンド
DIOコントロール 用 コマンド 開 発 pepodioctlコマンドを 開 発 # pepodioctl # usage $0 usage $0 read->chno:0-9 write->chno:0-5 [DO:0 1] [time- >1 to 65535ms] pepodioctlの 中 身 CMD_DIO="/usr/local/bin/epicon -d 5 -D 5 -ql ${DIO_DEV} -c ${CMD}" # cat ${CMD} #!/bin/sh echo -en "${DI_ADR}${CH} r n シリアル 経 由 だと 結 構 ややこい
シリアル 経 由 だと 結 構 ややこい アプリケーション CH0 1 ライト DIOコントローラ DIOADDRES A CH0 A 1 H DIOボード AAHを9600bpsで 送 信 ライトアフタWAIT PICで なんやかんやの 処 理 1 表 示 ARAを9600bpsで 送 信 リードWAIT AHAを9600bps 受 信 OK:read data 1 NG:-1 PICで なんやかんやの 処 理 PICでAHA 送 信 処 理 ライト 直 後 リード AHA 通 常 のリード AAH PICのバグ? もっと 早 く もっとクールにリモートで 解 決
やりました! でもシリアル 経 由 だと 結 構 時 間 がorz コマンド 実 行 時 間 の 計 測 [root@~]# time pepodioctl 0 1 CH0へのリード real 0m0.138s user 0m0.012s sys 0m0.084s [root@~]# time pepodioctl 0 1 1 CH0へのライト real 0m0.156s user 0m0.030s sys 0m0.082s V0.24までは CH0へのリード real 0m0.674s CH0へのライト real 0m0.730s 9600b/s 1 文 字 約 1ms 秒 1 9600 10=0.00104166 write:4 文 字 read:8 文 字 read:8 1=8ms write:4 1+4(after read)=8ms 実 際 は 文 字 間 delayが 必 要 文 字 :5ms 改 行 :5ms 1 文 字 :6ms 1コマンド: + 5ms read(4 文 字 送 信 ) wait:10ms read(3 文 字 受 信 )=4+10+3 write(4 文 字 送 信 ) wait:10ms+after read 4 6+10+10( 送 信 )+3( 受 信 ) 計 算 上 :read=47ms,write=47ms 実 際 はLockfile 操 作 等 に 時 間 が
daemonのpepodiodコマンド 開 発 Digital 入 力 信 号 を 定 周 期 で 読 み 取 り 信 号 変 化 で 該 当 コマンドを 実 行 具 体 的 には 入 力 側 DI:low/high 出 力 側 DO:off/on DI: 照 明 SWのhigh low DO: 蛍 光 灯 を 点 ける DI: 照 明 SWのlow high DO: 蛍 光 灯 を 消 す DI: 池 の 水 が 満 杯 (フロートSW) high low DO:パトライトを 点 灯 AP:メールを 送 信 DI:トラが 脱 走 (どうにかして 検 出 ) DO:サイレン 鳴 動 AP: 電 話 をする DI: 留 守 中 の 扉 開 検 出 Webカメラで 動 画 etc
DIOコアプログラムの 完 成 pepodioctl:dioの 読 み 書 きはマルチユーザー pepodiod:dioから1 秒 毎 に 読 み 込 み 入 力 信 号 の 変 化 に 合 わせたアクションを 実 行 pepogmail4dio:gamil 経 由 でDIOの 入 出 力 操 作 と 情 報 を 返 信 pepogmail4pic:gamil 経 由 でUSB 接 続 カメラの 動 画 を 数 秒 記 録 して 添 付 返 信
フルスクラッチ フルスクラッチ 簡 単 操 作 Webインターフェース jqueryでルックフィールと 操 作 性 UP 殆 どがshellスクリプト distributionやバージョンに 左 右 されない bash cgi 6613 ruby-cgi 107 javascript 2009 helper script 1911 epicon C 1934 気 がつけば 約 12,000 行 のCとスクリプト 群 もっと 早 く もっとクールにリモートで 解 決
必 死 のパッチ 市 販 のDIOシリアルボード 9600bps 非 同 期 通 信 5v14 本 の 入 力 / 出 力 端 子 3,000 円 程 度
必 死 のパッチ ソリッドステートSWコンセント BOX 開 発 ソリッドステートSWコンセントBOX 内 部 DIO 出 力 0/5VでAC100V/5Aをオフ/オンさせ る 為 のソリッドステートスイッチ 内 蔵 コンセントBOXを 開 発 2,000 円 程 度 もっと 早 く もっとクールにリモートで 解 決
Vmplayer++DIO+FOMA=Remote-Hand Vmplayer++ シリアルDIOボードで 動 物 を 監 視 シリアル 接 続 USB 接 続 FOMA 網 64kデジタル 通 信 or 384kパケット 通 信 トラが 檻 を 破 って 脱 走 したらパトライトを 点 灯 させ 電 話 通 知 うさぎが 人 参 を 食 べたら 人 参 を 補 充 しMailで 通 知 Serverのping TimeOutをMailと 電 話 で 同 時 通 知 うさぎやトラをどうやって 認 識 させる? リモートハンド もっと 早 く もっとクールにリモートで 解 決
Vmplayer++DIO+FOMA +DIO+FOMA=Remote-Hand Vmplayer++シ リアルDIOボードで 動 物 を 監 視 シリアル 接 続 USB 接 続 トラが 檻 を 破 って 脱 走 したらパトライトを 点 灯 させ 電 話 通 知 うさぎが 人 参 を 食 べたら 人 参 を 補 充 しMailで 通 知 Serverのping TimeOutをMailと 電 話 で 同 時 通 知 うさぎやトラをどうやって 認 識? WEBカメラで 動 画 をMail FOMA 網 64kデジタル 通 信 or 384kパケット 通 信 リモートハンド もっと 早 く もっとクールにリモートで 解 決
VMplayer 起 動 もっと 早 く もっとクールにリモートで 解 決
ムリムリメモリ128MBで 動 作 もっと 早 く もっとクールにリモートで 解 決
DIOの 各 ポートへ 別 名 設 定 出 力 信 号 へ 別 名 設 定 入 力 信 号 へ 別 名 設 定
Ajaxで 入 出 力 制 御 とリアル 監 視 DIOの 出 力 設 定 と 入 力 状 態 を 文 字 と 色 でリアル 表 示
Google Chrome API 音 声 認 識 と 応 答 で 外 部 機 器 を 制 御 電 気 をつけて もっと 早 く もっとクールにリモートで 解 決
入 力 イベントに 対 する 動 作 を 設 定 DIOControl2で 別 動 作 を 設 定 同 じイベントで2つの 動 作 パトライト 点 灯 & 電 話 1 入 力 信 号 の 変 化 0 1:low high 1 0:high low 2イベントの 動 作 を 設 定
アクションは 全 部 で15 種 類 出 力 6 本 のHighとLow 電 話 文 字 メール 添 付 画 像 メール
Gmail 経 由 でDIO 操 作 Gmail 経 由 でキーワードを 指 定 してDIOを 操 作 Gmailなのでメールサーバ 側 で 特 に 設 定 不 要 ランプ 点 灯 / 消 灯 入 力 信 号 の 状 態 をメール 通 知 webカメラの 画 像 をメール 送 信 登 録 メールアドレス 以 外 操 作 禁 止 全 てのメールアドレス 操 作 許 可
火 災 報 知 器 ( 大 阪 ガス ピコピコ) 接 続 もっと 早 く もっとクールにリモートで 解 決
動 物 監 視 (ペット) もっと 早 く もっとクールにリモートで 解 決
動 物 監 視 (ペット) 人 感 センサー 無 線 受 信 器 人 感 センサー 無 線 送 信 器 センサー 感 知 でト コトコ 逃 げだす
とらが 脱 走 したらメール もっと 早 く もっとクールにリモートで 解 決
三 都 物 語 やねん 帰 って 来 たよ osc2011@kobe osc2011@kyoto kof2011 osaka Osc2012@Kyoto kof2012 osc2013@kyoto
ところでRaspberry Pi raspberry piとは
Raspberry Piの 拡 張 ボードPiface PiFaceとはデジタルI/O 拡 張 ボード Raspberry Pi 用 の 入 出 力 8ビットの 拡 張 ボード 5Vリレー 2の 出 力 でAC100V/DC24V 5A 迄 外 部 スイッチング
Raspberry Pi + Piface= Remote-Hand Raspberry Pi and Case: 29.99 PIFACE: 19.99 Samsung 8GB Debian1: 8.33 USB to Micro USB Cable 2m: 1.66 Royal Mail Airmail: 10.98 Total: 75.94 発 注 後 1W2 月 末 入 手
Raspberry Pi + Piface=Remote-Hand 動 物 を 監 視 Gamil 連 携 で 外 部 機 器 の 監 視 と 制 御 FOMA 網 64kデジタル 通 信 or 384kパケット 通 信 USB 接 続 トラが 檻 を 破 って 脱 走 したらパトライトを 点 灯 させ 電 話 通 知 うさぎが 人 参 を 食 べたら 人 参 を 補 充 しMailで 通 知 リモートハンド Serverのping TimeOutをMailと 電 話 で 同 時 通 知 もっと 早 く もっとクールにリモートで 解 決
pepopifaceコマンド もっと 早 く もっとクールにリモートで 解 決
libpifaceに 難 ありpfio.cへpatch pepopifaceコマンドはpiface(gpio)を 制 御 する libpifaceに 難 あり pfio_init()を 最 初 に 呼 ぶ 事 に が 呼 ぶ 都 度 出 力 ポート が 初 期 化 される patchを 作 成../piface/c/src/piface/pfio.c // spi_write(gpioa, 0x00); // turn on port A spi_write(iodira, 0); // set port A as an output spi_write(iodirb, 0xFF); // set port B as an input spi_write(gppub, 0xFF); // turn on port B pullups // initialise all outputs to 0 // int i; // for (i = 1; i <= 8; i++) // pfio_digital_write(i, 0); // もっと 早 く もっとクールにリモートで 解 決
libpifaceを 少 し https://docs.google.com/folder/d/0b-uaz9cyjclgqjj3rdlqa2pqadg/edit?pli=1 pfio_digital_read(pin_number) Returns the binary value of the specified input pin. pfio_digital_write(pin_number, value) Sets the binary value of the specified output pin to the given value. pfio_read_input() Returns the input port information as a list. Index 2 contains the port data (binary status of the input pins). pfio_read_output() Returns the output port information as a list. Index 2 contains the port data (binary status of the input pins).
pepopifaceはpiface(gpio)を 制 御 # pepopiface** Welcome to pepopiface Version-0.1 Copyright Yamauchi.Isamu compiled:jul 20 2013 ** usage:pepopiface port:0-8 [0 1] [timer:0-65535ms] 入 力 port0と 出 力 port0を 接 続 # pepopiface 0 1 1 port0へwrite # pepopiface 0 1 # pepopiface 8 0101 上 位 8:write 下 位 8:read
pepopifacedはdaemon 定 周 期 でpepopiface 8を 投 げ 入 力 8ポートを 監 視 たとえば 入 力 ポート0の 変 化 によりコマンドを 起 動 High Low:dio0high2lowコマンドを 実 行 Low High:dio0low2highコマンドを 実 行 もっと 早 く もっとクールにリモートで 解 決
Raspberry Piはflashメモリを 酷 使 webアクセスlogをtmpfsへ # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 7533648 3771908 3430628 53% / devtmpfs 223256 0 223256 0% /dev tmpfs 223344 0 223344 0% /dev/shm tmpfs 223344 976 222368 1% /run tmpfs 223344 0 223344 0% /sys/fs/cgroup tmpfs 223344 0 223344 0% /tmp tmpfs 10240 1952 8288 20% /www
Raspberry Pi + Piface それではデモいきます 電 気 をつけて 飛 べ 鬼 奴? http://www.youtube.com/watch?v=ku1arjwkcui
ご 清 聴 有 難 う 御 座 いました 2013.8.3 会 議 室 B 14:45 頃 プレゼン 終 了 予 定 残 り 時 間 は 少 ないですがブースも 見 てね もっと 早 もっと 早 く もっとクールにリモートで 解 決 解 決
おしまい OSC2013_Kansai@Kyoto 2013.8.3 会 議 室 B 14:00-14:45 Twitter@kujiranodanna pepolinux@users.sourceforge.jp IZAMUKARERA:くじらのだんな: 山 内