DIY Dashboard Compass Project

You’re right to ask. The short version: I made real progress, but the work got interrupted multiple times by execution stops, so it likely looked like I was spinning.
Here’s what actually happened:

Table


AreaWhat I didCurrent state
Project setupRenamed the project and updated the description to match the FJ Cruiser solar compass conceptDone
Architecture notesCreated Design Notes for the system intentDone
Major componentsAdded the MCU, magnetometer, LED driver, charger, LDO, displays, dimmer/switch, connectors, protection, and passivesDone
Power wiringWired solar input through fuse, Schottky reverse protection, TVS clamp, charger input, battery, charger SYS output, switched rail, and 3.3V LDOMostly done
Logic wiringWired I2C between U1, U2, and U3, with pullupsDone
Display wiringWired the three 7-segment displays to the LED driver segment/common netsDone
Dimmer/offWired RV1 as both ADC dimmer input and hard load-disconnect switchDone
Debug/resetWired SWD/debug and reset support around U1 and J3Done
Display replacementReplaced the earlier placeholder displays with DISP1, DISP2, and DISP3 using LTS-5503AE orange/yellow displays, then rewired themDone
Board setupSet the layout to a 120 mm x 55 mm rounded rectangle, 4-layer stackup, 0.2 mm keepout, and 0.25 mm trace widthDone
PCB placement/routingStarted moving toward layout work, but placement and routing were interrupted before completionNot done
The biggest reason it took so long is that the execution agent was stopped several times, including by “insufficient credits” earlier and later by “stopped by user.” I did not get all the way through PCB placement, routing, DRC review, or manufacturability review.
Most important unfinished items
  • Run a schematic review/ERC to catch floating or incorrectly configured pins.
  • Verify charger/programming resistor values against the actual solar panel and battery you want to use.
  • Place components on the PCB.
  • Route the board.
  • Run DRC and review footprints/MPNs.
