Skip to the content
2 layers100 × 50 mmBPV4 CollarEVAL, the printed circuit board in 3D

BPV4 CollarEVAL

rees3901/BluepawsV4

version 4 of my on-going cat tracker project. this differs in structure in that both the TX collar and Rx homehub will be in the same repo to ensure intercompatability

Size
100 × 50 mm
Copper layers
2
Thickness
1.6 mm
Parts
58
Nets
82
Pads
271
Tracks, vias
584, 51
Pours
66
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
5 Mar 2026
Updated
5 Nov 2026

Overview

BPV4 CollarEVAL is an open-source printed circuit board by rees3901, from the rees3901/BluepawsV4 repository on GitHub. It is a 2-layer board of 100 × 50 mm with 58 parts on 82 nets, routed with 584 tracks and 51 vias.

It is built around the RAK4630, TPS62840DLCR and BQ24074RGTR, with the LIS2DW12TR-MS, USBLC6-2SC6 and CPT-7502-65-SMT-TR among its other parts. Its parts include 17 resistors, 13 capacitors, 7 connectors, 6 ICs and 4 diodes.

Main components

7

README

README.md

Bluepaws V4

Unified firmware repository for the Bluepaws animal tracker system. Both the transmitting collar and receiving home hub share a single codebase with a common TLV binary protocol and configuration library.

System Overview

ComponentMCURadioConnectivity
CollarnRF52840SX1262 LoRaSequans Monarch 2 GM02SP (LTE-M/NB-IoT + GNSS), BLE
Home HubESP32-S3SX1262 LoRaWiFi, BLE beacon

Data paths:

  • Collar -> LoRa -> Home Hub -> log + display -> WiFi -> Cloud
  • Collar -> LTE-M/NB-IoT -> Cloud via REST POST

Battery target: 30+ days at 10-minute wake intervals.

Hardware

PartRoleKey Specs
nRF52840 (Seeed XIAO BLE Sense)Collar MCUARM Cortex-M4F, BLE 5.0, 256KB RAM
SX1262LoRa transceiver150 MHz-960 MHz, +22 dBm, LoRa/FSK
Sequans Monarch 2 GM02SPCellular + GNSSLTE Cat M1/NB-IoT, integrated GNSS, 1uA deep sleep, 23 dBm TX, EAL5+ secure enclave, iSIM, single 2.2V rail, global bands
ESP32-S3 (Seeed XIAO)Hub MCUDual-core, WiFi, BLE 5.0, 512KB SRAM

The Sequans GM02SP replaces the previous BG77 + L76K combination. A single module handles both cellular IoT and GPS positioning, simplifying the collar BOM and reducing power draw.

Independent Walter LTE testbed

The separate walter PlatformIO target exercises real GM02SP LTE/GNSS on an ESP32-S3 Walter board, with a simulated LoRa transmit step and its own independent collar ID 1010. It does not replace or alter the WisMesh collar firmware. See Walter setup and commissioning before provisioning credentials or flashing. It boots idle and is not a default build/upload target.

Repository Structure

The top level is organised by responsibility. Firmware stays under the physical product it runs on; the two Home Hub implementations are grouped together so that hub and home-hub no longer appear to be separate products.

text
BluepawsV4/
├── README.md                         # Repository overview
├── docs/
│   ├── protocol/                     # Wire formats and commands
│   ├── firmware/collar/              # Collar design and test notes
│   ├── firmware/home-hub/            # Home Hub design and test notes
│   ├── operations/                   # Runbooks and release readiness
│   └── development/                  # Environment strategy and backlog
├── pcb/collar/                       # Collar PCB projects and vendor libraries
├── platformio.ini                    # Multi-environment build config
├── shared/lib/BluepawsProtocol/      # Shared protocol & config
│   ├── README.md                     # Protocol implementation notes
│   ├── library.json                  # PlatformIO library manifest
│   ├── bp_protocol.h                 # Shared protocol implementation header
│   └── bp_config.h                   # LoRa params, profiles, timing
├── collar/                           # nRF52840 collar firmware
│   ├── src/main.cpp
│   └── include/collar_pins.h
├── hub/                              # All Home Hub implementations
│   ├── platformio/                   # Heltec ESP32-S3 prototype + LittleFS UI
│   ├── esp-idf-p4/                   # ESP32-P4 production testbed
│   ├── maps/                         # Offline map-pack inputs and guidance
│   └── tests/esp-idf-p4/             # Host tests for the P4 core
├── diagnostics/

