cancel
Showing results for 
Search instead for 
Did you mean: 

PSoC 4

PrHa_1943761
New Contributor

Hi,

   

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.

   

Thanks

   

Pramod

0 Likes
1 Solution
Anonymous
Not applicable

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.

View solution in original post

0 Likes
3 Replies
Anonymous
Not applicable

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.

View solution in original post

0 Likes
PrHa_1943761
New Contributor

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.

0 Likes
Anonymous
Not applicable

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 🙂