__前回の記事__の続編です。
前回は、TelloEduドローン(1機)を、Wifiルータ(NEC製Atermルータ)に接続して、次のネットワーク構成を組みました。
今回は、このネットワークに、__2機目のTelloEduドローン__を登場させます。
手順は、__1機目のTelloEduドローンをWifiルータに接続したときと同じ__です。
##実行手順
-1 新しい機体に電源を入れる
-2 MacbookをTELLO-XXXXのAPにつなぐ
iPhoneからTELLO-XXXXのAPにつなぎ、Telloアプリを起動すると、TelloEduのカメラ画像が受信できる
-3. Terminalで以下を実行する
Terminal
electron@diynoMacBook-Pro TelloEduSwarm % python3 telledu_connect_to_wifi_router.py -ssid aterm-xxxxxxxxxx -pw yyyyyyyyyyy
Wifiルータ(SSID): aterm-xxxxxxxxxx
Wifiルータ(パスワード): yyyyyyyyyyy
ap aterm-xxxxxxxxxx yyyyyyyyyyy
electron@diynoMacBook-Pro TelloEduSwarm %
- MacbookのWifi AP一覧から、TELLO=XXXXが消えている
- TELLO-XXXXのAPに接続済みのiPhone内のTelloアプリを見ると、これまで受信できていたTelloEduのカメラ画像が消えている。(アプリは起動中)
- iPhoneのWifi接続先を、(TelloEduが接続中の)Wifiルータに切り替える。iPhone内のFingアプリを見ると、IPアドレス一覧に、新たに'192.168.0.11'が表示されている。
-4. MacbookのWifi接続先を(TelloEduが接続中の)Wifiルータに切り替えて、Pythonスクリプトファイルを実行。
Terminal
electron@diynoMacBook-Pro TelloEduSwarm % python3 telloedu_single_remote_control.py -ip 192.168.0.11
IPアドレス 192.168.0.11 番のTelloEduドローンに操作コマンドを送ります。
('192.168.0.11', 8889)
electron@diynoMacBook-Pro TelloEduSwarm %
TelloEduは離陸し、しばらく待つと着陸した。
##実行したスクリプトファイル
telledu_connect_to_wifi_router.py
import socket, argparse
# WifiルーターのSSIDをコマンドライン引数から受け取る
parser = argparse.ArgumentParser(description='')
parser.add_argument('-ssid')
# Wifiルーターのパスワードをコマンドライン引数から受け取る
parser.add_argument('-pw')
args = parser.parse_args()
wifi_host_ssid = args.ssid
wifi_host_pw = args.pw
message_1 = "Wifiルータ(SSID): " + str(wifi_host_ssid)
message_2 = "Wifiルータ(パスワード): " + str(wifi_host_pw)
print(message_1)
print(message_2)
# TelloEduのプラウベートIPアドレスとポート番号は全機体、同じ定数文字列
tello_ip = '192.168.10.1'
tello_port = 8889
# (Wifi client) Macbook -> (Wifi host) TelloEduに接続
socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
tello_address = (tello_ip , tello_port)
wifi_host_ap = "ap {0} {1}".format(wifi_host_ssid, wifi_host_pw)
print(wifi_host_ap)
socket.sendto('command'.encode('utf-8'),tello_address)
socket.sendto(wifi_host_ap.encode('utf-8'),tello_address)
telloedu_single_remote_control.py
import socket, argparse, time
# WifiルーターのSSIDをコマンドライン引数から受け取る
parser = argparse.ArgumentParser(description='')
parser.add_argument('-ip')
args = parser.parse_args()
tello_ip = args.ip
print("IPアドレス {0} 番のTelloEduドローンに操作コマンドを送ります。".format(tello_ip))
# TelloEduのポート番号は全機体、同じ定数文字列
tello_port = 8889
tello_address = (tello_ip , tello_port)
print(tello_address)
socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket.sendto('command'.encode('utf-8'),tello_address)
time.sleep(10)
socket.sendto('takeoff'.encode('utf-8'),tello_address)
time.sleep(10)
socket.sendto('land'.encode('utf-8'),tello_address)
time.sleep(10)