This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

NRF52832 mesh problem

Hello everyone,

I am developing a temperature and gas sensor for indoor environment monitoring. Due to the limitation of the bluetooth transmission range, I hope to add a "repeater" inbetween the sensor and my mobile phone to extent the connection range.

So the case is like this...

I connect my phone with the sensor, reading all the data when i am in range. When I move further apart that exceed the connection range, the sensor will automatically switch to send data to the "repeater" and the "repeater" will be connected and send the data to my phone.. so that i can still receive real time data.

May I know such logic would be solved by using mesh? and may someone explain how to do it?

Many thanks!!!! 

  • Hi Alan,

    There are different approaches you can take to implement a solution like this depending on how many relay nodes you need and the current consumption requirements of your application.

    One way to solve this problem if we are talking about a limited amount of relay nodes, is setting up BLE relay devices between you phone and your sensor, take a look at the relay example we have here.

    If you are talking about a network with multiple sensors and relay nodes (i.e. inside a building) mesh is certainly the way to go. Any mesh device may be configured to act as a relay node and to automatically retransmit messages. The downside with using mesh is the that the current consumption of the relay nodes will be high, since the devices must continuously keep their radio in listening mode, so this is something to consider.

    If you want to learn more about how mesh works you can take a look at the following blog posts about mesh:

    To start developing for mesh you can download the newest SDK for Mesh and take a look at some of the examples we provide, i.e. the light switch example.

    Best Regards,

    Marjeris

  • Thanks for your reply.

    I noticed that the node (sensor) will have to be in advertisement mode instead of pairing mode in mesh network which i dont prefer. 

    Is there any way that i can do my connection like this?

    1) i pair and connect with my sensor with my phone, read the data when i am in range.

    2) when i exceed the range, the sensor will send the data to my phone through a "repeater"

    Note: i hope the sensors are paired and connected to my phone or the repeater but not in advertise mode. 

    Many thanks.

  • Hi,

    To do 1) and 2) without using advertising you can use the relay example.Your peripheral device will then be connected to the central device via a relay node.

    There is not such thing as pairing mode in bluetooth mesh, since it is a flooding and connectionless mesh. All communication within a mesh network is accomplished by sending advertising messages. This messages are still encrypted since a node needs to be provisioned to be part of the network. You can read more about how provisioning works here.

    Best Regards,

    Marjeris

  • hi ,

    I have been able to implement the light switch example with two servers and one client. Now I want to monitor temperature in a room with the two servers acting as sensor nodes to gather temperature readings. Is this logical? If yes, please how to Implement this? 

    Or put in another way, how to I get sensor readings from nodes in a mesh network. Thanks in advance.

    Regards,

    Dan

  • Hi ,

    In the light control example we can configure the light bulb (the server) to send on/off state messages to a publication address when the state of the LED changes after button press. You can make your own custom model based on the generic on/off model to report the temperature data instead of the on/off state.

    You need to implement both a custom server model (for the temperature sensor nodes) and a client model (to get the temperature data out).

    You also need to decide if you want to collect temperature data from an external sensor and sample it using SAADC or use the temperature data internally from the chip. If you want to get the internal temperature value from the chip you can call sd_temp_get().

    A good place to start is to read the basic guide in how to implement new models here.

    If you have more questions about how to implement a custom model please open a new ticket for this.

    Best regards,

    Marjeris

Related