Index ¦ Archives  ¦ Atom  ¦ RSS

Bionic Bird Android app

I got my Bionic Bird in the mail recently, and I really wanted to start flying it. However, I only have Android devices, nothing that runs iOS, so the official channels were blocked.

tl:dr; I made a quick app using the Evothings client app. (Click the first link on a mobile phone, or follow instructions in the readme on github)

stopped

The app uses Evothings to do all the Android stuff. I haven't gotten around to installing all the stuff I need to package it into its own native app, but if there's any interest I can do that.

Firstly, using the nRF Master Control Panel app, I inspected the BLE services, characteristics, and descriptors available. I found out, at least on my bird, the last service had a custom UUID containing 0xacc0, and that it had 4 characteristics 0xaac1 through 0xaac4. The first one was named Thrrster (sic), then Steering, Z, and finally "Characteristic 5". This is obviously the work of some interesting firmware programmers, so keep that in mind as we venture forth.

Next let's knock out some useless stuff. Bionic Bird is said to have Z control in a future hardware version, and looking at mine I have to physically adjust the tail (Z control), so that's out. And "Characteristic 5", despite being there, does absolutely nothing. I wrote various numbers and other data to both of these and the bird did nothing, so I'm going to ignore them for now.

Coming along to Thrrster and Steering, this is presumably thrust (wing-flapping) and steering (a small left-right control on the tail). However, it seems writing data to Steering doesn't do anything either. But when I write data into Thrrster, sometimes the steering changes. Odd, but here's what I found out.

steering

Thrrster is actually a 2 byte value, the first is the steering value (0 to 100, not 255) and the second is thrust (0 to 255). Steering is completely invalid to write to, and to read from. Ignore it.

So actually, it turns out there's only 1 characteristic to read/write, and it's the worst named. Sure, "Characteristic 5" is a poor name as well, but at least it's spelled correctly and obviously invalid.

Lastly, that just left building an app to use on my phone. Evothings is great! It made what should have been a week-long project into a 4 hour hobby. I can now (badly) control by bird inside my apartment. It's spiraling hard to the left due to some damage (it may have run into, well, everything in my living room), but if I fix it I'll take it to the local park tomorrow.

Enjoy!

© Fahrzin Hemmati. Built using Pelican. Theme by Giulio Fidente on github.