# Copy to .env and fill in. Never commit .env - it holds the WiFi password. # Required WIFI_SSID=your-ssid WIFI_PASS=your-password # Optional # Armor plates (armor/). Which team this board belongs to: 0 = team one (red), # 1 = team two (blue). Decides the LED colour and the `team` field in the health # reports, so it is baked in at build time - reflash to switch teams. #ARMOR_TEAM=0 # Armor plates: raw 12-bit ADC level above which a piezo sample counts as a hit # (default 2000, same as the reference firmware). Calibrate from the `peak[...]` # field in the serial status line: idle noise well below, a real tap well above. #ARMOR_THRESHOLD=2000 # Capture resolution: qqvga | qvga | cif | hvga | vga | svga | xga | sxga | uxga #CAM_RES=vga # JPEG quality 0-63, lower is better quality #CAM_QUALITY=12 # Optional adaptive compression ceiling, 0 = fixed (default), else QUALITY..63. # Shed load on sender congestion, restore detail after 15 stable seconds. #CAM_QUALITY_MAX=0 # Stream cap, 0 = uncapped (default), 1-60 = maximum fps. # Paces frame retrieval and UDP delivery; sensor clocks remain unchanged. #CAM_MAX_FPS=0 # OV5640 PLL profile: default (driver timing) | vga30 (VGA ~30.09 fps). # vga30 preserves HTS/VTS: XCLK 20, VCO 610, SYSCLK 61, PCLK 15.25 MHz. # Retune exposure-line limits when switching profiles; keep HTS at default. #CAM_CLOCK_PROFILE=default # Capture frame buffers in PSRAM: 3 (default) or 2 (lower capture queue depth). # Prefer 3 for burst tolerance; 2 showed worse long-run peak frame loss here. #CAM_FB_COUNT=3 # Sensor grayscale effect while retaining hardware JPEG, 0 = colour (default). #CAM_GRAYSCALE=0 # OV5640 AE target bias: 0 (default), -1 (~-1.1 EV), -2 (~-1.9 EV). # This target alone does not guarantee a shorter shutter. #CAM_EXPOSURE_EV=0 # Optional OV5640 driver AE level -5..5; requires CAM_EXPOSURE_EV=0. # Unset uses the EV setting. -1 lowers the target 55 -> 45 (~-0.29 EV), # a finer brightness adjustment than CAM_EXPOSURE_EV=-1. AEC/AGC stay on. #CAM_AE_LEVEL=-1 # OV5640 fixed shutter in sensor lines, 0 = automatic (default), AGC stays on. # 220 lines is roughly 10 ms with default VGA HTS 2060; verify timing/logs. #CAM_SHUTTER_LINES=0 # Optional automatic exposure cap in sensor lines, 0 = driver default. # AEC/AGC stay automatic, night frame extension is disabled. Mutually exclusive # with a nonzero fixed shutter. Default VGA: 440 lines is about 20 ms. # With vga30 use 592 lines for about 20 ms, including two 50 Hz AEC bands. #CAM_EXPOSURE_MAX_LINES=0 # OV5640 automatic gain ceiling, 0 = driver default, else 1..63 times. # More gain can brighten short exposures but also amplifies noise. #CAM_GAIN_CEILING=0 # OV5640 horizontal total, 0 = driver default. Even values only; hardware test # required. Changing HTS also changes the time represented by one shutter line. # HTS 1500 / 1800 caused green/magenta flicker on this module; keep 0. #CAM_HTS=0 # Minimum gap between successful video datagrams, 0 = burst (default). # Allowed 0..5000 us in FreeRTOS tick increments (1000 us in this build). #UDP_PACKET_GAP_US=0 # Total yielding-retry allowance per JPEG, shared by all fragments/peers. # 0 = fail on backpressure; default 8000 us, 0..25000 in tick increments. # Frame deadlines remain 25 ms sending / 100 ms since capture start. #UDP_RETRY_BUDGET_US=8000 # Internal ESP chip temperature load limit, Celsius; 0 disables, default 75. # At the limit halve fps (rounded up); restore after cooling by 5 C. # This is a proactive load threshold, not a specified silicon safety limit. #CAM_THERMAL_LIMIT_C=75 # Set to 0 if your board inverts VSYNC in hardware. #CAM_VSYNC_INVERT=1 # Pin the authentication mode instead of trusting the scan: none | wep | wpa | # wpa2 | wpawpa2 | wpa3 | wpa2wpa3 | wapi. Only needed when the scan cannot see # the AP (a hidden SSID, for instance) - otherwise the scan reports the real # mode and this only makes it fail faster. #WIFI_AUTH=wpa2 # Optional maximum Wi-Fi TX power, integer dBm (2..20). Unset keeps SDK default. # Test on your own board/network; higher power does not always improve video. # Current delivery requests 15 dBm; this ESP32-S3 reports a 15.00 dBm cap. # Runtime load control does not lower it; reconnects reapply the same cap. # WIFI_TX_POWER_DBM=15 # Diagnostic builds only: intentionally disconnect once, after N seconds of # the streaming loop, hold offline 5 seconds, then exercise runtime recovery. # Keep 0 (default) for normal firmware; does not change router/TUN settings. #WIFI_TEST_DROP_AFTER_S=0