0

MoG Weekend Project: Android Missile Launcher App

It has been a while since the last MoG Weekend Project, but I think this project is more exciting than the previous project. It is an Android Missile Launcher app.

usb-missile-launcher

A few months ago I received a USB Missile Launcher as a gift. For those that are not familiar with the toy, you can aim and shoot the missiles using a little program on your computer. Although, this is already fun to do (especially in the office and at LAN parties), I still had the feeling the product could be improved.

So, I decided to develop an Android app that lets you control the missile launcher from a distance. This required two applications: a server running on the PC the launcher is connected to and a client Android app that would send the commands to the server.

For the server, I found some custom Linux drivers for USB Missile Launcher, but those did not seem to work for my Missile Launcher (Winbonds Electronics with device ID 0416:9391). I already started debugging the USB commands send to the device myself, when I stumbled upon this fork by Zakaria ElQotbi of the pymissile software. This Python program contained all the USB commands for my missile launcher, a command-line interface and even contained a UDP server. After, I improved the server a bit, it was time to start with the Android.

Missile Launcher App

The Android Missile Launcher app

I did not have much experience with the Android SDK before I started this project, luckily the app is not too difficult. It is sends some commands over UDP and has a simple user interface. The movement of the missile launcher can be controlled with the arrows. The movement starts when one of the arrows in pressed and stops as soon as it is released. The missiles can be launched using the launch button. It will keep launching all the missiles until the stop button (the blue dot between the arrows) is pressed. Check the video below for a demonstration:

Android Missile Launcher app

There are still a couple of things I plan to improve. First, I want to implement a on-screen joystick, so you are able to make “diagonal” movements. Second, pymissile lacks some safety measures, it is possible to turn the missile launcher further than it should and jam it. I want to put those back in.

If you also have the Winbonds Electronics USB Missile Launcher (sold as Satzuma UML100 or Nipco UML100) and want to give it a try, the APK is available here (source@github) and the server (with instructions) is available here.