SPRESENSEのカメラ機能と、LowPowerライブラリでLowPowerカメラを作ってみました。クロックも32MHzに落としています。
一分毎に写真を取って、次の撮影までDeepSleepに落ちて電力を落とします。ファイル名が重なってはいけないので、番号をEEPROMに記録するようになっています。
電力はまだ測定していないのですが、拡張ボード使っているのでそこまで落ちていないだろうなぁ。そのうち、カメラをつけた場合の電力も測定もしてみたいと思います。(環境作るのメンドクサイ…)
(´・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
一分毎に写真を取って、次の撮影までDeepSleepに落ちて電力を落とします。ファイル名が重なってはいけないので、番号をEEPROMに記録するようになっています。
#include <Camera.h>
#include <SDHCI.h>
#include <LowPower.h>
#include <EEPROM.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