Is there any STM32 power saving integration in openmv?
I would like to put openmv cam to sleep mode or stop mode for power saving, and wake it up by external interrupt.
Any suggestion for this feature?
Ibrahim needs to implement this. And we should have time to do that now. Ibrahim can you follow up with a proposal?
We’ll get working on power saving for the next firmware version.
Thanks. Looking forward to next release.
Hi. How long would it be till you release the next update?
Kinda just did one. Ibrahim will start working on this feature next. Anyway, expect another release by the end of the month.
How is this feature going? Will it be included in next release?
We’re kinda busy with updating the website and then documentation next. Additionally, we’re about to open pre-orders for a new board with the STM32F7.
If Ibrahim has time to tackle this then it will get done sooner, otherwise he’s focusing on the tutorial right now.
Sorry for this not being top priority.
Hello. Any news on this topic? )
Yes, so, it’s not quite what you want put it works:
Once executed the board stops doing anything and the power consumption falls very low.
Restarting the board is another problem however. You can just toggle the reset line for now. But, I think external interrupts will work. But, you’ll need to go through the whole camera reset procedure.
Im interested in this thread. Im kind of curious which low power modes is enabled here when I compare this with the STM32F7 data sheet.
The standby mode is the lowest power consumption mode. I would like to come out of this mode using a HW interrupt. But it looks like PA0 and PC13 are no connects on your camera module. Even the NRST pin is hardwired to Vcc through a resistor. So I’m thinking I can’t control that either, unless I toggle the power pin.
Am I missing something here.
Any feedback would be appreciated
Also, is it possible to code the STM firmware myself (using the high level python interface). Im thinking of buying this module. But its a mobile application and power consumption is my biggest challenge. So wondering if I can have flexibility over register writes myself for different power modes.
Yes, you can change the firmware to do whatever you like:
I’ve answered your email externally. Here were the contents:
I have a bunch of question on your camera module
- what is the differences between your M7 and M4 module. Other than the main micro, Flash and SRAM difference, I can the M7 has an extra GPIO (P9), an extra UART, I2C functionality faster micro and M7 is . Is there any other differences in software?
- If I would like night IR vision, I would need to get an extra IR lens. Is that correct? My project required both a wide angle functionality and night time IR functionality. Is that possible in one lens.
- Do any of the modules have a sleep/hibernate functionality which would consume very less current (<5mA or so). I need it for a mobile battery operated application. And I would like it to take pictures or video only after an interrupt to one of the GPIO pins. So I need it to consume very less current till the interrupt gets triggered. I see that in normal operation it consumes ~200mA. This is too high for me
Yes, the M7 has more functionality since we ran out of room on the M4 for code so it’s feature list is more of less fixed (and may shrink to make room for slightly faster versions of code that is already has). The M7 is kinda like double everything about the M4. Note that we have only a few M4 modules left, less than 10, before they are all gone. We do not plan to build anymore M4 models (Chinese cloners however are).
If you buy the wide angle lens you can remove the IR filter on the back of it. But, you likely won’t be able to remove the IR filter without destroying it so this is a one way conversion. Same with the telephoto lens.
Yes, if you execute the pyb.stop() method power consumption falls to 500 uA. You may be able to wake up again if you setup interrupts on pins. I don’t know if it will be possible to restart the camera. I haven’t tried. However, you can reset the whole system by doing a pyb.hard_reset() after waking up to get back to a known state. Since you have a file system you can store state info there between resets.
We also have the pyb.standby() method for 50 uA mode. But, I don’t believe you can wake up again unless externally reset.
I just did some power consumption measurements. In active mode, I measure about 100mA (taking a snapshot, not video). Then I use the pyb.stop() method to save power, and set up an interrupt on pin to wakeup from that state (triggered by a motion sensor). It works well, and the low latency is good, but I measure about 12mA during the “stop” state, not 500uA. I’m guessing the 500uA figure relates to CPU power and the rest is due to the camera staying active. Is there a way to put the camera itself to sleep?
Yeah, Ibrahim added a sleep command. Hmm, it might be in the latest firmware however. Please see the OpenMV GitHub hub for the latest firmware and the usr/examples folder for the low power sensor example.
Hi, use sensor.sleep(). you’ll have to update the firmware first to the latest (2.7).