Compare commits

3 Commits
master ... dev

Author SHA1 Message Date
root
3cbe4a3dfd Fix PCB gr_text justify syntax 2026-03-30 12:27:43 -05:00
root
98fa0d84b9 Fix KiCad file syntax - remove invalid comments and add proper property formatting 2026-03-30 12:25:57 -05:00
root
c131a97ac4 Add PoE variant with W5500 Ethernet and 802.3af power
- W5500 SPI Ethernet controller for wired connectivity
- Silvertel Ag9905MT PoE PD module (48V to 5V)
- RJ45 connector with integrated magnetics
- Higher camera resolution (1024x768 vs 800x600) using wired bandwidth
- WiFi fallback if Ethernet disconnected
- Separate BOM, pin mapping, ESPHome config
- 3D-printable enclosure (50x40mm, larger for RJ45)
2026-03-29 13:00:07 -05:00
10 changed files with 15391 additions and 238 deletions

54
poe-variant/BOM.csv Normal file
View File

@@ -0,0 +1,54 @@
Reference,Value,Footprint,JLCPCB_Part,Quantity,Description,Unit_Price_Est
U3,ESP32-S3-WROOM-1-N16R8,RF_Module:ESP32-S3-WROOM-1,C2913202,1,WiFi+BLE MCU 16MB Flash 8MB PSRAM,$2.80
U2,AMS1117-3.3,Package_TO_SOT_SMD:SOT-223-3_TabPin2,C6186,1,3.3V LDO Regulator 1A,$0.08
U4,AP2112K-1.8,Package_TO_SOT_SMD:SOT-23-5,C51118,1,1.8V LDO camera DOVDD,$0.10
U5,AP2112K-2.8,Package_TO_SOT_SMD:SOT-23-5,C51114,1,2.8V LDO camera AVDD,$0.10
U6,SHT41,Sensirion_DFN-4-1EP_1.5x1.5mm,C2911456,1,Temp/Humidity I2C,$1.20
U7,BH1750FVI,Package_SO:WSOF-6_1.4x1.7mm,C78960,1,Ambient Light I2C,$0.50
U8,W5500,Package_QFP:LQFP-48_7x7mm_P0.5mm,C32843,1,SPI Ethernet Controller 10/100,$1.50
U9,Ag9905MT,Module:Silvertel_Ag9905MT,N/A,1,802.3af PoE PD Module 5V/2A,$6.00
J1,RJ45_PoE,Connector_RJ:RJ45_Amphenol_ARJM11C7,C911253,1,RJ45 with magnetics + PoE tabs,$1.20
J2,FPC_24P_OV5640,Connector_FFC-FPC:Molex_503480-2400,C2856805,1,24-pin 0.5mm FPC camera,$0.20
J3,LD2410C,Connector_PinHeader_1.27mm:PinHeader_1x05_P1.27mm,N/A,1,1.27mm header for LD2410C,$0.05
J4,AM312_PIR,Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm,N/A,1,2.54mm header for AM312,$0.03
Y1,25MHz,Oscillator_SMD:Crystal_SMD_3215-2Pin_3.2x1.5mm,C9002,1,25MHz crystal for W5500,$0.10
D1,LED_Blue,LED_SMD:LED_0402_1005Metric,C2286,1,Blue status LED,$0.02
D2,LED_Green,LED_SMD:LED_0402_1005Metric,C2286,1,Green Ethernet link LED,$0.02
D3,LED_Yellow,LED_SMD:LED_0402_1005Metric,C2286,1,Yellow Ethernet activity LED,$0.02
R1,1K,Resistor_SMD:R_0402_1005Metric,C11702,1,Status LED resistor,$0.01
R2,10K,Resistor_SMD:R_0402_1005Metric,C25744,1,PIR pulldown,$0.01
R3,4.7K,Resistor_SMD:R_0402_1005Metric,C25900,1,I2C SDA pull-up,$0.01
R4,4.7K,Resistor_SMD:R_0402_1005Metric,C25900,1,I2C SCL pull-up,$0.01
R5,12.1K,Resistor_SMD:R_0402_1005Metric,C25752,1,W5500 RES pin (sets modes),$0.01
R6,1K,Resistor_SMD:R_0402_1005Metric,C11702,1,Ethernet link LED,$0.01
R7,1K,Resistor_SMD:R_0402_1005Metric,C11702,1,Ethernet activity LED,$0.01
R8,10K,Resistor_SMD:R_0402_1005Metric,C25744,1,W5500 INT pull-up,$0.01
R9,10K,Resistor_SMD:R_0402_1005Metric,C25744,1,W5500 RST pull-up,$0.01
C1,10uF,Capacitor_SMD:C_0805_2012Metric,C15850,1,LDO input,$0.02
C2,22uF,Capacitor_SMD:C_0805_2012Metric,C45783,1,LDO output,$0.03
C3-C5,100nF,Capacitor_SMD:C_0402_1005Metric,C1525,3,ESP32 decoupling,$0.03
C6,10uF,Capacitor_SMD:C_0805_2012Metric,C15850,1,ESP32 bulk,$0.02
C7,10uF,Capacitor_SMD:C_0805_2012Metric,C15850,1,Camera power,$0.02
C8,100nF,Capacitor_SMD:C_0402_1005Metric,C1525,1,Camera decoupling,$0.01
C9,10uF,Capacitor_SMD:C_0805_2012Metric,C15850,1,LD2410C decoupling,$0.02
C10,100nF,Capacitor_SMD:C_0402_1005Metric,C1525,1,SHT41 decoupling,$0.01
C11,100nF,Capacitor_SMD:C_0402_1005Metric,C1525,1,BH1750 decoupling,$0.01
C12-C14,100nF,Capacitor_SMD:C_0402_1005Metric,C1525,3,W5500 decoupling,$0.03
C15,10uF,Capacitor_SMD:C_0805_2012Metric,C15850,1,W5500 bulk,$0.02
C16,22pF,Capacitor_SMD:C_0402_1005Metric,C1555,2,W5500 crystal load,$0.02
C17,10uF,Capacitor_SMD:C_0805_2012Metric,C15850,1,PoE module output,$0.02
C18,100uF,Capacitor_SMD:C_1206_3216Metric,C15008,1,PoE module bulk output,$0.05
SW1,BOOT,Button_Switch_SMD:SW_SPST_PTS810,C116501,1,Boot button,$0.05
SW2,RESET,Button_Switch_SMD:SW_SPST_PTS810,C116501,1,Reset button,$0.05
H1-H2,MountingHole,MountingHole:MountingHole_2.2mm_M2_Pad,N/A,2,M2 mounting,$0.00
,,,,,,
,,,MODULES (plug-in),,,,
MOD1,OV5640,Camera Module 5MP 120° wide-angle,N/A,1,24-pin FPC camera,$3.50
MOD2,HLK-LD2410C,24GHz mmWave Radar Module,N/A,1,Presence radar,$2.50
MOD3,AM312,Mini PIR Sensor Module,N/A,1,PIR sensor,$0.50
,,,,,,
,,,TOTAL PCB COMPONENTS,,~40,~$14.50
,,,TOTAL WITH MODULES,,~43,~$21.00
,,,PCB FABRICATION (5pcs),,,~$8.00
,,,SMD ASSEMBLY (per board),,,~$15.00
,,,TOTAL PER BOARD (assembled),,,"~$44.00"
1 Reference Value Footprint JLCPCB_Part Quantity Description Unit_Price_Est
2 U3 ESP32-S3-WROOM-1-N16R8 RF_Module:ESP32-S3-WROOM-1 C2913202 1 WiFi+BLE MCU 16MB Flash 8MB PSRAM $2.80
3 U2 AMS1117-3.3 Package_TO_SOT_SMD:SOT-223-3_TabPin2 C6186 1 3.3V LDO Regulator 1A $0.08
4 U4 AP2112K-1.8 Package_TO_SOT_SMD:SOT-23-5 C51118 1 1.8V LDO camera DOVDD $0.10
5 U5 AP2112K-2.8 Package_TO_SOT_SMD:SOT-23-5 C51114 1 2.8V LDO camera AVDD $0.10
6 U6 SHT41 Sensirion_DFN-4-1EP_1.5x1.5mm C2911456 1 Temp/Humidity I2C $1.20
7 U7 BH1750FVI Package_SO:WSOF-6_1.4x1.7mm C78960 1 Ambient Light I2C $0.50
8 U8 W5500 Package_QFP:LQFP-48_7x7mm_P0.5mm C32843 1 SPI Ethernet Controller 10/100 $1.50
9 U9 Ag9905MT Module:Silvertel_Ag9905MT N/A 1 802.3af PoE PD Module 5V/2A $6.00
10 J1 RJ45_PoE Connector_RJ:RJ45_Amphenol_ARJM11C7 C911253 1 RJ45 with magnetics + PoE tabs $1.20
11 J2 FPC_24P_OV5640 Connector_FFC-FPC:Molex_503480-2400 C2856805 1 24-pin 0.5mm FPC camera $0.20
12 J3 LD2410C Connector_PinHeader_1.27mm:PinHeader_1x05_P1.27mm N/A 1 1.27mm header for LD2410C $0.05
13 J4 AM312_PIR Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm N/A 1 2.54mm header for AM312 $0.03
14 Y1 25MHz Oscillator_SMD:Crystal_SMD_3215-2Pin_3.2x1.5mm C9002 1 25MHz crystal for W5500 $0.10
15 D1 LED_Blue LED_SMD:LED_0402_1005Metric C2286 1 Blue status LED $0.02
16 D2 LED_Green LED_SMD:LED_0402_1005Metric C2286 1 Green Ethernet link LED $0.02
17 D3 LED_Yellow LED_SMD:LED_0402_1005Metric C2286 1 Yellow Ethernet activity LED $0.02
18 R1 1K Resistor_SMD:R_0402_1005Metric C11702 1 Status LED resistor $0.01
19 R2 10K Resistor_SMD:R_0402_1005Metric C25744 1 PIR pulldown $0.01
20 R3 4.7K Resistor_SMD:R_0402_1005Metric C25900 1 I2C SDA pull-up $0.01
21 R4 4.7K Resistor_SMD:R_0402_1005Metric C25900 1 I2C SCL pull-up $0.01
22 R5 12.1K Resistor_SMD:R_0402_1005Metric C25752 1 W5500 RES pin (sets modes) $0.01
23 R6 1K Resistor_SMD:R_0402_1005Metric C11702 1 Ethernet link LED $0.01
24 R7 1K Resistor_SMD:R_0402_1005Metric C11702 1 Ethernet activity LED $0.01
25 R8 10K Resistor_SMD:R_0402_1005Metric C25744 1 W5500 INT pull-up $0.01
26 R9 10K Resistor_SMD:R_0402_1005Metric C25744 1 W5500 RST pull-up $0.01
27 C1 10uF Capacitor_SMD:C_0805_2012Metric C15850 1 LDO input $0.02
28 C2 22uF Capacitor_SMD:C_0805_2012Metric C45783 1 LDO output $0.03
29 C3-C5 100nF Capacitor_SMD:C_0402_1005Metric C1525 3 ESP32 decoupling $0.03
30 C6 10uF Capacitor_SMD:C_0805_2012Metric C15850 1 ESP32 bulk $0.02
31 C7 10uF Capacitor_SMD:C_0805_2012Metric C15850 1 Camera power $0.02
32 C8 100nF Capacitor_SMD:C_0402_1005Metric C1525 1 Camera decoupling $0.01
33 C9 10uF Capacitor_SMD:C_0805_2012Metric C15850 1 LD2410C decoupling $0.02
34 C10 100nF Capacitor_SMD:C_0402_1005Metric C1525 1 SHT41 decoupling $0.01
35 C11 100nF Capacitor_SMD:C_0402_1005Metric C1525 1 BH1750 decoupling $0.01
36 C12-C14 100nF Capacitor_SMD:C_0402_1005Metric C1525 3 W5500 decoupling $0.03
37 C15 10uF Capacitor_SMD:C_0805_2012Metric C15850 1 W5500 bulk $0.02
38 C16 22pF Capacitor_SMD:C_0402_1005Metric C1555 2 W5500 crystal load $0.02
39 C17 10uF Capacitor_SMD:C_0805_2012Metric C15850 1 PoE module output $0.02
40 C18 100uF Capacitor_SMD:C_1206_3216Metric C15008 1 PoE module bulk output $0.05
41 SW1 BOOT Button_Switch_SMD:SW_SPST_PTS810 C116501 1 Boot button $0.05
42 SW2 RESET Button_Switch_SMD:SW_SPST_PTS810 C116501 1 Reset button $0.05
43 H1-H2 MountingHole MountingHole:MountingHole_2.2mm_M2_Pad N/A 2 M2 mounting $0.00
44
45 MODULES (plug-in)
46 MOD1 OV5640 Camera Module 5MP 120° wide-angle N/A 1 24-pin FPC camera $3.50
47 MOD2 HLK-LD2410C 24GHz mmWave Radar Module N/A 1 Presence radar $2.50
48 MOD3 AM312 Mini PIR Sensor Module N/A 1 PIR sensor $0.50
49
50 TOTAL PCB COMPONENTS ~40 ~$14.50
51 TOTAL WITH MODULES ~43 ~$21.00
52 PCB FABRICATION (5pcs) ~$8.00
53 SMD ASSEMBLY (per board) ~$15.00
54 TOTAL PER BOARD (assembled) ~$44.00