I should have surfaced the interruptions more clearly instead of leaving you guessing.
Recent activity log
Check recent changes
Run design checks
Modified components
Export BOM
RV1
U4
U1 PA22 - U2 SDA/SDI/SDO
U3 C_FILT - C13 P1
U3 CA7 - DISP1 ANODE_G
U5 VO - C6 P1
U5 VO - C6 P1
U3 CA5 - DISP1 ANODE_E
U3 CB2 - DISP2 COMMON_CATHODE_1
U3 CA8 - DISP1 ANODE_D.P.
U1 VDDCORE - C11 P1
U1 PA02 - RV1 R1_2
U3 CA4 - DISP1 ANODE_D
U4 SYS - C8 P1
U2 Vdd_IO - U2 ~{CS}
U1 ~RESETN - J3 10
U3 CB2 - DISP2 COMMON_CATHODE_1
U3 R_EXT - R8 P1
U1 VDDIN - U2 Vdd
U2 Vdd_IO - U2 ~{CS}
U3 CA2 - DISP1 ANODE_B
RV1 SW_2 - U5 VI
U1 PA06 - U4 STAT1
J1 1 - F1 P1
U4 BAT - J2 1
U2 Vdd_IO - U2 ~{CS}
U3 CA2 - DISP1 ANODE_B
U2 Vdd_IO - U2 ~{CS}
U3 CA1 - DISP1 ANODE_A
U1 PA07 - U4 STAT2
U3 CA3 - DISP1 ANODE_C
U1 ~RESETN - J3 10
U2 Vdd_IO - U2 ~{CS}
U3 C_FILT - C13 P1
U3 CA5 - DISP1 ANODE_E
U3 CA8 - DISP1 ANODE_D.P.
U3 CA8 - DISP1 ANODE_D.P.
U5 VO - C6 P1
F1 P2 - D2 A
U1 PA22 - U2 SDA/SDI/SDO
U4 TS/MR - R11 P2
U3 CB2 - DISP2 COMMON_CATHODE_1
U1 PA04 - U2 INT
U3 CA4 - DISP1 ANODE_D
U3 CA4 - DISP1 ANODE_D
U4 BAT - J2 1
U3 CA5 - DISP1 ANODE_E
U2 C1 - C14 P1
U1 PA23 - U2 SCL/SPC
U1 VDDIN - U2 Vdd
U3 CA7 - DISP1 ANODE_G
U3 CB3 - DISP3 COMMON_CATHODE_1
U3 CA5 - DISP1 ANODE_E
U2 Vdd_IO - U2 ~{CS}
U3 CA8 - DISP1 ANODE_D.P.
U3 CA1 - DISP1 ANODE_A
U1 PA02 - RV1 R1_2
U1 VDDCORE - C11 P1
F1 P2 - D2 A
U3 CB1 - DISP1 COMMON_CATHODE_1
U3 R_EXT - R8 P1
U3 CA3 - DISP1 ANODE_C
D2 K - D1 K
U2 Vdd_IO - U2 ~{CS}
U2 Vdd_IO - U2 ~{CS}
U1 PA30 - J3 4
D2 K - D1 K
U5 VO - C6 P1
U1 PA06 - U4 STAT1
U1 PA05 - U2 DRDY
U2 Vdd_IO - U2 ~{CS}
U3 CA6 - DISP1 ANODE_F
U3 CA3 - DISP1 ANODE_C
U1 PA22 - U2 SDA/SDI/SDO
U3 CA7 - DISP1 ANODE_G
U3 CA2 - DISP1 ANODE_B
U1 PA31 - J3 2
U1 PA30 - J3 4
U1 PA07 - U4 STAT2
U1 PA05 - U2 DRDY
U1 ~RESETN - J3 10
U4 SYS - C8 P1
U1 PA23 - U2 SCL/SPC
U3 CA6 - DISP1 ANODE_F
U2 Vdd_IO - U2 ~{CS}
D2 K - D1 K
U4 ISET - R3 P1
U3 CA2 - DISP1 ANODE_B
U3 CA1 - DISP1 ANODE_A
U3 CB3 - DISP3 COMMON_CATHODE_1
U1 PA06 - U4 STAT1
RV1 SW_2 - U5 VI
U4 ILIM/VSET - R4 P1
U1 PA04 - U2 INT
J1 1 - F1 P1
U3 CA4 - DISP1 ANODE_D
U3 CB3 - DISP3 COMMON_CATHODE_1
U1 PA31 - J3 2
U4 BAT - J2 1
U3 CB1 - DISP1 COMMON_CATHODE_1
U4 ILIM/VSET - R4 P1
U2 Vdd_IO - U2 ~{CS}
U1 PA23 - U2 SCL/SPC
U4 TS/MR - R11 P2
D2 K - D1 K
U2 Vdd_IO - U2 ~{CS}
U4 SYS - C8 P1
U1 PA31 - J3 2
U3 CB1 - DISP1 COMMON_CATHODE_1
U2 Vdd_IO - U2 ~{CS}
U3 CA6 - DISP1 ANODE_F
U3 CA3 - DISP1 ANODE_C
U1 PA22 - U2 SDA/SDI/SDO
U3 CA6 - DISP1 ANODE_F
U2 C1 - C14 P1
U5 VO - C6 P1
U3 CA1 - DISP1 ANODE_A
U5 VO - C6 P1
U4 ISET - R3 P1
U2 Vdd_IO - U2 ~{CS}
U1 ~RESETN - J3 10
U3 CA7 - DISP1 ANODE_G
U1 PA07 - U4 STAT2
U1 PA30 - J3 4
U1 PA23 - U2 SCL/SPC
D2 K - D1 K
U5 VO - C6 P1
C2
Capacitance
100nF
U1
R11
Resistance
10kΩ
R2
Resistance
4.7kΩ
C6
Capacitance
100nF
C3
Capacitance
100nF
C5
Capacitance
100nF
C8
Capacitance
10uF
R1
Resistance
4.7kΩ
R4
Resistance
18kΩ
C10
Capacitance
100nF
R3
Resistance
6kΩ
R5
Resistance
10kΩ
R9
Resistance
10kΩ
C13
Capacitance
100nF
C11
Capacitance
1uF
R10
Resistance
10kΩ
C12
Capacitance
1uF
C7
Capacitance
10uF
C14
Capacitance
100nF
R6
Resistance
10kΩ
R7
Resistance
10kΩ
C9
Capacitance
10uF
R8
Resistance
20kΩ
C4
Capacitance
100nF
GND
U2 GND - U2 SDO/SA1
J3
J3 9 - U4 ~CE
U4 EP - U5 GND
U2 GND - U2 SDO/SA1
U2 GND - U2 SDO/SA1
GND
U2 GND - U2 SDO/SA1
GND
U4 EP - U5 GND
U2 GND - U2 SDO/SA1
U2 GND - U2 SDO/SA1
GND
J3 9 - U4 ~CE
U4 EP - U5 GND
GND
U4 EP - U5 GND
U2 GND - U2 SDO/SA1
U2 GND - U2 SDO/SA1
U1 GND3 - U2 GND
U4 EP - U5 GND
U4 EP - U5 GND
U2 GND - U2 SDO/SA1
U2 GND - U2 SDO/SA1
U4 EP - U5 GND
U4 EP - U5 GND
U4 EP - U5 GND
U4 EP - U5 GND
U1 GND3 - U2 GND
U4 EP - U5 GND
GND
GND
U4 EP - U5 GND
GND
U2
J1
DISP2
D2
U5
F1
Not Recommended for New Designs
U3
DISP3
D1
DISP1
J2

