Skip to content

Commit a5f01c3

Browse files
authored
v10.6.2
1 parent dfab1b0 commit a5f01c3

File tree

11 files changed

+198
-67
lines changed

11 files changed

+198
-67
lines changed

appGlobals.h

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,6 @@
55
#pragma once
66
#include "globals.h"
77

8-
#if !CONFIG_IDF_TARGET_ESP32S3 && !CONFIG_IDF_TARGET_ESP32
9-
#error "Must select ESP32 or ESP32S3 board"
10-
#endif
11-
128
/**************************************************************************
139
Uncomment one only of the ESP32 or ESP32S3 camera models in the block below
1410
Selecting wrong model may crash your device due to pin conflict
@@ -43,9 +39,20 @@
4339
//#define CAMERA_MODEL_DFRobot_Romeo_ESP32S3
4440
//#define CAMERA_MODEL_XENOIONEX
4541
//#define CAMERA_MODEL_Waveshare_ESP32_S3_ETH
42+
//#define CAMERA_MODEL_DFRobot_ESP32_S3_AI_CAM
4643
//#define AUXILIARY
44+
45+
// User's ESP32C3 board (auxiliary only)
46+
#elif defined(CONFIG_IDF_TARGET_ESP32C3)
47+
#define AUXILIARY
48+
#define NO_SD
49+
#endif
50+
51+
#if !defined(CONFIG_IDF_TARGET_ESP32S3) && !defined(CONFIG_IDF_TARGET_ESP32) && !defined(AUXILIARY)
52+
#error "Must select ESP32 or ESP32S3 board for camera"
4753
#endif
4854

55+
4956
/***************************************************************
5057
Optional features NOT included by default to reduce heap use
5158
To include a particular feature, change false to true
@@ -100,7 +107,9 @@
100107
/*********************** Fixed defines leave as is ***********************/
101108
/** Do not change anything below here unless you know what you are doing **/
102109

110+
#ifndef AUXILIARY
103111
#include "esp_camera.h"
112+
#endif
104113
#include "camera_pins.h"
105114

106115
#define STATIC_IP_OCTAL "133" // dev only
@@ -110,14 +119,14 @@
110119
#define DOT_MAX 50
111120
#define HOSTNAME_GRP 99
112121

113-
#define APP_VER "10.6.1"
122+
#define APP_VER "10.6.2"
114123

115124
#if defined(AUXILIARY)
116125
#define APP_NAME "ESP-CAM_AUX" // max 15 chars
117126
#define INDEX_PAGE_PATH DATA_DIR "/Auxil" HTML_EXT
118127
#define USE_UARTTASK
119128
#elif defined(SIDE_ALARM)
120-
#define APP_NAME "ESP-CAM-SIDE" // max 15 chars
129+
#define APP_NAME "ESP-CAM_SIDE" // max 15 chars
121130
#define INDEX_PAGE_PATH DATA_DIR "/SideAl" HTML_EXT
122131
#define NO_SD
123132
#else
@@ -230,7 +239,7 @@ struct fnameStruct {
230239
};
231240

232241
enum audioAction {NO_ACTION, UPDATE_CONFIG, RECORD_ACTION, PLAY_ACTION, PASS_ACTION, WAV_ACTION, STOP_ACTION};
233-
242+
enum stepperModel {BYJ_48, BIPOLAR_8mm};
234243
// global app specific functions
235244

