Today was tiresome! There is the pcb design we have to finish for tomorrow and we had to work on our project, it has taken us a huge amount of time and energy!
There are some important news and modification on the project. We felt that the teachers wasn’t really enthusiast about the objectives and the visibility we can make around our project. Therefore we took some time to rethink them.
In the discussion we had we oriented the features on communication between 2 or more rose rolls and we brainstormed on a distance/orientation measuring feature between 2 devices. The main thing we chose was Infra red emitter/receiver disposed all around the board. And we chose to drop out the android development since it’s not the focus of the course. We proposed it to the teachers and then started a long discussion on the technology we can use for that purpose. IRDA was mentionned, ultrasound was banned, we talked about bluetooth link power measurement, that’s a lead we can try. After they threw some ideas: We can make the ball spin really fast in place and use a LED bar to create a miniature version of ROSACE. We tested the spinning speed of sphero and it’s obviously not sufficient. We could make a board wich rotates above the main board.. Or else put a screen. These are some interesting features which will add some flashing and bling to our project.
Then we discussed about what we can do on the existing board inside sphero. Stay focused the following is important!
We might be able to reflash totally a sphero, if we are able to do this it means that our project can be to do an open source firmware!! That would be a first for this device and it would be pretty amazing!
Because sphero uses the same mpu (stm32F103cbt6) as we use in class, we started to search how it boots. I’m going to tell you know what (mainly) the teachers and us discovered:
Sphero doesn’t have a JTAG connector so to flash it they use an uart of the STM32. It is able to do firmware updates with the bluetooth so it means that the uart of the bluetooth is the one that can be used for boot with the alternate boot mode (selected by pins BOOT0 and BOOT1). We know we can use the user hack mode to jump to the bootloader and store a firmware via bluetooth, but it’s dangerous since we might brick the thing.
Our guess is that in factory and dev mode, they disconnect the bluetooth chip (Roving rn42-n), to do so we found that the supply pin of the bluetooth chip is controlled by a transistor. We don’t know which pin controls the transistor yet, to investigate. We are looking for a way to flash the board without burning it so we have to be really sure of how it works. There might be a resistor in the TX signal, we will look for it tomorrow.
If we achieve to disconnect the bluetooth chip we will be able to set the processor in boot mode and flash it with our own code. If we don’t find how to disable it, we will simply unsolder the chip and have our way.
In conclusion, there is a major decision to make based on how it’s possible to reflash the board or not. If yes we might not have to design some board for our project, our just a simple one with new sensors for sphero. But we will make our own firmware that’s a really interesting thing to do and to share!
Continue following us to see whether we will do it or not 😉