This is a test program for Camera Module(C328, LJ-DSC02)

Dependencies:   CameraC328 SDFileSystem mbed-src

Fork of Camera_TestProgram_2015 by Ricky Kwon

Prerequisite

This example stores the image data acquired from the camera on a micro sd card.

To implement this function, you need a Platform board, camera module.

Available camera modules are C328, LJ-DSC02. Because the cameras listed above all have similar internal protocols.

This example uses LJ-DSC02.

  • WIZwiki-W7500 from WIZnet (Platform board)
  • LJ-DSC02 (Camera module)
  • Micro SD Card

Hardware Configuration

/media/uploads/Ricky_Kwon/camera.png

  • connect Camera module

Software

Init resolution and frame of image

#define USE_JPEG_HIGH_RESOLUTION  1
static const int CAPTURE_FRAMES = 1;

Committer:
Ricky_Kwon
Date:
Wed Apr 12 07:16:36 2017 +0000
Revision:
3:92e4afa57824
Parent:
2:09815843204c
update all library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ricky_Kwon 1:7e547bf0f166 1 /**
Ricky_Kwon 1:7e547bf0f166 2 * Test program.
Ricky_Kwon 1:7e547bf0f166 3 *
Ricky_Kwon 1:7e547bf0f166 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
Ricky_Kwon 1:7e547bf0f166 5 * http://shinta.main.jp/
Ricky_Kwon 1:7e547bf0f166 6 */
Ricky_Kwon 1:7e547bf0f166 7
Ricky_Kwon 1:7e547bf0f166 8 /*
Ricky_Kwon 1:7e547bf0f166 9 * Include files.
Ricky_Kwon 1:7e547bf0f166 10 */
Ricky_Kwon 1:7e547bf0f166 11
shintamainjp 0:31be9011f67e 12 #include "mbed.h"
Ricky_Kwon 1:7e547bf0f166 13 #include "CameraC328.h"
shintamainjp 0:31be9011f67e 14 #include "SDFileSystem.h"
Ricky_Kwon 1:7e547bf0f166 15
Ricky_Kwon 1:7e547bf0f166 16 /*
Ricky_Kwon 1:7e547bf0f166 17 * Definitions.
Ricky_Kwon 1:7e547bf0f166 18 */
Ricky_Kwon 1:7e547bf0f166 19 #define USE_JPEG_HIGH_RESOLUTION 1
Ricky_Kwon 1:7e547bf0f166 20 #define USE_SD_CARD 1
Ricky_Kwon 1:7e547bf0f166 21
Ricky_Kwon 1:7e547bf0f166 22 /*
Ricky_Kwon 1:7e547bf0f166 23 * Variables.
Ricky_Kwon 1:7e547bf0f166 24 */
Ricky_Kwon 2:09815843204c 25 static const int CAPTURE_FRAMES = 1;
Ricky_Kwon 1:7e547bf0f166 26 static FILE *fp_jpeg;
Ricky_Kwon 1:7e547bf0f166 27
Ricky_Kwon 1:7e547bf0f166 28 /*
Ricky_Kwon 1:7e547bf0f166 29 * Modules.
Ricky_Kwon 1:7e547bf0f166 30 */
Ricky_Kwon 1:7e547bf0f166 31 #if USE_SD_CARD
Ricky_Kwon 1:7e547bf0f166 32 SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "fs"); // the pinout on the mbed Cool Components workshop board
shintamainjp 0:31be9011f67e 33 #else
Ricky_Kwon 1:7e547bf0f166 34 LocalFileSystem fs("fs");
shintamainjp 0:31be9011f67e 35 #endif
Ricky_Kwon 3:92e4afa57824 36 CameraC328 camera(PA_13, PA_14, CameraC328::Baud115200);
Ricky_Kwon 1:7e547bf0f166 37
Ricky_Kwon 1:7e547bf0f166 38 /**
Ricky_Kwon 1:7e547bf0f166 39 * A callback function for jpeg images.
Ricky_Kwon 1:7e547bf0f166 40 * You can block this function until saving the image datas.
shintamainjp 0:31be9011f67e 41 *
Ricky_Kwon 1:7e547bf0f166 42 * @param buf A pointer to the image buffer.
Ricky_Kwon 1:7e547bf0f166 43 * @param siz A size of the image buffer.
Ricky_Kwon 1:7e547bf0f166 44 */
Ricky_Kwon 1:7e547bf0f166 45 void jpeg_callback(char *buf, size_t siz) {
Ricky_Kwon 1:7e547bf0f166 46 for (int i = 0; i < (int)siz; i++) {
Ricky_Kwon 1:7e547bf0f166 47 fprintf(fp_jpeg, "%c", buf[i]);
Ricky_Kwon 1:7e547bf0f166 48 }
Ricky_Kwon 1:7e547bf0f166 49 }
Ricky_Kwon 1:7e547bf0f166 50
Ricky_Kwon 1:7e547bf0f166 51 /**
Ricky_Kwon 1:7e547bf0f166 52 * Synchronizing.
Ricky_Kwon 1:7e547bf0f166 53 */
Ricky_Kwon 1:7e547bf0f166 54 void sync(void) {
Ricky_Kwon 1:7e547bf0f166 55 CameraC328::ErrorNumber err = CameraC328::NoError;
Ricky_Kwon 1:7e547bf0f166 56
Ricky_Kwon 1:7e547bf0f166 57 err = camera.sync();
Ricky_Kwon 1:7e547bf0f166 58 if (CameraC328::NoError == err) {
Ricky_Kwon 1:7e547bf0f166 59 printf("[ OK ] : CameraC328::sync\n");
Ricky_Kwon 1:7e547bf0f166 60 } else {
Ricky_Kwon 1:7e547bf0f166 61 printf("[FAIL] : CameraC328::sync (Error=%02X)\n", (int)err);
Ricky_Kwon 1:7e547bf0f166 62 }
Ricky_Kwon 1:7e547bf0f166 63 }
Ricky_Kwon 1:7e547bf0f166 64
Ricky_Kwon 1:7e547bf0f166 65 /**
Ricky_Kwon 1:7e547bf0f166 66 * A test function for jpeg snapshot picture.
Ricky_Kwon 1:7e547bf0f166 67 */
Ricky_Kwon 1:7e547bf0f166 68 void test_jpeg_snapshot_picture(void) {
Ricky_Kwon 1:7e547bf0f166 69 CameraC328::ErrorNumber err = CameraC328::NoError;
Ricky_Kwon 1:7e547bf0f166 70
Ricky_Kwon 1:7e547bf0f166 71 #if USE_JPEG_HIGH_RESOLUTION
Ricky_Kwon 1:7e547bf0f166 72 err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution640x480);
Ricky_Kwon 1:7e547bf0f166 73 #else
Ricky_Kwon 1:7e547bf0f166 74 err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution320x240);
Ricky_Kwon 1:7e547bf0f166 75 #endif
Ricky_Kwon 1:7e547bf0f166 76 if (CameraC328::NoError == err) {
Ricky_Kwon 1:7e547bf0f166 77 printf("[ OK ] : CameraC328::init\n");
Ricky_Kwon 1:7e547bf0f166 78 } else {
Ricky_Kwon 1:7e547bf0f166 79 printf("[FAIL] : CameraC328::init (Error=%02X)\n", (int)err);
shintamainjp 0:31be9011f67e 80 }
Ricky_Kwon 1:7e547bf0f166 81
Ricky_Kwon 1:7e547bf0f166 82 for (int i = 0; i < CAPTURE_FRAMES; i++) {
Ricky_Kwon 1:7e547bf0f166 83 char fname[64];
Ricky_Kwon 1:7e547bf0f166 84 snprintf(fname, sizeof(fname), "/fs/jpss%04d.jpg", i);
Ricky_Kwon 1:7e547bf0f166 85 fp_jpeg = fopen(fname, "w");
Ricky_Kwon 1:7e547bf0f166 86
Ricky_Kwon 1:7e547bf0f166 87 err = camera.getJpegSnapshotPicture(jpeg_callback);
Ricky_Kwon 1:7e547bf0f166 88 if (CameraC328::NoError == err) {
Ricky_Kwon 1:7e547bf0f166 89 printf("[ OK ] : CameraC328::getJpegSnapshotPicture\n");
Ricky_Kwon 1:7e547bf0f166 90 } else {
Ricky_Kwon 1:7e547bf0f166 91 printf("[FAIL] : CameraC328::getJpegSnapshotPicture (Error=%02X)\n", (int)err);
Ricky_Kwon 1:7e547bf0f166 92 }
Ricky_Kwon 1:7e547bf0f166 93
Ricky_Kwon 1:7e547bf0f166 94 fclose(fp_jpeg);
Ricky_Kwon 1:7e547bf0f166 95 }
Ricky_Kwon 1:7e547bf0f166 96 }
Ricky_Kwon 1:7e547bf0f166 97
Ricky_Kwon 1:7e547bf0f166 98 /**
Ricky_Kwon 1:7e547bf0f166 99 * A entry point.
Ricky_Kwon 1:7e547bf0f166 100 */
Ricky_Kwon 1:7e547bf0f166 101 int main() {
Ricky_Kwon 1:7e547bf0f166 102 printf("\n");
Ricky_Kwon 1:7e547bf0f166 103 printf("==========\n");
Ricky_Kwon 1:7e547bf0f166 104 printf("CameraC328\n");
Ricky_Kwon 1:7e547bf0f166 105 printf("==========\n");
Ricky_Kwon 1:7e547bf0f166 106
Ricky_Kwon 1:7e547bf0f166 107 sync();
Ricky_Kwon 2:09815843204c 108
Ricky_Kwon 1:7e547bf0f166 109 test_jpeg_snapshot_picture();
Ricky_Kwon 1:7e547bf0f166 110 }