ESP32-C3 Multi-Board Design
Started implementing a plan
#Goal
- Revise the current compact ESP32-C3 sensor node into a practical sub-30 mm multi-board stack by offloading battery power input, antenna/external antenna support, and other space-intensive interfaces to a secondary board, while ensuring ESP-NOW, TMP117 contact temperature sensing, LIS2DW12 motion sensing, LiPo charging/power, and pogo charging/programming/communication remain fully functional.
#Implementation plan
1. Schematic and Block Audit
1. Identify and document the components and blocks causing routing and layout constraints on the current 28 mm board.
2. Highlight sections including battery power, antenna interfaces, and pogo pad clusters that can be migrated.
2. Two-Board Partitioning
1. Define a stack where the primary board (sub-30 mm) retains the ESP32-C3, TMP117 sensor, and LIS2DW12 accelerometer.
2. Allocate secondary board functions to include battery power input, external antenna connectivity, LiPo charger (MCP73831) circuits, and pogo/test interface pads.
3. Establish board-to-board interconnects that maintain ESP-NOW networking, shared power architecture, and necessary signal integrity.
3. Schematic Update
1. Update the schematic to reflect the new dual-board partition with dedicated interconnect headers or connectors.
2. Reconfigure the power network to route battery power and LiPo charging components to the secondary board while ensuring proper distribution to the primary board.
4. PCB Layout Reconfiguration
1. Reconfigure the physical layout to accommodate the two-board stack while keeping each board within the sub-30 mm dimension goal.
2. Prioritize placement and routing for critical RF paths (antenna), thermal contact regions (TMP117), and the pogo pad cluster.
3. Review and adjust layer assignments and clearances to resolve previous DRC issues.
5. Review and Documentation
1. Verify all key interfaces (ESP-NOW, TMP117, LIS2DW12, MCP73831 for LiPo charging, and pogo connectivity) are preserved and functionally routed.
2. Document remaining manual-routing priorities, mechanical constraints, and manufacturing considerations for final review.
#Success criteria
- The updated design successfully partitions the design into a dual-board stack, meeting the sub-30 mm size goal.
- All core functionalities (ESP-NOW, contact temperature sensing, motion sensing, LiPo charging, and pogo access) are maintained.
- The design resolves prior routing and DRC issues, ensuring manufacturability and layout de-risking.
Task unable to complete.
38:21
Added 2 components
0:02
Added 2x BM23PF0.8-10DP-0.35V(51) as J8, J9 (Pins: 12, 4, 7, 13, 10, 5, 11, 1, 2, 3, 14, 6, 9, 8)
⚠️ Newly added components are not automatically placed on the PCB layout. If the project has a PCB layout, use `@rewriteLayoutComponentPlacement` to place them on the board.
Set Board Partition to "Primary sensor/MCU board" on U1, U2, and U3, Set Role Details to "ESP32-C3 ESP-NOW MCU retained..." on U1, and 14 more changes
0:01
Set U1's Board Partition to "Primary sensor/MCU board"
Set U1's Role Details to "ESP32-C3 ESP-NOW MCU retained on primary board; external antenna cable exits toward secondary RF/mechanical interface."
Set U2's Board Partition to "Primary sensor/MCU board"
Set U2's Role Details to "Contact temperature sensor; place centered over thermal pad/contact region to aluminum plate or magnet."
Set U3's Board Partition to "Primary sensor/MCU board"
Set U3's Role Details to "Motion sensor retained on primary board near MCU with short I2C and interrupt routing."
Set U4's Board Partition to "Secondary power/interface board"
Set U4's Role Details to "LiPo charger moved to secondary board; keep near pogo 5V input and battery connector; route charger status through J8/J9."
Set U5's Board Partition to "Secondary power/interface board"
Set U5's Role Details to "3.3V buck-boost regulator moved to secondary board; route regulated 3V3 and VBAT/GND through board-to-board connector."
Set J1's Board Partition to "Secondary power/interface board"
Set J1's Role Details to "Small LiPo battery connector moved to secondary board."
Set F1's Board Partition to "Secondary power/interface board"
Set F1's Role Details to "Pogo/charger 5V input fuse moved to secondary power/interface board."
Set D1's Board Partition to "Secondary power/interface board"
Set D1's Role Details to "ESD protection for pogo UART lines moved to secondary board before board-to-board transition."
Set J2's Board Partition to "Secondary power/interface board"
Set J2's Role Details to "Pogo pad: 5V charge input."
Set J3's Board Partition to "Secondary power/interface board"
Set J3's Role Details to "Pogo pad: ground reference."
Set J4's Board Partition to "Secondary power/interface board"
Set J4's Role Details to "Pogo pad: UART TX path to programmer via ESD protection and board-to-board interconnect."
Set J5's Board Partition to "Secondary power/interface board"
Set J5's Role Details to "Pogo pad: UART RX path from programmer via ESD protection and board-to-board interconnect."
Set J6's Board Partition to "Secondary power/interface board"
Set J6's Role Details to "Pogo pad: ESP_EN reset/programming access routed through board-to-board interconnect."
Set J7's Board Partition to "Secondary power/interface board"
Set J7's Role Details to "Pogo pad: BOOT/programming access routed through board-to-board interconnect."
Updated 9 connections
0:05
Connected J8:1, J8:10, J8:11, J8:12, J8:13, J8:14, J9:1, J9:10, J9:11, J9:12, J9:13, J9:14 to ^GND
Connected J8:2, J9:2 to ^3V3
Connected J8:3, J9:3 to ^VBAT
Connected J8:4, J9:4 to ^POGO_5V_IN
Connected J8:5, J9:5 to ^UART_TX_MCU
Connected J8:6, J9:6 to ^UART_RX_MCU
Connected J8:7, J9:7 to ^ESP_EN
Connected J8:8, J9:8 to ^BOOT
Connected J8:9, J9:9 to ^CHG_STAT
Added 1 component
0:01
Added 1x U.FL-R-SMT-1(10) as J10 (Pins: Outer_Contact::1, Center_Contact, Outer_Contact::3)
⚠️ Newly added components are not automatically placed on the PCB layout. If the project has a PCB layout, use `@rewriteLayoutComponentPlacement` to place them on the board.
Updated 1 connection
0:02
Connected J10:Outer_Contact, J10:Outer_Contact to ^GND
Placed components
14:57
Placed 3 component(s): J9, J8, J10
Updated 6 layout rules
Set Layout's sizeX to "28mm"
Set Layout's sizeY to "58mm"
Set Layout's boardShape to "=svgPath("M 0 0.0112 Q 0.014 0.0112 0.014 -0.0028 Q 0.014 -0.0168 0 -0.0168 Q -0.014 -0.0168 -0.014 -0.0028 Q -0.014 0.0112 0..."
Set Layout's stackup to "Standard 4 Layer (Custom)"
Set Layout's boardInsetMargin to "0.2mm"
Set Layout's keepOut to "0.2mm"
Placed components
16:02
Placed 36 component(s): C7, C1, J4, U2, C14, C2, C3, R4, C4, U1, L1, J9, C12, J6, C11, D1, R2, R7, R5, R3, J8, U4, J5, J3, R6, J7, C6, C5, J10, U5, J2, U3, F1, R1, J1, C13
Welcome 👋
Flux helps you build PCBs faster with an AI teammate!
Create your account to collaborate, stay updated, fork your own version, and get instant answers from our AI agent.