Hi Steen.
Interesting quest you've involved yourself in here ;). I can see you've come a long way from the details in the thread. Low power is not a usual objective with Arduino as you've found out.
I have no specific experience with the Nano 33 BLE (or much BT at all for that matter), but studying the schematic a bit with my hardware googgles on I think the designers have put up some roadblocks (putting software aside for the moment) for you regarding using the IMU to wake up the MCU from a low power state.
As you've found out, for the purpose of waking up the MCU from a sleep state the IMU needs to be able to signal an event. This is normally done by dedicated interrupt lines from peripheral to MCU, but none of the 3 interrupt lines (pins 10, 11 & 12) of the IMU sensor (U2, LSM9DS1) are connected to the MCU (U1, nRF on the NINA-B3x).
So even though the IMU contains a complex and very configurable interrupt generator (the way to tell it how much movement is enough to interrupt) I can't see any possibility for the sensor to wake up the MCU from a sleeping state when something of interest happens.
Well, IMU could theoretically interrupt MCU via SCL1/SDA1 on GPIOs P0.14/P0.15 which are able to trigger the DETECT signal, but that would require IMU support for reversing the normal slave role to master, and IMU datasheet says explicitly its interface is slave only (ch. 5.1).
To me it looks like the design of the external circuitry on the Nano 33 only leaves open the possibility for waking the MCU on proximity, light and gesture events as the only constantly powered and interrupt connected sensor is the APDS-9960.
Additionally, all other external sensors are powered directly from two GPIOs (MIC_PWR=P0.17 & VDD_ENV=P0.22) which seems a bit odd to me, but if not outside of current specification for the GPIO could be fine. However, I assume that all GPIOs will go low in the System OFF state causing them to be shut down. If that is true the IMU is never going to be functional in the Power OFF state.
Looking at the power rail associations for the peripherals it is also evident that to power the IMU you'd also be powering the HTS221 and LPS22 which is not good if on a power budget (haven't studied their actual consumption or possible low power states, links are to manufacturer's product pages):
VDD_ENV: LSM9DS1 (accelerometer, gyroscope, magnetometer), HTS221 (temperature, humidity), LPS22HB (pressure)
MIC_PWR: MP34DT06J (microphone)
3V3: APDS-9960 (light and proximity)
I think the only power conservation strategy for sensing using IMU with this hardware would be to wake up the MCU from a low power state periodically (using internal timer interrupts/RTC) and then polling the IMU to find out if it should keep sleeping. This is if course not as efficient as if the IMU was able to wake up the MCU specifically when needed, but that would require changes to the circuitry of the board.
Note that the LSM9DS1 consumes considerable power compared to sub-mA when enabled; between 1.9 and 4.3 mA according to datasheet (table 10, p. 20), so fighting the MCU to go to the 0.4 uA System OFF state might not be worth the battle.
Also note that System OFF state is very deep, essentially a prolonged reset, and will NOT retain RAM and registers and thus on wakeup requires the application program to reinitialise everything, this is not normally what you'd do unless knowing the sleep to be for longer periods and accepting a prolonged wakeup time. There are softer system sleep states available (fx. full GPIO wake capability @ 17 uA, see nRF52840 Product Specification, ch 5.2.1.1, p. 56).
I hope this is not a complete wash-off to using standard Arduino hardware. When you mention this is for prototype purposes, is this meant to go into production using Nano 33 BLE, or do you plan on making your own custom hardware spin?
I could be willing to elaborate further or peruse your requirements with respect to the Nano 33 BLE in more detail if we can find an arrangement for that. Check my CV and homepage if you need more information.
Regards,
Mikkel