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

Any other way to create Services and characteristic UUID except nRFGO Studio.

Hi

I have successfully created services and characteristic from nRFGO Studio and they are advertising well even receiving and transmitting is going well. Now my problem is i have 30 bluetooth low energy modules containing nRF 8001 and i have to create different services for each so that i can identify them separately. Is there any other way to give them different UUIDs except nRFGO Studio? Because every time i have to use nRFGO studio and create services.h file, and if i have 100 modules then i have to do it 100 times? What is the alternative that i can use so that i program it once it will generate diff. uuids to every module?

Is there any other way with the help of which i can distinguish 100s low energy module containing nRF 8001 chips. I think it can be distinguished with only service uuid as it is the only thing it advertise?

And one more thing, peripheral name is specified in GAP Settings in nRFGO Studio, i want to change the connected peripheral name through iPhone. I actually want to give this functionality to my user of product that he can change the name of peripheral according to its wish.How can i do this?

Thanks

Parents
  • The revision is controlled by the order, you should order the D revision of the chips for volume production.

    You are trying to get a unique serial number for your application mcu.

    Get a unique number (options): Option 1. Use the Random static address of the nRF8001. ACI Get Device Address(). This address is randomly generated so there is very very low probability that the number is non unique. It this low probability is not good for you. You can use a database connected programming jig that will need to used in production, that gets the device address and verifies that it is unique for your batch, so you are certain.

    Option 2. Use a counter generator on your production PC or Raspberry Pi or Linux board to generate a number, generate a hex file with this counter in a specific location in flash. place this number in the flash of your microcontroller by merging the application hex and the counter hex file. You should also read this blog by Bunnie if you doing production for the first time www.bunniestudios.com/.../

    You can get more information on merging hex files from your mcu manufacturer

    Send the unique number on the BLE advertising (options): Option 1. Get a unique number that you created and create a service UUID that is used in the advertising. Use the service UUID as a 128 bit number with 2 parts. One part is fixed so your app on the phone can identify that is your product and one part is your counter for uniqueness. Use the counter hex file this generated on your production PC or Rpi or Linux board to generate a hex file that updates all the places that this Service UUID is used in the application hex.

    Option 2. Get the unique number that you created and update a variable that you used in the hex file. Use this variable in a broadcast pipe. Create the broadcast pipe under the Device Information Service -> Serial number Characteristic. Remember to set the Service Data check box in nRF8001 Configuration -> Service Data in ACI Connect (or ACI Bond/ACI broadcast as needed) You will also have to use the ACI Command OpenAdvPipe for the broadcast pipe and do an ACI Set local data on the broadcast pipe with the unique number that is available in the hex file. This will make the unique number available in your advertising data.

  • Hi

    Sir actually we are developing a product for the first time. The solutions that you provided above are fine but i am not able to use the hex file accurately. Now i am successfully identifying every nRF 8001 module separately with the use of static address in Arduino coding and in iPhone i have peripheral.uuid and peripheral.uuid of every module is different and through this i am able to distinguish every module.

    Now my main concern is avoiding any different phone to connect with my module? What i am thinking is i will give user a password which is different for every module and every module know its password which i will give through coding. And i will give same password to user and when user want to connect it will ask for the password. Can i send something to the peripheral without connecting like the password? In iPhone i have to call[i] [centralManager connectPeripheral:discoveredPeripheral options:nil];[/i] this funtion to connect to any peripheral, here discoveredPeripheral is the peripheral to which i want to connect. If i can send the password through this function then i can check this in program on nordic that both are same or not?

    Can you tell me whenever iPhone sends [i][centralManager connectPeripheral:discoveredPeripheral options:nil];[/i] this command to connect to discoveredPeripheral then what i get is the ACI_EVT_CONNECTED on the nRF 8001 side. Can you tell which function actually get called during creation of the connection b/w peripheral and iPhone on the nRF 8001 side Which function actually generates the ACI_EVT_CONNECTED, if i get access to this function then i can check whether the phone to which i am connecting is authorised to or not? Is this method feasible?

    I just want the program in nRF 8001 side to check whether it has to connect with this phone or not. And i am not getting the way how to check prior to connecting with that phone that the phone is authentic or not? Help me in this.

Reply
  • Hi

    Sir actually we are developing a product for the first time. The solutions that you provided above are fine but i am not able to use the hex file accurately. Now i am successfully identifying every nRF 8001 module separately with the use of static address in Arduino coding and in iPhone i have peripheral.uuid and peripheral.uuid of every module is different and through this i am able to distinguish every module.

    Now my main concern is avoiding any different phone to connect with my module? What i am thinking is i will give user a password which is different for every module and every module know its password which i will give through coding. And i will give same password to user and when user want to connect it will ask for the password. Can i send something to the peripheral without connecting like the password? In iPhone i have to call[i] [centralManager connectPeripheral:discoveredPeripheral options:nil];[/i] this funtion to connect to any peripheral, here discoveredPeripheral is the peripheral to which i want to connect. If i can send the password through this function then i can check this in program on nordic that both are same or not?

    Can you tell me whenever iPhone sends [i][centralManager connectPeripheral:discoveredPeripheral options:nil];[/i] this command to connect to discoveredPeripheral then what i get is the ACI_EVT_CONNECTED on the nRF 8001 side. Can you tell which function actually get called during creation of the connection b/w peripheral and iPhone on the nRF 8001 side Which function actually generates the ACI_EVT_CONNECTED, if i get access to this function then i can check whether the phone to which i am connecting is authorised to or not? Is this method feasible?

    I just want the program in nRF 8001 side to check whether it has to connect with this phone or not. And i am not getting the way how to check prior to connecting with that phone that the phone is authentic or not? Help me in this.

Children
No Data
Related