Web GUI

The hub serves a real-time tracking dashboard over WiFi, built with Leaflet.js and Server-Sent Events (SSE).

Device Cards - each tracked animal gets a card in the left sidebar showing:

  • Unique emoji avatar with colour-coded ring (auto-assigned per device)
  • Last GPS coordinates in monospace
  • Status badge (Home / Out / Lost / Error)
  • Telemetry grid: profile, battery %, signal strength, GPS accuracy, distance from home, last seen
  • Jump - centres map on the animal at zoom 17
  • Follow - auto-pans the map as new positions arrive
  • Trail - toggles breadcrumb polyline on/off per device
  • Cmd - opens command modal

Map Features:

  • Three base layers: Street (OSM), Satellite (Esri), Topographic
  • Per-device coloured trail lines with dashed polylines
  • Lost-mode markers pulse red
  • Measurement tool
  • Dark / light theme toggle

Connection Monitoring:

  • Server sends SSE heartbeat every 5 seconds
  • Client watchdog flips to "No heartbeat" if 10 seconds pass without any event
  • Status banner shows Connected or Disconnected

Mock Server

Simulates animals with live SSE telemetry for local GUI development:

bash
node tools/mock-server.js
# http://localhost:3000
# Streams position updates every 2s + heartbeat every 5s

Customer Web App

web/ contains the Vercel-ready Next.js and TypeScript refactor of the hub dashboard. It preserves the embedded GUI in hub/platformio/data/, reads the latest live positions from Supabase by default, and confines mock telemetry to tutorial mode.

Deploy with Vercel

bash
cd web
npm install
npm run dev

For Vercel, import this repository and select web as the project Root Directory. Leave the Install, Build, and Output settings at their detected Next.js defaults. See web/README.md for the exact deployment settings and the planned HTTPS Edge Function -> Supabase -> Realtime data path.

The cloud ingestion schema, device registry, and authenticated Edge Function are under supabase/. See tools/VPS_SIMULATOR.md for the Ubuntu VPS client and tools/TLV_SIMULATOR_GUI.md for the desktop packet-builder and manual HTTPS test console.

Development and Production Environments

The existing Supabase BluepawsV4 project is the permanent DEV/Test environment. Production will use a separate clean Supabase project reconstructed from the version-controlled migrations in this repository. Development and simulator data must not be migrated into production.

The same GitHub repository and Vercel project are used for both environments, with Vercel environment configuration selecting the appropriate Supabase project.

See:

TLV Protocol v1.2

The canonical protocol document is:

text
docs/protocol/TLV_PROTOCOL_V1_2.md

The system is moving away from production JSON telemetry. JSON remains useful for debugging, logs, exports and admin APIs, but LoRa and cellular telemetry should use the compact binary TLV packet.

Locked packet shape:

text
[32-byte fixed header][0-24 bytes TLV][8-byte HMAC-SHA256 tag]

Packet size:

text
minimum = 40 bytes
maximum = 64 bytes

Fixed header summary

OffsetSizeFieldTypeNotes
01veru8Protocol version
12device_guid16u16Immutable collar identity
32msg_seq_idu16Per-device rolling sequence
54time_unixu32UTC timestamp
91stateu8Packed status + power profile
101flagsu8Core bitfield
111tx_reasonu8Transmission reason enum
124lat_e7i32Latitude x 10000000
164lon_e7i32Longitude x 10000000
202batt_mVu16Battery voltage
222acc_mu16Accuracy in metres
242fix_age_su16GNSS fix age
261sat_countu8Satellite count
274hdr_rsvdu8[4]Reserved, set 0
311tlv_lenu80-24 TLV bytes

