Initial commit: ESP32-CAM Slave Logic
This commit is contained in:
6
.vscode/arduino.json
vendored
Normal file
6
.vscode/arduino.json
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"configuration": "CPUFreq=240,FlashMode=dio,PartitionScheme=huge_app,FlashFreq=40,DebugLevel=info,EraseFlash=all",
|
||||
"board": "esp32:esp32:esp32cam",
|
||||
"port": "/dev/ttyUSB0",
|
||||
"sketch": "front_door_cam.ino"
|
||||
}
|
||||
449
.vscode/c_cpp_properties.json
vendored
Normal file
449
.vscode/c_cpp_properties.json
vendored
Normal file
@ -0,0 +1,449 @@
|
||||
{
|
||||
"version": 4,
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Arduino",
|
||||
"compilerPath": "/home/sam/.arduino15/packages/esp32/tools/esp-x32/2411/bin/xtensa-esp32-elf-g++",
|
||||
"compilerArgs": [
|
||||
"-MMD",
|
||||
"-w",
|
||||
"-Werror=return-type",
|
||||
"-mfix-esp32-psram-cache-issue",
|
||||
"-mfix-esp32-psram-cache-strategy=memw",
|
||||
"-iprefix"
|
||||
],
|
||||
"intelliSenseMode": "gcc-x64",
|
||||
"includePath": [
|
||||
"/media/sam/8294CD2994CD2111/Users/Dell/Documents/Arduino/front_door_cam",
|
||||
"/home/sam/.arduino15/packages/esp32/tools/esp32-arduino-libs/idf-release_v5.5-129cd0d2-v4/esp32/dio_qspi/include",
|
||||
"/home/sam/.arduino15/packages/esp32/hardware/esp32/3.3.1/cores/esp32",
|
||||
"/home/sam/.arduino15/packages/esp32/hardware/esp32/3.3.1/variants/esp32",
|
||||
"/home/sam/.arduino15/packages/esp32/tools/esp-x32/2411/xtensa-esp-elf/include/c++/14.2.0",
|
||||
"/home/sam/.arduino15/packages/esp32/tools/esp-x32/2411/xtensa-esp-elf/include/c++/14.2.0/xtensa-esp-elf/esp32",
|
||||
"/home/sam/.arduino15/packages/esp32/tools/esp-x32/2411/xtensa-esp-elf/include/c++/14.2.0/backward",
|
||||
"/home/sam/.arduino15/packages/esp32/tools/esp-x32/2411/lib/gcc/xtensa-esp-elf/14.2.0/include",
|
||||
"/home/sam/.arduino15/packages/esp32/tools/esp-x32/2411/lib/gcc/xtensa-esp-elf/14.2.0/include-fixed",
|
||||
"/home/sam/.arduino15/packages/esp32/tools/esp-x32/2411/xtensa-esp-elf/include"
|
||||
],
|
||||
"forcedInclude": [
|
||||
"/home/sam/.arduino15/packages/esp32/hardware/esp32/3.3.1/cores/esp32/Arduino.h"
|
||||
],
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "c++11",
|
||||
"defines": [
|
||||
"F_CPU=240000000L",
|
||||
"ARDUINO=10607",
|
||||
"ARDUINO_ESP32_DEV",
|
||||
"ARDUINO_ARCH_ESP32",
|
||||
"ARDUINO_BOARD=\"ESP32_DEV\"",
|
||||
"ARDUINO_VARIANT=\"esp32\"",
|
||||
"ARDUINO_PARTITION_huge_app",
|
||||
"ARDUINO_HOST_OS=\"linux\"",
|
||||
"ARDUINO_FQBN=\"esp32:esp32:esp32cam:CPUFreq=240,FlashMode=dio,PartitionScheme=huge_app,FlashFreq=40,DebugLevel=info,EraseFlash=all\"",
|
||||
"ESP32=ESP32",
|
||||
"CORE_DEBUG_LEVEL=3",
|
||||
"BOARD_HAS_PSRAM",
|
||||
"ARDUINO_USB_CDC_ON_BOOT=0",
|
||||
"__DBL_MIN_EXP__=(-1021)",
|
||||
"__XCHAL_HAVE_FP=1",
|
||||
"__cpp_nontype_template_parameter_auto=201606L",
|
||||
"__UINT_LEAST16_MAX__=0xffff",
|
||||
"__ATOMIC_ACQUIRE=2",
|
||||
"__FLT_MIN__=1.1754943508222875e-38F",
|
||||
"__GCC_IEC_559_COMPLEX=0",
|
||||
"__XCHAL_HAVE_PREDICTED_BRANCHES=0",
|
||||
"__cpp_aggregate_nsdmi=201304L",
|
||||
"__UINT_LEAST8_TYPE__=unsigned char",
|
||||
"__INTMAX_C(c)=c ## LL",
|
||||
"__XCHAL_HAVE_ADDX=1",
|
||||
"__CHAR_BIT__=8",
|
||||
"__XCHAL_DCACHE_LINESIZE=16",
|
||||
"__XTENSA_MARCH_EARLIEST=260003",
|
||||
"__XCHAL_DCACHE_LINEWIDTH=4",
|
||||
"__UINT8_MAX__=0xff",
|
||||
"__WINT_MAX__=0xffffffffU",
|
||||
"__FLT32_MIN_EXP__=(-125)",
|
||||
"__cpp_static_assert=201411L",
|
||||
"__ORDER_LITTLE_ENDIAN__=1234",
|
||||
"__SIZE_MAX__=0xffffffffU",
|
||||
"__WCHAR_MAX__=0xffff",
|
||||
"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1",
|
||||
"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1",
|
||||
"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1",
|
||||
"__DBL_DENORM_MIN__=double(4.9406564584124654e-324L)",
|
||||
"__GCC_ATOMIC_CHAR_LOCK_FREE=2",
|
||||
"__GCC_IEC_559=0",
|
||||
"__FLT32X_DECIMAL_DIG__=17",
|
||||
"__FLT_EVAL_METHOD__=0",
|
||||
"__cpp_binary_literals=201304L",
|
||||
"__FLT64_DECIMAL_DIG__=17",
|
||||
"__cpp_noexcept_function_type=201510L",
|
||||
"__GCC_ATOMIC_CHAR32_T_LOCK_FREE=2",
|
||||
"__cpp_variadic_templates=200704L",
|
||||
"__UINT_FAST64_MAX__=0xffffffffffffffffULL",
|
||||
"__SIG_ATOMIC_TYPE__=int",
|
||||
"__DBL_MIN_10_EXP__=(-307)",
|
||||
"__FINITE_MATH_ONLY__=0",
|
||||
"__cpp_variable_templates=201304L",
|
||||
"__XCHAL_HAVE_L32R=1",
|
||||
"__FLT32X_MAX_EXP__=1024",
|
||||
"__GNUC_PATCHLEVEL__=0",
|
||||
"__FLT32_HAS_DENORM__=1",
|
||||
"__UINT_FAST8_MAX__=0xffffffffU",
|
||||
"__cpp_rvalue_reference=200610L",
|
||||
"__XCHAL_HAVE_LOOPS=1",
|
||||
"__cpp_nested_namespace_definitions=201411L",
|
||||
"__XCHAL_DEBUGLEVEL=6",
|
||||
"__INT8_C(c)=c",
|
||||
"__XCHAL_HAVE_DFP_RECIP=0",
|
||||
"__INT_LEAST8_WIDTH__=8",
|
||||
"__cpp_variadic_using=201611L",
|
||||
"__UINT_LEAST64_MAX__=0xffffffffffffffffULL",
|
||||
"__INT_LEAST8_MAX__=0x7f",
|
||||
"__cpp_attributes=200809L",
|
||||
"__cpp_capture_star_this=201603L",
|
||||
"__SHRT_MAX__=0x7fff",
|
||||
"__LDBL_MAX__=1.7976931348623157e+308L",
|
||||
"__cpp_if_constexpr=201606L",
|
||||
"__XCHAL_ICACHE_LINESIZE=16",
|
||||
"__LDBL_IS_IEC_60559__=1",
|
||||
"__UINT_LEAST8_MAX__=0xff",
|
||||
"__GCC_ATOMIC_BOOL_LOCK_FREE=2",
|
||||
"__UINTMAX_TYPE__=long long unsigned int",
|
||||
"__cpp_nsdmi=200809L",
|
||||
"__FLT_EVAL_METHOD_TS_18661_3__=0",
|
||||
"__UINT32_MAX__=0xffffffffUL",
|
||||
"__GXX_EXPERIMENTAL_CXX0X__=1",
|
||||
"__LDBL_MAX_EXP__=1024",
|
||||
"__WINT_MIN__=0U",
|
||||
"__FLT32X_IS_IEC_60559__=1",
|
||||
"__XCHAL_HAVE_THREADPTR=1",
|
||||
"__INT_LEAST16_WIDTH__=16",
|
||||
"__SCHAR_MAX__=0x7f",
|
||||
"__WCHAR_MIN__=0",
|
||||
"__XCHAL_ICACHE_LINEWIDTH=4",
|
||||
"__INT64_C(c)=c ## LL",
|
||||
"__GCC_ATOMIC_POINTER_LOCK_FREE=2",
|
||||
"__ATOMIC_SEQ_CST=5",
|
||||
"__SIZEOF_INT__=4",
|
||||
"__FLT32X_MANT_DIG__=53",
|
||||
"__GCC_ATOMIC_CHAR16_T_LOCK_FREE=2",
|
||||
"__cpp_aligned_new=201606L",
|
||||
"__XCHAL_HAVE_FP_RECIP=1",
|
||||
"__FLT32_MAX_10_EXP__=38",
|
||||
"__STDC_HOSTED__=1",
|
||||
"__XCHAL_HAVE_MUL32=1",
|
||||
"__XTENSA_EL__=1",
|
||||
"__cpp_decltype_auto=201304L",
|
||||
"__DBL_DIG__=15",
|
||||
"__XCHAL_HAVE_MUL16=1",
|
||||
"__FLT_EPSILON__=1.1920928955078125e-7F",
|
||||
"__GXX_WEAK__=1",
|
||||
"__SHRT_WIDTH__=16",
|
||||
"__FLT32_IS_IEC_60559__=1",
|
||||
"__LDBL_MIN__=2.2250738585072014e-308L",
|
||||
"__DBL_IS_IEC_60559__=1",
|
||||
"__cpp_threadsafe_static_init=200806L",
|
||||
"__cpp_enumerator_attributes=201411L",
|
||||
"__XCHAL_HAVE_MMU=0",
|
||||
"__FLT32X_HAS_INFINITY__=1",
|
||||
"__INT32_MAX__=0x7fffffffL",
|
||||
"__XCHAL_HAVE_DIV32=1",
|
||||
"__INT_WIDTH__=32",
|
||||
"__XTENSA_MARCH_LATEST=260003",
|
||||
"__DECIMAL_DIG__=17",
|
||||
"__FLT64_EPSILON__=2.2204460492503131e-16F64",
|
||||
"__INT16_MAX__=0x7fff",
|
||||
"__FLT64_MIN_EXP__=(-1021)",
|
||||
"__XCHAL_DCACHE_SIZE=0",
|
||||
"__LDBL_HAS_QUIET_NAN__=1",
|
||||
"__cpp_return_type_deduction=201304L",
|
||||
"__XCHAL_HAVE_BOOLEANS=1",
|
||||
"__FLT64_MANT_DIG__=53",
|
||||
"__XTHAL_ABI_WINDOWED=0",
|
||||
"__GNUC__=14",
|
||||
"__GXX_RTTI=1",
|
||||
"__FLT_HAS_DENORM__=1",
|
||||
"__SIZEOF_LONG_DOUBLE__=8",
|
||||
"__XCHAL_HAVE_CONST16=0",
|
||||
"__BIGGEST_ALIGNMENT__=16",
|
||||
"__STDC_UTF_16__=1",
|
||||
"__FLT64_MAX_10_EXP__=308",
|
||||
"__cpp_delegating_constructors=200604L",
|
||||
"__DBL_MAX__=double(1.7976931348623157e+308L)",
|
||||
"__cpp_raw_strings=200710L",
|
||||
"__INT_FAST32_MAX__=0x7fffffff",
|
||||
"__DBL_HAS_INFINITY__=1",
|
||||
"__cpp_deduction_guides=201703L",
|
||||
"__HAVE_SPECULATION_SAFE_VALUE=1",
|
||||
"__cpp_fold_expressions=201603L",
|
||||
"__INTPTR_WIDTH__=32",
|
||||
"__UINT_LEAST32_MAX__=0xffffffffUL",
|
||||
"__FLT32X_HAS_DENORM__=1",
|
||||
"__INT_FAST16_TYPE__=int",
|
||||
"__XCHAL_HAVE_RELEASE_SYNC=1",
|
||||
"__LDBL_HAS_DENORM__=1",
|
||||
"__cplusplus=201703L",
|
||||
"__cpp_ref_qualifiers=200710L",
|
||||
"__INT_LEAST32_MAX__=0x7fffffffL",
|
||||
"__DEPRECATED=1",
|
||||
"__cpp_rvalue_references=200610L",
|
||||
"__DBL_MAX_EXP__=1024",
|
||||
"__WCHAR_WIDTH__=16",
|
||||
"__FLT32_MAX__=3.4028234663852886e+38F32",
|
||||
"__GCC_ATOMIC_LONG_LOCK_FREE=2",
|
||||
"__PTRDIFF_MAX__=0x7fffffff",
|
||||
"__FLT32_HAS_QUIET_NAN__=1",
|
||||
"__GNUG__=14",
|
||||
"__LONG_LONG_MAX__=0x7fffffffffffffffLL",
|
||||
"__SIZEOF_SIZE_T__=4",
|
||||
"__SIZEOF_WINT_T__=4",
|
||||
"__FLT32X_DIG__=15",
|
||||
"__LONG_LONG_WIDTH__=64",
|
||||
"__cpp_initializer_lists=200806L",
|
||||
"__FLT32_MAX_EXP__=128",
|
||||
"__XCHAL_HAVE_MINMAX=1",
|
||||
"__cpp_hex_float=201603L",
|
||||
"__XCHAL_NUM_IBREAK=2",
|
||||
"__GXX_ABI_VERSION=1019",
|
||||
"__FLT_MIN_EXP__=(-125)",
|
||||
"__cpp_lambdas=200907L",
|
||||
"__INT_FAST64_TYPE__=long long int",
|
||||
"__FP_FAST_FMAF=1",
|
||||
"__FLT64_DENORM_MIN__=4.9406564584124654e-324F64",
|
||||
"__DBL_MIN__=double(2.2250738585072014e-308L)",
|
||||
"__SIZEOF_POINTER__=4",
|
||||
"__DBL_HAS_QUIET_NAN__=1",
|
||||
"__FLT32X_EPSILON__=2.2204460492503131e-16F32x",
|
||||
"__XSHAL_HAVE_TEXT_SECTION_LITERALS=1",
|
||||
"__FLT64_MIN_10_EXP__=(-307)",
|
||||
"__REGISTER_PREFIX__",
|
||||
"__UINT16_MAX__=0xffff",
|
||||
"__XSHAL_USE_ABSOLUTE_LITERALS=0",
|
||||
"__LDBL_HAS_INFINITY__=1",
|
||||
"__FLT32_MIN__=1.1754943508222875e-38F32",
|
||||
"__UINT8_TYPE__=unsigned char",
|
||||
"__FLT_DIG__=6",
|
||||
"__NO_INLINE__=1",
|
||||
"__DEC_EVAL_METHOD__=2",
|
||||
"__FLT_MANT_DIG__=24",
|
||||
"__LDBL_DECIMAL_DIG__=17",
|
||||
"__VERSION__=\"14.2.0\"",
|
||||
"__UINT64_C(c)=c ## ULL",
|
||||
"__XCHAL_NUM_AREGS=64",
|
||||
"__cpp_unicode_characters=201411L",
|
||||
"__XCHAL_HAVE_XEA3=0",
|
||||
"__GCC_ATOMIC_INT_LOCK_FREE=2",
|
||||
"__XCHAL_HAVE_DENSITY=1",
|
||||
"__FLT32_MANT_DIG__=24",
|
||||
"__FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__",
|
||||
"__XCHAL_HAVE_CLAMPS=0",
|
||||
"__XCHAL_HAVE_DFP_RSQRT=0",
|
||||
"__cpp_aggregate_bases=201603L",
|
||||
"__XCHAL_HAVE_NSA=1",
|
||||
"__XCHAL_HAVE_WINDOWED=1",
|
||||
"__SCHAR_WIDTH__=8",
|
||||
"__INT32_C(c)=c ## L",
|
||||
"__ORDER_PDP_ENDIAN__=3412",
|
||||
"__INT_FAST32_TYPE__=int",
|
||||
"__UINT_LEAST16_TYPE__=short unsigned int",
|
||||
"__DBL_HAS_DENORM__=1",
|
||||
"__XCHAL_HAVE_DEBUG=1",
|
||||
"__cpp_rtti=199711L",
|
||||
"__SIZE_TYPE__=unsigned int",
|
||||
"__UINT64_MAX__=0xffffffffffffffffULL",
|
||||
"__FLT_IS_IEC_60559__=1",
|
||||
"__GNUC_WIDE_EXECUTION_CHARSET_NAME=\"UTF-16LE\"",
|
||||
"__INT8_TYPE__=signed char",
|
||||
"__cpp_digit_separators=201309L",
|
||||
"__ELF__=1",
|
||||
"__XSHAL_ABI=0",
|
||||
"__xtensa__=1",
|
||||
"__FLT_RADIX__=2",
|
||||
"__INT_LEAST16_TYPE__=short int",
|
||||
"__LDBL_EPSILON__=2.2204460492503131e-16L",
|
||||
"__UINTMAX_C(c)=c ## ULL",
|
||||
"__FLT32X_MIN__=2.2250738585072014e-308F32x",
|
||||
"__XCHAL_HAVE_DFP_SQRT=0",
|
||||
"__SIG_ATOMIC_MAX__=0x7fffffff",
|
||||
"__XCHAL_HAVE_MAC16=1",
|
||||
"__GCC_ATOMIC_WCHAR_T_LOCK_FREE=2",
|
||||
"__USER_LABEL_PREFIX__",
|
||||
"__SIZEOF_PTRDIFF_T__=4",
|
||||
"__XCHAL_MMU_MIN_PTE_PAGE_SIZE=1",
|
||||
"__XCHAL_DCACHE_IS_WRITEBACK=0",
|
||||
"__SIZEOF_LONG__=4",
|
||||
"__LDBL_DIG__=15",
|
||||
"__FLT64_IS_IEC_60559__=1",
|
||||
"__XCHAL_MAX_INSTRUCTION_SIZE=3",
|
||||
"__FLT32X_MIN_EXP__=(-1021)",
|
||||
"__INT_FAST16_MAX__=0x7fffffff",
|
||||
"__GCC_CONSTRUCTIVE_SIZE=32",
|
||||
"__FLT64_DIG__=15",
|
||||
"__UINT_FAST32_MAX__=0xffffffffU",
|
||||
"__UINT_LEAST64_TYPE__=long long unsigned int",
|
||||
"__FLT_HAS_QUIET_NAN__=1",
|
||||
"__FLT_MAX_10_EXP__=38",
|
||||
"__FLT_HAS_INFINITY__=1",
|
||||
"__GNUC_EXECUTION_CHARSET_NAME=\"UTF-8\"",
|
||||
"__CHAR_UNSIGNED__=1",
|
||||
"__cpp_unicode_literals=200710L",
|
||||
"__UINT_FAST16_TYPE__=unsigned int",
|
||||
"__INT_FAST32_WIDTH__=32",
|
||||
"__CHAR16_TYPE__=short unsigned int",
|
||||
"__PRAGMA_REDEFINE_EXTNAME=1",
|
||||
"__SIZE_WIDTH__=32",
|
||||
"__INT_LEAST16_MAX__=0x7fff",
|
||||
"__INT64_MAX__=0x7fffffffffffffffLL",
|
||||
"__FLT32_DENORM_MIN__=1.4012984643248171e-45F32",
|
||||
"__SIG_ATOMIC_WIDTH__=32",
|
||||
"__INT_LEAST64_TYPE__=long long int",
|
||||
"__INT16_TYPE__=short int",
|
||||
"__INT_LEAST8_TYPE__=signed char",
|
||||
"__cpp_structured_bindings=201606L",
|
||||
"__INT_FAST8_MAX__=0x7fffffff",
|
||||
"__INTPTR_MAX__=0x7fffffff",
|
||||
"__cpp_sized_deallocation=201309L",
|
||||
"__cpp_guaranteed_copy_elision=201606L",
|
||||
"__FLT64_HAS_QUIET_NAN__=1",
|
||||
"__FLT32_MIN_10_EXP__=(-37)",
|
||||
"__EXCEPTIONS=1",
|
||||
"__UINT16_C(c)=c",
|
||||
"__XCHAL_M_STAGE=3",
|
||||
"__PTRDIFF_WIDTH__=32",
|
||||
"__LDBL_MANT_DIG__=53",
|
||||
"__cpp_range_based_for=201603L",
|
||||
"__FLT64_HAS_INFINITY__=1",
|
||||
"__STDCPP_DEFAULT_NEW_ALIGNMENT__=8",
|
||||
"__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)",
|
||||
"__XCHAL_ICACHE_SIZE=0",
|
||||
"__cpp_nontype_template_args=201411L",
|
||||
"__INTPTR_TYPE__=int",
|
||||
"__UINT16_TYPE__=short unsigned int",
|
||||
"__WCHAR_TYPE__=short unsigned int",
|
||||
"__XCHAL_HAVE_DEPBITS=0",
|
||||
"__SIZEOF_FLOAT__=4",
|
||||
"__UINTPTR_MAX__=0xffffffffU",
|
||||
"__INT_FAST64_WIDTH__=64",
|
||||
"__cpp_decltype=200707L",
|
||||
"__FLT32_DECIMAL_DIG__=9",
|
||||
"__INT_FAST64_MAX__=0x7fffffffffffffffLL",
|
||||
"__GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1",
|
||||
"__FLT_NORM_MAX__=3.4028234663852886e+38F",
|
||||
"__XCHAL_HAVE_DFP=0",
|
||||
"__FLT32_HAS_INFINITY__=1",
|
||||
"__UINT_FAST64_TYPE__=long long unsigned int",
|
||||
"__cpp_inline_variables=201606L",
|
||||
"__INT_MAX__=0x7fffffff",
|
||||
"__XCHAL_HAVE_EXCLUSIVE=0",
|
||||
"__STDCPP_THREADS__=1",
|
||||
"__INT64_TYPE__=long long int",
|
||||
"__XCHAL_HAVE_DFP_DIV=0",
|
||||
"__FLT_MAX_EXP__=128",
|
||||
"__XCHAL_INST_FETCH_WIDTH=4",
|
||||
"__DBL_MANT_DIG__=53",
|
||||
"__cpp_inheriting_constructors=201511L",
|
||||
"__INT_LEAST64_MAX__=0x7fffffffffffffffLL",
|
||||
"__FP_FAST_FMAF32=1",
|
||||
"__WINT_TYPE__=unsigned int",
|
||||
"__UINT_LEAST32_TYPE__=long unsigned int",
|
||||
"__SIZEOF_SHORT__=2",
|
||||
"__FLT32_NORM_MAX__=3.4028234663852886e+38F32",
|
||||
"__LDBL_MIN_EXP__=(-1021)",
|
||||
"__XCHAL_HAVE_S32C1I=1",
|
||||
"__FLT64_MAX__=1.7976931348623157e+308F64",
|
||||
"__WINT_WIDTH__=32",
|
||||
"__cpp_template_auto=201606L",
|
||||
"__INT_LEAST64_WIDTH__=64",
|
||||
"__FLT32X_MAX_10_EXP__=308",
|
||||
"__cpp_namespace_attributes=201411L",
|
||||
"__WCHAR_UNSIGNED__=1",
|
||||
"__LDBL_MAX_10_EXP__=308",
|
||||
"__ATOMIC_RELAXED=0",
|
||||
"__DBL_EPSILON__=double(2.2204460492503131e-16L)",
|
||||
"__XCHAL_HAVE_SEXT=1",
|
||||
"__INT_LEAST32_TYPE__=long int",
|
||||
"__XTENSA_WINDOWED_ABI__=1",
|
||||
"__UINT8_C(c)=c",
|
||||
"__FLT64_MAX_EXP__=1024",
|
||||
"__SIZEOF_WCHAR_T__=2",
|
||||
"__XCHAL_HAVE_FP_POSTINC=1",
|
||||
"__FLT64_NORM_MAX__=1.7976931348623157e+308F64",
|
||||
"__INTMAX_MAX__=0x7fffffffffffffffLL",
|
||||
"__INT_FAST8_TYPE__=int",
|
||||
"__XCHAL_HAVE_MUL32_HIGH=1",
|
||||
"__GNUC_STDC_INLINE__=1",
|
||||
"__FLT64_HAS_DENORM__=1",
|
||||
"__FLT32_EPSILON__=1.1920928955078125e-7F32",
|
||||
"__DBL_DECIMAL_DIG__=17",
|
||||
"__STDC_UTF_32__=1",
|
||||
"__XCHAL_HAVE_FP_DIV=1",
|
||||
"__INT_FAST8_WIDTH__=32",
|
||||
"__FLT32X_MAX__=1.7976931348623157e+308F32x",
|
||||
"__DBL_NORM_MAX__=double(1.7976931348623157e+308L)",
|
||||
"__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__",
|
||||
"__GCC_DESTRUCTIVE_SIZE=32",
|
||||
"__XTENSA__=1",
|
||||
"__INTMAX_WIDTH__=64",
|
||||
"__ORDER_BIG_ENDIAN__=4321",
|
||||
"__XTHAL_ABI_CALL0=1",
|
||||
"__cpp_runtime_arrays=198712L",
|
||||
"__FLT32_DIG__=6",
|
||||
"__UINT64_TYPE__=long long unsigned int",
|
||||
"__UINT32_C(c)=c ## UL",
|
||||
"__cpp_alias_templates=200704L",
|
||||
"__FLT_DENORM_MIN__=1.4012984643248171e-45F",
|
||||
"__INT8_MAX__=0x7f",
|
||||
"__LONG_WIDTH__=32",
|
||||
"__UINT_FAST32_TYPE__=unsigned int",
|
||||
"__FLT32X_NORM_MAX__=1.7976931348623157e+308F32x",
|
||||
"__CHAR32_TYPE__=long unsigned int",
|
||||
"__FLT_MAX__=3.4028234663852886e+38F",
|
||||
"__cpp_constexpr=201603L",
|
||||
"__XCHAL_HAVE_FP_RSQRT=1",
|
||||
"__INT32_TYPE__=long int",
|
||||
"__SIZEOF_DOUBLE__=8",
|
||||
"__cpp_exceptions=199711L",
|
||||
"__FLT_MIN_10_EXP__=(-37)",
|
||||
"__FLT64_MIN__=2.2250738585072014e-308F64",
|
||||
"__INT_LEAST32_WIDTH__=32",
|
||||
"__INTMAX_TYPE__=long long int",
|
||||
"__XCHAL_HAVE_ABS=1",
|
||||
"__FLT32X_HAS_QUIET_NAN__=1",
|
||||
"__ATOMIC_CONSUME=1",
|
||||
"__XCHAL_NUM_DBREAK=2",
|
||||
"__XCHAL_HAVE_WIDE_BRANCHES=0",
|
||||
"__GNUC_MINOR__=2",
|
||||
"__INT_FAST16_WIDTH__=32",
|
||||
"__UINTMAX_MAX__=0xffffffffffffffffULL",
|
||||
"__FLT32X_DENORM_MIN__=4.9406564584124654e-324F32x",
|
||||
"__cpp_template_template_args=201611L",
|
||||
"__DBL_MAX_10_EXP__=308",
|
||||
"__LDBL_DENORM_MIN__=4.9406564584124654e-324L",
|
||||
"__INT16_C(c)=c",
|
||||
"__STDC__=1",
|
||||
"__PTRDIFF_TYPE__=int",
|
||||
"__LONG_MAX__=0x7fffffffL",
|
||||
"__XCHAL_HAVE_FP_SQRT=1",
|
||||
"__UINT32_TYPE__=long unsigned int",
|
||||
"__FLT32X_MIN_10_EXP__=(-307)",
|
||||
"__UINTPTR_TYPE__=unsigned int",
|
||||
"__LDBL_MIN_10_EXP__=(-307)",
|
||||
"__cpp_generic_lambdas=201304L",
|
||||
"__SIZEOF_LONG_LONG__=8",
|
||||
"__cpp_user_defined_literals=200809L",
|
||||
"__GCC_ATOMIC_LLONG_LOCK_FREE=1",
|
||||
"__FLT_DECIMAL_DIG__=9",
|
||||
"__UINT_FAST16_MAX__=0xffffffffU",
|
||||
"__LDBL_NORM_MAX__=1.7976931348623157e+308L",
|
||||
"__GCC_ATOMIC_SHORT_LOCK_FREE=2",
|
||||
"__XCHAL_HAVE_BE=0",
|
||||
"__UINT_FAST8_TYPE__=unsigned int",
|
||||
"__cpp_init_captures=201304L",
|
||||
"__ATOMIC_ACQ_REL=4",
|
||||
"__ATOMIC_RELEASE=3",
|
||||
"USBCON"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
25
README.md
Normal file
25
README.md
Normal file
@ -0,0 +1,25 @@
|
||||
# Front Door Camera (Slave Unit)
|
||||
|
||||
**Hardware:** ESP32-CAM (AI-Thinker Model) with OV2640 Sensor.
|
||||
|
||||
## Role in Project
|
||||
This device acts as a "dumb" sensor for the main Doorbell Controller (ESP32-S3). It handles the specific timing requirements of the camera sensor to ensure clear images without "green tint" or stale buffers.
|
||||
|
||||
## Interface
|
||||
* **Protocol:** UART Serial (TX/RX)
|
||||
* **Baud Rate:** 115200
|
||||
* **Wiring:**
|
||||
* **5V/GND:** Shared with Master
|
||||
* **U0R (RX):** Connected to Master TX (Pin 17)
|
||||
* **U0T (TX):** Connected to Master RX (Pin 18)
|
||||
|
||||
## Logic Flow
|
||||
1. Waits for character **'S'** on Serial.
|
||||
2. **Double-Tap Capture:** Takes one photo and discards it (flushes sensor buffer), then immediately takes a second photo.
|
||||
3. **Transmission:**
|
||||
* Sends Image Size (4 Bytes).
|
||||
* Sends raw JPEG Data.
|
||||
|
||||
## Flashing
|
||||
* **Board:** AI Thinker ESP32-CAM
|
||||
* **Mode:** DIO, 40MHz
|
||||
79
front_door_cam.ino
Normal file
79
front_door_cam.ino
Normal file
@ -0,0 +1,79 @@
|
||||
#include "esp_camera.h"
|
||||
#include "soc/soc.h"
|
||||
#include "soc/rtc_cntl_reg.h"
|
||||
|
||||
// AI-THINKER Pins
|
||||
#define PWDN_GPIO_NUM 32
|
||||
#define RESET_GPIO_NUM -1
|
||||
#define XCLK_GPIO_NUM 0
|
||||
#define SIOD_GPIO_NUM 26
|
||||
#define SIOC_GPIO_NUM 27
|
||||
#define Y9_GPIO_NUM 35
|
||||
#define Y8_GPIO_NUM 34
|
||||
#define Y7_GPIO_NUM 39
|
||||
#define Y6_GPIO_NUM 36
|
||||
#define Y5_GPIO_NUM 21
|
||||
#define Y4_GPIO_NUM 19
|
||||
#define Y3_GPIO_NUM 18
|
||||
#define Y2_GPIO_NUM 5
|
||||
#define VSYNC_GPIO_NUM 25
|
||||
#define HREF_GPIO_NUM 23
|
||||
#define PCLK_GPIO_NUM 22
|
||||
|
||||
void setup() {
|
||||
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);
|
||||
Serial.begin(115200);
|
||||
|
||||
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_VGA;
|
||||
config.jpeg_quality = 10; // Lower number = Higher Quality
|
||||
config.fb_count = 1;
|
||||
|
||||
if (esp_camera_init(&config) != ESP_OK) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (Serial.available()) {
|
||||
char cmd = Serial.read();
|
||||
if (cmd == 'S') { // Snap Command
|
||||
|
||||
// 1. FLUSH SENSOR (The "Double Tap")
|
||||
// We grab a frame and immediately discard it to ensure the sensor
|
||||
// is awake and exposure is calculated for the CURRENT moment.
|
||||
camera_fb_t * fb = esp_camera_fb_get();
|
||||
if(fb) esp_camera_fb_return(fb);
|
||||
|
||||
// 2. REAL CAPTURE
|
||||
fb = esp_camera_fb_get();
|
||||
if (!fb) return;
|
||||
|
||||
// 3. SEND DATA
|
||||
uint32_t len = fb->len;
|
||||
Serial.write((uint8_t*)&len, 4); // Send Length
|
||||
Serial.write(fb->buf, fb->len); // Send Image
|
||||
esp_camera_fb_return(fb);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user