109
poe-variant/DESIGN.md Normal file
View File

@@ -0,0 +1,109 @@
# Presence Sensor - PoE Variant
Same sensors as the USB-C version, but powered and networked via Power over Ethernet (802.3af).
## Key Differences from USB-C Version
| Feature | USB-C Version | PoE Version |
|---------|--------------|-------------|
| Power | USB-C 5V | 802.3af PoE (48V → 5V) |
| Network | WiFi only | Ethernet (wired) + WiFi fallback |
| Connector | USB-C | RJ45 |
| Extra chips | None | W5500 (Ethernet) + AG9905MT (PoE PD) |
| Board size | 45x35mm | 50x40mm (RJ45 is bulky) |
| Reliability | WiFi dependent | Wired, rock-solid |
| Cost | ~$32 | ~$42 |
## Why PoE is Better for Cameras
- **No WiFi congestion** - camera streams are bandwidth-heavy
- **Single cable** - power + data in one Ethernet run
- **More reliable** - no WiFi dropouts
- **Centralized power** - PoE switch manages all device power
- **Remote reboot** - cycle PoE port to hard-reset device
## New Components
### W5500 Ethernet Controller
- SPI interface to ESP32-S3
- 10/100 Mbps Ethernet
- Hardware TCP/IP stack (offloads ESP32)
- QFP-48 package (7x7mm)
- JLCPCB: C32843
### RJ45 with Integrated Magnetics + PoE
- HR911105A or equivalent
- Includes PoE center-tap connections
- Through-hole (adds height but very robust)
### PoE PD Module - Silvertel Ag9905MT
- IEEE 802.3af compliant (up to 13W)
- 48V input → 5V/2A output
- Tiny module: 16.5x14.5mm
- Isolated, protected
- Alternative: AG9905M-R or TI TPS2376 discrete
### 25MHz Crystal Oscillator
- Required by W5500
- 3.2x2.5mm SMD package
## GPIO Changes for PoE Variant
| GPIO | USB-C Version | PoE Version |
|------|--------------|-------------|
| GPIO19 | USB D- | **Free** (no USB) |
| GPIO20 | USB D+ | **Free** (no USB) |
| GPIO33 | Free | **W5500 SPI MISO** |
| GPIO34 | Free | **W5500 SPI MOSI** |
| GPIO35 | Free | **W5500 SPI SCK** |
| GPIO36 | Free | **W5500 SPI CS** |
| GPIO37 | Free | **W5500 INT** |
| GPIO42 | Free | **W5500 RST** |
Camera, mmWave, PIR, I2C sensors - all unchanged.
## Power Path
```
PoE Switch (48V)
RJ45 Connector (center-taps)
Ag9905MT PoE PD Module
│ (48V → 5V isolated)
5V Rail ──→ LD2410C (direct)
AMS1117-3.3
3.3V Rail ──→ ESP32-S3, W5500, sensors, camera LDOs
```
## Power Budget (PoE)
| Component | Voltage | Current |
|-----------|---------|---------|
| ESP32-S3 | 3.3V | 240mA |
| W5500 | 3.3V | 132mA |
| OV5640 | 2.8V+1.8V | 140mA |
| LD2410C | 5V | 60mA |
| AM312 + SHT41 + BH1750 | 3.3V | 3mA |
| Ag9905MT overhead | - | ~50mA |
| **Total from PoE** | 48V | **~180mA @ 48V (~8.6W)** |
Well within 802.3af's 12.95W limit.
## Board Layout Notes
- RJ45 connector at bottom (cable exits down for wall mount)
- Ag9905MT module near RJ45 (short high-voltage traces)
- W5500 between RJ45 and ESP32 (short SPI traces)
- Camera at top (unchanged)
- mmWave on right (unchanged)
- PIR on left (unchanged)
- Sensors on left edge (unchanged)
- Board slightly larger: 50x40mm to accommodate RJ45 jack height