The 8-byte tag is the first eight bytes of HMAC-SHA256 over the complete header and TLV section. The same authenticated binary packet is preserved across LoRa and LTE paths; path-specific RF and gateway details live only in the HTTPS JSON wrapper. See the canonical document for enums, selected TLVs, validation rules and examples.

Message Flow

text
Collar --LoRa--> Hub --REST POST--> Cloud
Collar --LTE-M/Cat-M1 REST POST--> Cloud

Both paths preserve the original authenticated packet, including (device_guid16, msg_seq_id, time_unix). The hub relays the collar bytes without changing them. Redundancy is intentional for reliability.

Canonical retry deduplication is handled in the cloud using:

text
SHA-256(complete authenticated packet)

Reuse of (device_guid16, msg_seq_id, time_unix) with different packet content is treated as an identity conflict rather than an overwrite.

Hub CSV or debug log format should be derived from decoded TLV fields, not treated as the production on-air format.

Building

Requires PlatformIO.

bash
# Build both targets
pio run

# Build collar only
pio run -e collar

# Build hub only
pio run -e hub

# Upload to connected device
pio run -e collar -t upload
pio run -e hub -t upload

Operating Profiles

ProfileTX PowerIntervalCellularRemarks
Normal19 dBm10 min1:10Daily tracking, balanced power and update frequency
PowerSave10 dBm30 min1:30At home or battery conservation, reduced TX power and longer sleep
Active Find19 dBm1 min1:5Cat is outside geofence or user is actively searching
Emergency Lost22 dBm30 s1:3User needs frequent updates for retrieval, then fallback to Active Find

Parts

58
QtyValueFootprintReferences
61kResistor_SMD:R_0402_1005MetricR2, R5, R10, R13, R14, R17
5100nFCapacitor_SMD:C_0402_1005MetricC3, C9, C10, C12, C13
510kResistor_SMD:R_0402_1005MetricR4, R8, R9, R15, R16
410uFCapacitor_SMD:C_0201_0603MetricC4, C5, C11, C14
3FiducialFiducial:Fiducial_0.5mm_Mask1mmFID1, FID2, FID3
3LEDLED_SMD:LED_0402_1005MetricD1, D3, D4
21MResistor_SMD:R_0402_1005MetricR6, R7
21uFCapacitor_SMD:C_0402_1005MetricC2, C8
24.7kResistor_SMD:R_0402_1005MetricR1, R3
25.1kResistor_SMD:R_0402_1005MetricR11, R12
2M2_ScrewMountingHole:MountingHole_2.2mm_M2_Pad_ViaMH1, MH2
2SJ_2_BrJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP1, JP16
2SW_PushButton_Switch_SMD:SW_SPST_B3U-1000PSW1, SW2
12.2uHInductor_SMD:L_0201_0603MetricL1
1BQ24074RGTPackage_DFN_QFN:VQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mmU2
1C 100nFCapacitor_SMD:C_0402_1005MetricC6
1C 10uFCapacitor_SMD:C_0201_0603MetricC1
1CPT-7502-65-SMT-TRCPT-7502-65-SMT-TR:XDCR_CPT-7502-65-SMT-TRBZ1
1Conn_01x02_PinConnector_PinHeader_1.00mm:PinHeader_1x02_P1.00mm_VerticalJ7
1Conn_01x03Connector_JST:JST_SH_SM03B-SRSS-TB_1x03-1MP_P1.00mm_HorizontalJ1
1Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ3
1Conn_01x05Connector_PinHeader_1.00mm:PinHeader_1x05_P1.00mm_VerticalJ2
1Conn_01x06Connector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_VerticalJ6
1Conn_01x08Connector_JST:JST_SH_SM08B-SRSS-TB_1x08-1MP_P1.00mm_HorizontalJ5
1DMG2305UX-13LIB_DMG2305UX-13:SOT96P240X120-3ND2
1LIS2DW12TRLIS2DW12TR:LGA12R50P4X4_200X200X70U6
1MAX17048G_T10MAX17048G_T10:SON50P200X200X80-9NU1
1RAK4630RAK4630:RAK4630IC1
1TPS62840DLCRTPS62840DLCR:SON50P200X150X100-8NU3
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U4
1USB_C_Receptacle_USB2.0_14PConnector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ4

