Skip to content

Instantly share code, notes, and snippets.

@katsuyoshi
Last active September 26, 2022 15:04
Show Gist options
  • Select an option

  • Save katsuyoshi/a34b236f747013df3eda61903f2cd00c to your computer and use it in GitHub Desktop.

Select an option

Save katsuyoshi/a34b236f747013df3eda61903f2cd00c to your computer and use it in GitHub Desktop.
get image data of Timer Cam X
#include <Arduino.h>
#include "esp_camera.h"
#include "camera_pins.h"
#include "battery.h"
#include "soc/soc.h"
#include "soc/rtc_cntl_reg.h"
#include "bmm8563.h"
#include "base64.hpp"
void setup() {
Serial.begin(115200);
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); // disable detector
bat_init();
bat_hold_output();
bmm8563_init();
bmm8563_setTimerIRQ(10);
Serial.setDebugOutput(true);
Serial.println();
pinMode(2, OUTPUT);
digitalWrite(2, HIGH);
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
config.frame_size = FRAMESIZE_QVGA;
config.jpeg_quality = 10;
config.fb_count = 2;
// camera init
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x", err);
return;
}
sensor_t *s = esp_camera_sensor_get();
// initial sensors are flipped vertically and colors are a bit saturated
s->set_vflip(s, 1); // flip it back
s->set_brightness(s, 1); // up the blightness just a bit
s->set_saturation(s, -2); // lower the saturation
}
void loop() {
camera_fb_t *fb = NULL;
fb = esp_camera_fb_get();
size_t fb_len = 0;
fb_len = fb->len;
size_t blk_size = 60;
unsigned char inp[blk_size];
unsigned char out[blk_size * 15 / 10];
Serial.println("require 'base64'");
Serial.println("s = <<EOS");
for (int i = 0; i < fb_len; i += blk_size) {
encode_base64(&(fb->buf[i]), min(fb_len - i, blk_size), out);
Serial.printf("%s\n", out);
}
Serial.println("EOS");
Serial.println("File.write('image.jpg', Base64.decode64(s))");
Serial.println("system('open image.jpg')");
esp_camera_fb_return(fb);
// disable bat output, will wake up after 5 sec, Sleep current is 1~2μA
bat_disable_output();
// if usb not connect, will not in here;
esp_deep_sleep(10000000);
esp_deep_sleep_start();
}
[env:m5stack-timer-cam]
platform = espressif32
board = m5stack-timer-cam
framework = arduino
lib_deps =
m5stack/Timer-CAM@^0.0.3
densaugeo/base64@^1.4.0
upload_speed = 1500000
board_build.partitions = huge_app.csv
monitor_speed = 115200
require 'base64'
s = <<EOS
/9j/4AAQSkZJRgABAQEAAAAAAAD/2wBDAAoHCAkIBgoJCAkLCwoMDxkQDw4ODx8WFxIZJCAmJiQgIyIo
LToxKCs2KyIjMkQzNjs9QEFAJzBHTEY/Szo/QD7/2wBDAQsLCw8NDx0QEB0+KSMpPj4+Pj4+Pj4+Pj4+
Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj7/xAAfAAABBQEBAQEBAQAAAAAAAAAA
AQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHB
FVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5
eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm
5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAME
BwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkq
NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Sl
pqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/wAARCADwAUAD
ASEAAhEBAxEB/9oADAMBAAIRAxEAPwDT8d3f3IAa4V68jDr3CmUm5kqaOupCLAFW7WPLZqZFCahNxisd
vmNC2JJF6U9aQHS+HNOMsglb7orrtm3gVwV5XkbRE7HNRVkUFKvWgBsjfNxTGJpgJTce9AhpqCebbVID
Mnm61z2r3OTtrqpohmG7UznH1rqMxuDmkA+XrVAP4yKt2/Ws5DNqH/VitaI/u1xWEykP3c08MfWsiiRJ
iKm83nJqLAODg1IDSAWikIxfE919o1aT0XisCU8V2U9IkFVOtWUFbiJ1FaNuNsRNZyGZN6+5zVRasklX
rVm2jLyhRUjPR9Hs/stgoxyasnivLbuzcaelQGgYo6U00CGNSGmA2koAgmk2isyebnNawRJlXE+a5+8k
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
zUAf/9k=
EOS
File.write('image.jpg', Base64.decode64(s))
system('open image.jpg')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment