そもそも Motion の公式ドキュメントにやり方は書いてあります。
https://motion-project.github.io/motion_config.html#Basic_Setup_PiCam
Motion で純正カメラモジュール(Piカメラ Official V2)を利用したい場合は
sudo apt-get install motion
で Motion をインストールした後
sudo modprobe bcm2835-v4l2
で bcm2835-v4l2 モジュールをインストールすればOK。
もちろん「Raspberry Pi の設定」で「インターフェイス」の「カメラ」は有効にしておきましょう。
引き続き raspistill コマンドなんかも Motion が動いていないときであれば利用できます。
motion の設定方法や使い方も、まずは公式ドキュメントをご覧になることをおすすめします。
https://motion-project.github.io/motion_guide.html
ブラウザ上で確認しながら設定変更する方法なんかもあります。(ちょっと野暮ったいですが…)
2018年1月26日金曜日
2017年11月3日金曜日
at コマンドで秒を指定する方法
最近は cron がブイブイ言わせているようですが、1回きりの処理では at コマンドのほうがラクチンです。私は。
まぁ、そんなことはどうでもよくて、秒まできっちり指定したい場合には以下の方法が(環境によっては)使えるらしいです。
2017年12月01日15時00分30秒を指定したい場合。
-t オプションについてはググってください。
ただ、残念ながら Raspberry Pi の Raspbian では無視されてしまうようです。
(.30とか追加してもエラーにはならないが00秒で実行される)
なので実際に機能しているところは見たことありませんw
そもそも Raspberry Pi の Raspbian にはデフォで at コマンド入ってないので
私は音声認識でタイマーをセットさせたかったので、0秒から59秒の sleep を含んだシェルを用意するという力技で解決しました。
2017年12月01日15時00分30秒を指定したい場合。
かなり頭の悪い方法ですが cron でも使えるかもしれないです。(試してない)
つーか
なんかいい方法あったら教えてください。
まぁ、そんなことはどうでもよくて、秒まできっちり指定したい場合には以下の方法が(環境によっては)使えるらしいです。
2017年12月01日15時00分30秒を指定したい場合。
$ at -t 201712011500.30というように、「.」に続けて秒を指定すればOKらしいです。
-t オプションについてはググってください。
ただ、残念ながら Raspberry Pi の Raspbian では無視されてしまうようです。
(.30とか追加してもエラーにはならないが00秒で実行される)
なので実際に機能しているところは見たことありませんw
そもそも Raspberry Pi の Raspbian にはデフォで at コマンド入ってないので
$ sudo apt-get install atする必要があります。
私は音声認識でタイマーをセットさせたかったので、0秒から59秒の sleep を含んだシェルを用意するという力技で解決しました。
2017年12月01日15時00分30秒を指定したい場合。
$ at -t 201712011500 -f ./timer30.shtimer00.sh のなかには sleep と実行したいコマンドが記述されています。
かなり頭の悪い方法ですが cron でも使えるかもしれないです。(試してない)
つーか
$ at -t 201712011500 -f ./timer.sh 30とかいう感じに引数指定できないんですか?
なんかいい方法あったら教えてください。
2017年10月30日月曜日
ChatBot(チャットボット) を無料で作れるツール・サービスまとめ
個人で利用できて無料プランがあるチャットボット作成サービスのまとめ。
| サービス名 | ボット数 | APIコール数 | インテント数 シナリオ数 | エンティティー数 クエリー数 | 連携 |
|---|---|---|---|---|---|
| Repl-AI | 1 | 1,000 コール/月 | 制限なし | 制限なし | LINE API |
| Watson Assistant (旧Conversation) | 5 | 10,000 コール/月 | 100 | 25 | API |
| hachidori | 2 | 10,000 コール/月 | 20 | -- | LINE |
| Dialogflow | ? | 集中しなきゃOK | 無いっぽい | 無いっぽい | Google Assistant LINE Slack Dialogflow Web Demo Kik Skype Spark Telegram Tropo Twilio Twilio Programmable Chat Viber Amazon Alexa(?) Microsoft Cortana API |
それぞれを使ってみたレビューは以下の通り。
Repl-AI
エディターはボックスを線で繋いで作るという仕組みなので、簡単に使いこなせるようになるが、その仕様上、複雑な会話フローや大量なパターンを作ろうとすると破綻しがち。(その状態で整列ボタンを押すと死ぬw)
また、会話フローの条件で or が使えないことも地味に痛い。
単語の抽出(System Entities っぽいもの)は、場所や時刻、金額などが取得でき、特に人名が取得できる点はなにかと便利。
反面、辞書機能は同義語を定義する程度のもので、Entity として取得したりはできない。
LINE と Facebook とは簡単に接続できるが、Web サイトにサクッと載せられるような機能は最上位(Enterprise)プランにしか無い。
(ちなみに最上位プランは桁違いに高いゾ☆)
無料でやるには API で頑張る必要がある。
(ちなみに最上位プランは桁違いに高いゾ☆)
無料でやるには API で頑張る必要がある。
他のサービスにはない特長として、予め用意されている「知識Q&Aボット」「トレンド記事ボット」「雑談対話ボット」と連携できる機能があり、一般的な会話はそれらを利用することで手間が省ける。
ただし、「雑談対話ボット」はかなりフランクっていうかチャラいw
ただし、「雑談対話ボット」はかなりフランクっていうかチャラいw
Watson Assistant (旧Conversation)
https://www.ibm.com/watson/jp-ja/developercloud/conversation.html
IBM のクラウドサービス IBM Cloud (旧Bluemix) 内のサービス。(どんだけ名前変んねんw)
Conversation とプラットフォームを繋げるために別途アプリケーション・サーバーが必要。
IBM のクラウドサービス IBM Cloud (旧Bluemix) 内のサービス。(どんだけ名前変んねんw)
Conversation とプラットフォームを繋げるために別途アプリケーション・サーバーが必要。
LINE や Facebook などに簡単につなげる機能などは一切ないので、API を利用してなんやかんやできる知識が必要。
ただしその分、汎用性は高く、Conversation 開発ツールは非常に洗練されているため、複雑な会話フローにも柔軟に対応できる。
この開発ツールへは、WEBブラウザからアクセスでき、プログラミング知識がなくても扱えるようにできている。(ただし英語)
プロフェッショナルな要求にも対応できる非常に高度なサービスを利用できるという点で、他のサービスとは一線を画する。
あとは System Entities で人名も取得できるようになれば最高なのだが……
hachidori
会話フロー作成ツール上でテストすることはできないので、LINE や Facebook に実際に連携してからでないと動作は確認できない。(連携自体は簡単)
しかし、カルーセルやボタン、スタンプなどを簡単に設定できる機能があり、それらはかなり有用。
また、お店の予約システムに使えるカレンダー機能や、クエリー(Entityのようなもの)の定義も可能。(System Entities は無い)
API は無いがテンプレートという機能を使って外部のシステムと情報のやり取りは可能。
マニュアルはないが、各画面の下部に説明があるので、それほど困ることはない。
対してチュートリアルはあるが、実際の動作を見るには上記の通り LINE や Facebook に接続する必要がある。
特徴であるカレンダー機能や LINE のスタンプなどを利用したいのであれば候補にはなるが、無料版だと制限がきつく Repl-AI に見劣りしてしまうのが難。
Dialogflow
https://dialogflow.com/旧 Api.ai 。
Dialogflow のボット(エージェント)数は GOOGLE PROJECT 依存なんだと思う。
その他、数に制限があるのかわからない。(無いっぽい)
インターフェイスは英語だが、日本語の処理には対応済み。(ただし Intent や Entity の名称には日本語を使わないほうが良さそう)
音楽アーティストなども取得できる System Entities の豊富さと、連携できるサービスの数が他の追随を許さない。
一問一答できれば良いチャットボットならこれで充分だが、それ以上を望む場合にはちょっと力不足なのは否めない。
現状、今回取り上げたサービスで唯一、テキストではなく音声ファイルを送りつけても単独で処理できるサービスでもある。
ラベル:
AI,
Linux,
Raspberry Pi
2017年10月10日火曜日
Webデザイナー・クリエーター・プログラマーが Raspberry Pi を活用するために必要な知識
自分のための備忘録。
間違ってることも自信満々に書いてたりするぞ!
※このページは私が飽きるまで随時更新されます。
間違ってることも自信満々に書いてたりするぞ!
※このページは私が飽きるまで随時更新されます。
電圧と電流
よく水に例えられるが私は「電圧は水の高さ」という例えより(高さって位置エネルギーだよね……それが電圧?)下記サイトの水鉄砲の例えのほうが理解が早かった。
直列と並列(分圧・分流)
電池を直列と並列にした場合や、抵抗を直列と並列にした場合などについて。
電池
- 直列にすると電圧は足し算。
- 並列にすると電圧は1個分で、容量が増える。
抵抗を直列
- 抵抗値(合成抵抗)は単純に足し算
- 電圧がそれぞれの抵抗値に合わせて割り振られる(入力より減る)
- 電流は同一量
抵抗を並列
- 抵抗値はなんか減るw(和分の積は2個の時にしか使えない)
合成抵抗の求め方(計算方法) 電気の資格とお勉強 - 電圧は、みんな同じ量(入力と同じ)
- 電流がそれぞれの要求に合わせて割り振られる(入力より減る)
ラズパイの GPIO
扱える最大(?)電圧と電流
以下のサイトによると
- GPIOピン1本あたりの最大電流は(入出力ともに)16mA
- 複数本のGPIOピンを使用する場合、同時に流せる電流の合計は50mAまで
- 目安としては、制限の半分、つまり8mA
プルアップ抵抗・プルダウン抵抗
GPIOへの入力が、HIGH なのか LOW なのかをはっきり(安定)させるための工夫。
まずポイントは「入力は GND と繋いでおけば 0V(LOW)に安定する」という点と、抵抗は「安定させるため」ではなく「ショートさせないため」に付けると考えたほうが合点がいく点。(そのためだけではないみたいだけど…)
プルアップ・プルダウン Fグループ電子工作講座
プルアップ 通信用語の基礎知識
ソフト側で内部のプルアップ・プルダウンを利用する分には、上記の理屈は理解できてなくても問題ないので、多少の割り切りは必要だと思うよ、うんw
Raspberry PiのGPIOは起動直後から内部プルダウンされている hnwの日記
まずポイントは「入力は GND と繋いでおけば 0V(LOW)に安定する」という点と、抵抗は「安定させるため」ではなく「ショートさせないため」に付けると考えたほうが合点がいく点。(そのためだけではないみたいだけど…)
使用する抵抗は1kΩ〜10kΩ。
抵抗の値が小さすぎると電流が増えて無駄になる。
逆に抵抗の値が大きすぎると電流が少なくて周りからのノイズによって不安定になりやすくなる。
プルアップ・プルダウン Fグループ電子工作講座
プルアップ 通信用語の基礎知識
ソフト側で内部のプルアップ・プルダウンを利用する分には、上記の理屈は理解できてなくても問題ないので、多少の割り切りは必要だと思うよ、うんw
Raspberry PiのGPIOは起動直後から内部プルダウンされている hnwの日記
GPIO 2 と GPIO 3 のみ 1.8KΩで他は 50KΩ らしい。
なんやかんやで GPIO 2 と 3 をプルダウンされた入力として使うことはできないらしい…らしい…らしい…
なんやかんやで GPIO 2 と 3 をプルダウンされた入力として使うことはできないらしい…らしい…らしい…
電子回路シミュレータ
パーツについて
もし「電子回路をマスターしたい」のではなく「ラズパイへ入出力機器(センサー)を付けたい」だけなのであれば、個々のパーツの役割を詳細に把握し、回路を自作するよりモジュールを買ったほうが早い。(電子回路マスターへの道が険しすぎる;)
目的とする処理を電子回路とソフトウェア、どちらで処理させるのが現実的かの見極めが大事。
でも基本的なことは知っておいたほうが良い。
抵抗
電圧とか電流とか下げるときに使う。
いざ購入しようとした時に種類の多さにビビる。
まずは1/4wカーボン抵抗で、100Ω~1000Ω(1KΩ)を適当な区切りで用意しておけばいいかと。
1種類につき10個くらいしか使わないけど、1袋100個入りだったりする。
今の技術なら直接数値を記載することもできるであろうが、頑なに謎の色線で抵抗値を表す初心者キラー。
LED
なぜか初心者は最初にこれをチカチカさせることを推奨される。
これまた、購入しようとすると種類の多さにビビる。
そもそもオマエの使っているその赤いLEDは一体どれだと言いたくなるが、大抵はそんなことまで記載されていない入門書が大半。
実際には足が2本のならば、ほぼなんでもいい。
実際には足が2本のならば、ほぼなんでもいい。
トランジスタ
このパーツについては以下のページがわかりやすいと思った。
足の並びは ECB (えくぼ)と覚えるのが良いらしい。
これが使えるようになると、電圧や電流の制限が厳しい Raspberry Pi でも、乾電池を使って色々できるようになるので楽しい。
ただしモーターのように大電流が必要になるものへは、パワートランジスタや MOSFET を利用する。
ただしモーターのように大電流が必要になるものへは、パワートランジスタや MOSFET を利用する。
MOSFET(モス・エフイーティー/モスフェット)
トランジスタのように使うみたいだけど、コンデンサみたいな的な働きもしてしまうのでなんやかんやw
トランジスタは電流を流すと電流が流れる仕組みに対し、MOSFETは電圧をかけると抵抗値が下がる仕組み。
4V駆動や2.5V駆動のものを利用すること。
トランジスタは電流を流すと電流が流れる仕組みに対し、MOSFETは電圧をかけると抵抗値が下がる仕組み。
4V駆動や2.5V駆動のものを利用すること。
ArduinoでパワーMOSFETを使ってみる その1 日々 ほげほげ 研究所
一瞬ショートしたような状態になるらしいので、ゲートには抵抗を入れておくほうが良いみたい。
一瞬ショートしたような状態になるらしいので、ゲートには抵抗を入れておくほうが良いみたい。
リレー
物理的に「カチッ」って音がするのでビビる。
コイルを使っているのでダイオードを逆並列に接続する必要がある。
(切った瞬間にすごい電圧が流れるのを逃がす)
動かすためには大きな電流が流れることになり、ラズパイではあまり使用されないかも。
(切った瞬間にすごい電圧が流れるのを逃がす)
動かすためには大きな電流が流れることになり、ラズパイではあまり使用されないかも。
ダイオード
一方通行にするw
ちょこっと電圧を下げたりもしちゃう。
ちょこっと電圧を下げたりもしちゃう。
コンデンサ
電気を貯める効果があり、貯まってくると徐々に直流は通さなくなる。
その特性を利用して、電圧を安定させたい時に使ったりする。
なお、種類多すぎ意味不明(・口・)
その特性を利用して、電圧を安定させたい時に使ったりする。
なお、種類多すぎ意味不明(・口・)
セラミックコンデンサ
比較的容量の少ないコンデンサ。
極性(+と-)はない。
電解コンデンサ
LED みたいに極性があるので間違えたらイカン破裂する。
パスコン(バイパスコンデンサ)(デカップリングコンデンサ)という使い方
直流電圧を安定させるために配置するコンデンサのこと。
そういう種類のコンデンサがあるのではなく、コンデンサの役割名。
よく 0.1μF のセラミックコンデンサが利用される。
そういう種類のコンデンサがあるのではなく、コンデンサの役割名。
よく 0.1μF のセラミックコンデンサが利用される。
安定した電源を供給したいものの近くに置くほど効果的。←物理的に近く?回路的に近く?
コンデンサを試す パスコン 始める電子回路
パスコンって何? 電子のおたすけMEMO
ノイズはある種の交流とも言える、そしてコンデンサは交流のみ通す。
なのでコンデンサを GND に繋いでおけばノイズのみ逃がせる。
ということみたい。
パスコンって何? 電子のおたすけMEMO
ノイズはある種の交流とも言える、そしてコンデンサは交流のみ通す。
なのでコンデンサを GND に繋いでおけばノイズのみ逃がせる。
ということみたい。
三端子レギュレータ
らくらく必要な電圧に降圧してくれるパーツ。
3V 用とか 5V 用とか色々ある。
入力側と出力側に(パスコンとして)コンデンサーを付けて使うのが一般的。
どんなコンデンサーを使えば良いかはモノによりすぎて訳わからんので、先人の回路図を参考にすると良い(爆)
3V 用とか 5V 用とか色々ある。
入力側と出力側に(パスコンとして)コンデンサーを付けて使うのが一般的。
どんなコンデンサーを使えば良いかはモノによりすぎて訳わからんので、先人の回路図を参考にすると良い(爆)
人感センサー・PIR(RIP?)・焦電型赤外線センサー
そもそも色々な呼び名があって混乱する。
初心者はセンサーそのものではなく、センサー付きモジュールを購入すべき。
私が秋月さんで購入した SB412A は配線などがラズパイに近いと、なんらかの影響を受けてしまうのか、1分間隔(または高負荷時)で反応してしまうという不具合が出る。(要調査)
初心者はセンサーそのものではなく、センサー付きモジュールを購入すべき。
私が秋月さんで購入した SB412A は配線などがラズパイに近いと、なんらかの影響を受けてしまうのか、1分間隔(または高負荷時)で反応してしまうという不具合が出る。(要調査)
モータードライバ
DC モーターをコントロールしたい時に使う。
トランジスタでリレー回路つくったり逆流防止用のダイオードを配置したりする必要がなくなるので楽。
トランジスタでリレー回路つくったり逆流防止用のダイオードを配置したりする必要がなくなるので楽。
なぜかサーボモータの時には使わなくてもいいみたい。
圧電スピーカー・圧電サウンダ・圧電ブザー
お手軽に音をならせるパーツ。
電池を繋いだだけで決まった音が出る自励振式(ブザー)と、別途発振回路を必要とする他励振式(スピーカー・サウンダ)がある。
他励振式の圧電サウンダを使ったほうが色々な音階が出せて楽しいw
このパーツ自体が発電機にもなるので、抵抗とダイオードでラズパイを保護する回路を付けたほうがいいって説明書には書いてある。

