1. Programmable mini-robots with BLE. Each would have color sensors (for line following on non uniform surfaces), RGB led, IR cannon and IR sensors for detecting a hit and piezo speaker.
2. Real time control (like on videos below). You simply drive and shoot to your opponents (1 robot controlled by 1 cell phone).
3. Programmable via BLE from PC and/or cell phone. Program ideas : line follow, on-color actions (cannon power ups etc), variants of real-time gameplay,
Robots would be modular:
1. Main board with brainz, BLE, LiPo charger.
2. Chassis with motors and photo elements (RGB) for line-following.
3. Body with IR receivers and IR diode (+ aiming diode), and some other diodes for blinking.
Modules would be interchangeable, so you could assembly a robot with 2 or 4 wheels, with bigger or smaller cannon etc.
Kit : I want to involve people into soldering, so before starting first game, you would have to solder modules together. Ideas are welcome.
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:
Add data-flow engine to the program, because for now those are only graphic representations which do nothing.
Implement some simple data-flow program like Fibonacci (which is impressive to see in data-flow, because it can be done with 3 nodes and a few arcs) and make it run on PC.
Implement the data-flow engine on the microcontroller (I mean on the hardware I made so far for this project), and turn some GPIOS on and off. You would have an on-off switch on the PC, then you would connect it to the GPIO node, and via BLE you would control the GPIO.
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:
Redesign the PCB according to all the application notes which I threw away earlier.
Try with another low speed crystals.
Reprogram the BlueNRG so it run on internal ring oscillator (I bricked one chip so far, more to come).
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....