Evolution of the Linux app
Bluetooth LE enabled miniature robots controlled by players' cell phone and equipped with IR cannons. Real world strategy game on a desk.
Evolution of the Linux app
My micro-robot project fluently evolved into my brand new 2017 HaD prize entry :D I decided to make the programming environment something bigger and more generic than only a control application for a small robot, and make full data flow programming environment for small BLE boards. Of course such generic devices could be then used to make such robot as described in this project. So check it out if you fancy. Thanks!
I made a small progress in my GUI application which is meant to control the robot. But along the way my ideas evolved a little bit, and now I want to experiment with something a little bit more general than only the robot. I thought that, maybe I could make a more generic Arduino-like board which could be controlled via data-flow programming app (and robot would be possible using some shields with motors etc). So for now I am pushing this simple application forward, and I want to implement some proof of concept:
This would be my minimal viable product :D
EDIT : tasks 1 and 2 done:
I started a project (https://github.com/iwasz/data-flow-gui) which aims to make a data flow programming environment which is going to be used with the robot or with some generic BLE board I have in mind. Below is a video of its humble beginnings. For now I consider this as an experiment, but I've got so curious about this dataflow programming thing (https://en.wikipedia.org/wiki/Dataflow_programming), that I made a simple dataflow engine (https://github.com/iwasz/data-flow), made a Fibonacci program in it and now I'm making this GUI. Oh, BTW LabView uses the dataflow paradigm if it rings you a bell.
Basic Linux app is finally working. It is written in C (modified gatttol), and source is available here : http://github.com/iwasz/robot-desktop
I made a mockup presenting my idea about programming the robot (programming by the end user I mean). Below you can see how I imagine a line-follower program. It would be quite challenging to implement on the Android for me though.
Now I have minor (?) problems with ultra cheap Chinese motors which fell off, and are choppy even with intense micro-stepping. Yes, you guessed it : they are low quality :D
On the video you can see the robot itself, and the app which controls it. First I blink one of 4 LEDs mounted on the robot (each controlled separately), and then I drive the robot. Each motor is controlled by a slider, and it is very difficult to go straight with this kind of controls, but easiest to implement.
Tampering with the oscillator. It helped a little. Now my PC sees one or two advertising packets, and then silence. I'll redesign the board slightly, and buy quartz that ST used in their evaluation boards.
After many hours of scratching my head I managed to confirm, that this is indeed the low speed oscillator that is not working. As previously stated, the communication between µC, and the BlueNRG works smoothly, but neither the phone, nor PC sees my tank / robot. So I reworked the tiny BALF-NRG-01D3 which is basically 0603 sized element with 4 BGA balls underneath, but this didn't help (It was OK every time I soldered it). Then I reworked the BlueNRG itself, which is in QFN package. I soldered the bottom pad with solder paste this time (application note stresses this out, but I didn't pay attention the first time). I reworked the low speed crystal, still nothing. And then I removed the crystal and, connected SXTAL0 to 32768Hz sine signal from my generator (1V amplitude, 500mV offset i.e. from 0 to 1V). SXTAL1 is left unconnected. And it worked, and I am super happy about that, because I was able to verify my theory, that this is this stupid LSE. I have numerous options now:
Option 1 is most proper way to go, but due to lack of time, I'll try option 2 for now.
Problems with BlueNRG. On evaluation board everything seems to work, but on the target hardware it does not. SPI communication looks legit, I compared it with working one, but radio seems to be mute. Tried everything! For now I suspect the low frequency oscillator in BlueNRG....