全体表示

[ リスト | 詳細 ]

記事検索
検索

全5ページ

[1] [2] [3] [4] [5]

[ 次のページ ]

イメージ 1
イメージ 2

Wi-Fi搭載マイコンESP8266を使って、お風呂の湯沸かしボタンを自動で押してくれるロボット?を
作ってみようと思います。
(去年湯沸かし器が故障して新しいものに変えたのですが、湯量を最小にしても9分目まで入ってしまうので
途中で止めないと水の無駄になってしまう状況です。)

SwitchBotというボタンを押してくれるデバイスが$30で売っていますが
自作すれば
USB電源アダプタ 100円
USBから3.3V電源を作る基板200円
ESP8266単体 500円
サーボーモーター 500円
その他
計1500円くらいで出来ると思います。(ケース除く)
(まぁSwitchBotは超小型で電池内臓だったりするので、自作なんかするより買ったほうが絶対良いと思いますが)

やりたいこと
「アレクサ風呂つけて」→Node-REDからESP8266にモータを動かすように指令を送る→15分後再度Node-REDからESP8266にモータを動かすように指令を送る

マイコンをWi-Fiに接続するのって難しいイメージでしたがかなり簡単でした。
・Wi-Fiに接続するプログラム
#include <ESP8266WiFi.h>
#define WIFI_SSID "Wi−FiのSSID"
#define WIFI_PWD "パスワード"
WiFi.begin(WIFI_SSID, WIFI_PWD);

