Is there a reason you want to save two or more seconds and then send it or do you want a constant stream of data to the app?
It is doable, but there are a few other factors you will need to consider, for example:
- How often per second are you collecting the IMU data?
- Are you sending all the data or just averages?
- How are you planning on storing the data on the Nano?
- How many "parts" of the IMU are you using (accelerometer, gyroscope, and magnetometer)?
If you are just sending one number every two seconds then you can just read a characteristic.
If you are sending lots of data every two seconds, your solution can come in many forms, one way would be to dump all the data into a larger buffer array (you can separate it with commas or other makers if you wanted) and then you can send all the raw data through one Bluetooth characteristic using the fact that you can send up to approx 230 bytes packets per characteristic (it should be 512 bytes but I haven't had the work yet and maybe a bug). This way the "app" could read the characteristic and trigger the next packet until the buffer is finished. This is probably the fastest way of doing it but it would require more data handling.
Another option is to break the data out into different arrays and characteristics (so one array and Bluetooth characteristic for the accelerometer, then one for the gyroscope, etc.). This is a bit easier for the human to understand but a bit slower for the nano because it has to read multiple characteristics (although it might not be that slow).
It is worth noting that the nRF Connect app won't handle getting all the data automatically.
As for the delay of two seconds, you can simply use a millis() timer to detect when two seconds have passed (collecting data during this time) then begin advertising the BLE. However, you will also need to know if you want to collect IMU data whilst you are sending the data across to the app. If that is the case you need to be aware that if you use a while (central.connected()) loop then the board won't collect the IMU data until the app had disconnected unless you tell it to!
I hope this is enough to get you started!