あと、ホントは交流で使うものらしいのに、なんやかんやで直流でも使える。
なお、自励振式には極性がある。あとかなりうるさい。
他励振式の圧電サウンダを使ったほうが色々な音階が出せて楽しいw
このパーツ自体が発電機にもなるので、抵抗とダイオードでラズパイを保護する回路を付けたほうがいいって説明書には書いてある。

あと、ホントは交流で使うものらしいのに、なんやかんやで直流でも使える。
なお、自励振式には極性がある。あとかなりうるさい。
ADコンバータ(A/Dコンバータ)
アナログ信号をデジタル信号にしてくれる IC 。
多くの場合、SPI か I2C という通信規格を利用してラズパイとデータのやり取りをする。
分解能という能力値があり、例えば 10bit だとアナログ信号を 0~1023 段階のデジタル信号に変換できる。
デジタルしか入力できないラズパイではよく使うパーツ。
昇圧・降圧について
5V を 3V に下げたいとか上げたいとかのこと。
昇圧
DC/DCコンバータを使う。
リニアレギュレータとかスイッチングレギュレータなどとも言うが、これは変換するための方式の名称。
リニアレギュレータとかスイッチングレギュレータなどとも言うが、これは変換するための方式の名称。
降圧
ラズパイだとこっちのほうがよく使うかも。
色々方法がある。
三端子レギュレータを使う
最も簡単で安定らしい。
必要な電圧を出力してくれる種類を選べばいいだけ。
ダイオードを使う
ダイオード1個で 0.6V とか 0.7V 下がるので、それをいくつか直列で繋げて理想の電圧へ下げる方法。
抵抗を使う
つまり分圧するということ。
この方法だと降圧した先に繋がるものの抵抗(負荷)も考慮して組む必要がある。
そのため汎用性はなく、電流が変化するような回路には使えない。
プログラミング
Python
ver2系と3系があるけど、3でいいと思うよ。
なんかみんなこれ使ってる。
Node-RED
私はこっち使ってます。
Raspbian に標準インストールされてるけど、肝心な node.js が古いため、ドキュメントの指示通りインストールし直したほうがフルに機能が使えるようになって捗る。
指示通りにターミナルにbashコマンドをコピペして実行すれば、後は勝手にやってくれます。
既存の設定やフローも維持してくれるので安心だぞ。
指示通りにターミナルにbashコマンドをコピペして実行すれば、後は勝手にやってくれます。
既存の設定やフローも維持してくれるので安心だぞ。
USB
電源として利用したい場合
そもそも USB からの電力供給は規格で 5V で 100mA~500mA と決まっている様子。(たぶん USB2.0までの話)
ただし、色々なページを見る限り USB ホストへ「これくらい電力使うよ」と申告したりする手続きをしないで、こそーり電源としてのみ拝借する場合は 100mA までに制限しておくのが無難な様子。
USB Raspberrypi.org
USBポートは電源ではありません Dai ISHIJIMA's Page
USB端子から5ボルトを取る方法 作る人(つくるんちゅ)日記
ただし、色々なページを見る限り USB ホストへ「これくらい電力使うよ」と申告したりする手続きをしないで、こそーり電源としてのみ拝借する場合は 100mA までに制限しておくのが無難な様子。
USB Raspberrypi.org
USBポートは電源ではありません Dai ISHIJIMA's Page
USB端子から5ボルトを取る方法 作る人(つくるんちゅ)日記
音楽・動画の再生
最初から入っている OmxPlayer を使えば GPU が利用できるのでスムーズな再生が期待できるらしいです。
RASPBERRY PIのオーディオ再生
RASPBERRY PIでビデオを再生する
OMXPLAYER:加速されたコマンドラインメディアプレーヤー
ただし、OpenGL を使用するため Linux 一般で使われている(当然ラズパイでも使われている)ALSA の設定は無視される。
たとえば GUI で音量を変えても OmxPlayer で再生しているメディアには影響がない。
RASPBERRY PIのオーディオ再生
RASPBERRY PIでビデオを再生する
OMXPLAYER:加速されたコマンドラインメディアプレーヤー
ただし、OpenGL を使用するため Linux 一般で使われている(当然ラズパイでも使われている)ALSA の設定は無視される。
たとえば GUI で音量を変えても OmxPlayer で再生しているメディアには影響がない。
ALSA
Linux でサウンド関係を一手に管理しているものらしい。
ALSA を使用して再生したり録音したり音量設定したりするには以下のようなコマンドを使う。
- aplay
- arecord
- alsamixer
詳しくはググれ。
2017年9月20日水曜日
RPGツクールから自宅のWEBカメラを操作する
気は確かか?とか言われそうですが確かです。
昨今、あらゆる技術やサービスの敷居か下がってきていると感じたので、それらを組み合わせて何かできないかと考えた結果、このようなことになってしまいましたw
本件で使用した主なツールは以下のようなものです。
いずれも学習コストの低さが売りのツールなので、マニュアルとかを見ればすぐに扱えるようになると思います。
難易度的にも差はないと思うので、既にどれかひとつでも扱えるのなら、他のツールも余裕なはずです。
つまり、もしあなたがツクールでゲームを作れる根性があるのなら Raspberry Pi と Node-RED を駆使した IoT(モノのインターネット)くらい余裕な時代になったわけですよ!(暴論)
実動版を公開しても良かったのですが、Raspberry Pi で他のこともやりたいし、いつまで自宅で動かしてるかも分からないので、サーバー処理だけ除いたモノを公開しています。
わ け わ か ら ん w
一応説明いたしますと、インターネットより上が自宅です。
Raspberry Pi がサーバーで、その中で Node-RED が動いていて、ゲームやら画像やらをプレイヤーに配信する、という構成で、ゲームからは以下のような流れで撮影が行われます。
ラズパイ正規総代理店のアールエスコンポーネンツと契約を結んだ個人向けの正規代理店の Raspberry Pi Shop by KSY(ややこしいw)での購入をおすすめします。(アフィとか無いから素直にクリックしとけ)
Amazon などと比較しても安いことが多いです。
私は Raspberry Pi 3(5,000円くらい)を使用しましたが、恐ろしく安い Raspberry Pi Zero(700円くらい)とかでも可能なはずです。
初心者はACアダプターなども含まれるセットを買うのが無難です。
流行っているのでネットや本で多くの情報を得ることができます。
でも古い情報には注意です。(OSガー、ニホンゴガー、とかいう問題はもはや過去のもの)
あと、やたらコマンドを打たせたがるページが多いですが、ほとんどの作業は GUI 上でも行なえるので、CLI 恐怖症の人も安心だぞ(ちょっとウソです)
ちなみに公式サイトはこちら(英語が読めない人は Chrome の翻訳機能で頑張れ)
詳しくはこちら→Node-RED日本ユーザ会 : ドキュメント
比較的情報が少ないのがネック。
ただし、まれに Steam で 80%OFF とかしているため買い時が難しいですw
詳しくはこちら→RPGツクールMV
ツクールは元々、エラー表示のために「ErrorPrinter」という ID をもつ <p> 要素が HTML 内に用意されているので、そこに <img> 要素を突っ込んでるだけです。
イベントコマンドの「スクリプト」で直接以下のような javascript を書いています。
【注】このBlogの制約で<>は全角になっています!
こんな感じ("写真を取って撮って保存"のところ)です↓
指定したディレクトリに HTML とか JPEG とかを置いています。
詳しくこちら→ Node-RED日本ユーザ会 : 設定
先の Node-RED のフローの"1時間毎にDDNS更新"のところで IP を通知しています。
USB とか差し込むだけやで。
Node-RED の初期設定での使用ポートは 1880 だに。
お使いのネットワーク機器の設定が必要たい。
ラズパイに人感センサーとか赤外線リモコンモジュールとか追加してみたり、Node-RED で WebSocket サーバー動かしてツクールにオンライン要素追加してみたり色々やりたいことがあるので、またなんか作ったら公開したいと思います。
昨今、あらゆる技術やサービスの敷居か下がってきていると感じたので、それらを組み合わせて何かできないかと考えた結果、このようなことになってしまいましたw
本件で使用した主なツールは以下のようなものです。
![]() | ■ハードウェア Raspberry Pi 3 |
| ■サーバーソフトウェア Node-RED | |
![]() | ■ゲーム作成ツール RPGツクールMV |
いずれも学習コストの低さが売りのツールなので、マニュアルとかを見ればすぐに扱えるようになると思います。
難易度的にも差はないと思うので、既にどれかひとつでも扱えるのなら、他のツールも余裕なはずです。
つまり、もしあなたがツクールでゲームを作れる根性があるのなら Raspberry Pi と Node-RED を駆使した IoT(モノのインターネット)くらい余裕な時代になったわけですよ!(暴論)
![]() |
| ラズパイとウェブカメラと百均のスピーカーとカービィとカービィ |
出来上がったモノの紹介
ゲーム内で然るべき操作をすると、自宅のウェブカメラが撮影を行い、ゲーム上でその写真を確認することができます。実動版を公開しても良かったのですが、Raspberry Pi で他のこともやりたいし、いつまで自宅で動かしてるかも分からないので、サーバー処理だけ除いたモノを公開しています。
とてもよくわかる構成と撮影の流れ
私が渾身の力を込めて描いた構成図をご覧ください。わ け わ か ら ん w
一応説明いたしますと、インターネットより上が自宅です。
Raspberry Pi がサーバーで、その中で Node-RED が動いていて、ゲームやら画像やらをプレイヤーに配信する、という構成で、ゲームからは以下のような流れで撮影が行われます。
- プレイヤーがゲーム内で撮影ボタンを押す
- すると、ゲームから Node-RED に XMLHttpRequest で HTTPリクエストが発生
- リクエストを受け取った Node-RED が撮影と画像の更新の Linux コマンドを実行
- その後、プレイヤーが写真を見るイベントを実行したら、ゲームのエラー表示要素「ErrorPrinter」を利用して画像を表示する
もうちょっと詳しく
ここからは「おいらもやってみたい!」とかいう奇特な方へ向けた情報をダラダラと提供します。それぞれどうやって入手するの?
2017年9月現在の情報です。Raspberry Pi
買いましょう。ラズパイ正規総代理店のアールエスコンポーネンツと契約を結んだ個人向けの正規代理店の Raspberry Pi Shop by KSY(ややこしいw)での購入をおすすめします。(アフィとか無いから素直にクリックしとけ)
Amazon などと比較しても安いことが多いです。
私は Raspberry Pi 3(5,000円くらい)を使用しましたが、恐ろしく安い Raspberry Pi Zero(700円くらい)とかでも可能なはずです。
初心者はACアダプターなども含まれるセットを買うのが無難です。
流行っているのでネットや本で多くの情報を得ることができます。
でも古い情報には注意です。(OSガー、ニホンゴガー、とかいう問題はもはや過去のもの)
あと、やたらコマンドを打たせたがるページが多いですが、ほとんどの作業は GUI 上でも行なえるので、CLI 恐怖症の人も安心だぞ(ちょっとウソです)
ちなみに公式サイトはこちら(英語が読めない人は Chrome の翻訳機能で頑張れ)
Node-RED
ラズパイの標準 OS 「Raspbian」に、もとから含まれています。詳しくはこちら→Node-RED日本ユーザ会 : ドキュメント
比較的情報が少ないのがネック。
RPGツクールMV
税別7,980円。買いましょう。ただし、まれに Steam で 80%OFF とかしているため買い時が難しいですw
詳しくはこちら→RPGツクールMV
ゲーム(ツクール)からどうやって XMLHttpRequest を送っているの?
PNDK_HttpRequest プラグインを利用しています。という感じに、リクエストを投げっぱなしにしてるだけです。◆プラグインコマンド:PNDK_HR clear ◆プラグインコマンド:PNDK_HR send http://sample.com:1880/shoot/
どうやってゲーム内に画像を表示しているの?
ぶっちゃけゲーム内じゃないんですよね。ツクールは元々、エラー表示のために「ErrorPrinter」という ID をもつ <p> 要素が HTML 内に用意されているので、そこに <img> 要素を突っ込んでるだけです。
イベントコマンドの「スクリプト」で直接以下のような javascript を書いています。
【注】このBlogの制約で<>は全角になっています!
var elem = document.getElementById("ErrorPrinter");
elem.innerHTML = "<img src='http://sample.com:1880/rpg/www/photo.jpg'>";消すときは以下のようなスクリプトを実行させています。var elem = document.getElementById("ErrorPrinter");
elem.innerHTML = "";え?なんでツクール使ってんの?HTML と JS でいいじゃん。
使いたかったからDEATH!どうやってラズパイからWebカメラに撮影させてるの?
ラズパイに fswebcam パッケージをインストールして Node-RED の exec ノードで fswebcam コマンドを利用して撮影と画像更新を行っています。こんな感じ("写真を
![]() |
| Node-RED で作ったフロー |
ウェブサーバーは?
Node-RED の設定で httpStatic を指定しています。指定したディレクトリに HTML とか JPEG とかを置いています。
詳しくこちら→ Node-RED日本ユーザ会 : 設定
ちなみに自鯖にはダイナミックDNSを利用
ダイナミックDNS(DDNS)のサービスは mydns.jp を利用しています。先の Node-RED のフローの"1時間毎にDDNS更新"のところで IP を通知しています。
はんだ付けとかするの?
せーへんせーへん。USB とか差し込むだけやで。
ポート開けるんだよね?
せやで。Node-RED の初期設定での使用ポートは 1880 だに。
お使いのネットワーク機器の設定が必要たい。
最後に
べつに何千円もかけて部屋を覗かれるゲームを作りたかったわけではないですよ。ええ。ラズパイに人感センサーとか赤外線リモコンモジュールとか追加してみたり、Node-RED で WebSocket サーバー動かしてツクールにオンライン要素追加してみたり色々やりたいことがあるので、またなんか作ったら公開したいと思います。
登録:
投稿 (Atom)





