Well, there hasn't been much progress in my project because I got stuck a little bit.
I will give you a little introduction into my situation:
Bluetooth Mesh Networking
Mesh networks have the advantage of much wider coverage as each node works as a relay station for messages. So in contrast to traditional networks where each node had to be in sight of the main base station with mesh networks each node only has to be in sight of at least one other node to get the network running. With mesh networks you get more coverage or could access difficult terrain or simply use less transmission power.
Until last year mesh networks for sensor nodes were kind of a proprietary thing. But then the Bluetooth SIG announced mesh networking for Bluetooth Low Energy (BLE) and released a spec in July 2017 (https://www.bluetooth.com/specifications/mesh-specifications ).
The advantage of this approach is that is or should be vendor independant and that it does not require new hardware. It should work with every Bluetooth 4.0 BLE device (if there is a mesh library / driver available).
That's why I decided to give bluetooth mesh networking a try for this project.
Implementations
Because the spec was released only in the second half of last year he first implementations are slowly showing up. So far I have seen implementations from three different chip manufacturers:
- Silicon Labs: https://www.silabs.com/products/development-tools/software/bluetooth-low-energy/ble-mesh
- Nordic Semiconductors: https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.meshsdk.v1.0.0%2Fmd_doc_introduction_basic_co…
- ST: https://www.st.com/en/embedded-software/stsw-bnrg-mesh.html
There are also vendor independant solutions for Linux and Zephyr (IoT-OS for microcontrollers). You can find more information on bluetooth mesh networks and these two implementations in this presentation: http://events17.linuxfoundation.org/sites/events/files/slides/Bluetooth%20Mesh.pdf
ST was the only one within this design challenge so I decided to go with this one and use their library. And that's where the problems started...
STSW-BNRG-Mesh
A few weeks ago ST put out a blog post where they described their system: https://blog.st.com/stsw-bnrg-mesh-bluetooth-mesh/
The software package from ST comes with a ready compiled hex file for the NUCLEO-L152RENUCLEO-L152RE board This board was not part of the design challenges kits but i got one and the software really works with it
But I also want to make it run with the NUCLEO-L073RZNUCLEO-L073RZ board of the design challenge kit So I have to make the software compile on my own computer Since I run only Linux on my computer I want to make it compile with the arm-gcc compiler As IDE I plan to use OpenSTM32
Unfortunatelly the ST software package only supports Keil uVision or IAR embedded workbench and both of them require a licence (but should run with test licence) and both run only with windows (bigger problem).
So I tried to set up my own project with the arm-gcc compiler and OpenSTM32. I helped me a lot to get to know better all the source files because I had to check with every single file if it is still necessary and clear all dependencies. And I really made it compile. But know the linker crashes. The ST mesh library is only a precompiled library files without source code and this one some how doesn't like the arm-gcc compiler. It crashes with a segmentation fault. So I suppose it's something worse.
What's next?
Find the magic switch and make it compile with arm-gcc compiler or resign and install linux.
Or give zephyr a try?
I think I just need some more days experimenting. I will keep you updated.