Hiromuブログ

最近はこちら(https://zenn.dev/hiromu)が本体

Excelでドローンを飛ばす

前回記事 www.hiromukato.com

今回はExcelでドローンを飛ばす方法です。

そもそも飛ばせるかどうかもわからなかったのですが、TELLOについてはUDP通信ができればどのような環境からでも操作することができます。 なのでまずはExcelでUDP通信ができるかどうかを調べました。いくつかのサイトを調べましたが最終的に参考にしたサイトは以下。

kazu-s-diary-2.cocolog-nifty.com

このサイトのクライアントのサンプルをを参考にしました(TELLO実機がサーバとなるため)。
差分だけを以下に記載します。
(UDPSendプロシージャを変更し、その他のプロシージャを追加しました。追加したプロシージャはボタン押下と紐づいています)

Sub UDPSend(ByVal command As String)

  '  SocketsCleanup
     If (Not SocketsInitialize()) Then
         MsgBox "Error initializing WinSock"
         Return
     End If

     SendSocketHandle = w_socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)

     Dim ip As String: ip = "192.168.10.1"
     Dim remotePort As Long: remotePort = 8889
     
    remoteAddr.sin_family = AF_INET
    remoteAddr.sin_addr = inet_addr(ip)
    remoteAddr.sin_port = UnsignedLongToInteger(htons(remotePort))
     
    Dim strbuffer As String: strbuffer = "test"
    If command <> "" Then
         Debug.Print w_sendTo(SendSocketHandle, ByVal command, Len(command), 0, remoteAddr, SOCKADDR_IN_SIZE)
    End If
    
    SocketsCleanup
End Sub

' 離陸
Sub TakeOff()
Debug.Print "Take off"
UDPSend ("command")
UDPSend ("takeoff")
End Sub

' 着陸
Sub Landing()
Debug.Print "Landing"
UDPSend ("land")
End Sub

' 回転
Sub Rotate()
Debug.Print "Rotate"
UDPSend ("flip r")
End Sub

エクセルでのマクロ実装についてはこちらのサイトがとても丁寧に説明されており参考になりました。

tonari-it.com

ボタンの配置についてはこちらを参照しました。

brain.cc.kogakuin.ac.jp