
GPS Tracker V1
Firmware, dashboard, and prototype PCB files for a portable RTK GNSS tracker built around a Heltec WiFi LoRa 32 V4 and a Waveshare/Quectel LG290P receiver.
- Size
- 125 × 72 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 48
- Nets
- 62
- Pads
- 164
- Tracks, vias
- 249, 13
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 7 May 2026
- Updated
- 7 May 2026
Overview
GPS Tracker V1 is an open-source printed circuit board by Amazon-Master, from the Amazon-Master/gps-rtk-tracker repository on GitHub, published under the MIT licence. It is a 2-layer board of 125 × 72 mm with 48 parts on 62 nets, routed with 249 tracks and 13 vias.
It is built around the MAX40200AUK, XC6220D331MR-G and BS250. Its parts include 15 resistors, 10 capacitors, 4 ICs, 4 connectors and 3 transistors. It belongs with the radio and wireless boards of this library.
Main components
3MAX40200AUK
SOT23-5Ultra-Tiny Micropower, 1A Ideal Diode with Ultra-Low Voltage DropMaxim Integrated (Analog Devices)UncategorisedXC6220D331MR-G
SOT-25-40℃~+85℃@(Ta) 1 1A 28.75uA 3.3V 50dB@(1kHz) 655mV@(1A) 6V Fixed Over Current Protection、Over Temperature Protection Positive SOT-25 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSTorex SemiconductorVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsBS250
TO-92TO-92 MOSFETs ROHSQNHMOSFETs
README
README.mdGPS RTK Tracker
Firmware, dashboard, and prototype PCB files for a portable RTK GNSS tracker built around a Heltec WiFi LoRa 32 V4 and a Waveshare/Quectel LG290P receiver.
The tracker reads high-rate NMEA from the LG290P, forwards NTRIP/RTCM corrections over WiFi, shows live fix state on the OLED and RGB LED, serves a phone-friendly surveying dashboard, and can send compact low-rate location uplinks to The Things Network (TTN).
This started as an EE 2185 Circuits Design Project at the University of Vermont. The hardware and firmware are now in a working prototype state and are published under the MIT License.
Table Of Contents
- Current Status
- What It Does
- Prototype Warnings
- Hardware
- Quick Start
- Configuration
- Web Dashboard
- NTRIP And RTK
- TTN LoRaWAN
- PCB Files
- Power Path
- Pin Notes
- API And Exports
- Packet Formats
- Troubleshooting
- Repository Layout
- License
Current Status
Working and field-tested:
- GNSS UART parsing from the LG290P at 460800 baud
- OLED display using the stable manual Heltec V4 display path
- RGB fix-status LED
- Battery ADC reading with board-specific calibration
- WiFi station mode, setup/offline AP mode, and saved WiFi profiles
- NTRIP client with live RTCM forwarding to the GNSS module
- RTK Float in field testing with live RTCM bytes
- ESP32-hosted dashboard with maps, precision plots, logs, survey marks, and CSV/JSON/GeoJSON/KML exports
- TTN OTAA join and app-port-2 uplinks on US915 FSB2
- Custom through-hole V1 PCB bring-up, charging, and power routing
Still prototype-grade:
- RTK Fixed has not yet been made stable in controlled field testing.
- Charger and LDO temperatures need conservative limits before enclosure use.
- The first assembled PCB needed battery-voltage calibration and has RGB red and blue physically swapped; firmware compensates.
What It Does
The firmware has three major jobs:
- RTK rover operation: read live position from the LG290P, connect to an NTRIP caster over WiFi, send rover GGA to the caster, and forward binary RTCM corrections back to the receiver.
- Field dashboard: host a lightweight dashboard directly from the ESP32 so a phone or laptop can view position, fix quality, precision, RTK state, satellites, logs, setup, and survey marks.
- Low-rate radio reporting: send tiny position packets either over direct P2P LoRa or over TTN LoRaWAN. TTN is for breadcrumbs and marked points, not high-rate live tracking.
What it does not do:
- It does not provide RTK corrections over LoRaWAN. RTK corrections still come from NTRIP over WiFi/hotspot.
- It does not use paid map APIs. The embedded dashboard uses browser-loaded map tiles and simple outbound Google Maps links.
- It is not yet a certified surveying instrument. Treat it as an educational and prototype field tool.
Prototype Warnings
Read this before copying the hardware design:
- Battery/charger safety: the MCP73831 is a linear Li-Ion charger. The original 2 kOhm PROG resistor sets roughly 500 mA and can run hot in a SOT-23-5 package. Use a lower current such as 200 mA with 5 kOhm, or 100 mA with 10 kOhm, unless you have verified board and enclosure thermals.
- Regulator heat: when the tracker is on and powered from USB, the 3.3 V LDO can become the dominant hot part. Check it with the real GNSS, WiFi, OLED, and radio load.
- RTK Fixed depends on antenna conditions: good WiFi is not enough. You need a stable antenna, low multipath, good sky view, compatible RTCM, and enough still convergence time.
- Open setup AP:
GPS-RTK-Setupis intentionally open for easy field setup. Use it briefly and locally; do not leave it active around untrusted users. - Secrets: the tracked repo contains no WiFi, NTRIP, TTN, or Heltec license
secrets. Keep real credentials in ignored
config_private.hor in the dashboard's ESP32 Preferences storage.
Hardware
Known-good target:
| Item | Current choice |
|---|---|
| Controller | Heltec WiFi LoRa 32 V4 |
| GNSS receiver | Waveshare / Quectel LG290P RTK module |
| Firmware framework | Arduino + Heltec ESP32 Dev-Boards |
| LoRaWAN region | US915 for Vermont / TTN |
| Dashboard access | Same WiFi network, or setup/offline AP at 192.168.4.1 |
| PCB | Custom through-hole V1 board in hardware/GPS_Tracker_V1/ |
The LG290P antenna quality and placement matter a lot. For RTK Fixed testing, use a stable outdoor antenna setup with low multipath and a suitable ground plane if the antenna expects one.
Quick Start
1. Install Board Support
Use Arduino IDE or arduino-cli with the Heltec ESP32 Dev-Boards package.
Select:
| Setting | Value |
|---|---|
| Board | WiFi LoRa 32(V4) |
| USB CDC On Boot | Enabled |
| Partition Scheme | 16M Flash (3MB APP/9.9MB FATFS) |
| LoRaWan Region | REGION_US915 for Vermont / TTN |
| Library | Heltec ESP32 Dev-Boards |
Avoid mixing old Heltec V3 helper libraries into this project.
2. Compile
Known-good CLI command:
arduino-cli compile \
--fqbn Heltec-esp32:esp32:heltec_wifi_lora_32_V4:CDCOnBoot=cdc,PartitionScheme=app3M_fat9M_16MB,LORAWAN_REGION=3 \
--build-path /tmp/gps_rtk_tracker_build \
.LORAWAN_REGION=3 is important for TTN US915. If the firmware is compiled for
EU868, TTN joins in Vermont will fail even when the keys are correct.
3. Add Private Credentials
For compile-time defaults, copy:
cp config_private.example.h config_private.hThen fill in WiFi and NTRIP values in config_private.h. That file is ignored
by Git.
You can also leave compile-time credentials blank and configure WiFi/NTRIP/TTN from the dashboard Setup tab.
4. Flash And Open Serial
Open Serial Monitor at 115200 baud with USB CDC On Boot enabled. On startup, look for:
=== GPS RTK Tracker ===
[GNSS] UART1 started at 460800 bps
[WEB] Dashboard listening on port 80When WiFi connects, Serial and the OLED show the board IP. Open:
http://<board-ip>/If WiFi is missing or fails, connect to the open setup AP:
SSID: GPS-RTK-Setup
URL: http://192.168.4.1/setupConfiguration
Compile-time defaults live in config.h and optional private overrides live in
config_private.h.
Common compile-time values:
| Setting | Purpose |
|---|---|
MOVE_THRESHOLD_M | Movement before sending a P2P LoRa point |
MAX_TX_INTERVAL_S | Force-send interval even if stationary |
LORA_TX_POWER | P2P LoRa TX power |
NTRIP_GGA_SEND_MS | Rover GGA send interval for VRS casters |
VBAT_CALIBRATION_SCALE | Board-specific battery ADC correction |
TTN_MARK_MIN_GAP_MS | Minimum gap between manual TTN mark uplinks |
TTN_BREADCRUMB_MIN_GAP_MS | Conservative minimum breadcrumb gap |
Dashboard-saved values take priority over compile-time defaults. The Setup tab can save:
- WiFi profiles
- NTRIP caster, port, mountpoint, username, and password
- Radio mode: off, P2P LoRa, or TTN LoRaWAN
- P2P TX enable
- TTN DevEUI, JoinEUI/AppEUI, AppKey, sub-band, and transmit options
Blank password/key fields preserve the existing saved value. Type a new secret only when you want to replace it.
Web Dashboard
The ESP32 hosts a small dependency-free dashboard using WiFiServer. It is
available when the tracker is connected to normal WiFi, and a simplified
offline/setup page is available from GPS-RTK-Setup.
Dashboard tabs:
| Tab | What it shows |
|---|---|
| Track | Current position, fix, battery, map marker, route, precision rings |
| Precision | Stationary scatter, RMS, median radius, 95% radius, max radius |
| RTK | NTRIP state, RTCM bytes, stream age, GGA count, fix-mode time |
| Survey | Named marks, averaged points, map/table display, mark exports |
| Setup | WiFi/NTRIP/radio/TTN configuration |
| Debug | Logs, satellite rows, heap/status, exports, bench hardware tests |
Map notes:
- The online dashboard uses Leaflet in the phone browser.
- Burlington/Vermont testing includes Vermont VCGI orthoimagery, plus OpenStreetMap and Esri fallbacks.
- The ESP32 does not download map tiles. Your phone or laptop does.
- Google Maps is used only as an outbound coordinate link, not as an embedded paid JavaScript API.
Offline/setup page notes:
- No internet assets, no Leaflet, and no external CSS/JS.
- Shows position, fix quality, battery, RTK status, logs, cached WiFi scan results, saved WiFi profiles, local track plot, survey marks, and sky view.
- Manual rescan briefly drops
GPS-RTK-Setup, scans in station-only mode, caches results, and restarts the AP.
NTRIP And RTK
The NTRIP client:
- Connects to station WiFi.
- Opens the caster/mountpoint TCP connection.
- Checks for a valid response such as
ICY 200 OK. - Sends rover GGA to VRS mountpoints.
- Forwards binary RTCM bytes to the LG290P.
Healthy RTK transport looks like:
[NTRIP] Caster response: ICY 200 OK
[NTRIP] Stream active - receiving RTCM
[NTRIP] First RTCM bytes receivedRTK Float means the receiver is using corrections but has not resolved carrier phase ambiguities tightly enough for RTK Fixed. If RTCM bytes are increasing and the fix reaches RTK Float, WiFi/NTRIP is probably working. Persistent Float is usually an antenna, multipath, receiver configuration, or correction-message compatibility problem.
For RTK Fixed testing:
- Keep the antenna completely still for several minutes.
- Use open sky, away from windows, walls, vehicles, metal railings, roofs, and trees.
- Use a ground plane when the antenna type expects one.
- Confirm the mountpoint is intended for your region and emits compatible multi-constellation RTCM, ideally MSM messages.
- Capture the RTK tab and Serial log if Float is stable but Fixed never appears.
TTN LoRaWAN
TTN is for low-rate location reporting when WiFi is not the main display path. It is not for centimeter-rate plotting and does not carry RTK corrections.
Recommended TTN setup:
- Create a TTN application.
- Register an end device manually with OTAA.
- Use frequency plan United States 902-928 MHz, FSB 2 (used by TTN).
- Use LoRaWAN 1.0.x settings.
- Generate or enter:
- DevEUI: 16 hex characters
- JoinEUI/AppEUI: 16 hex characters
- AppKey: 32 hex characters
- In the tracker Setup tab, choose
TTN LoRaWAN, enter the values, choose the US915 sub-band, save, and reboot. - Watch TTN Console Live Data for join and uplink events.
Important TTN notes:
- Serial prints the compiled LoRaWAN region and channel mask at boot. For US915
FSB2, the region should be
US915and the mask should includeFF00plus0002in the fifth word. - The Heltec LoRaWAN stack needs the board's chip-specific Heltec license. If
Serial prints
Please provide a correct license!, use Heltec's license lookup for the printedESP32ChipID, sendAT+CDKEY=<32 hex chars>in Serial Monitor, and reboot. - If bad TTN settings make the tracker hang during radio startup, hold the Heltec PRG/BOOT button while resetting. Safe mode forces radio off for that boot and starts setup/offline mode.
- Uplinks are unconfirmed by default to avoid downlink usage.
- TTN Sandbox fair use is small: keep payloads tiny and breadcrumb intervals in minutes, not seconds.
Manual survey marks are prioritized over breadcrumbs. If the LoRaWAN MAC is busy, a pending mark remains queued and retries instead of being silently dropped.
TTN Payload Decoder
Use this JavaScript uplink decoder in TTN for app port 2:
function s32(b, i) {
var v = (b[i] << 24) | (b[i + 1] << 16) | (b[i + 2] << 8) | b[i + 3];
return v;
}
function s16(b, i) {
var v = (b[i] << 8) | b[i + 1];
return v & 0x8000 ? v - 0x10000 : v;
}
function decodeUplink(input) {
var b = input.bytes;
if (b.length !== 16) {
return { data: {}, errors: ["expected 16 byte GPS RTK payload"] };
}
return {
data: {
kind: b[0] === 2 ? "mark" : "breadcrumb",
sequence: b[1],
latitude: s32(b, 2) / 10000000,
longitude: s32(b, 6) / 10000000,
altitude_m: s16(b, 10) / 10,
fix_type: b[12],
battery_percent: b[13],PCB Files
PCB files are in hardware/GPS_Tracker_V1/.
| Path | Contents |
|---|---|
hardware/GPS_Tracker_V1/source/ | KiCad project, schematic, PCB layout, BOM CSV, custom footprint |
hardware/GPS_Tracker_V1/gerbers_v2/ | Reviewed Gerber and drill files |
gerbers_v2 is the preferred fabrication set. Older working Gerbers are not
included because they had earlier outline, hole, and archive-cleanliness issues.
Before ordering another board:
- Open the KiCad project and run DRC.
- Inspect
gerbers_v2in the manufacturer viewer. - Confirm the three mounting holes are drilled/routed as intended.
- Decide whether
R1should be changed for lower charge current. - Confirm the BOM matches the actual assembly method and footprints.
Power Path
The custom PCB has its own USB-C charger and 3.3 V supply path:
USB-C VBUS -> +5V -> MCP73831 charger -> VBAT
USB-C VBUS -> +5V -> MAX40200 ideal diode -> SYS_IN
Battery JST -> VBAT -> MAX40200 ideal diode -> SYS_IN
SYS_IN -> power switch -> SYS_SW -> XC6220 3.3 V regulator -> 3V3 railsPractical behavior:
| Condition | Result |
|---|---|
| USB-C charger plugged in, switch ON | Tracker runs from USB path and battery can charge |
| USB-C charger plugged in, switch OFF | Battery can charge, tracker side should be off |
| Battery only, switch ON | Tracker runs from battery |
| Battery only, switch OFF | Tracker is off except tiny leakage paths |
| Laptop connected to Heltec USB | Programs/powers the Heltec side; separate from custom board USB-C charger path |
The custom board does not intentionally feed its +5V net into the Heltec 5 V
pin. Be careful when multiple USB cables are connected during debugging.
Pin Notes
Final firmware pin choices for the assembled PCB:
| Function | GPIO |
|---|---|
| RGB red | GPIO33 |
| RGB green | GPIO5 |
| RGB blue | GPIO2 |
| Battery ADC sense | GPIO6 |
| Battery divider enable | GPIO37 |
| RTK status input | GPIO4 |
| LG290P TXD3 to ESP32 RX | GPIO38 |
| ESP32 TX to LG290P RXD3 | GPIO39 |
| Optional UART2 RX from LG290P TXD2 | GPIO43 |
| Optional UART2 TX to LG290P RXD2 | GPIO44 |
Heltec V4 labels worth preserving:
| Label | GPIO |
|---|---|
VBAT_Read | GPIO1 |
ADC Ctrl | GPIO37 |
GNSS_Wakeup | GPIO40 |
GNSS_RST | GPIO42 |
GNSS_PPS | GPIO41 |
GNSS_TX | GPIO39 |
GNSS_RX | GPIO38 |
Vext_Ctrl | GPIO36 |
| onboard LED | GPIO35 |
| OLED reset | GPIO21 |
V_FEM_Control | GPIO7 |
| PRG/BOOT button | GPIO0 |
Low-Power Battery Divider
The intended switched divider:
VBAT -> P-MOS source
P-MOS drain -> 390k -> VBAT_SENSE -> 100k -> GND
VBAT_SENSE -> GPIO6
0.1 uF from VBAT_SENSE to GND
P-MOS gate -> 1M -> VBAT
P-MOS gate -> NPN collector
NPN emitter -> GND
GPIO37 -> 10k -> NPN base
NPN base -> 100k -> GND optional pulldownBehavior:
- GPIO37 LOW: divider off.
- GPIO37 HIGH: NPN pulls the P-MOS gate low, divider turns on, GPIO6 reads battery voltage.
- Recheck
VBAT_CALIBRATION_SCALEwith a multimeter if the resistor values, ADC wiring, or PCB revision changes.
API And Exports
Useful dashboard endpoints:
| Endpoint | Purpose |
|---|---|
GET /api/status | Live GNSS, battery, WiFi, route, precision, satellite JSON |
GET /api/debug | Heap, route/log counts, RTK pin, NTRIP, radio summary |
GET /api/logs | Recent fixed-memory firmware logs |
GET /api/export.csv | Retained route, precision, and marks as CSV |
GET /api/export.json | Retained route, precision, and marks as JSON |
GET /api/export.geojson | Saved survey marks as GeoJSON |
GET /api/export.kml | Saved survey marks as KML |
POST /api/clear | Clear route/precision history |
Large responses are streamed in small batches so GNSS, NTRIP, LoRa, and tracker logic keep running between chunks.
Packet Formats
P2P LoRa Packet
The direct P2P LoRa position packet is 14 bytes:
| Offset | Size | Content |
|---|---|---|
| 0-3 | int32 | Latitude, degrees x 1e7 |
| 4-7 | int32 | Longitude, degrees x 1e7 |
| 8-9 | uint16 | Altitude in cm |
| 10 | uint8 | Fix quality |
| 11 | uint8 | Battery percent |
| 12 | uint8 | Sequence counter |
| 13 | uint8 | HDOP x 10 |
TTN Packet
The TTN position payload is 16 bytes on app port 2:
| Offset | Size | Content |
|---|---|---|
| 0 | uint8 | Kind: 1 breadcrumb, 2 marked point |
| 1 | uint8 | Sequence counter |
| 2-5 | int32 BE | Latitude, degrees x 1e7 |
| 6-9 | int32 BE | Longitude, degrees x 1e7 |
| 10-11 | int16 BE | Altitude, meters x 10 |
| 12 | uint8 | Fix quality |
| 13 | uint8 | Battery percent |
| 14 | uint8 | HDOP x 10 |
| 15 | uint8 | Satellites in use |
Troubleshooting
gps-rtk.local Does Not Resolve
Use the IP shown on the OLED or in Serial Monitor. Phone hotspots and some mobile browsers often do not resolve mDNS reliably.
No RTCM Bytes
If rtcm=0B stays at zero after the caster accepts the connection:
- Confirm the caster response is
ICY 200 OKor another success response. - Confirm the RTK tab shows rover GGA being sent.
- Try a known nearby mountpoint.
- Check NTRIP username/password and mountpoint spelling.
- Confirm the phone/hotspot has real internet, not only local WiFi.
RTK Float But No RTK Fixed
If RTCM bytes are increasing and fix quality reaches RTK Float, the correction path is alive. For Fixed, improve antenna conditions and check receiver/caster compatibility. Multipath near windows, buildings, vehicles, and metal surfaces is the usual enemy.
TTN Joins But Payload Shows {}
The TTN decoder returns {} when the payload length is not the expected
16-byte app-port-2 tracker payload. Check that the uplink is on app port 2 and
that you pasted the decoder from this README into the TTN payload formatter.
Second TTN Mark Does Not Appear Immediately
Manual marks are rate-limited and the LoRaWAN MAC can be busy. The firmware keeps pending marks queued and retries them, but TTN is intentionally slow. Use multi-minute breadcrumbs and avoid rapid repeated mark sends unless testing.
OLED Resets Or USB Reconnects
Do not use the standard Heltec.display path for this project. The stable
Heltec V4 display path is:
- Start Heltec with built-in display disabled.
- Enable
Vext. - Initialize a dedicated
SSD1306Wireinstance.
The current display.cpp already does this.
Repository Layout
| Path | Purpose |
|---|---|
gps_rtk_tracker.ino | Main Arduino sketch |
config.h | Pins, compile-time settings, non-secret defaults |
config_private.example.h | Template for ignored private credentials |
gnss.* | NMEA parsing, satellite state, RTCM forwarding |
ntrip.* | WiFi/NTRIP state machine |
web_dashboard.* | Embedded dashboard HTML, API, exports, setup pages |
runtime_config.* | ESP32 Preferences storage for WiFi/NTRIP/radio/TTN |
display.* | OLED display |
leds.* | RGB fix LED behavior |
battery.* | Battery ADC reading and calibration |
lora_p2p.* | Direct P2P LoRa mode |
lora_ttn.* | TTN LoRaWAN mode |
radio_manager.* | Runtime radio-mode ownership |
tracker.* | Movement-triggered transmit policy |
app_log.* | Fixed-memory firmware log ring |
hardware/GPS_Tracker_V1/ | KiCad source and reviewed Gerbers |
DIGIKEY_ORDER_BOM.md | Prototype Digi-Key order BOM notes |
License
This project is released under the MIT License. See LICENSE.
Parts
48| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | TestPoint | TestPoint:TestPoint_Pad_1.5x1.5mm | 3.3V, 5V, GND, VBAT |
| 3 | 100k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R4, R12, R14 |
| 3 | 220 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R8, R9, R10 |
| 2 | 100nF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm | C8, C9 |
| 2 | 10µF | Capacitor_THT:C_Radial_D5.0mm_H5.0mm_P2.00mm | C6, C7 |
| 2 | 1K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R5, R15 |
| 2 | 1µF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm | C3, C4 |
| 2 | 2N3904 | Package_TO_SOT_THT:TO-92_Inline | Q1, Q2 |
| 2 | 4.7µF | Capacitor_THT:CP_Radial_D5.0mm_P2.00mm | C1, C2 |
| 2 | 5.1k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2, R3 |
| 2 | MAX40200AUK | Package_TO_SOT_SMD:SOT-23-5_HandSoldering | U2A1: MAX40200, U2B1: MAX40200 |
| 1 | 0.1µF | Capacitor_THT:C_Radial_D5.0mm_H5.0mm_P2.00mm | C11 |
| 1 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R13 |
| 1 | 10µF | Capacitor_THT:CP_Radial_D5.0mm_P2.00mm | C5 |
| 1 | 1M | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R7 |
| 1 | 2K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1 |
| 1 | 390k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R11 |
| 1 | 470 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R6 |
| 1 | BS250 | Package_TO_SOT_THT:TO-92_Inline | Q3 |
| 1 | Conn_01x02_Pin | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J2 BAT |
| 1 | GPIO POWER? | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J5 |
| 1 | Heltec_WiFi_LoRa_32_V4 | RF_Module:Heltec v4 | J3 |
| 1 | LED: Yellow | LED_THT:LED_D5.0mm | D1 |
| 1 | LED_RGBK | LED_THT:LED_D5.0mm-4_RGB_Staggered_Pins | D2 |
| 1 | LOGO | LOGO | G*** |
| 1 | MCP73831-2-OT | Package_TO_SOT_SMD:SOT-23-5_HandSoldering | U1: MCP73831 |
| 1 | SW_SPDT | Button_Switch_THT:SW_Slide-03_Wuerth-WS-SLTV_10x2.5x6.4_P2.54mm | SW1 |
| 1 | USB_C_Receptacle_PowerOnly_6P | Connector_USB:USB_C_Receptacle_GCT_USB4125-xx-x-0190_6P_TopMnt_Horizontal | USB J1 |
| 1 | Waveshare_LG290P_GNSS | RF_Module:Waveshare_LG290P_GNSS | J4 |
| 1 | XC6220D331MR-G | Package_TO_SOT_SMD:SOT-23-5_HandSoldering | U3: XC6220 |
The 45 most common of 48 parts.
Similar boards
- 2 layers102.1 × 119.4 mm

- 2 layers

- 4 layers151.1 × 71.1 mm

- 2 layers55 × 34 mm

KnurCAN V2
chrumck/KnurDash
A racing logger for an ND2 Mazda MX-5, integrating wide ranging functionality into one unit:
23 parts1MIT - 2 layers190 × 95 mm

Eausure measurement node
adam-dev-hub/eausure-v1
Complete IoT water quality monitoring ecosystem spanning embedded firmware, LoRa gateways, cloud APIs, mobile/web supervision, and PCB/mechanical design.
53 parts - 2 layers100.4 × 100 mm

ECE4450 FinalProject
bakerbass/ece4450filter
This project is to create a functioning circuit on a Tangible Waves form-factor module.
64 parts - 2 layers109 × 64 mm

Hyundai Dash V1.1
eymenyg/sim_dash
Download hyundaidashv1bng .zip from the Releases page and copy it to:
29 parts - 2 layers55 × 45 mm

Atx psu controller
ffosilva/psu-controller
Discrete ACPI-coordinated ATX power supply controller with remote ESP wake and telemetry latching
23 partsMIT
Questions
How big is the GPS Tracker V1 PCB?
It measures 125 × 72 mm and has 2 copper layers, 1.6 mm thick.
What parts does the GPS Tracker V1 use?
48 parts, built around the MAX40200AUK, XC6220D331MR-G and BS250. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the GPS Tracker V1 KiCad files?
From the Amazon-Master/gps-rtk-tracker repository on GitHub, at the commit this page was made from: the board is hardware/GPS_Tracker_V1/source/GPS_Tracker_V1.kicad_pcb and its schematic hardware/GPS_Tracker_V1/source/GPS_Tracker_V1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the GPS Tracker V1 design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).