DevBlog #003 - Things go round!

The last DevBlog is pretty a while ago, but we continued working and now I can write about a lot of changes and even a kind of project presentation!


After we decided to replace Android Things with C++ on Raspbian Stretch Lite, Tim and I (Thomas) finally started coding on the Flight Controller.
We began to read the HC-SR04 Ultrasonic Sensors. It worked a lot better than with Android Things, so we continued and worked on our 10DOF (Degrees of freedom) chip. 
This chip includes an accelerometer, a gyroscope, a barometer with a built in temperature sensor and a magnetometer.
This chip is connected via i2c, so we had to find out the addresses of the sensors and we had to read the 16-Bit values and convert it to useful numbers.
Every sensor (except the magnetometer) works as expected. We'll work on the magnetometer in the next few days.


Michael and Markus worked on the "Flight Planner" tab. The included OSM and the feature to create Flight Plans.
Each Flight Plan can have multiple waypoints, that can be added, modified and deleted on the OSM GUI.
Flight Plans can have a name and a description. Flight Plans that already have been saved can also be modified.


On the 23th November 2018 we presented our OpenDrone project at the so called "Open-Door day" in our school (people, who may want to go to our school visit us and they can inform themselves about our school). We had our own booth to present our project.
We had to prepare something for this event, so we interrupted the work on the sensors and
implemented the feature to trigger the motors of our drone.
Moreover, we created a TCP-Server on the Flight Controller and the App. We created a slider in our app, the slider sends a integer to our drone and the drone triggers the motors with this value.
We installed an oscilloscope between the PWM-Pin and the ESC (Electronic Speed Control) to see the change when the person changes the slider.
Next to our drone we had our 3D-printer. The printer printed some keychains as a gift to our visitors.


We're very motivated to continue working, the next steps are

  • to implement a good communication protocol between app and drone
  • to start coding on balancing our drone
  • to implement the GUI of the "Manual Flight" feature in our app


If you want to have a look at our code, feel free to visit our GitHub-Repository!

DevBlog #002 - Is Android Things the right OS for us?

After our last DevBlog we ordered our initial setup for the drone (Picture, just don't ask about the Rainbow on the jumper cables ...) and started coding! Michael and Markus worked on the app and Tim and I (Thomas) started with Android Things.


On the App side, we started creating the GUI of the App.
In the tab "Drones" you can save the configuration of the drone in so called "Drone Cards". 
We created a small feature for the Drone Cards. With this feature it is possible to take a photo of your drone and save it to the configuration file so you always know which config you have to load if you have more than one drone.
In the Settings of a drone you can give the drone a name, a description, you can set the drone type (quadrocopter, ...), you can calibrate the drone and you can set the Pin-Configuration (if you build the drone with our instruction you don't have to change anything in the Pin-Configuration)
In the tab "Fly" you can choose the Flight Mode (manual, automatic). If you choose automatic you have to choose a mission (flight plan).



On the Andoird Things side, we wanted to get meaningful information from our HC-SR04 Ultrasonic sensors.
After a certain time it worked pretty well, if you were not closer than ~30cm in a GUI-Thread or closer than ~20cm in a non-GUI-Thread. We tried the same sensor on an Arduino Mega 2560 and we were able to get correct information down to ~4cm. This is a lot better. W
hy do we still take a Raspberry PI 3B?
Performance and Multithreading, our drone has to check the sensors and has to stable itself at the same time. It must be possible to get the same values from the Raspberry and Android Things!
It might be possible with C++ on Android Things, but if one Uultrasonic sensor produces that amount of problems in Java, six of them, the motors and other sensors will make huge trouble, too.
It may be possible, if we don't use Android Things and just use Raspbian Stretch Lite with C++. 

We decided to replace Android Things with Linux (Raspbian Stretch Lite). Android Things is not bad at all, but it is not the right OS for OpenDrone.



DevBlog #001 - First Steps

After we decided how we want to create OpenDrone we created a Twitter account (@OpenDroneAT) and an Instagram account (@OpenDroneAT). Twitter will be used for relevant information about our project, beside our DevBlogs, and Instagram will be used for Pictures and Videos of our drone in action (maybe some failures, too). For our Software we made an Android Studio BitBucket-Project to create the App (link) and the AndroidThings-Application (link) for our Raspberry PI 3B. Furthermore, we created this website to present our project (used technologies, pictures, ...)  and to publish the DevBlogs.


On the other side Tim created the first versions of our drone (at least the frame). You can see the frame below. The frame may change a bit in the next months, but with the right hardware on it, the frame is able to fly.

We'll continue assembling the drone with basic stuffs (Raspberry PI, rotors), moreover we're going to start coding on our app and on our Flight Controller!


If you have any suggestions write us an E-Mail to This email address is being protected from spambots. You need JavaScript enabled to view it. or check out our Wiki

We're really looking forward to create a cool Open Source Project!