View File

@@ -0,0 +1,59 @@
# ESP32-S3 Pin Mapping - PoE Presence Sensor
## GPIO Assignments
| GPIO | Function | Peripheral | Direction | Notes |
|------|----------|-----------|-----------|-------|
| GPIO0 | BOOT button | - | Input | Pull-up, hold low for bootloader |
| GPIO1 | Camera D0 | OV5640 DVP | Input | Camera data bus |
| GPIO2 | Camera D1 | OV5640 DVP | Input | Camera data bus |
| GPIO3 | I2C SDA | SHT41 + BH1750 | Bidir | 4.7K pull-up |
| GPIO4 | I2C SCL | SHT41 + BH1750 | Bidir | 4.7K pull-up |
| GPIO5 | Camera D2 | OV5640 DVP | Input | Camera data bus |
| GPIO6 | Camera D3 | OV5640 DVP | Input | Camera data bus |
| GPIO7 | Camera D4 | OV5640 DVP | Input | Camera data bus |
| GPIO8 | Camera D5 | OV5640 DVP | Input | Camera data bus |
| GPIO9 | Camera D6 | OV5640 DVP | Input | Camera data bus |
| GPIO10 | Camera D7 | OV5640 DVP | Input | Camera data bus |
| GPIO11 | Camera XCLK | OV5640 | Output | 20MHz LEDC |
| GPIO12 | Camera PCLK | OV5640 | Input | Pixel clock |
| GPIO13 | Camera VSYNC | OV5640 | Input | Vertical sync |
| GPIO14 | Camera HREF | OV5640 | Input | Horizontal ref |
| GPIO15 | Camera SIOD | OV5640 SCCB | Bidir | Camera I2C data |
| GPIO16 | Camera SIOC | OV5640 SCCB | Output | Camera I2C clock |
| GPIO17 | mmWave UART TX | LD2410C RX | Output | 256000 baud |
| GPIO18 | mmWave UART RX | LD2410C TX | Input | 256000 baud |
| GPIO19 | Free | - | - | (was USB D-) |
| GPIO20 | Free | - | - | (was USB D+) |
| GPIO21 | Camera PWDN | OV5640 | Output | Power down |
| GPIO33 | W5500 SPI MISO | Ethernet | Input | SPI data in |
| GPIO34 | W5500 SPI MOSI | Ethernet | Output | SPI data out |
| GPIO35 | W5500 SPI SCK | Ethernet | Output | SPI clock (25MHz max) |
| GPIO36 | W5500 SPI CS | Ethernet | Output | SPI chip select |
| GPIO37 | W5500 INT | Ethernet | Input | Interrupt (active low) |
| GPIO38 | PIR output | AM312 | Input | Motion detect |
| GPIO39 | mmWave OUT | LD2410C | Input | Presence output |
| GPIO40 | Status LED | Blue LED | Output | Via 1K resistor |
| GPIO41 | Camera RESET | OV5640 | Output | Active low |
| GPIO42 | W5500 RST | Ethernet | Output | Active low |
## SPI Bus (GPIO33-36) - W5500 Ethernet
| Signal | GPIO | W5500 Pin |
|--------|------|-----------|
| MISO | GPIO33 | SO |
| MOSI | GPIO34 | SI |
| SCK | GPIO35 | SCLK |
| CS | GPIO36 | SCSn |
| INT | GPIO37 | INTn |
| RST | GPIO42 | RSTn |
## I2C Bus (GPIO3/GPIO4) - Sensors
| Device | Address | Function |
|--------|---------|----------|
| SHT41 | 0x44 | Temperature + Humidity |
| BH1750 | 0x23 | Ambient Light |
## UART1 (GPIO17/GPIO18) - Radar
| Device | Baud | Function |
|--------|------|----------|
| LD2410C | 256000 | mmWave presence |

12532
poe-variant/body-poe.stl Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,133 @@
// ============================================
// Presence Sensor PoE - Wall-Mount Enclosure
// Board: 50 x 40 mm (larger for RJ45 + PoE module)
// ============================================
pcb_w = 50;
pcb_h = 40;
pcb_t = 1.6;
wall = 1.8;
tolerance = 0.3;
bottom_gap = 3;
top_gap = 14; // Extra height for RJ45 jack
lid_lip = 1.5;
inner_w = pcb_w + tolerance * 2;
inner_h = pcb_h + tolerance * 2;
inner_d = bottom_gap + pcb_t + top_gap;
outer_w = inner_w + wall * 2;
outer_h = inner_h + wall * 2;
outer_d = inner_d + wall;
post_d = 4.5;
screw_d = 2.2;
post_h = bottom_gap;
// Component windows
cam_hole_w = 10;
cam_hole_h = 10;
pir_hole_d = 10;
light_hole_d = 4;
rj45_w = 16;
rj45_h = 14;
module rounded_box(w, h, d, r) {
hull() {
translate([r, r, 0]) cylinder(h=d, r=r, $fn=20);
translate([w-r, r, 0]) cylinder(h=d, r=r, $fn=20);
translate([r, h-r, 0]) cylinder(h=d, r=r, $fn=20);
translate([w-r, h-r, 0]) cylinder(h=d, r=r, $fn=20);
}
}
module wall_mount_keyhole() {
cylinder(h=wall+2, d=7, $fn=24);
translate([0, -5, 0])
hull() {
cylinder(h=wall+2, d=4, $fn=24);
translate([0, 5, 0]) cylinder(h=wall+2, d=4, $fn=24);
}
}
module body() {
difference() {
rounded_box(outer_w, outer_h, outer_d, 3);
translate([wall, wall, wall])
rounded_box(inner_w, inner_h, inner_d + 1, 2);
// Camera window (top center)
translate([wall + tolerance + pcb_w/2 - cam_hole_w/2,
wall + tolerance + pcb_h - 7,
-1])
rounded_box(cam_hole_w, cam_hole_h, wall + 2, 2);
// PIR window (left)
translate([wall + tolerance + 12,
wall + tolerance + pcb_h - 22,
-1])
cylinder(h=wall+2, d=pir_hole_d, $fn=32);
// Light sensor window
translate([wall + tolerance + 24,
wall + tolerance + pcb_h - 22,
-1])
cylinder(h=wall+2, d=light_hole_d, $fn=32);
// RJ45 cutout (bottom edge)
translate([wall + tolerance + pcb_w/2 - rj45_w/2,
-1,
wall + bottom_gap - 1])
cube([rj45_w, wall + 2, rj45_h]);
// Ventilation slots (sides)
for (i = [0:3]) {
translate([-1, wall + 5 + i * 10, wall + bottom_gap + pcb_t + 2])
cube([wall + 2, 8, 1.5]);
translate([outer_w - wall - 1, wall + 5 + i * 10, wall + bottom_gap + pcb_t + 2])
cube([wall + 2, 8, 1.5]);
}
// mmWave slot (back)
translate([wall + tolerance + pcb_w - 10,
wall + tolerance + 5,
outer_d - wall - 0.5])
rounded_box(8, 36, wall + 1, 1);
// Wall mount keyholes (back)
translate([outer_w/2, outer_h * 0.3, outer_d - wall - 1])
wall_mount_keyhole();
translate([outer_w/2, outer_h * 0.7, outer_d - wall - 1])
wall_mount_keyhole();
}
// PCB support posts
for (pos = [[wall + tolerance + 2.5, wall + tolerance + 2.5],
[wall + tolerance + pcb_w - 2.5, wall + tolerance + 2.5],
[wall + tolerance + 2.5, wall + tolerance + pcb_h - 2.5],
[wall + tolerance + pcb_w - 2.5, wall + tolerance + pcb_h - 2.5]]) {
translate([pos[0], pos[1], wall])
difference() {
cylinder(h=post_h, d=post_d, $fn=20);
cylinder(h=post_h + 1, d=screw_d, $fn=20);
}
}
}
module lid() {
difference() {
union() {
rounded_box(outer_w, outer_h, wall, 3);
translate([wall - lid_lip/2, wall - lid_lip/2, wall])
rounded_box(inner_w + lid_lip, inner_h + lid_lip, 2, 2);
}
// LED windows
translate([wall + tolerance + 42, wall + tolerance + 30, -1])
cylinder(h=wall+2, d=2, $fn=16);
translate([wall + tolerance + 44, wall + tolerance + 30, -1])
cylinder(h=wall+2, d=2, $fn=16);
}
}
// Render
body();
translate([outer_w + 10, 0, 0]) lid();

