SPRESENSEのカメラ機能と、LowPowerライブラリでLowPowerカメラを作ってみました。クロックも32MHzに落としています。





一分毎に写真を取って、次の撮影までDeepSleepに落ちて電力を落とします。ファイル名が重なってはいけないので、番号をEEPROMに記録するようになっています。


#include &ltCamera.h>
#include &ltSDHCI.h>
#include &ltLowPower.h>
#include &ltEEPROM.h>

#define LOWPOWER_32MHz

SDClass theSD;
File myFile;
int addr = 0;
byte val = 0;

void setup() {
LowPower.begin();
#ifdef LOWPOWER_32MHz
LowPower.clockMode(CLOCK_MODE_32MHz);
#endif

Serial.begin(115200);
Serial.println("bootup");
theCamera.begin();
bootcause_e bc = LowPower.bootCause();
if ((bc == POR_SUPPLY) || (bc == POR_NORMAL)) {
Serial.println("Power on reset");
val = 0;
} else {
val = EEPROM.read(addr);
Serial.println("Read sequence number: " + String(val));
}

}

void loop() {

theCamera.setStillPictureImageFormat(320 ,240 ,CAM_IMAGE_PIX_FMT_JPG);
CamImage img = theCamera.takePicture();
if (img.isAvailable()) {
char filename[16] = {0};
sprintf(filename, "PICT%03d.JPG", val);
File myFile = theSD.open(filename, FILE_WRITE);
myFile.write(img.getImgBuff(), img.getImgSize());
myFile.close();
++val;
Serial.println("taken picture to " + String(filename));
EEPROM.write(addr, val);
}
theCamera.end();
LowPower.deepSleep(60);
}


電力はまだ測定していないのですが、拡張ボード使っているのでそこまで落ちていないだろうなぁ。そのうち、カメラをつけた場合の電力も測定もしてみたいと思います。(環境作るのメンドクサイ…)
(´・A・`)


関連記事
SPRESENSE で DeepSleep から GPS をホットスタート!
https://makers-with-myson.blog.ss-blog.jp/2020-01-26

SPRESENSE の Low Power ライブラリをバッテリー給電で試してみた!
https://makers-with-myson.blog.ss-blog.jp/2019-12-08

SPRESENSE の Low Power ライブラリをUSB給電で試してみた!
https://makers-with-myson.blog.ss-blog.jp/2019-12-01