Tello EDUをNode-REDから station mode にして操作するメモ

この記事は、IoTLT GWアドベントカレンダー 5/1の記事です。

Tello EDUをNode-REDから station mode にして操作するメモです。

Tello EDUの station mode とは

image

station mode モードは、モバイルルーターや家のネットワークにTello EDUのWi-Fiから接続され、接続されたIPさえわかれば、同じネットワーク内から操作可能になります。

ドキュメントからはこちらで説明されています。

Tello SDK 2.0 User Guide.pdf

image

Node-REDから station mode にする

仕組みとしては、こちらの記事を参考にさせていただきました。

DJI の教育用トイドローン TELLO EDU で編隊飛行に挑戦(1) | タロスカイ公式ブログ

ですが、ここを視覚的にわかりやすいNode-REDで組んでみます。

まず、Tello EDUのWi-Fiにつなげる

Tello EDUは標準では無印Telloと同様に、自分自身がアクセスポイントになって、操作ができるようになっています。

image

まず、Tello EDU起動すると、Wi-Fiリストから登場するので、接続します。

なお、station mode にしてから、自分自身がアクセスポイントになる状況にリセットする場合は、電源を長押しすればいいです。

Tello SDK 2.0 User Guide.pdf

image

ドキュメントにも書いてありあります。

リセットのときの雰囲気です。

station mode 化する

いよいよ、station mode 化します。

image

Node-REDのフローがこちらです。

[{"id":"1a7b476.ee017b9","type":"udp out","z":"582469bb.4209e8","name":"","addr":"192.168.10.1","iface":"","port":"8889","ipv":"udp4","outport":"","base64":false,"multicast":"false","x":1130,"y":440,"wires":[]},{"id":"9532360f.6161b8","type":"inject","z":"582469bb.4209e8","name":"","topic":"","payload":"command","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":"","x":900,"y":420,"wires":[["1a7b476.ee017b9"]]},{"id":"da15569d.2727b8","type":"inject","z":"582469bb.4209e8","name":"ap ssid password","topic":"","payload":"ap <ssid> <password>","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":"","x":880,"y":480,"wires":[["1a7b476.ee017b9"]]},{"id":"de233722.2abce8","type":"comment","z":"582469bb.4209e8","name":"Setting Wi-Fi SSID and password for Access Point Mode","info":"","x":970,"y":360,"wires":[]}]

インポートできるNode-REDのフローです。

image

こちらをインポートして、以下の inject ノードを書き換えます。

image

<ssid>

<password>

を自分の接続したいアクセスポイントに書き換えましょう。

デプロイしたら、 inject ノードを動かして設定します。

  • command の inject ノードを押して、操作可能にする
  • 緑ランプが点滅することを確認して接続確認
  • 設定済みの ap ssid password の inject ノードで station mode 設定
  • 設定が成功すると3秒後に再起動がかかる

設定できた様子です。

IPを確認する

ローカルネットワーク上でTello EDUのIPを探す必要があります。Androidの場合、Fingという同一Wi-Fiネットワークをリストアップできるツールがあります。ほかにも、IPスキャンをかけるなど、とにかくIPを判明させます。

操作してみる

フローは

Node-REDとトイドローンTelloを連携するメモ

のときのものをベースに使います。

image

インポートできるフローはこちらです。

[{"id":"dae49cf9.cef52","type":"udp in","z":"582469bb.4209e8","name":"","iface":"","port":"8889","ipv":"udp4","multicast":"false","group":"","datatype":"utf8","x":360,"y":920,"wires":[["8abde9e7.b30f18"]]},{"id":"8abde9e7.b30f18","type":"debug","z":"582469bb.4209e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":590,"y":920,"wires":[]},{"id":"2522336c.0051fc","type":"udp out","z":"582469bb.4209e8","name":"","addr":"192.168.XX.YY","iface":"","port":"8889","ipv":"udp4","outport":"","base64":false,"multicast":"false","x":630,"y":800,"wires":[]},{"id":"4f68ccf8.779064","type":"comment","z":"582469bb.4209e8","name":"Controlling takeoff and land command as AP Mode","info":"","x":470,"y":720,"wires":[]},{"id":"5f6040cf.e5332","type":"inject","z":"582469bb.4209e8","name":"","topic":"","payload":"takeoff","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":"","x":370,"y":820,"wires":[["2522336c.0051fc"]]},{"id":"20d81f8e.f69c7","type":"inject","z":"582469bb.4209e8","name":"","topic":"","payload":"land","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":"","x":370,"y":860,"wires":[["2522336c.0051fc"]]},{"id":"98d635cf.43d478","type":"inject","z":"582469bb.4209e8","name":"","topic":"","payload":"command","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":"","x":366,"y":771,"wires":[["2522336c.0051fc"]]}]

image

こちらの接続先の udp out ノードを、先ほど判明させたIPに向けるようにします。

image

192.168.XX.YY となっているところを、判明したIPに設定して、デプロイします。

動かしてみる

これで、設定は完了です。

  • command の inject ノードを押して、操作可能にする
  • 緑ランプが点滅することを確認して接続確認
  • takeoffを押して離陸させる
  • land を押して着陸させる

ということをやってみます!

うまくいきました!

image

これが出来ると、無印Telloでは1対1のUDPで、IoTなり他の通信を絡ませるのに一工夫を必要だったものが、構造としてシンプルになり、同じネットワーク上であれば操作可能になり、外部ともつながるネットワークであれば、IoTの情報を取り込んで操作がやすくなります。

今後も用途が広がりそうですね。それでは、よき Tello EDU & Node-RED & IoT Life を!