View File

@@ -0,0 +1,193 @@
substitutions:
name: presence-sensor-poe
friendly_name: Presence Sensor PoE
esphome:
name: ${name}
friendly_name: ${friendly_name}
platformio_options:
board_build.flash_mode: dio
board_build.arduino.memory_type: qio_opi
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
flash_size: 16MB
psram:
mode: octal
speed: 80MHz
logger:
level: INFO
api:
encryption:
key: !secret api_key
ota:
- platform: esphome
password: !secret ota_password
# ==========================================
# ETHERNET - W5500 SPI (primary network)
# ==========================================
ethernet:
type: W5500
clk_pin: GPIO35
mosi_pin: GPIO34
miso_pin: GPIO33
cs_pin: GPIO36
interrupt_pin: GPIO37
reset_pin: GPIO42
clock_speed: 25MHz
# WiFi as fallback only (if Ethernet cable disconnected)
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "${name}-fallback"
password: !secret fallback_password
# ==========================================
# I2C Bus - SHT41 + BH1750
# ==========================================
i2c:
sda: GPIO3
scl: GPIO4
scan: true
frequency: 400kHz
# ==========================================
# UART - LD2410C mmWave Radar
# ==========================================
uart:
id: uart_ld2410
tx_pin: GPIO17
rx_pin: GPIO18
baud_rate: 256000
parity: NONE
stop_bits: 1
# ==========================================
# Camera - OV5640 5MP
# ==========================================
esp32_camera:
name: Camera
external_clock:
pin: GPIO11
frequency: 20MHz
i2c_pins:
sda: GPIO15
scl: GPIO16
data_pins: [GPIO1, GPIO2, GPIO5, GPIO6, GPIO7, GPIO8, GPIO9, GPIO10]
vsync_pin: GPIO13
href_pin: GPIO14
pixel_clock_pin: GPIO12
power_down_pin: GPIO21
reset_pin: GPIO41
# PoE = wired = more bandwidth, can push higher quality
resolution: 1024x768
max_framerate: 15fps
idle_framerate: 0.5fps
jpeg_quality: 10
vertical_flip: false
horizontal_mirror: false
esp32_camera_web_server:
- port: 8080
mode: stream
# ==========================================
# LD2410C mmWave Presence Radar
# ==========================================
ld2410:
uart_id: uart_ld2410
id: ld2410_radar
binary_sensor:
- platform: ld2410
has_target:
name: Presence
id: ld2410_presence
has_moving_target:
name: Moving Target
has_still_target:
name: Still Target
- platform: gpio
pin:
number: GPIO38
mode: INPUT
name: Motion
id: pir_motion
device_class: motion
filters:
- delayed_off: 10s
- platform: template
name: Occupancy
device_class: occupancy
lambda: |-
if (id(pir_motion).state || id(ld2410_presence).state) {
return true;
}
return false;
filters:
- delayed_off: 30s
sensor:
- platform: ld2410
moving_distance:
name: Moving Distance
still_distance:
name: Still Distance
moving_energy:
name: Moving Energy
still_energy:
name: Still Energy
detection_distance:
name: Detection Distance
- platform: sht4x
temperature:
name: Temperature
accuracy_decimals: 1
filters:
- offset: -1.5
humidity:
name: Humidity
accuracy_decimals: 1
address: 0x44
update_interval: 30s
heater_max_duty: 0.0
- platform: bh1750
name: Illuminance
address: 0x23
measurement_duration: 69
update_interval: 10s
- platform: uptime
name: Uptime
light:
- platform: status_led
name: Status LED
pin: GPIO40
button:
- platform: restart
name: Restart
- platform: factory_reset
name: Factory Reset
disabled_by_default: true
text_sensor:
- platform: ethernet_info
ip_address:
name: IP Address
- platform: version
name: ESPHome Version

2200
poe-variant/lid-poe.stl Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
use <enclosure-poe.scad>;
lid();

View File

