LoginSignup
3

More than 5 years have passed since last update.

NefryBT(ESP32)でTelloを制御。1回だけ離陸して着陸する

Last updated at Posted at 2018-06-23

奥多摩から記事を書いています。

Tello

DJIとIntelのトイドローン。
最近流行ってたので触ってみました。

出来たもの

NefryBTからTelloに命令を送って離陸させて着陸させます。

コード

そんなに依存コードが無くてシンプル。

TelloとNefryBTはWiFiで接続してUDPでコマンドを送ってる感じです。

tello.ino
#include <WiFiUDP.h>

const char* TELLO_IP = "192.168.10.1";
const int PORT = 8889;

WiFiUDP Udp;
char packetBuffer[255];
String message = "";

void setup() {
  Serial.begin(115200);

  Serial.println("start");
  Udp.begin(PORT);

  sendMessage("command");
  message = listenMessage();
  Serial.println(":command");
  Serial.println(message);
  delay(1000);

  //離陸
  sendMessage("takeoff");
  Serial.println(":takeoff");
  message = listenMessage();
  Serial.println(message);
  delay(5000);

  //着陸
  sendMessage("land");
  Serial.println(":land");
  message = listenMessage();
  Serial.println(message);
}

void loop() {}

//Telloからのレスポンスを確認する関数
String listenMessage() {
  int packetSize = Udp.parsePacket();
  if (packetSize) {
    Serial.print("Received packet of size ");
    Serial.println(packetSize);
    Serial.print("From ");
    IPAddress remoteIp = Udp.remoteIP();
    Serial.print(remoteIp);
    Serial.print(", port ");
    Serial.println(Udp.remotePort());

    // read the packet into packetBufffer
    int len = Udp.read(packetBuffer, 255);
    if (len > 0) {
      packetBuffer[len] = 0;
    }
    Serial.println("Contents:");
    Serial.println(packetBuffer);
  }
  // this only works as tello's API doesn't return responses greater than 255 char
  return (char*) packetBuffer;
}

//UDPでTelloに命令を送る関数
void sendMessage(char* ReplyBuffer) {
  Udp.beginPacket(TELLO_IP, PORT);
  Udp.printf(ReplyBuffer);
  Udp.endPacket();
}

参考

この辺のコードが参考になりました。
* https://github.com/Tzyinc/arduinoTello/blob/master/telloflyer.ino
* https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiUDPClient/WiFiUDPClient.ino

所感

TelloってParrotのローリングスパイダーなどと同じ挙動をするけど関係ないのかな?

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3