236245
void applyFilters();
@@ -241,7 +250,6 @@ void buildAviHdr(uint8_t FPS, uint8_t frameType, uint16_t frameCnt, bool isTL =
241250
void buildAviIdx(size_t dataSize, bool isVid = true, bool isTL = false);
242251
size_t buildSubtitle(int srtSeqNo, uint32_t sampleInterval);
243252
void buzzerAlert(bool buzzerOn);
244-
bool checkMotion(camera_fb_t* fb, bool motionStatus, bool lightLevelOnly = false);
245253
int8_t checkPotVol(int8_t adjVol);
246254
bool checkSDFiles();
247255
void currentStackUsage();
@@ -257,10 +265,8 @@ bool haveWavFile(bool isTL = false);
257265
bool identifyBMx();
258266
void intercom();
259267
bool isNight(uint8_t nightSwitch);
260-
void keepFrame(camera_fb_t* fb);
261268
void micTaskStatus();
262269
void motorSpeed(int speedVal, bool leftMotor = true);
263-
void notifyMotion(camera_fb_t* fb);
264270
void openSDfile(const char* streamFile);
265271
void prepAudio();
266272
void prepAviIndex(bool isTL = false);
@@ -288,7 +294,7 @@ void startHeartbeat();
288294
void startSustainTasks();
289295
bool startTelemetry();
290296
void stepperDone();
291-
void stepperRun(float RPM, float revFraction, bool _clockwise);
297+
void stepperRun(float RPM, float revFraction, bool _clockwise, stepperModel thisStepper);
292298
void stopPlaying();
293299
void stopSustainTask(int taskId);
294300
void stopTelemetry(const char* fileName);
@@ -300,6 +306,12 @@ size_t writeAviIndex(byte* clientBuf, size_t buffSize, bool isTL = false);
300306
bool writeUart(uint8_t cmd, uint32_t outputData);
301307
size_t writeWavFile(byte* clientBuf, size_t buffSize);
302308

309+
#ifndef CONFIG_IDF_TARGET_ESP32C3
310+
bool checkMotion(camera_fb_t* fb, bool motionStatus, bool lightLevelOnly = false);
311+
void keepFrame(camera_fb_t* fb);
312+
void notifyMotion(camera_fb_t* fb);
313+
#endif
314+
303315
/******************** Global app declarations *******************/
304316

305317
// motion detection parameters
@@ -332,7 +344,6 @@ extern bool forceRecord; // Recording enabled by rec button
332344
extern bool forcePlayback; // playback enabled by user
333345
extern uint8_t FPS;
334346
extern uint8_t fsizePtr; // index to frameData[] for record
335-
extern framesize_t maxFS;
336347
extern bool isCapturing;
337348
extern uint8_t lightLevel;
338349
extern uint8_t lampLevel;
@@ -357,6 +368,10 @@ extern bool streamSrt;
357368
extern uint8_t numStreams;
358369
extern uint8_t vidStreams;
359370

371+
#ifndef CONFIG_IDF_TARGET_ESP32C3
372+
extern framesize_t maxFS;
373+
#endif
374+
360375
// buffers
361376
extern uint8_t iSDbuffer[];
362377
extern uint8_t aviHeader[];

appSpecific.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ static void stopRC();
2727
bool updateAppStatus(const char* variable, const char* value, bool fromUser) {
2828
// update vars from browser input
2929
esp_err_t res = ESP_OK;
30+
#ifndef CONFIG_IDF_TARGET_ESP32C3
3031
sensor_t* s = esp_camera_sensor_get();
32+
#endif
3133
int intVal = atoi(value);
3234
float fltVal = atof(value);
3335
if (!strcmp(variable, "custom")) return res;
@@ -500,6 +502,7 @@ void buildAppJsonString(bool filter) {
500502
#endif
501503
p += sprintf(p, "\"sustainId\":\"%u\",", sustainId);
502504
// Extend info
505+
#ifndef CONFIG_IDF_TARGET_ESP32C3
503506
uint8_t cardType = 99; // not MMC
504507
if ((fs::SDMMCFS*)&STORAGE == &SD_MMC) cardType = SD_MMC.cardType();
505508
if (cardType == CARD_NONE) p += sprintf(p, "\"card\":\"%s\",", "NO card");
@@ -516,6 +519,7 @@ void buildAppJsonString(bool filter) {
516519
p += sprintf(p, "\"total_bytes\":\"%s\",", fmtSize(STORAGE.totalBytes()));
517520
}
518521
p += sprintf(p, "\"free_psram\":\"%s\",", fmtSize(ESP.getFreePsram()));
522+
#endif
519523
#if INCLUDE_FTP_HFS
520524
p += sprintf(p, "\"progressBar\":%d,", percentLoaded);
521525
if (percentLoaded == 100) percentLoaded = 0;

audio.cpp

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,8 @@ static void VCactions() {
262262
closeI2S();
263263
prepAudio();
264264
setupFilters();
265-
265+
266+
// enum audioAction defined in appGlobals.h
266267
switch (THIS_ACTION) {
267268
case RECORD_ACTION:
268269
if (micRem) wsAsyncSendText("#M1");
@@ -385,18 +386,26 @@ void setI2Schan(int whichChan) {
385386
}
386387

387388
static void predefPins() {
389+
char audPin[3];
388390
#if defined(I2S_SD)
389-
char micPin[3];
390-
sprintf(micPin, "%d", I2S_SD);
391-
updateStatus("micSdPin", micPin);
392-
sprintf(micPin, "%d", I2S_WS);
393-
updateStatus("micSWsPin", micPin);
394-
sprintf(micPin, "%d", I2S_SCK);
395-
updateStatus("micSckPin", micPin);
391+
sprintf(audPin, "%d", I2S_SD);
392+
updateStatus("micSdPin", audPin);
393+
sprintf(audPin, "%d", I2S_WS);
394+
updateStatus("micSWsPin", audPin);
395+
sprintf(audPin, "%d", I2S_SCK);
396+
updateStatus("micSckPin", audPin);
397+
#endif
398+
#if defined(I2S_BCLK)
399+
sprintf(audPin, "%d", I2S_BCLK);
400+
updateStatus("mampBckIo", audPin);
401+
sprintf(audPin, "%d", I2S_LRCLK);
402+
updateStatus("mampSwsIo", audPin);
403+
sprintf(audPin, "%d", I2S_DIN);
404+
updateStatus("mampSdIo", audPin);
396405
#endif
397406

398407
I2Smic = micSckPin == -1 ? false : true;
399-
408+
400409
#ifdef CONFIG_IDF_TARGET_ESP32S3
401410
MIC_CHAN = I2S_NUM_0;
402411
#endif

camera_pins.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,47 @@
567567
#define I2S_WS 33
568568
#define I2S_SCK 35 // clock
569569

570+
#elif defined(CAMERA_MODEL_DFRobot_ESP32_S3_AI_CAM)
571+
// https://wiki.dfrobot.com/SKU_DFR1154_ESP32_S3_AI_CAM
572+
#define CAM_BOARD "CAMERA_MODEL_DFRobot_ESP32_S3_AI_CAM"
573+
#define PWDN_GPIO_NUM -1
574+
#define RESET_GPIO_NUM -1
575+
#define XCLK_GPIO_NUM 5
576+
#define SIOD_GPIO_NUM 8
577+
#define SIOC_GPIO_NUM 9
578+
579+
#define Y9_GPIO_NUM 4
580+
#define Y8_GPIO_NUM 6
581+
#define Y7_GPIO_NUM 7
582+
#define Y6_GPIO_NUM 14
583+
#define Y5_GPIO_NUM 17
584+
#define Y4_GPIO_NUM 21
585+
#define Y3_GPIO_NUM 18
586+
#define Y2_GPIO_NUM 16
587+
#define VSYNC_GPIO_NUM 1
588+
#define HREF_GPIO_NUM 2
589+
#define PCLK_GPIO_NUM 15
590+
591+
#define LED_GPIO_NUM 3
592+
// IR pin 47
593+
594+
// Define SD Pins
595+
#define SD_MMC_CLK 12 //
596+
#define SD_MMC_CMD 13 // CMD/DI/MOSI
597+
#define SD_MMC_D0 11 // DAT0/D0/MISO
598+
// Chip select pin is GPIO10
599+
600+
// Define Mic Pins
601+
#define I2S_SD 39 // PDM Microphone
602+
#define I2S_WS 38
603+
#define I2S_SCK -1
604+
605+
// Define Amp Pins
606+
#define I2S_BCLK 45 // I2S amp
607+
#define I2S_LRCLK 46
608+
#define I2S_DIN 42
609+
// Gain pin 41, mode pin 40
610+
570611

571612
#elif defined(AUXILIARY)
572613
#define CAM_BOARD "AUXILIARY"

globals.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#ifdef DEV_ONLY
1515
// to compile with -Wall -Werror=all -Wextra
1616
#pragma GCC diagnostic error "-Wformat=2"
17+
#pragma GCC diagnostic ignored "-Wformat-truncation"
1718
#pragma GCC diagnostic ignored "-Wformat-y2k"
1819
#pragma GCC diagnostic ignored "-Wunused-function"
1920
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"

mjpeg2sd.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ char camModel[10];
3838
static int siodGpio = SIOD_GPIO_NUM;
3939
static int siocGpio = SIOC_GPIO_NUM;
4040
size_t maxFrameBuffSize;
41-
framesize_t maxFS = FRAMESIZE_SVGA; // default
4241

4342
// header and reporting info
4443
static uint32_t vidSize; // total video size
@@ -81,6 +80,9 @@ bool stopPlayback = false; // controls if playback allowed
8180
bool timeLapseOn = false;
8281
static bool pirVal = false;
8382

83+
#ifndef CONFIG_IDF_TARGET_ESP32C3
84+
framesize_t maxFS = FRAMESIZE_SVGA; // default
85+
8486
/**************** timers & ISRs ************************/
8587

8688
static void IRAM_ATTR frameISR() {
@@ -1021,3 +1023,12 @@ bool prepCam() {
10211023
debugMemory("prepCam");
10221024
return res;
10231025
}
1026+
1027+
#else
1028+
1029+
// dummies
1030+
void appShutdown() {}
1031+
void OTAprereq() {}
1032+
uint8_t setFPSlookup(uint8_t val) {return 0;}
1033+
1034+
#endif

motionDetect.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ uint8_t* motionJpeg = NULL;
5454
size_t motionJpegLen = 0;
5555
static uint8_t* currBuff = NULL;
5656

57+
#ifndef CONFIG_IDF_TARGET_ESP32C3
58+
5759
/**********************************************************************************/
5860

5961
static bool jpg2rgb(const uint8_t* src, size_t src_len, uint8_t* out, jpg_scale_t scale);
@@ -375,3 +377,10 @@ static bool jpg2rgb(const uint8_t* src, size_t src_len, uint8_t* out, jpg_scale_
375377
if (res != ESP_OK) LOG_WRN("jpg2rgb failure: %s", espErrMsg(res));
376378
return (res == ESP_OK) ? true : false;
377379
}
380+
381+
#else
382+
383+
// dummies
384+
bool isNight(uint8_t nightSwitch) {return false;}
385+
386+
#endif

0 commit comments

Comments
 (0)