@@ -62,9 +62,6 @@
)
)
;; =====================================================
;; BOARD OUTLINE - 45mm x 35mm with rounded corners
;; =====================================================
(gr_arc (start 3 0) (mid 0.879 0.879) (end 0 3) (layer "Edge.Cuts") (width 0.15))
(gr_line (start 3 0) (end 42 0) (layer "Edge.Cuts") (width 0.15))
(gr_arc (start 45 3) (mid 44.121 0.879) (end 42 0) (layer "Edge.Cuts") (width 0.15))
@@ -74,16 +71,8 @@
(gr_arc (start 0 32) (mid 0.879 34.121) (end 3 35) (layer "Edge.Cuts") (width 0.15))
(gr_line (start 0 32) (end 0 3) (layer "Edge.Cuts") (width 0.15))
;; =====================================================
;; COMPONENT PLACEMENT (all coordinates in mm from top-left)
;; Front = component side (facing room)
;; Back = wall side
;; =====================================================
;; --- BACK SIDE (facing wall) ---
;; ESP32-S3-WROOM-1 - center of board, back side
;; Module is 18x25.5mm, antenna at top extending past board edge
(footprint "RF_Module:ESP32-S3-WROOM-1"
(layer "B.Cu")
(at 22.5 18 0)
@@ -92,7 +81,6 @@
(property "JLCPCB" "C2913202")
)
;; AMS1117-3.3 LDO - bottom right, back side
(footprint "Package_TO_SOT_SMD:SOT-223-3_TabPin2"
(layer "B.Cu")
(at 38 30 0)
@@ -101,7 +89,6 @@
(property "JLCPCB" "C6186")
)
;; AP2112K-1.8 (camera DOVDD) - top right, back side
(footprint "Package_TO_SOT_SMD:SOT-23-5"
(layer "B.Cu")
(at 38 5 0)
@@ -110,7 +97,6 @@
(property "JLCPCB" "C51118")
)
;; AP2112K-2.8 (camera AVDD) - top right, back side
(footprint "Package_TO_SOT_SMD:SOT-23-5"
(layer "B.Cu")
(at 38 10 0)
@@ -119,7 +105,6 @@
(property "JLCPCB" "C51114")
)
;; USB ESD Protection
(footprint "Package_TO_SOT_SMD:SOT-23-6"
(layer "B.Cu")
(at 22.5 32 0)
@@ -128,9 +113,7 @@
(property "JLCPCB" "C7519")
)
;; --- FRONT SIDE (facing room) ---
;; USB-C connector - bottom center, front side
(footprint "Connector_USB:USB_C_Receptacle_GCT_USB4125"
(layer "F.Cu")
(at 22.5 35 180)
@@ -139,7 +122,6 @@
(property "JLCPCB" "C2765186")
)
;; FPC camera connector - top center, front side
(footprint "Connector_FFC-FPC:Molex_503480-2400_1x24-1MP_P0.50mm_Horizontal"
(layer "F.Cu")
(at 22.5 2 0)
@@ -148,7 +130,6 @@
(property "JLCPCB" "C2856805")
)
;; LD2410C header - right side, front
(footprint "Connector_PinHeader_1.27mm:PinHeader_1x05_P1.27mm_Vertical"
(layer "F.Cu")
(at 42 17.5 90)
@@ -156,7 +137,6 @@
(property "Value" "LD2410C")
)
;; AM312 PIR header - left side, front
(footprint "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical"
(layer "F.Cu")
(at 3 15 90)
@@ -164,7 +144,6 @@
(property "Value" "AM312_PIR")
)
;; SHT41 - left edge, front (away from ESP32 heat)
(footprint "Sensor_Humidity:Sensirion_DFN-4-1EP_1.5x1.5mm_P0.8mm_EP0.5x0.5mm"
(layer "F.Cu")
(at 4 28 0)
@@ -173,7 +152,6 @@
(property "JLCPCB" "C2911456")
)
;; BH1750 - left of center, front
(footprint "Package_SO:WSOF-6_1.4x1.7mm_P0.5mm"
(layer "F.Cu")
(at 12 22 0)
@@ -182,7 +160,6 @@
(property "JLCPCB" "C78960")
)
;; Status LED - front side, visible
(footprint "LED_SMD:LED_0402_1005Metric"
(layer "F.Cu")
(at 40 28 0)
@@ -191,9 +168,7 @@
(property "JLCPCB" "C2286")
)
;; --- PASSIVE COMPONENTS (back side, near their ICs) ---
;; Input cap - near AMS1117
(footprint "Capacitor_SMD:C_0805_2012Metric"
(layer "B.Cu")
(at 33 30 0)
@@ -201,7 +176,6 @@
(property "Value" "10uF")
)
;; Output cap - near AMS1117
(footprint "Capacitor_SMD:C_0805_2012Metric"
(layer "B.Cu")
(at 33 33 0)
@@ -209,7 +183,6 @@
(property "Value" "22uF")
)
;; Decoupling caps - near ESP32
(footprint "Capacitor_SMD:C_0402_1005Metric"
(layer "B.Cu")
(at 15 8 0)
@@ -235,7 +208,6 @@
(property "Value" "10uF")
)
;; Camera power caps
(footprint "Capacitor_SMD:C_0805_2012Metric"
(layer "B.Cu")
(at 35 3 0)
@@ -249,7 +221,6 @@
(property "Value" "100nF")
)
;; LD2410C decoupling
(footprint "Capacitor_SMD:C_0805_2012Metric"
(layer "B.Cu")
(at 40 15 0)
@@ -257,7 +228,6 @@
(property "Value" "10uF")
)
;; SHT41 decoupling
(footprint "Capacitor_SMD:C_0402_1005Metric"
(layer "F.Cu")
(at 7 28 0)
@@ -265,7 +235,6 @@
(property "Value" "100nF")
)
;; BH1750 decoupling
(footprint "Capacitor_SMD:C_0402_1005Metric"
(layer "F.Cu")
(at 15 22 0)
@@ -273,7 +242,6 @@
(property "Value" "100nF")
)
;; Resistors
(footprint "Resistor_SMD:R_0402_1005Metric"
(layer "F.Cu")
(at 38 28 0)
@@ -303,7 +271,6 @@
(property "Description" "I2C SCL pull-up")
)
;; Buttons - back side, accessible via pinhole
(footprint "Button_Switch_SMD:SW_SPST_PTS810"
(layer "B.Cu")
(at 5 33 0)
@@ -317,7 +284,6 @@
(property "Value" "RESET")
)
;; Mounting holes
(footprint "MountingHole:MountingHole_2.2mm_M2_Pad"
(layer "F.Cu")
(at 2.5 2.5 0)
@@ -331,50 +297,43 @@
(property "Value" "MountingHole")
)
;; =====================================================
;; SILKSCREEN LABELS
;; =====================================================
(gr_text "Presence Sensor v1.0"
(at 22.5 17.5 0)
(layer "F.SilkS")
(effects (font (size 1.2 1.2) (thickness 0.2)) (justify center))
(effects (font (size 1.2 1.2) (thickness 0.2)) )
)
(gr_text "github.com/chrisryn"
(at 22.5 19.5 0)
(layer "F.SilkS")
(effects (font (size 0.8 0.8) (thickness 0.15)) (justify center))
(effects (font (size 0.8 0.8) (thickness 0.15)) )
)
(gr_text "CAM"
(at 22.5 4 0)
(layer "F.SilkS")
(effects (font (size 0.8 0.8) (thickness 0.15)) (justify center))
(effects (font (size 0.8 0.8) (thickness 0.15)) )
)
(gr_text "PIR"
(at 3 12 0)
(layer "F.SilkS")
(effects (font (size 0.8 0.8) (thickness 0.15)) (justify center))
(effects (font (size 0.8 0.8) (thickness 0.15)) )
)
(gr_text "mmWave"
(at 42 14 0)
(layer "F.SilkS")
(effects (font (size 0.8 0.8) (thickness 0.15)) (justify center))
(effects (font (size 0.8 0.8) (thickness 0.15)) )
)
(gr_text "USB-C"
(at 22.5 33 0)
(layer "F.SilkS")
(effects (font (size 0.8 0.8) (thickness 0.15)) (justify center))
(effects (font (size 0.8 0.8) (thickness 0.15)) )
)
;; =====================================================
;; ANTENNA KEEP-OUT ZONE
;; ESP32-S3 antenna at top of module - no copper
;; =====================================================
(gr_rect (start 13 0) (end 32 6)
(layer "F.SilkS") (width 0.15) (fill none)
)
(gr_text "ANTENNA KEEP-OUT"
(at 22.5 3 0)
(layer "B.SilkS")
(effects (font (size 0.6 0.6) (thickness 0.1)) (justify center))
(effects (font (size 0.6 0.6) (thickness 0.1)) )
)
)

View File

