現: 2022-10-01 (土) 11:41:15 yuji ![]() Deleted an attach file: microservomotor.png at 2022-10-01 (土) 11:44:32, Deleted an attach file: botswitch.ino at 2025-04-30 (水) 21:19:34, Deleted an attach file: web.png at 2025-04-30 (水) 21:39:14 |
|||
---|---|---|---|
Line 1: | Line 1: | ||
+ | * SwitchBotのボットもどきの作成 [#x5e89055] | ||
+ | 家のアパートのリビングの照明スイッチは古い2個口のスイッチ &worried;~ | ||
+ | これでON/OFFしているのが,これまた古い電球型蛍光灯。~ | ||
+ | IoTということでちょっと便利になるように[[SwitchBotのボット>https://www.switchbot.jp/pages/switchbot-bot]]を使って[[Echo Dot>https://amzn.to/3MvgsW5]]や[[Google Home Mini>https://store.google.com/jp/product/google_nest_mini?hl=ja&pli=1]]を使ってON/OFFさせてみたいと思ったのだが,[[SwitchBotのボットを購入>https://amzn.to/3e0psW9]]する前にとりあえず同様な機能の物を,ありあわせの物で自作してみることにした。~ | ||
+ | |||
+ | ** ボットもどき作成に使用した物 [#u2dabefb] | ||
+ | - [[WeMOS D1>/開発/WeMos D1]]~ | ||
+ | 数年前に500円ぐらいで購入した激安のHiLetGo製[[WeMos D1互換ボード>https://amzn.to/3Rnozo7]]((HiLetGO製のボードは現在は販売されていない。こちらは似たようなボード))があったので使ってみた。~ | ||
+ | このボードには無線LAN機能があるので直接Networkに接続できる。~ | ||
+ | [[WeMOS D1 Mini>https://amzn.to/3UUpHmk]]だともっと小さいボードなので,小型に作成するには良いかも。~ | ||
+ | WeMOS D1 Miniは,[[NodeMCU Development Kit>https://www.nodemcu.com/index_en.html]]と互換の製品のようだ。~ | ||
+ | - Tower Pro SG92R マイクロサーボモーター~ | ||
+ | Amazonで[[Tower Pro製 SG92R ラジコン用の小型サーボモーター>https://amzn.to/3SLp3Wg]]を500円ぐらいで購入した。~ | ||
+ | これを使ってアクチュエーターでスイッチをON/OFF出来るかもしれない。~ | ||
+ | - 12VのACアダプター~ | ||
+ | ころがっていたACアダプター。WeMos D1互換ボード用の電源として使用した。~ | ||
+ | |||
+ | ** ハードウェアの作成 [#u8ada48c] | ||
+ | 以下のように,WeMos D1互換ボードとマイクロサーボモーターSG92Rとを1m程度のワイヤーで接続した。~ | ||
+ | WeMOS D1 SG92R ServoMotor | ||
+ | D6 ---------- 黄色 | ||
+ | +5V ---------- 赤色 | ||
+ | GND ---------- 茶色 | ||
+ | |||
+ | ** 壁のスイッチにマイクロサーボモーターを貼り付ける [#qba0abf6] | ||
+ | &ref(microservomotor.png,,40%); マイクロサーボモーターを壁のスイッチの近くに両面テープで固定した。~ | ||
+ | スイッチは右側を押すとONに左側を押すとOFFになるので,アクチュエーターをだいたい真ん中ぐらいにして貼り付けた。~ | ||
+ | うまく動作するのに,貼り付ける位置が微妙に影響する。少しでもずれるとスイッチを押せない &worried; | ||
+ | |||
+ | WeMos D1互換ボードとACアダプターは床に置いてある。~ | ||
+ | |||
+ | しかし,ださいなぁ ;) | ||
+ | |||
+ | ** ソフトウェアの作成 [#c54545bd] | ||
+ | WeMos D1互換ボードに書き込むプログラムは[[Arduino IDE>/開発/WeMos D1#nff0b1a9]]で作成した。~ | ||
+ | |||
+ | PCとWeMos D1互換ボードをUSBで接続し,直接作成したプログラムを書き込める。~ | ||
+ | |||
+ | *** Arduino IDE用のライブラリのインストール [#yd3fe158] | ||
+ | - WeMOS D1ハードウェアパッケージ~ | ||
+ | [[WeMOS D1ハードウェアパッケージをArduino IDEにインストールする>/開発/WeMos D1#l51e57d4]]。~ | ||
+ | - [[FauxmoESP>https://github.com/vintlabs/fauxmoESP/]]ライブラリ~ | ||
+ | [[ESP8266>https://ja.wikipedia.org/wiki/ESP8266]]や[[ESP32>https://ja.wikipedia.org/wiki/ESP32]]のボードで[[Philips Hue ライト>https://www.philips-hue.com/ja-jp/]]をローカルデバイスとしてエミュレートして,Alexaデバイスと連携出来るようにするライブラリ。~ | ||
+ | [[ここ>https://github.com/vintlabs/fauxmoESP/archive/refs/heads/master.zip]]からzipファイルをダウンロードして,Arduino IDEでzipファイルからインストールした。~ | ||
+ | Arduino IDEのライブラリマネージャーでfauxmoESPを指定してもインストールできる。~ | ||
+ | - [[ESPAsyncTCP>https://github.com/me-no-dev/ESPAsyncTCP/]]ライブラリ~ | ||
+ | ESP8266でFauxmoESPライブラリを使う場合は,このESPAsyncTCPライブラリが必要。~ | ||
+ | [[ここ>https://github.com/me-no-dev/ESPAsyncTCP/archive/refs/heads/master.zip]]からzipファイルをダウンロードして,Arduino IDEでzipファイルからインストールした。~ | ||
+ | ESP32を使用したボードを使う場合は,[[ここ>https://github.com/me-no-dev/AsyncTCP/archive/master.zip]]から[[AsyncTCP>https://github.com/me-no-dev/AsyncTCP/]]ライブラリのzipファイルをダウンロードして,Arduino IDEでzipファイルからインストールする。~ | ||
+ | |||
+ | 第3世代Echo DotのようなAlexaデバイスと連携する場合は,WEBポートに80番を使用する必要がある。~ | ||
+ | またESP8266の場合,Arduino IDEの設定でLwIPを"1.4 Higher Bandwidth"に設定した。~ | ||
+ | |||
+ | *** プログラム [#fd72b460] | ||
+ | 以下のプログラムを作成した。~ | ||
+ | |||
+ | 標準ライブラリのServoライブラリを使ってサーボモーターを動かしている。~ | ||
+ | write(angle) でangleに角度を指定するとその角度に動く。~ | ||
+ | |||
+ | Alexaデバイスから使えるように[[FauxmoESP>https://github.com/vintlabs/fauxmoESP/]]ライブラリを使用している :) ~ | ||
+ | |||
+ | #code(c,nonumber,botswitch.ino) | ||
+ | |||
+ | #code(c,nonumber,credentials.h) | ||
+ | |||
+ | Arduino IDEからWeMOS D1ボードにコンパイルして書き込んだ。~ | ||
+ | |||
+ | ** 動作テスト [#j910bc1d] | ||
+ | PCからWEBブラウザでhttp://<ip address>:8080/cmdにアクセスして,OnやOffをクリックするとスイッチが動いた :) | ||
+ | #ref(web.png,,30%) | ||
+ | また,WgetなどでWEB APIにコマンドを送ってみても動作した。~ | ||
+ | :スイッチをOn | | ||
+ | wget http://xxx.xxx.xxx.xxx:8080/cmd?POS=on | ||
+ | :スイッチをOff| | ||
+ | wget http://xxx.xxx.xxx.xxx:8080/cmd?POS=off | ||
+ | |||
+ | * Echo Dotとの連携 [#wd3cda64] | ||
+ | Android端末のAlexaアプリを起動して,以下のようにしてデバイスを追加した。~ | ||
+ | - デバイスをクリック~ | ||
+ | - 右上の+ボタンをクリック~ | ||
+ | - デバイスを追加をクルック~ | ||
+ | - その他をクリック~ | ||
+ | - デバイスを検出をクリック~ | ||
+ | |||
+ | しばらくすると作成した''スイッチ''という名前のデバイス(電球タイプ)が検出された。~ | ||
+ | |||
+ | それにしてもAlexaデバイスはローカルデバイスを直接アクセスできるのが素晴らしいなぁ :) | ||
+ | |||
+ | ** Echo Dotで操作してみる [#faf06fc9] | ||
+ | 「アレクサ,スイッチオン」と言うと,マイクロサーボモーターが少し回って壁のスイッチをONした。~ | ||
+ | 「アレクサ,スイッチオフ」と言うと,マイクロサーボモーターが少し逆に回って壁のスイッチをOFFした。~ | ||
+ | |||
+ | スイッチじゃ味気ないんで,「電気つけて/消して」とか「ライトつけて/消して」とかの定形アクションを作成した。~ | ||
+ | |||
+ | これで,[[SwitchBotのボット>https://www.switchbot.jp/pages/switchbot-bot]]のような事が出来るようになった。~ | ||
+ | |||
+ | 確かに声で操作するのは便利だ。 | ||
+ | |||
+ | * 課題 [#qa78f6c0] | ||
+ | - 2個のスイッチに対応する~ | ||
+ | マイクロサーボモーターを2個使えばいいのだが,1個でなんとかならないかな。~ | ||
+ | - 固定方法がなんとかならないか~ | ||
+ | 両面テープでマイクロサーボモーターを貼り付けているだけなんで,うまくスイッチが押せなくなってしまうことがある。~ | ||
+ | SwitchBotのボットみたいにケースに入れたい。~ | ||
+ | - 電池駆動にする | ||
+ | - Google Home Miniで使えるようにする~ | ||
+ | WEBからON/OFF出来るAPIを用意して,IFTTT(Google Assistant)を使ってWEB APIをアクセスすればいいのかも。~ | ||
+ | 09/01/2022からGoogle AssistantとIFTTTの連携の仕様が変更になり,数値や文字等のパラメーターをIFTTTに渡せなくなってしまった ;( リモコン等の用途にIFTTTは役立たずになってしまった。 | ||
+ | - [[SwitchBot ボットを購入>https://amzn.to/3VfQlZp]]する~ | ||
+ | やれることは同じなんで,どうしようかな。 |