Mini Spy Cameraとは
MicroSDカードフォルダ月の高解像度(480pビデオと1280×720の写真)を備えたカメラモジュールです!
トリガーを約0.5秒以内で短くLOWにしHIGHにすると写真モード。
トリガーを約0.5秒以上LOWにしHIGHにすると音声付きのビデオモードでとることができます!!
今回のプログラムは写真モードです
仕様
- 写真フォーマット:JPEG
- 写真解像度:1280 × 720
- ビデオフォーマット:AVI
- ビデオ解像度:640 x 480
- MicroSD最大サポート:32 GB
- 電源電圧:3.7 V〜5 V、リチウム電池に直接接続することが可能
- スタンバイ電流:80 mA
- 動作電流:110 mA
- PCBの寸法:28.5 mm x 17 mm x 4.2 mm
- カメラの寸法:6.2 mm x 6.2 mm x 4.4 mm
- USBケーブルの長さ:508 mm
- PCB + カメラ重量:2.8 g
Reference: https://www.switch-science.com/catalog/3153/
つなぎ方
プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 |
#include "mbed.h" #include <math.h> #include "I2cLCD.h" // SD Setting #include "SDFileSystem.h" SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board I2C i2c(p9,p10); // sda, scl Serial pc(USBTX, USBRX);// tx, rx Ticker flipper; DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); DigitalOut led4(LED4); DigitalOut dout1(p27); DigitalOut dout2(p28); int i=0, j=0; int sdflag=0; int flag=0; int eflag=0; int filenum=0; int cnt=0; int cflag=0; char tx[2]; char rx[6]; unsigned short cmd; float humid, temp; unsigned short ST, SRH; //unsigned char ch=0; FILE *fp,*fp2; char filename[]="/sd/id_000.csv";//7-8-9 char dispname[]="id_000.csv"; //レジスタアドレス #define SHT31_DEFAULT_ADDR 0x88//0x44 // 計測設定 #define SHT31_MEAS_HIGHREP_STRETCH 0x2C06 #define SHT31_MEAS_MEDREP_STRETCH 0x2C0D #define SHT31_MEAS_LOWREP_STRETCH 0x2C10 #define SHT31_MEAS_HIGHREP 0x2400 #define SHT31_MEAS_MEDREP 0x240B #define SHT31_MEAS_LOWREP 0x2416 // その他設定 #define SHT31_READSTATUS 0xF32D #define SHT31_CLEARSTATUS 0x3041 #define SHT31_SOFTRESET 0x30A2 #define SHT31_HEATEREN 0x306D #define SHT31_HEATERDIS 0x3066 void flip() { dout1=0; dout2=0; wait(0.3); dout1=1; dout2=1; cmd=(SHT31_MEAS_HIGHREP); tx[0] = (char)(cmd >> 8); tx[1] = (char)(cmd & 0xFF); i2c.write(SHT31_DEFAULT_ADDR, tx, 2); wait_us(200000); i2c.read(SHT31_DEFAULT_ADDR, rx, 6); ST = rx[0]; ST <<= 8; ST |= rx[1]; SRH = rx[3]; SRH <<= 8; SRH |= rx[4]; double stemp = ST; stemp *= 175; stemp /= 0xffff; stemp = -45 + stemp; temp = stemp; double shum = SRH; shum *= 100; shum /= 0xFFFF; humid = shum; pc.printf("%d %.2f %.2f\n\r",i,temp,humid); //pc.printf("%d %d %d %d %d\n\r",i,rx[0],rx[1],rx[3],rx[4]); fp = fopen(filename,"a"); fprintf(fp,"%d,%.3f,%.3f\n",i,temp,humid); fclose(fp); i++; } //------------------------ //------------------------ //------------------------ int main() { pc.baud(230400); i2c.frequency(400000); dout1=1; dout2=1; led1=0; led2=0; led3=0; led4=0; led1=0; led2=1; led3=0; led4=1; // pc.printf("test:%d",sd.disk_status()); while(1){ if(sd.disk_initialize()==0){ break; } } led1=1; led2=0; led3=0; led4=0; // Init cmd=(SHT31_SOFTRESET); tx[0] = (char)(cmd >> 8); tx[1] = (char)(cmd & 0xFF); i2c.write(SHT31_DEFAULT_ADDR, tx, 2); wait_us(200000); // 初期値 sdflag=0; flag=0; eflag=0; //------------------------ //------------------------ //------------------------ flag=1; sdflag=0; led1=1; led2=1; led3=0; led4=0; while(1){ fp=fopen(filename,"r"); if(fp==NULL){ fp=fopen(filename,"a"); if(fp==NULL){ sdflag=2; } else { fclose(fp); //pc.printf("%s",filename); // if(filename[9]=='0'&&filename[8]=='0'&&filename[7]=='0'){ // break; //} //else{ remove(filename); sdflag=1; //} } break; } else{ fclose(fp); filename[9]++; if(filename[9]==':'){ filename[9]='0'; filename[8]++; if(filename[8]==':'){ filename[8]='0'; filename[7]++; if(filename[7]==':'){ led1=1; led2=1; led3=0; led4=0; sdflag=3; break; } } } } }//while-file if(sdflag==1){ led1=1; led2=1; led3=1; led4=0; } else { led1=0; led2=1; led3=0; led4=1; while(1){}; } //Spy_Camera's time flipper.attach(&flip,900); while(1){} //-------------------------------------------- //-------------------------------------------- //-------------------------------------------- } |
こちらは、使用例の参考です
Reference: https://learn.adafruit.com/timelapse-spy-camera
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
int trig = 0; int led = 1; void setup() { // initialize the digital pins as output. pinMode(led, OUTPUT); pinMode(trig, OUTPUT); digitalWrite(led, HIGH); digitalWrite(trig, HIGH); } // Hold HIGH and trigger quick (<250ms) LOW to take a photo. Holding LOW and trigger HIGH starts/stops video recording void loop() { digitalWrite(trig, LOW); digitalWrite(led, LOW); delay(50); digitalWrite(trig, HIGH); digitalWrite(led, HIGH); //Delay between pictures delay(10000); } |
実行してみよう
実行してみると、こんな感じの写真が撮れます!
プログラミング次第で動画もとることができるそうなので試してみてください!!
コメント