@@ -12,85 +12,68 @@
(comment 2 "ESP32-S3 + OV5640 + LD2410C + AM312 + SHT41 + BH1750")
)
;; =====================================================
;; POWER SECTION - USB-C Input + 3.3V Regulation
;; =====================================================
(text "USB-C Power Input + 3.3V LDO"
(at 25 25 0)
(effects (font (size 3 3) (thickness 0.5)) (justify left))
)
;; USB-C Connector (USB4125-GF-A - 16 pin USB-C)
(symbol
(lib_id "Connector:USB_C_Receptacle_USB2.0")
(at 40 60 0)
(uuid "a1000001-0001-0001-0001-000000000001")
(property "Reference" "J1" (at 40 42 0))
(property "Value" "USB_C_16P" (at 40 44 0))
(property "Footprint" "Connector_USB:USB_C_Receptacle_GCT_USB4125" (at 40 60 0))
(property "JLCPCB" "C2765186" (at 40 60 0))
(property "Reference" "J1" (at 40 42 0) (effects (font (size 1.27 1.27))))
(property "Value" "USB_C_16P" (at 40 44 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Connector_USB:USB_C_Receptacle_GCT_USB4125" (at 40 60 0) (effects (font (size 1.27 1.27)) hide))
(property "JLCPCB" "C2765186" (at 40 60 0) (effects (font (size 1.27 1.27)) hide))
)
;; ESD Protection (USBLC6-2SC6)
(symbol
(lib_id "Power_Protection:USBLC6-2SC6")
(at 70 60 0)
(uuid "a1000001-0001-0001-0001-000000000002")
(property "Reference" "U1" (at 70 50 0))
(property "Value" "USBLC6-2SC6" (at 70 52 0))
(property "Footprint" "Package_TO_SOT_SMD:SOT-23-6" (at 70 60 0))
(property "JLCPCB" "C7519" (at 70 60 0))
(property "Reference" "U1" (at 70 50 0) (effects (font (size 1.27 1.27))))
(property "Value" "USBLC6-2SC6" (at 70 52 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Package_TO_SOT_SMD:SOT-23-6" (at 70 60 0) (effects (font (size 1.27 1.27)) hide))
(property "JLCPCB" "C7519" (at 70 60 0) (effects (font (size 1.27 1.27)) hide))
)
;; AMS1117-3.3 LDO Regulator
(symbol
(lib_id "Regulator_Linear:AMS1117-3.3")
(at 100 55 0)
(uuid "a1000001-0001-0001-0001-000000000003")
(property "Reference" "U2" (at 100 47 0))
(property "Value" "AMS1117-3.3" (at 100 49 0))
(property "Footprint" "Package_TO_SOT_SMD:SOT-223-3_TabPin2" (at 100 55 0))
(property "JLCPCB" "C6186" (at 100 55 0))
(property "Reference" "U2" (at 100 47 0) (effects (font (size 1.27 1.27))))
(property "Value" "AMS1117-3.3" (at 100 49 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Package_TO_SOT_SMD:SOT-223-3_TabPin2" (at 100 55 0) (effects (font (size 1.27 1.27)) hide))
(property "JLCPCB" "C6186" (at 100 55 0) (effects (font (size 1.27 1.27)) hide))
)
;; Input capacitor 10uF
(symbol
(lib_id "Device:C")
(at 90 65 0)
(uuid "a1000001-0001-0001-0001-000000000004")
(property "Reference" "C1" (at 92 63 0))
(property "Value" "10uF" (at 92 67 0))
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 90 65 0))
(property "JLCPCB" "C15850" (at 90 65 0))
(property "Reference" "C1" (at 92 63 0) (effects (font (size 1.27 1.27))))
(property "Value" "10uF" (at 92 67 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 90 65 0) (effects (font (size 1.27 1.27)) hide))
)
;; Output capacitor 22uF
(symbol
(lib_id "Device:C")
(at 110 65 0)
(uuid "a1000001-0001-0001-0001-000000000005")
(property "Reference" "C2" (at 112 63 0))
(property "Value" "22uF" (at 112 67 0))
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 110 65 0))
(property "JLCPCB" "C45783" (at 110 65 0))
(property "Reference" "C2" (at 112 63 0) (effects (font (size 1.27 1.27))))
(property "Value" "22uF" (at 112 67 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 110 65 0) (effects (font (size 1.27 1.27)) hide))
)
;; Output capacitor 100nF decoupling
(symbol
(lib_id "Device:C")
(at 120 65 0)
(uuid "a1000001-0001-0001-0001-000000000006")
(property "Reference" "C3" (at 122 63 0))
(property "Value" "100nF" (at 122 67 0))
(property "Footprint" "Capacitor_SMD:C_0402_1005Metric" (at 120 65 0))
(property "JLCPCB" "C1525" (at 120 65 0))
(property "Reference" "C3" (at 122 63 0) (effects (font (size 1.27 1.27))))
(property "Value" "100nF" (at 122 67 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Capacitor_SMD:C_0402_1005Metric" (at 120 65 0) (effects (font (size 1.27 1.27)) hide))
)
;; =====================================================
;; MCU - ESP32-S3-WROOM-1 (N16R8)
;; =====================================================
(text "ESP32-S3-WROOM-1 (N16R8) - Main MCU"
(at 25 100 0)
(effects (font (size 3 3) (thickness 0.5)) (justify left))
@@ -100,316 +83,245 @@
(lib_id "RF_Module:ESP32-S3-WROOM-1")
(at 80 160 0)
(uuid "a1000001-0001-0001-0001-000000000010")
(property "Reference" "U3" (at 80 115 0))
(property "Value" "ESP32-S3-WROOM-1-N16R8" (at 80 117 0))
(property "Footprint" "RF_Module:ESP32-S3-WROOM-1" (at 80 160 0))
(property "JLCPCB" "C2913202" (at 80 160 0))
(property "Description" "ESP32-S3 WiFi+BLE module, 16MB Flash, 8MB PSRAM" (at 80 160 0))
(property "Reference" "U3" (at 80 115 0) (effects (font (size 1.27 1.27))))
(property "Value" "ESP32-S3-WROOM-1-N16R8" (at 80 117 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "RF_Module:ESP32-S3-WROOM-1" (at 80 160 0) (effects (font (size 1.27 1.27)) hide))
(property "JLCPCB" "C2913202" (at 80 160 0) (effects (font (size 1.27 1.27)) hide))
)
;; Boot button (GPIO0)
(symbol
(lib_id "Switch:SW_Push")
(at 35 145 0)
(uuid "a1000001-0001-0001-0001-000000000011")
(property "Reference" "SW1" (at 35 140 0))
(property "Value" "BOOT" (at 35 150 0))
(property "Footprint" "Button_Switch_SMD:SW_SPST_PTS810" (at 35 145 0))
(property "JLCPCB" "C116501" (at 35 145 0))
(property "Reference" "SW1" (at 35 140 0) (effects (font (size 1.27 1.27))))
(property "Value" "BOOT" (at 35 150 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Button_Switch_SMD:SW_SPST_PTS810" (at 35 145 0) (effects (font (size 1.27 1.27)) hide))
)
;; Reset button (EN)
(symbol
(lib_id "Switch:SW_Push")
(at 35 160 0)
(uuid "a1000001-0001-0001-0001-000000000012")
(property "Reference" "SW2" (at 35 155 0))
(property "Value" "RESET" (at 35 165 0))
(property "Footprint" "Button_Switch_SMD:SW_SPST_PTS810" (at 35 160 0))
(property "JLCPCB" "C116501" (at 35 160 0))
(property "Reference" "SW2" (at 35 155 0) (effects (font (size 1.27 1.27))))
(property "Value" "RESET" (at 35 165 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Button_Switch_SMD:SW_SPST_PTS810" (at 35 160 0) (effects (font (size 1.27 1.27)) hide))
)
;; ESP32-S3 decoupling caps (3x 100nF + 1x 10uF)
(symbol
(lib_id "Device:C")
(at 55 120 0)
(uuid "a1000001-0001-0001-0001-000000000013")
(property "Reference" "C4" (at 57 118 0))
(property "Value" "100nF" (at 57 122 0))
(property "Footprint" "Capacitor_SMD:C_0402_1005Metric" (at 55 120 0))
(property "Reference" "C4" (at 57 118 0) (effects (font (size 1.27 1.27))))
(property "Value" "100nF" (at 57 122 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Capacitor_SMD:C_0402_1005Metric" (at 55 120 0) (effects (font (size 1.27 1.27)) hide))
)
(symbol
(lib_id "Device:C")
(at 62 120 0)
(uuid "a1000001-0001-0001-0001-000000000014")
(property "Reference" "C5" (at 64 118 0))
(property "Value" "100nF" (at 64 122 0))
(property "Footprint" "Capacitor_SMD:C_0402_1005Metric" (at 62 120 0))
(property "Reference" "C5" (at 64 118 0) (effects (font (size 1.27 1.27))))
(property "Value" "100nF" (at 64 122 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Capacitor_SMD:C_0402_1005Metric" (at 62 120 0) (effects (font (size 1.27 1.27)) hide))
)
(symbol
(lib_id "Device:C")
(at 69 120 0)
(uuid "a1000001-0001-0001-0001-000000000015")
(property "Reference" "C6" (at 71 118 0))
(property "Value" "10uF" (at 71 122 0))
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 69 120 0))
(property "Reference" "C6" (at 71 118 0) (effects (font (size 1.27 1.27))))
(property "Value" "10uF" (at 71 122 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 69 120 0) (effects (font (size 1.27 1.27)) hide))
)
;; Status LED
(symbol
(lib_id "Device:LED")
(at 130 140 0)
(uuid "a1000001-0001-0001-0001-000000000016")
(property "Reference" "D1" (at 132 138 0))
(property "Value" "LED_Blue" (at 132 142 0))
(property "Footprint" "LED_SMD:LED_0402_1005Metric" (at 130 140 0))
(property "JLCPCB" "C2286" (at 130 140 0))
(property "Reference" "D1" (at 132 138 0) (effects (font (size 1.27 1.27))))
(property "Value" "LED_Blue" (at 132 142 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "LED_SMD:LED_0402_1005Metric" (at 130 140 0) (effects (font (size 1.27 1.27)) hide))
)
;; LED resistor
(symbol
(lib_id "Device:R")
(at 130 130 0)
(uuid "a1000001-0001-0001-0001-000000000017")
(property "Reference" "R1" (at 132 130 0))
(property "Value" "1K" (at 134 130 0))
(property "Footprint" "Resistor_SMD:R_0402_1005Metric" (at 130 130 0))
(property "JLCPCB" "C11702" (at 130 130 0))
(property "Reference" "R1" (at 132 130 0) (effects (font (size 1.27 1.27))))
(property "Value" "1K" (at 134 130 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Resistor_SMD:R_0402_1005Metric" (at 130 130 0) (effects (font (size 1.27 1.27)) hide))
)
;; =====================================================
;; CAMERA - OV5640 via 24-pin FPC connector
;; =====================================================
(text "OV5640 5MP Camera Module (24-pin FPC)"
(at 170 25 0)
(effects (font (size 3 3) (thickness 0.5)) (justify left))
)
;; 24-pin FPC connector for OV5640
(symbol
(lib_id "Connector_Generic:Conn_01x24")
(at 190 80 0)
(uuid "a1000001-0001-0001-0001-000000000020")
(property "Reference" "J2" (at 190 42 0))
(property "Value" "FPC_24P_OV5640" (at 190 44 0))
(property "Footprint" "Connector_FFC-FPC:Molex_503480-2400_1x24-1MP_P0.50mm_Horizontal" (at 190 80 0))
(property "JLCPCB" "C2856805" (at 190 80 0))
(property "Description" "24-pin 0.5mm FPC connector for OV5640 camera module" (at 190 80 0))
(property "Reference" "J2" (at 190 42 0) (effects (font (size 1.27 1.27))))
(property "Value" "FPC_24P_OV5640" (at 190 44 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Connector_FFC-FPC:Molex_503480-2400_1x24-1MP_P0.50mm_Horizontal" (at 190 80 0) (effects (font (size 1.27 1.27)) hide))
)
;; Camera power filter caps
(symbol
(lib_id "Device:C")
(at 175 50 0)
(uuid "a1000001-0001-0001-0001-000000000021")
(property "Reference" "C7" (at 177 48 0))
(property "Value" "10uF" (at 177 52 0))
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 175 50 0))
(property "Reference" "C7" (at 177 48 0) (effects (font (size 1.27 1.27))))
(property "Value" "10uF" (at 177 52 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 175 50 0) (effects (font (size 1.27 1.27)) hide))
)
(symbol
(lib_id "Device:C")
(at 182 50 0)
(uuid "a1000001-0001-0001-0001-000000000022")
(property "Reference" "C8" (at 184 48 0))
(property "Value" "100nF" (at 184 52 0))
(property "Footprint" "Capacitor_SMD:C_0402_1005Metric" (at 182 50 0))
(property "Reference" "C8" (at 184 48 0) (effects (font (size 1.27 1.27))))
(property "Value" "100nF" (at 184 52 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Capacitor_SMD:C_0402_1005Metric" (at 182 50 0) (effects (font (size 1.27 1.27)) hide))
)
;; Camera 1.8V LDO (for DOVDD)
(symbol
(lib_id "Regulator_Linear:AP2112K-1.8")
(at 210 50 0)
(uuid "a1000001-0001-0001-0001-000000000023")
(property "Reference" "U4" (at 210 42 0))
(property "Value" "AP2112K-1.8" (at 210 44 0))
(property "Footprint" "Package_TO_SOT_SMD:SOT-23-5" (at 210 50 0))
(property "JLCPCB" "C51118" (at 210 50 0))
(property "Description" "1.8V LDO for camera DOVDD" (at 210 50 0))
(property "Reference" "U4" (at 210 42 0) (effects (font (size 1.27 1.27))))
(property "Value" "AP2112K-1.8" (at 210 44 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Package_TO_SOT_SMD:SOT-23-5" (at 210 50 0) (effects (font (size 1.27 1.27)) hide))
)
;; Camera 2.8V LDO (for AVDD)
(symbol
(lib_id "Regulator_Linear:AP2112K-2.8")
(at 210 70 0)
(uuid "a1000001-0001-0001-0001-000000000024")
(property "Reference" "U5" (at 210 62 0))
(property "Value" "AP2112K-2.8" (at 210 64 0))
(property "Footprint" "Package_TO_SOT_SMD:SOT-23-5" (at 210 70 0))
(property "JLCPCB" "C51114" (at 210 70 0))
(property "Description" "2.8V LDO for camera AVDD" (at 210 70 0))
(property "Reference" "U5" (at 210 62 0) (effects (font (size 1.27 1.27))))
(property "Value" "AP2112K-2.8" (at 210 64 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Package_TO_SOT_SMD:SOT-23-5" (at 210 70 0) (effects (font (size 1.27 1.27)) hide))
)
;; 24MHz crystal oscillator for camera XCLK (if not using ESP32 LEDC PWM)
;; Note: ESP32-S3 can generate XCLK via LEDC, so crystal is optional
;; Using LEDC output from GPIO15 instead
;; =====================================================
;; mmWave RADAR - HLK-LD2410C
;; =====================================================
(text "HLK-LD2410C 24GHz mmWave Presence Radar"
(at 170 120 0)
(effects (font (size 3 3) (thickness 0.5)) (justify left))
)
;; LD2410C connector (5-pin: VCC, GND, TX, RX, OUT)
(symbol
(lib_id "Connector_Generic:Conn_01x05")
(at 200 145 0)
(uuid "a1000001-0001-0001-0001-000000000030")
(property "Reference" "J3" (at 200 135 0))
(property "Value" "LD2410C" (at 200 137 0))
(property "Footprint" "Connector_PinHeader_1.27mm:PinHeader_1x05_P1.27mm_Vertical" (at 200 145 0))
(property "Description" "HLK-LD2410C 24GHz mmWave radar module connector" (at 200 145 0))
(pin_names
(pin "1" "VCC_5V")
(pin "2" "GND")
(pin "3" "UART_TX")
(pin "4" "UART_RX")
(pin "5" "OUT")
)
(property "Reference" "J3" (at 200 135 0) (effects (font (size 1.27 1.27))))
(property "Value" "LD2410C" (at 200 137 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Connector_PinHeader_1.27mm:PinHeader_1x05_P1.27mm_Vertical" (at 200 145 0) (effects (font (size 1.27 1.27)) hide))
)
;; LD2410C decoupling
(symbol
(lib_id "Device:C")
(at 215 140 0)
(uuid "a1000001-0001-0001-0001-000000000031")
(property "Reference" "C9" (at 217 138 0))
(property "Value" "10uF" (at 217 142 0))
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 215 140 0))
(property "Reference" "C9" (at 217 138 0) (effects (font (size 1.27 1.27))))
(property "Value" "10uF" (at 217 142 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 215 140 0) (effects (font (size 1.27 1.27)) hide))
)
;; =====================================================
;; PIR SENSOR - AM312
;; =====================================================
(text "AM312 PIR Motion Sensor"
(at 170 170 0)
(effects (font (size 3 3) (thickness 0.5)) (justify left))
)
;; AM312 connector (3-pin: VCC, OUT, GND)
(symbol
(lib_id "Connector_Generic:Conn_01x03")
(at 200 190 0)
(uuid "a1000001-0001-0001-0001-000000000040")
(property "Reference" "J4" (at 200 182 0))
(property "Value" "AM312_PIR" (at 200 184 0))
(property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" (at 200 190 0))
(property "Description" "AM312 mini PIR sensor, 3.3V, digital output" (at 200 190 0))
(pin_names
(pin "1" "VCC_3V3")
(pin "2" "OUT")
(pin "3" "GND")
)
(property "Reference" "J4" (at 200 182 0) (effects (font (size 1.27 1.27))))
(property "Value" "AM312_PIR" (at 200 184 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" (at 200 190 0) (effects (font (size 1.27 1.27)) hide))
)
;; PIR pulldown resistor
(symbol
(lib_id "Device:R")
(at 215 190 0)
(uuid "a1000001-0001-0001-0001-000000000041")
(property "Reference" "R2" (at 217 190 0))
(property "Value" "10K" (at 219 190 0))
(property "Footprint" "Resistor_SMD:R_0402_1005Metric" (at 215 190 0))
(property "JLCPCB" "C25744" (at 215 190 0))
(property "Reference" "R2" (at 217 190 0) (effects (font (size 1.27 1.27))))
(property "Value" "10K" (at 219 190 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Resistor_SMD:R_0402_1005Metric" (at 215 190 0) (effects (font (size 1.27 1.27)) hide))
)
;; =====================================================
;; I2C BUS - SHT41 + BH1750
;; =====================================================
(text "I2C Sensors: SHT41 (Temp/Humidity) + BH1750 (Light)"
(at 25 220 0)
(effects (font (size 3 3) (thickness 0.5)) (justify left))
)
;; SHT41 Temperature & Humidity Sensor
(symbol
(lib_id "Sensor:SHT4x")
(at 60 250 0)
(uuid "a1000001-0001-0001-0001-000000000050")
(property "Reference" "U6" (at 60 238 0))
(property "Value" "SHT41" (at 60 240 0))
(property "Footprint" "Sensor_Humidity:Sensirion_DFN-4-1EP_1.5x1.5mm_P0.8mm_EP0.5x0.5mm" (at 60 250 0))
(property "JLCPCB" "C2911456" (at 60 250 0))
(property "Description" "Digital temp/humidity sensor, ±0.2°C, I2C, 1.5x1.5mm" (at 60 250 0))
(property "Reference" "U6" (at 60 238 0) (effects (font (size 1.27 1.27))))
(property "Value" "SHT41" (at 60 240 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Sensor_Humidity:Sensirion_DFN-4-1EP_1.5x1.5mm_P0.8mm_EP0.5x0.5mm" (at 60 250 0) (effects (font (size 1.27 1.27)) hide))
)
;; SHT41 decoupling
(symbol
(lib_id "Device:C")
(at 80 250 0)
(uuid "a1000001-0001-0001-0001-000000000051")
(property "Reference" "C10" (at 82 248 0))
(property "Value" "100nF" (at 82 252 0))
(property "Footprint" "Capacitor_SMD:C_0402_1005Metric" (at 80 250 0))
(property "Reference" "C10" (at 82 248 0) (effects (font (size 1.27 1.27))))
(property "Value" "100nF" (at 82 252 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Capacitor_SMD:C_0402_1005Metric" (at 80 250 0) (effects (font (size 1.27 1.27)) hide))
)
;; BH1750 Ambient Light Sensor
(symbol
(lib_id "Sensor_Optical:BH1750FVI")
(at 60 285 0)
(uuid "a1000001-0001-0001-0001-000000000052")
(property "Reference" "U7" (at 60 273 0))
(property "Value" "BH1750FVI" (at 60 275 0))
(property "Footprint" "Package_SO:WSOF-6_1.4x1.7mm_P0.5mm" (at 60 285 0))
(property "JLCPCB" "C78960" (at 60 285 0))
(property "Description" "Ambient light sensor, 1-65535 lux, I2C, 1.6x1.6mm" (at 60 285 0))
(property "Reference" "U7" (at 60 273 0) (effects (font (size 1.27 1.27))))
(property "Value" "BH1750FVI" (at 60 275 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Package_SO:WSOF-6_1.4x1.7mm_P0.5mm" (at 60 285 0) (effects (font (size 1.27 1.27)) hide))
)
;; BH1750 decoupling
(symbol
(lib_id "Device:C")
(at 80 285 0)
(uuid "a1000001-0001-0001-0001-000000000053")
(property "Reference" "C11" (at 82 283 0))
(property "Value" "100nF" (at 82 287 0))
(property "Footprint" "Capacitor_SMD:C_0402_1005Metric" (at 80 285 0))
(property "Reference" "C11" (at 82 283 0) (effects (font (size 1.27 1.27))))
(property "Value" "100nF" (at 82 287 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Capacitor_SMD:C_0402_1005Metric" (at 80 285 0) (effects (font (size 1.27 1.27)) hide))
)
;; I2C pull-up resistors
(symbol
(lib_id "Device:R")
(at 40 235 0)
(uuid "a1000001-0001-0001-0001-000000000054")
(property "Reference" "R3" (at 42 235 0))
(property "Value" "4.7K" (at 44 235 0))
(property "Footprint" "Resistor_SMD:R_0402_1005Metric" (at 40 235 0))
(property "JLCPCB" "C25900" (at 40 235 0))
(property "Description" "I2C SDA pull-up" (at 40 235 0))
(property "Reference" "R3" (at 42 235 0) (effects (font (size 1.27 1.27))))
(property "Value" "4.7K" (at 44 235 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Resistor_SMD:R_0402_1005Metric" (at 40 235 0) (effects (font (size 1.27 1.27)) hide))
)
(symbol
(lib_id "Device:R")
(at 48 235 0)
(uuid "a1000001-0001-0001-0001-000000000055")
(property "Reference" "R4" (at 50 235 0))
(property "Value" "4.7K" (at 52 235 0))
(property "Footprint" "Resistor_SMD:R_0402_1005Metric" (at 48 235 0))
(property "JLCPCB" "C25900" (at 48 235 0))
(property "Description" "I2C SCL pull-up" (at 48 235 0))
(property "Reference" "R4" (at 50 235 0) (effects (font (size 1.27 1.27))))
(property "Value" "4.7K" (at 52 235 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "Resistor_SMD:R_0402_1005Metric" (at 48 235 0) (effects (font (size 1.27 1.27)) hide))
)
;; =====================================================
;; MOUNTING HOLES
;; =====================================================
(symbol
(lib_id "Mechanical:MountingHole")
(at 250 260 0)
(uuid "a1000001-0001-0001-0001-000000000060")
(property "Reference" "H1" (at 252 258 0))
(property "Value" "MountingHole" (at 252 262 0))
(property "Footprint" "MountingHole:MountingHole_2.2mm_M2_Pad" (at 250 260 0))
(property "Reference" "H1" (at 252 258 0) (effects (font (size 1.27 1.27))))
(property "Value" "MountingHole" (at 252 262 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "MountingHole:MountingHole_2.2mm_M2_Pad" (at 250 260 0) (effects (font (size 1.27 1.27)) hide))
)
(symbol
(lib_id "Mechanical:MountingHole")
(at 260 260 0)
(uuid "a1000001-0001-0001-0001-000000000061")
(property "Reference" "H2" (at 262 258 0))
(property "Value" "MountingHole" (at 262 262 0))
(property "Footprint" "MountingHole:MountingHole_2.2mm_M2_Pad" (at 260 260 0))
(property "Reference" "H2" (at 262 258 0) (effects (font (size 1.27 1.27))))
(property "Value" "MountingHole" (at 262 262 0) (effects (font (size 1.27 1.27))))
(property "Footprint" "MountingHole:MountingHole_2.2mm_M2_Pad" (at 260 260 0) (effects (font (size 1.27 1.27)) hide))
)
)