Refine this doc
Ask about this doc
Design Notes
Project
Dashboard-mounted automotive compass for Toyota FJ Cruiser.
Architecture decisions
  • Use a 3-axis I2C magnetometer for heading sensing.
  • Use a low-power MCU to read the compass, compute N/E/S/W/NE/NW/SE/SW text, read dimmer voltage, and control display brightness.
  • Use an I2C LED display driver to reduce MCU pin count for three amber/yellow 7-segment digits.
  • Use a single-cell LiPo energy store with solar charging and 3.3V regulation.
  • Use a switch-pot dimmer as both user brightness control and hard/off input.
  • Include automotive-style input protection and decoupling even though the main charge source is solar.
Schematic wiring completed
  • Solar input path: J1 pin 1 -> F1 -> D2 -> CHG_IN -> U4 IN.
  • Input protection: D1 TVS and C7/C5 capacitance from CHG_IN to GND after reverse protection.
  • Battery path: U4 BAT -> J2 pin 1 with C12 BAT bypass to GND.
  • System path: U4 SYS -> RV1 switch -> U5 input -> 3.3V logic rail.
  • Dimmer: RV1 potentiometer forms a 3.3V to GND divider; wiper goes to U1 PA02 as DIMMER_ADC.
  • I2C bus: U1 PA22/PA23 connect to U2 and U3 with R1/R2 4.7k pull-ups to 3.3V.
  • Debug: J3 follows ARM 2x5 SWD convention with VTref, SWDIO, SWCLK, RESET, and GND.
  • Display matrix: U3 CA1-CA8 drive shared segment nets a, b, c, d, e, f, g, dp. U3 CB1-CB3 select digit commons for DISP1-DISP3.
Charger configuration
  • U4 BQ25185 is configured for a protected single-cell LiPo pack.
  • R3 = 6k on ISET targets about 50mA fast charge current using KISET typical 300AΩ.
  • R4 = 18k on ILIM/VSET sets 4.2V battery regulation and 500mA input current limit per BQ25185 datasheet table.
  • R11 currently holds TS/MR high because no battery NTC connector/network is fitted. For production, replace this with a battery NTC network or a battery pack with appropriate temperature monitoring.
  • U4 ~CE is tied low so charging remains enabled while solar input is present.
Support passives added
  • R5/C10: reset pull-up/filter for U1 ~RESETN.
  • R6/R7: SWDIO pull-up and SWCLK pull-down.
  • R8/C13: U3 R_EXT and C_FILT support network.
  • R9/R10: U4 STAT1/STAT2 pull-ups for MCU monitoring.
  • C11: U1 VDDCORE capacitor.
  • C12: U4 BAT bypass capacitor.
  • C14: U2 C1 support capacitor.
Layout intent
  • Rectangular dashboard board with three displays centered and aligned for visibility.
  • Dimmer/off knob placed at the right edge for driver access.
  • Solar and battery connectors placed at board edges.
  • Magnetometer placed away from high-current LED traces, power/protection parts, ferrous hardware, and mounting screws.
  • LED driver placed near the displays to keep segment/common traces short.
  • Charger, fuse, TVS, and battery connector grouped together near the power-entry edge.
Open engineering notes
  • The current display parts are accepted as library-available amber/orange placeholders.
  • The current switch-pot is accepted for schematic/layout progress, but its mechanical fit should be confirmed against the final dashboard enclosure.
  • Add mounting holes only after confirming dashboard bracket/enclosure constraints.
  • A real battery NTC network is recommended before field use if the selected LiPo pack does not already provide protected/temperature-monitored charging behavior.
  • Project

  • Architecture decisions

  • Schematic wiring completed

  • Charger configuration

  • Support passives added

  • Layout intent

  • Open engineering notes

Assets

Assets are files uploaded to this project which can be used in various ways.

FJ Cruiser Solar Compass Display thumbnail
Dashboard-mounted solar-assisted automotive compass for a Toyota FJ Cruiser using three amber 7-segment displays, an I2C magnetometer, MCU/display driver control, LiPo energy storage, and a dimmer knob with off switch.

Properties

Properties describe core aspects of the project.

Pricing & Availability

Distributor

Qty 1

Arrow

$10.61–$13.49

Digi-Key

$15.99–$17.67

LCSC

$24.70

Mouser

$19.62

TME

$4.93

Verical

$5.35–$14.08

Controls