・Webサーバーのプログラム
(http;//192.168.○.○/bath/onにアクセスした時に、何かをさせるような場合)
#include <ESP8266WebServer.h>
ESP8266WebServer server(80);
 server.on("/bath/on", [](){
  ”ここに実行したいプログラムを書く”
  });
  server.begin();

モーターの制御はこれでいいの?ってレベルの簡単さでした
ライブラリ内の標準の値で上手く動いているようで
PWM制御に関する設定は何も記述していません。

・13ピンに繋いだサーボモーターを90°にするプログラム
#include <Servo.h> 
Servo furo;
furo.attach(13);
furo.write(90);

・Node-RED
ESPにボタンを押させて15分後に再度ボタンを押させるフロー
イメージ 3

イメージ 4

以前作った監視カメラのサーボモーターを使ってテスト。
無事に動きましたが、問題はどうやってモーターやマイコンを設置するかですね。

モーターが飛び出した見栄えの悪いケースを操作盤の横に貼り付けることになるのが容易に想像できます・・・

この記事に

開く コメント(0)

前回の続きです。
node-red-contrib-amazondashを使ってAmazon Dashボタンを押すと
25回メッセージが流れてくるので、このままだと非常に扱いにくいです。
なんとか1回押したら1回だけメッセージが流れるようにしたいと思い、
メッセージの流量制限などをちょっと試してみましたが上手くいきませんでした。

苦肉の策でこんなのを作ってみました。
イメージ 1

①はDASHボタンノードから信号が来たら、「カウンター」という名前の変数に1を代入するだけの機能です。
(globalというのはグローバル変数という意味で、どのフローからも読み書き出来る共通の変数みたいなものです)
イメージ 2

②のファンクションノードは「もし、カウンターの値が1だったら{}をメッセージで出力し、カウンターの値を0にセットする」という機能です。

Dashボタンが押されてカウンターが1になったのを検出すると、次のフロー(上図ではRM)に信号を送り、カウンターを0にリセットします。

イメージ 3

このファンクションノードはインジェクションノードを使って一定周期で起動します。
Dashボタンノードはメッセージを連続で25個流してくるので、周期が短すぎると、折角カウンターを0にしてもすぐに1にセットされてしまい、ボタンがまた押されたと認識してしまいます。

周期が長すぎるとボタンを押してからの反応が遅くなります。
3、4秒くらいがいいと思います。
イメージ 4

これで一応普通のリモコンとして使えるようになりました。

[{"id":"4728cd.f0090734","type":"ButtonPressed","z":"78d7f0d3.60a99","name":"Dash Button","mac":"","x":290,"y":260,"wires":[["cd947aec.ee3698"]]},{"id":"57974353.2a832c","type":"function","z":"78d7f0d3.60a99","name":"","func":"var data= [38,0,92,3,0,3,239,0,6,138,111,54,15,40,15,13,15,12,15,13,15,13,15,12,15,13,15,13,14,13,15,13,14,13,15,13,15,40,15,12,15,13,15,13,14,13,15,13,15,12,15,13,15,12,15,13,15,13,15,12,15,13,15,12,15,13,15,12,15,13,15,13,15,40,15,12,15,40,16,40,15,40,15,40,15,40,15,40,15,13,15,40,15,40,15,40,15,40,16,40,15,40,15,40,15,40,15,40,15,13,15,12,15,13,15,13,15,12,15,13,15,12,15,13,15,12,15,13,15,40,15,40,15,13,15,13,15,40,15,40,15,40,15,40,15,13,15,12,15,40,16,40,15,12,15,13,15,40,15,40,15,13,15,12,15,13,15,40,15,13,15,40,15,12,15,13,15,40,15,40,15,40,15,13,15,40,15,13,15,40,15,40,15,13,15,12,15,40,15,13,15,12,16,12,15,13,15,12,15,40,15,40,16,12,15,40,15,40,16,40,15,12,15,13,15,40,15,12,16,12,15,40,15,40,15,13,15,40,15,40,15,13,15,40,15,40,15,13,15,12,15,40,16,12,15,13,15,12,15,13,15,12,15,13,15,13,15,12,15,40,15,40,16,39,16,40,15,40,15,40,15,40,15,40,15,13,15,13,15,12,15,13,15,12,15,13,15,12,15,14,14,40,15,40,15,40,16,40,15,40,15,40,15,40,15,40,15,13,15,12,16,12,15,13,15,12,15,13,15,12,15,13,15,40,15,40,15,40,15,40,16,40,15,40,15,40,15,40,15,13,15,12,15,13,15,12,16,12,15,13,15,12,15,13,15,40,15,40,15,40,15,40,15,40,16,40,15,40,15,40,15,13,15,12,15,13,15,13,14,13,15,12,16,12,15,13,15,40,15,40,15,40,15,40,15,40,16,40,15,40,15,40,15,12,16,40,15,40,15,12,15,41,15,12,15,13,15,12,15,40,16,12,15,13,15,40,15,12,15,40,16,40,15,40,15,40,15,13,15,12,15,13,15,40,15,40,15,40,15,40,15,13,15,40,15,40,15,40,15,13,15,12,16,12,15,13,15,12,15,13,15,12,15,13,15,13,15,12,15,13,15,12,15,40,16,40,15,40,15,40,15,40,15,40,15,40,15,40,16,12,15,13,15,12,15,13,15,12,16,12,15,13,15,12,15,40,15,40,16,40,15,40,15,40,15,40,15,40,15,40,16,12,15,13,15,12,15,40,15,13,15,12,16,12,15,40,15,40,15,40,16,40,15,12,15,40,16,40,15,40,15,12,15,40,16,40,15,12,15,13,15,12,15,14,14,13,15,12,15,13,15,12,15,40,15,41,15,40,15,40,15,40,15,40,15,40,15,13,15,13,15,12,15,13,15,12,15,13,15,12,15,13,15,40,15,40,15,40,16,40,15,40,15,40,15,40,15,13,15,12,15,13,15,40,15,13,15,12,15,13,15,40,15,40,15,40,15,40,15,13,15,40,15,40,15,40,15,13,15,13,15,12,15,13,15,12,15,13,15,14,14,12,15,13,15,40,15,40,15,40,15,40,15,40,15,40,16,40,15,40,15,12,16,12,15,13,15,12,15,13,15,12,15,13,15,12,16,40,15,40,15,40,15,40,15,40,15,40,16,40,15,40,15,40,15,40,15,40,15,40,15,40,16,40,15,40,15,40,15,13,15,12,15,13,15,12,15,13,15,12,16,12,15,13,15,40,15,40,15,40,15,40,15,40,15,40,16,40,15,40,15,12,16,12,15,13,15,12,15,13,15,12,15,13,15,12,16,40,15,40,15,40,15,40,15,40,15,40,16,39,16,40,15,12,15,13,15,13,15,12,15,13,15,12,15,13,15,12,15,40,16,40,15,40,15,40,15,40,15,40,15,40,16,40,15,12,15,13,15,12,15,13,15,13,15,12,15,13,15,12,15,0,13,5,15,13,15,12,15,40,16,40,15,40,15,40]\n\nmsg.payload.action = 'send';\nmsg.payload.data = data;\nmsg.payload.repeat = 0;\nreturn msg;","outputs":1,"noerr":0,"x":610,"y":320,"wires":[["dbb1133d.95a17"]]},{"id":"cd947aec.ee3698","type":"function","z":"78d7f0d3.60a99","name":"","func":"global.set(\"counter\",1);","outputs":1,"noerr":0,"x":450,"y":260,"wires":[[]]},{"id":"8cce7619.43e4e8","type":"inject","z":"78d7f0d3.60a99","name":"","topic":"","payload":"{}","payloadType":"json","repeat":"4","crontab":"","once":false,"onceDelay":0.1,"x":310,"y":320,"wires":[["c97ac625.d48248"]]},{"id":"c97ac625.d48248","type":"function","z":"78d7f0d3.60a99","name":"","func":"if(global.get(\"counter\") == 1 ){\n    msg.payload={};\n    global.set(\"counter\",0);\n    return msg;\n}\n","outputs":1,"noerr":0,"x":450,"y":320,"wires":[["57974353.2a832c"]]},{"id":"dbb1133d.95a17","type":"RM","z":"78d7f0d3.60a99","name":"","device":"","action":"_msg_","remote":"","button":"","repeat":0,"fix":1,"RFSweep":"false","x":750,"y":320,"wires":[[]]}]

この記事に

開く コメント(0)

※以下の方法はandroidのTermuxでは動きませんでした。

以前Amazon Dashをリモコン代わりに出来ると聞いたので試してみました。
Dashボタンは沢山のデザインがありますがシンプルなものをチョイスしました。
フック付きなので便利です。 裏には両面テープも貼ってあります。
イメージ 1

・Dashボタンの設定
 Amazonアプリを使ってWi-Fiアクセスポイントを登録します。 
 商品選択ページが出たら未選択のままアプリを終了してください。

・ノード追加
Node-REDでは2種類のノードが公開されていますが、取り敢えず
node-red-contrib-amazondashを使いました。
(もう一つのnode-red-contrib-mydashならandroidで使えるかな?)

そのままインストールしようとするとエラーになるので
先に sudo apt-get install libpcap-dev でpcapをインストールします。
(pcapはネットワーク監視ソフトで、Dashボタンから流れてくるパケットを検出する役目をするみたいです)

インストールが終わったらcontrib-amazondashを入れてください

・ノードの設定
 設定項目はMACアドレスだけです。私はFingというandroidアプリで
 MACアドレスを調べましたが、Dashボタンは節電のため、押した時しかネットワークに繋がらないみたいなので押した直後にデバイスを検索してください
(デバイス名はStreaming Dongle、Amazon、Fire TVで出てきます 下のスクショ参照)

・フロー作成
 とりあえずRM mini等を操作する場合はこんな感じにすれば一応使えます。
 Dashボタンを押すとmsgidというデータが流れてくるだけなので
 前回同様、空のJSONコード{}を送るファンクションノードを間に入れています。
イメージ 2

・問題点
 1.Amazonアプリから毎回通知が来る
   Dashボタンの商品が未選択のままなので、設定を促す通知が来ます。
   (アプリの通知設定で来ないように出来ますが、Dashボタンを普通に使ってる方は不便かも)
イメージ 3


 2.反応が遅い
   ボタンを押してからWi-Fiに接続する仕様上、すぐに反応しません。(5秒くらいかかる)
   
 3.連打出来ない
   商品の設定が終わっていないのでボタンを押した後、赤いLEDが点滅します。(約5秒間)
   この間ボタンを押しても反応しません。
   
 4.1回押すと25回反応する
   設定が終わっていないためか、コードが25個連続で送られてきます。
   このため上記のフローでは赤外線が3回くらい発射されてしまいます。
   
   IF文とかを使ってどうにか工夫する必要がありそうです。
   (Node-REDで変数を使う方法などは今まで載せていなかったので
   その辺も書けたら書こうと思います)


いろいろ問題点も書きましたが、コードレスWi-Fiリモコンが実質無料なんてAmazon様様ですね。
(Dashボタンは500円ですが、Dashボタンを使った初回注文で500円割引されます。)

この記事に

開く コメント(0)

ついにechoが一般発売されましたね。 dotが少し値引きされていたのでplusに続いて2台目を購入しました。
外箱が想像以上に小さくてビックリ 音質もそんなに酷くはありませんね。
イメージ 1

取り敢えずこれで ねんがんのnode-red-contrib- alexa-localが使えるようになりました。
(echo plusではこのノードが上手く動かないみたい)
今まで使っていたalexa-home-skillは外部サーバーに接続が必須のスマートデバイス作成ノードでしたが
alexa-localなら外部接続不要でechoから直接検出可能なスマートデバイスが作成できます。
(Philipsのスマート電球扱いで登録されるので実質ON/OFFくらいの操作しか出来ません。
高度な使い方をしたいならalexa-home-skillを使う必要がありそうです。)



以前、broadlinkのデバイスを操作出来るノードを紹介しましたが、ちょっと補足

下の図で、インジェクションノードがファンクションノードに送っている信号は {   } という
何の情報もない空のjsonコードなのですが、この中身のないjsonコードを送ることが重要なようで
真偽の『True』や数字の『1』を送ってもこのフローは動きません。
イメージ 2
次にこのフローを見てください。 これも何気なく載せたものですが、
実はhttp://IPアドレス/sendにアクセスすると、httpノードはファンクションノードに { } を送っていることが調べると分かります。
イメージ 3

と、いうことで例えばalexa-localを使ってこんなフローを作ってもRM miniは動きません。
(アレクサノードが発信するデータは『on・off』という文字列であり {} ではないからです)
イメージ 4

解決策としてもうひとつファンクションノードを追加してみました。
イメージ 5
イメージ 6
アレクサノードから何か流れて来たら{}を送り出す感じです。
なんかスマートじゃありませんがこれで一応alexa-localが使えるようになりました。

この記事に

開く コメント(0)

折角ラズパイ買ったのでGPIOを使って何かやろうと思い、監視カメラもどきを作ってみました
カメラはラズパイ専用品を使用しています
動画をストリーミングするのは結構大変みたいなので静止画を連続撮影する仕組みです。
イメージ 1

イメージ 2

カメラ台はサーボモーターでパン、チルトが可能です。

ラズパイ単体でも制御出来ますが、PCA9685というモータドライバを使うとNode-REDから簡単にPWM制御が出来るので使用しています。

(LEDを2つ付けていますがカメラの性能が悪いので暗闇では視界が20cmもありません。
 暗い部屋で使うなら赤外線カメラをお勧めします
node-red-contrib-pca9685の設定で、アドレスは十六進数で入力しろと書いてありますが
 実際は十進数で入力しないと認識しません。

操作はブラウザから行います。 こんな画面簡単に作れるの?って思っちゃいますが
node-red-dashboardというのを使うと、ボタンノードやスライドバーノードを
フローに設置するだけで自動的にこのような画面を生成してくれます。
イメージ 3

ブラウザ経由のモータ制御なんてかなり難しそうなイメージでしたが
Node-REDを使うことで短時間であっさり実現出来てしまいました。
暇があったらWi-Fi操作のラジコンみたいなものも作ってみたいと思います。
需要があまり無さそうなのでフローなどは載せませんでしたが
必要であればコメント下さい

この記事に

開く コメント(0)

全5ページ

[1] [2] [3] [4] [5]

[ 次のページ ]


.


みんなの更新記事