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)
This commit is contained in:
54
poe-variant/BOM.csv
Normal file
54
poe-variant/BOM.csv
Normal 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"
|
||||
|
109
poe-variant/DESIGN.md
Normal file
109
poe-variant/DESIGN.md
Normal 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
|
||||
59
poe-variant/PIN_MAPPING.md
Normal file
59
poe-variant/PIN_MAPPING.md
Normal 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
12532
poe-variant/body-poe.stl
Normal file
File diff suppressed because it is too large
Load Diff
133
poe-variant/enclosure-poe.scad
Normal file
133
poe-variant/enclosure-poe.scad
Normal 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();
|
||||
193
poe-variant/esphome-presence-sensor-poe.yaml
Normal file
193
poe-variant/esphome-presence-sensor-poe.yaml
Normal 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
2200
poe-variant/lid-poe.stl
Normal file
File diff suppressed because it is too large
Load Diff
2
poe-variant/lid_only_poe.scad
Normal file
2
poe-variant/lid_only_poe.scad
Normal file
@@ -0,0 +1,2 @@
|
||||
use <enclosure-poe.scad>;
|
||||
lid();
|
||||
Reference in New Issue
Block a user