3 Replies Latest reply on Apr 24, 2017 1:43 PM by epr_1639216

    BLE multihop network implementation




      I am working on an application(Street lighting) wherein we want to cover a lot of distance using BLE(few hundreds of meter). So we are using the long range BLE(CYBLE224110). But here one to one communication wont work due to distance. Hence I am trying to implement multihop implementation where a packet is sent from module 1 to module 2, module 2 to module 3, module 3 to module 4 and when the packet has finally reached the module 4, the response is send back from module 4 - 3 - 2 - 1. Here latency is not much of an issue but would still like to optimize to best possible solution.


      So what I have done is, use the custom profile project which behaves as both central and peripheral. Each module will switch between central and peripheral on timely manner. Whenever module 1 has a packet, it will connect to module 2 as a master. Here the connection is done based on the BD address check. After the connection, packet is sent in the form write characteristics. Then when module 1 receives a GATTC_WRITE_RESP, I disconnect and do this same process with module 2 and module 3. This way packet is propagated till module 4. And for response, the same process is repeated and response packet is sent back to module 1. The response is received here, but after some delay.


      So my question is, is there a way to optimize this solution and reduce the latency? Also if there are some working mesh network example on the PSoC 4200 BLE part projects which builds with the latest creator, that would help.





        • 1. Re: BLE multihop network implementation

          If the data is not "sensitive" that you are transmitting, you can always just flat advertise the data itself, and then all of the units can be set to advertise as a peripheral without the overhead of connection establishment and dissolution. Otherwise, if you are required to use connections for the data transmission, then you could try changing: System Clock Frequency, Connection Parameters, and handling the BLE callback stack events as quickly as possible.

          • 2. Re: BLE multihop network implementation

            Thanks for your response.


            Using the advertising channel is a possibility. But I think the advertising data cannot be acknowledged. So the implementation would be sending advertising data once from each module and sending the response back. Here response will act as the only acknowledgement. Also there are only 3 channel for transmission of advertising packet. So chance of failure is high. Anyhow, I will give it a try and see how it goes. Otherwise adjusting the connection parameters seems to be only feasible option.

            • 3. Re: BLE multihop network implementation

              You can dynamically change advertising data, and hence you can implement a form of responding, but I agree that it would be less reliable overall. The pairing process also seemed to take some time as well, so removing security will probably increase speed, but that's up to your application requirements.


              Increasing the clock speed on the micro should also help, as it will spend more time waiting for data transmission, and less time processing data (With use of sleep and deep sleep modes, this shouldn't hurt power noticeably)


              Good luck :)

              1 of 1 people found this helpful