3
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

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

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

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のローリングスパイダーなどと同じ挙動をするけど関係ないのかな?

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?