More from rees3901/BluepawsV4

1
  • 2 layers45 × 25 mmBPV4 Collar 2nd board, the printed circuit board in 3D

    BPV4 Collar 2nd board

    rees3901/BluepawsV4

    version 4 of my on-going cat tracker project. this differs in structure in that both the TX collar and Rx homehub will be in the same repo to ensure intercompatability

    31 parts

Similar boards

  • 6 layers53 × 80 mmTheSummitProject, the printed circuit board in 3D

    TheSummitProject

    Da-Dog/the-summit-project-hardware

    108 parts1
  • 4 layers88 × 48 mmMainboard reva, the printed circuit board in 3D

    Mainboard reva

    aliaksei-lameyka/ENKU-Clock

    Open, repairable, local-first e-paper alarm clock.

    82 parts1
  • 4 layers30 × 51 mmEnv sensor b, the printed circuit board in 3D

    Env sensor b

    marcelpetrick/sensorly-unhinged

    My very first PCB: an ESP32-C6 temperature/humidity sensor prototype, exploring compact and thermally isolated layouts from one shared electrical design.

    64 parts1GPL-3.0
  • 2 layers38.9 × 48.9 mmPager carrier, the printed circuit board in 3D

    Pager carrier

    awong-dev/pager

    Low-powered, gps and messaging capable pager for kids

    79 parts
  • 2 layers110 × 119 mmV2 Queens2026, the printed circuit board in 3D

    V2 Queens2026

    FelixStA52/BRACHIOSAURUS

    Boxed Recorder Analyzing Change in Height of Ice with On Site Accelerometer and Ultrasonic Readers Utilizing Support (BRACHIOSAURUS)

    55 parts
  • 6 layers17.2 × 35.4 mmOshEasyMini, the printed circuit board in 3D

    OshEasyMini

    Kev1n8088/OshEasyMini

    124 parts
  • 4 layers30 × 80 mmOshTelemega, the printed circuit board in 3D

    OshTelemega

    Kev1n8088/OshTelemega

    The Mega3080 FCU is an evolved clone of the Altus Metrum Telemega. Using the same firmware (meaning the same sensor suite), the primary developments are: - USB-C - Wago style spring terminals - Better GPS RF routing…

    166 parts
  • 4 layers52 × 42 mmHa coap pcb, the printed circuit board in 3D

    Ha coap pcb

    yanntalhouarne/ha-coap-pcb

    104 parts

Questions

How big is the BPV4 CollarEVAL PCB?

It measures 100 × 50 mm and has 2 copper layers, 1.6 mm thick.

What parts does the BPV4 CollarEVAL use?

58 parts, built around the RAK4630, TPS62840DLCR, BQ24074RGTR and LIS2DW12TR-MS. 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 BPV4 CollarEVAL KiCad files?

From the rees3901/BluepawsV4 repository on GitHub, at the commit this page was made from: the board is pcb/collar/BPV4_Collar/Eval boards/Main board/BPV4_CollarEVAL/BPV4_CollarEVAL.kicad_pcb and its schematic pcb/collar/BPV4_Collar.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the BPV4 CollarEVAL design in my own project?

Its repository states no licence, so its author keeps all rights: ask rees3901 before reusing the design.