Alexa、このランプをオンにする:AmazonEcho用のスマート3Dセンサー
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 |
このプロジェクトについて
はじめに
Alexaまたはスマートスピーカーを所有していて、スマートホームと統合されている場合は、制御するデバイスの名前を覚えておく必要があるというこの問題が発生しています。私はスマートホームデバイスをたくさん持っていますが、それぞれの名前を覚えるのは難しい場合があります。
時々私は言うでしょう:
3つのことが起こります:
- Alexaを混乱させ、別のスマートデバイスをオンにすることになりました。
- Alexaでのののしり(私が話していることはご存知でしょう、認めてください)
- または、あきらめて、イライラして、彼女にこう言います。「Alexaを忘れて、自分でやります」...しぶしぶスイッチに向かって歩きます。
私の子供たちは通常、「アレクサ、すべてのライトをオンにして」というコマンドを楽しんでいます。そしてもちろん、家全体がクリスマスツリーのようにライトアップされます。誰かが深夜にそれをするのは楽しいことではありません!
方法
アレクサ、このランプをオンにしてください。
<図>Alexaにデバイスの近くにいる場所を検出してもらいます。そして、それは私が話していることを知っています...これは素晴らしいアイデアではないでしょうか?
考えられる解決策の1つは、カメラを私の部屋に取り付けて、動きなどを監視することです。しかし、それはあまりにも気味が悪いでしょう。家の中にカメラを置いて画像認識をしたくない。
そこでWalabotが登場します:
ワラボット
ワラボットとは何ですか?
Walabotは、DIYエレクトロニクスプロジェクトに最適なプログラム可能な3Dセンサーです。 Walabotは新しい種類の3D画像センサーです。それは無線周波数(RFID)を使用し、あなたの周りの世界に隠されているあらゆる種類のものを明らかにします。ハンドヘルドでプログラム可能で、SDK(ソフトウェア開発キット)にさまざまなイメージング機能が含まれており、APIを使用して独自のカスタムアプリケーションを構築できます。
RFIDを使用して動きを追跡できます。
<図>
LattePanda
LattePandaは、Windows10を実行できるクアッドコアIntelAtomx8300「Cherrytrail」プロセッサを搭載したx86 / x64 SBCです。これには、Bluetooth4.0および802.11n WiFi、1 x USB 3.0、2 xUSBが統合された2GBまたは4GBのRAMが含まれます。 2.0、HDMI出力、統合されたATMega32u4コプロセッサー(Arduino Leonardoにあるような)とGPIOが付属し、すべて1つの手のひらサイズのボードに搭載されています!
<図>この設定により、LattePandaは多くのシナリオに理想的です。このチュートリアルでは、LattePandaの統合マイクロコントローラーの利点に焦点を当てます。このマイクロコントローラーをIntelAtomプロセッサーと組み合わせて使用すると、walabotとarduinoを一緒に接続できます。
<図>
ノード-赤
Node-Redは、TCPメッセージのサブスクライブ、Alexaリクエストのリッスン、データベースの読み取りと書き込み、MQTTブローカーへの公開、HTTPリクエストへの応答など、さまざまなIoTデバイスを処理する独自のロジックをすばやく簡単に構築できるブラウザベースのツールです。 。また、JavaScriptで記述された特定の関数を定義して複雑なロジック操作を提供すると同時に、視覚的で使いやすいドラッグアンドドロップユーザーインターフェイスを使用して、さまざまなコンポーネントやロジックをリンクすることもできます。
Node-Redは、Node.js上に構築された非常に軽量な実行時間であり、イベント駆動型の非ブロッキング操作モデルを最大限に活用しています。
WalabotデータをNode-Redにプラグインさせることができれば、特にホームオートメーションでできる多くのことが可能になります。 AlexaとArduinoを接続するために使用したパッケージはいくつかあります:
- node-red-contrib-alexa-local:NodeREDフローにAlexa機能を追加するための非常にシンプルなノード。
- node-red-node-arduino:Arduinoと通信するNode-REDノード
ここに、firmataのセットアップに使用できるいくつかのドキュメントがあります:https://nodered.org/docs/hardware/arduino.html
仕組み <図>
ハードウェア
- ラテパンダ
- LattePanda用の7インチ1024x600IPSディスプレイ
- USBワイヤレスキーボードとマウス
- ワラボット
- USB電源ハブ
- リレー
- ランプ
インストール
ステップ1.Walabot SDK
SDKをダウンロードしてインストールします:https://walabot.com/getting-started
ステップ2.WalabotでArduinoをセットアップする
http://docs.lattepanda.com/content/hardware/accessPinoutsFromVS/
1.オペレーティングシステムで開発者モードを有効にします
<図><図>
<図>
ステップ3.Arduinoをセットアップする
1。 Arduinoを開きます。そして、「StandardFirmata」を選択します
<図>2。 「ArduinoLeonardo」を選択
<図>3。 COMポートを選択します
<図>4。スケッチをアップロードする
<図>5。アップロード完了!
<図>リレーをLattePandaに接続します。
<図>ステップ4 。 NodeJSとNode-Redをインストールしてダウンロードする
NodeJSとnode-redに慣れていない場合は、次のリンクを参照してください。
- https://nodejs.org/en/
- http://docs.lattepanda.com/content/projects/NodeRED/
- https://nodered.org/docs/getting-started/installation
ステップ5。 Python3をダウンロードしてインストールします
<図>ステップ6 。プロジェクトのリポジトリは次のとおりです:https://github.com/rondagdag/smart3DSensorForAlexa
zipファイルをダウンロードして解凍します:
> npm install> npm start
ステップ7 。同じWi-Fiを使用していて、Alexaアプリでスマートホームスキルが有効になっていることを確認してください。説明:「アレクサ、デバイスを見つけて」。 Alexaはランプを見つけるでしょう。 Node-Redフローを確認して変更する場合:http:// localhost:8080 / red /
これで、LattePandaのArduinoピンの別のピンに接続できます。または、MQTTまたは他のNode-Redモジュールと接続します。
全体の流れは次のようになります...
3つのステップ:
- ワラボットサービスの処理 :walabotセンサーからデータを読み取り、tcpポート1890にデータをストリーミングするPythonプログラム
- Walabotオブジェクトデータを取得して保存する :ポート1890を介してwalabotサービスからデータを読み取り、最後に検出された既知のオブジェクトの場所を保存します
- Alexaコマンドを処理する :コマンドがAlexaから受信されたときに実行され、最後の既知の場所に基づいて、リレーに接続されているスイッチを切り替えるArduinoピンを決定します。
- ワラボットサービスの処理
<図>
これがWalabotPythonコードです。 Walabotからデータを読み取り、TCP経由でJSON文字列をストリーミングします。
from __future__ import print_functionfrom sys import platformfrom os import systemfrom imp import load_sourceWalabotAPI =load_source( 'WalabotAPI'、 'C:\\ Program Files \\ Walabot \\ WalabotSDK \\ python \\ WalabotAPI.py')import socket、sysif __name__ =='__ main __':WalabotAPI.Init()#WalabotSDKをPythonラッパーにロードしますWalabotAPI.SetSettingsFolder()#エッセンシャルデータベースファイルへのパスを設定しますWalabotAPI.ConnectAny()#WalabotWalabotAPIとの通信を確立します。 SetProfile(WalabotAPI.PROF_SENSOR)#スキャンプロファイルを可能性から除外しますWalabotAPI.SetThreshold(35)WalabotAPI.SetArenaR(50,400,4)WalabotAPI.SetArenaPhi(-45,45,2)WalabotAPI.SetArenaTheta(-20,20,10) WalabotAPI.SetDynamicImageFilter(WalabotAPI.FILTER_TYPE_MTI)#WalabotAPI.Start()を使用するフィルターを指定#スキャンシステムの準備のためにWalabotを起動します( 'cls' if platform =='win32' else'clear ')#端末をクリアしますnumOfTargetsToDisplay =1 if len(sys.argv )==2:TCP_IP ='127.0.0.1' TCP_PORT =int(sys.argv [1])s =socket.socket(socket.AF_INET、socket.SOCK_STREAM)s.bind((TCP_IP、TCP_PORT))s.listen (1)conn、addr =s.accept()while True:WalabotAPI.Trigger()#スキャンを開始して信号を記録しますtargets =WalabotAPI.GetSensorTargets()#識別されたターゲットのリストを提供しますfinds ='{"targets":[ 'index =0 for i、t in enumerate(targets):if i
- Walabotオブジェクトデータを取得して保存する
これはポート1890からデータを受け取り、jsonデータを解析してそれに応じてグローバル変数を設定します。
<図>json配列に変換するコードは次のとおりです
raw =msg.payload.toString( 'UTF-8')j =JSON.parse(raw); var msg1 ={ペイロード:生}; var msg2 ={ペイロード:j}; if(raw.length> 20){X =msg2.payload.targets [0] .x; Y =msg2.payload.targets [0] .y; Z =msg2.payload.targets [0] .z; global.set( "X"、X); global.set( "Y"、Y); global.set( "Z"、Z); var msg3 ={ペイロード:X}; var msg4 ={ペイロード:Y}; var msg5 ={ペイロード:Z}; } return [msg1、msg2、msg3、msg4、msg5];
- Alexaコマンドを処理する
Alexaコマンドを処理するために、を使用しています node-red-contrib-alexa-local。次に、このロジックで、人の最後の既知の位置に基づいてコマンドをルーティングするものを検出します。
<図>このプロジェクトでAmazonEcho、Walabot、LattePanda、Node-Red、Pythonについてもっと知りたいと思った場合、または素晴らしい1日を過ごしている場合は、[プロジェクトを尊重する]ボタンをクリックしてフォローしてください。これがプロジェクトの構築に役立った場合は、メッセージを残してフィードバックをお寄せください。このプロジェクトがどのように役立ったか聞きたいです。
このプロジェクトで使用されている実際のカスタムAlexaスキルはないことに注意してください。このスキルは、組み込みのAmazon Echoスマートホーム機能を使用しており、すぐにPhillipsHue電球を制御します。 Node-Redのnode-red-contrib-alexa-localノードは、Alexaで制御したいカスタムの「バルブ」をスプーフィングするだけです!
コード
Alexa用のスマート3Dセンサー
https://github.com/rondagdag/smart3DSensorForAlexa製造プロセス