Skip to the content
2 layers38.8 × 48.9 mmIFS09-TeleReceiver, the printed circuit board in 3D

Official hardware design, KiCad schematics, PCB layout, and firmware for the IFS09 Telemetry Receiver board (ISC Formula Student 2026/27). Integrates an ATmega328P (Nano USB-C) with an nRF24L01+ PA+LNA transceiver, dedicated 3.3V LDO regulator, external SMA 2.4GHz antenna, and RTT_nano_26 firmware for trackside telemetry acquisition.

Size
38.8 × 48.9 mm
Copper layers
2
Thickness
1.6 mm
Parts
14
Nets
33
Pads
65
Tracks, vias
50, 14
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
20 Aug 2026
Updated
7 Sep 2026

Overview

IFS09-TeleReceiver is an open-source printed circuit board by isc-fs, from the isc-fs/IFS09-TE-TeleReceiver repository on GitHub. It is a 2-layer board of 38.8 × 48.9 mm with 14 parts on 33 nets, routed with 50 tracks and 14 vias.

It is built around the LM1117MP-3.3. Its parts include 5 capacitors, 2 resistors, 2 ICs and 2 diodes. It belongs with the radio and wireless boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

1

README

README.md
isc-full-primary

IFS09-TE-TeleReceiver

Hardware design, KiCad schematics, PCB layout, and embedded firmware for the Telemetry Receiver Board of the IFS09, developed for the ISC Formula Student Racing Team (Season 2026/2027).

Formula Student Season [blocked] Hardware [blocked] Microcontroller [blocked] Transceiver [blocked]

View Design Report View Work Order View Schematics


Getting started

  1. Create a GitHub account if you don't have one yet.

  2. Download and install GitHub Desktop (beginner) or Git CLI (advanced).

  3. Clone this repository to your machine:

    • SSH: git@github.com:isc-fs/IFS09-TE-TeleReceiver.git
    • HTTPS: https://github.com/isc-fs/IFS09-TE-TeleReceiver.git

How we work with this repository

Main branches

The repository follows standard ISC branching rules:

  • main is the production branch. It contains only validated hardware releases, schematics, and firmware ready for track operations. Never work directly on it.
  • dev (or active feature branches) is the development and integration point. Never commit directly to main — all changes arrive through a reviewed Pull Request.
text
main  ──────────────────●──────────────────────●──▶  (validated releases only)
                        ↑                      ↑
dev   ──────●───●───●───●───●───●───●───●───●──●──▶  (continuous integration)
            ↑   ↑       ↑   ↑   ↑       ↑   ↑
          feat/1 fix/1 feat/2 fix/2   feat/3 fix/3

Feature branches

All work — whether a new hardware revision, firmware update, or bug fix — is done on a feature branch created from dev (or main). When the work is ready, a Pull Request is opened, reviewed, merged, and the branch is deleted.

text
feat/<n>   →  new functionality / hardware addition (feat/1, feat/2, feat/3 ...)
fix/<n>    →  bug fix / schematic correction       (fix/1,  fix/2,  fix/3  ...)

Step-by-step workflow

  1. Create the branch:
    bash
    git checkout main
    git pull origin main
    git checkout -b feat/your-feature-name
  2. Work and commit:
    bash
    git add .
    git commit -m "feat(hw): add decoupling capacitors to 3.3V rail"
  3. Push and open Pull Request:
    bash
    git push origin feat/your-feature-name
    Open a PR against main (or dev), verify 0 KiCad DRC/ERC errors, provide test evidence, and request review from the Telemetry Subsystem Technical Director.

1. Project Overview & System Purpose

The IFS09 Telemetry Receiver serves as the primary trackside ground-station receiving interface for the IFS09 race car. It captures high-frequency wireless telemetry frames (CAN-bus powertrain telemetry, accumulator/BMS diagnostics, suspension potentiometer data, and GPS telemetry) transmitted from the vehicle over 2.4 GHz RF, streaming uncorrupted telemetry packets over USB-Serial to the pit wall telemetry workstation.

text
+-----------------------------------------------------------------------------------------+
|                                     IFS09 RACE CAR                                      |
|  [Sensors & CAN Bus] ---> [ECU / VCU] ---> [Telemetry TX: nRF24L01+ PA+LNA]            |
+---------------------------------------------------+-------------------------------------+
                                                    |
                                             2.4 GHz RF Link
                                       (Trackside Line-of-Sight)
                                                    |
+---------------------------------------------------v-------------------------------------+
|                         IFS09 TELEMETRY RECEIVER (BASE STATION)                         |
|                                                                                         |
|  [External 2.4GHz Antenna] ===> [SMA Jack] ===> [nRF24L01+ PA+LNA Module]               |
|                                                        |                                |
|                                                    SPI Bus                              |
|                                                        v                                |
|                                              [Arduino Nano 3.0]                         |
|                                                 (ATmega328P)                            |
|                                                        |                                |
|                                              USB-C Serial (115200)                      |
|                                                        v                                |
|                                            [Ground Station PC / UI]                     |
+-----------------------------------------------------------------------------------------+

Key Highlights

  • Processing & USB Interface: Arduino Nano 3.0 with native USB-C connector powered by the ATmega328P (16 MHz, 5V logic).
  • RF Front-End: 2.4 GHz nRF24L01+ PA+LNA transceiver module with integrated Power Amplifier (PA) and Low-Noise Amplifier (LNA) for long-range sensitivity (up to $-95\text{ dBm}$ @ $250\text{ kbps}$), resolving link range constraints from prior seasons (FSA & FSS 2026).
  • Antenna Interface: Edge/chassis-mountable SMA Female (Jack) connector ($50,\Omega$) matched for external 2.4 GHz high-gain omnidirectional whip antennas (or IPEX interface).
  • Dedicated 3.3V LDO Regulation: On-board LM1117MP-3.3 low-dropout regulator with coupling capacitors ($10,\mu\text{F}$ input/output) providing clean, high-current 3.3 V to the transceiver independently of the Arduino Nano internal regulator.
  • Status LED Indicators: Dedicated software-controlled LEDs for radio link communication activity and transceiver hardware detection.
  • Testability: Dedicated test points including TP1 (nrf_power_tp) and signal test pads.
  • Mechanical Integration: Four symmetric M3 mounting holes (3.2 mm drill diameter) for securing within a custom 3D-printed enclosure using M3 heat-set threaded inserts.

2. Hardware Architecture & Schematic Design

The official schematic sheet (v2.0) is embedded below. Click on the preview image to open or download the vector PDF:

IFS09 Telemetry Receiver Schematic Diagram v2.0
🔍 Click on the schematic preview above to view or download the vector PDF (Schematics-2.0.pdf)

2.1 Schematic Subsystem Breakdown

1. Dedicated 3.3V Low-Dropout Regulator (LM1117MP-3.3)
  • Design Rationale: The Arduino Nano's internal 3.3V rail (derived from the USB-UART bridge) is limited to $\sim 50,\text{mA}$, whereas the nRF24L01+ PA+LNA transceiver demands peak burst currents upwards of $115\text{--}150,\text{mA}$ during active reception/amplification. Attempting to power the module from the Nano causes severe rail sagging, brownouts, and packet drops.
  • Implementation: A dedicated LM1117MP-3.3 SOT-223 LDO regulator (U2) steps down the 5V USB bus rail to an isolated, high-current 3.3V plane (rated up to $800,\text{mA}$).
  • Filtering & Decoupling: Implemented according to the manufacturer datasheet with a $10,\mu\text{F}$ input capacitor (C5) and a $10,\mu\text{F}$ output capacitor (C4) ensuring ripple $< 30,\text{mV}_{p-p}$.
2. nRF24L01+ PA+LNA Transceiver Front-End (U1)
  • Design Rationale: In previous seasons (FSA 2026 & FSS 2026), telemetry link dropouts occurred around large track perimeters due to insufficient link margin and strong inverter EMI. Using a dedicated external module with integrated Power Amplifier (PA) and Low-Noise Amplifier (LNA) boosts receiver sensitivity down to $-95,\text{dBm}$ (@ $250,\text{kbps}$) and transmit power to $+20,\text{dBm}$.
  • Antenna Interface: Standard SMA Female edge connector ($50,\Omega$) matched for external high-gain 2.4 GHz whip antennas elevated outside the pit enclosure.
  • Local Decoupling: Additional $1,\mu\text{F}$ (C1) and $10,\text{nF}$ (C2) ceramic capacitors placed directly across $V_{CC}$ and $GND$ pins.
  • Testability: Dedicated testpoint TP1 (nrf_power_tp) allows direct DMM/oscilloscope measurement of the transceiver power rail.
3. Processing Unit & USB Interface (A1)
  • Core Microcontroller: Arduino Nano 3.0 module footprint featuring native USB-C connectivity and the ATmega328P (16 MHz, 5V logic).
  • Decoupling: $100,\text{nF}$ capacitor (C3) tied from AREF to GND to suppress high-frequency analog reference noise.
  • RF-NANO Pin Mapping Alignment: Control and SPI signal lines follow the industry-standard RF-NANO mapping to ensure cross-compatibility with firmware sketches.
4. Diagnostic & Radio Status LED Indicators
  • Comm_status_indicator (D1 LED + $2,\text{k}\Omega$ R1): Connected to Arduino digital pin D2. Controlled via software to blink during active packet reception or remain steady when the RF link is healthy.
  • nRF24_detected (D2 LED + $2,\text{k}\Omega$ R2): Connected to Arduino digital pin D3. Illuminates automatically on setup if radio.isChipConnected() succeeds, providing instantaneous visual feedback isolating socket/transceiver hardware faults from software issues.

3. PCB Layout & Physical Implementation

IFS09 Telemetry Receiver 2D PCB Layout      IFS09 Telemetry Receiver 3D Render

3.1 Routing Strategy & Layer Stackup

  • Component Placement:
    • Arduino Nano 3.0 socket on the left half with USB-C facing outward for unobstructed chassis cable insertion.
    • nRF24L01+ PA+LNA header socket on the right half with antenna port facing outward.
    • LM1117MP-3.3 regulator and decoupling capacitor cluster (C1–C5) tightly positioned directly below the transceiver header to minimize inductive trace loops.
    • Status LEDs (D1, D2) and current-limiting resistors (R1, R2) placed along the top edge for direct visibility.
  • Power Distribution: Wide copper traces for the +5V bus and 3.3V output rail, combined with an unbroken ground plane on the bottom layer to ensure low-impedance RF return paths.
  • Mechanical Mounting: Four symmetric M3 mounting holes (3.2 mm drill diameter) placed at the corners, dimensioned for M3 threaded heat-set inserts in a custom 3D-printed enclosure.

4. Pinout & Hardware Interfacing

[!IMPORTANT] Authoritative Pinout Notice:
The pinout below is the definitive, verified hardware mapping matching Schematics-2.0.pdf and the board layout.

  • CE (Chip Enable): D7 (ATmega328P PD7 / Pin 11)
  • CSN (Chip Select Not): D8 (ATmega328P PB0 / Pin 12)
  • Comm_status_indicator: D2 (PD2 / Pin 5)
  • nRF24_detected: D3 (PD3 / Pin 6)
  • SPI Bus: MOSI $\rightarrow$ D11, MISO $\rightarrow$ D12, SCK $\rightarrow$ D13

RF-NANO Pinout Reference

4.1 Pinout & Complete Circuit Interconnection Table

Subsystem / FunctionSignal NameArduino Nano Physical PinConnected Component & PinFunctional Description & Notes
Power Input (5V Bus)+5VPin 27 (+5V)LM1117MP-3.3 (Pin 3 VI)5V rail from USB-C powers the external LDO regulator (filtered by C5 $10,\mu\text{F}$)
Power Output (3.3V Rail)3V3NC on Arduino (Pin 17)LM1117 (Pin 2 VO) $\rightarrow$ nRF24 (Pin 2 VCC)Regulated 3.3V rail from LM1117 powers nRF24L01+ (filtered by C4 $10,\mu\text{F}$, C1 $1,\mu\text{F}$, C2 $10,\text{nF}$, with TP1)
Ground ReferenceGNDPins 4 & 29 (GND)LM1117 (Pin 1), nRF24 (Pin 1), LEDsCommon ground plane for power and high-speed RF return paths
Radio Link Status LEDComm_status_indicatorPin 5 (D2 / PD2)LED D1 (Anode) + $2,\text{k}\Omega$ R1Software-driven: Blinks on active reception; steady when RF link is established
Transceiver Detected LEDnRF24_detectedPin 6 (D3 / PD3)LED D2 (Anode) + $2,\text{k}\Omega$ R2Hardware validation: ON when radio.isChipConnected() == true on boot
Transceiver Chip EnableCEPin 10 (D7 / PD7)nRF24L01+ (Pin 3 CE)RX/TX state enable (RF-NANO standard mapping)
SPI Chip Select NotCSNPin 11 (D8 / PB0)nRF24L01+ (Pin 4 CSN)Active-low SPI select (RF-NANO standard mapping)
SPI Master Out Slave InMOSIPin 14 (D11 / PB3)nRF24L01+ (Pin 6 MOSI)Hardware SPI Data Line (Arduino $\rightarrow$ nRF24)
SPI Master In Slave OutMISOPin 15 (D12 / PB4)nRF24L01+ (Pin 7 MISO)Hardware SPI Data Line (nRF24 $\rightarrow$ Arduino)
SPI Serial ClockSCKPin 16 (D13 / PB5)nRF24L01+ (Pin 5 SCK)Hardware SPI Clock Line
Analog Reference FilterAREFPin 18 (AREF)Capacitor C3 ($100,\text{nF}$) to GNDHigh-frequency noise suppression for ADC/MCU core
Transceiver InterruptIRQNC on ArduinonRF24L01+ (Pin 8 IRQ - NC)Not connected (Polled RX operation used in firmware)
USB-Serial TelemetryTXD / RXDPins 1 & 2 (D1/D0)Integrated USB-C BridgeHigh-speed telemetry streaming to PC @ 115200 Baud

4.2 Production Receiver Firmware (SW/RTT_nano_26/)

The official receiver firmware sketch is located in SW/RTT_nano_26/RTT_nano_26.ino.

Pinout Migration from Legacy Prototypes:
Signal / FunctionLegacy Prototype (RTT_nano.ino)New Board (RTT_nano_26.ino)Notes
CE (Chip Enable)D10D7Moved to D7 (ATmega328P PD7)
CSN (Chip Select Not)D9D8Moved to D8 (ATmega328P PB0)
Comm Status LED (D1)NoneD2Pulses 40ms on packet reception
nRF24 Detected LED (D2)NoneD3ON when radio.isChipConnected() == true
PA & LNA GainRF24_PA_LOWRF24_PA_MAX, trueLNA high gain enabled for max sensitivity ($-95,\text{dBm}$)
cpp
#include <SPI.h>
#include <RF24.h>
#include "printf.h"

// Hardware Pin Configuration (IFS09-TeleReceiver)
static const uint8_t PIN_CE           = 7;  // D7 -> nRF24 CE
static const uint8_t PIN_CSN          = 8;  // D8 -> nRF24 CSN
static const uint8_t PIN_LED_COMM     = 2;  // D2 -> Comm Status LED
static const uint8_t PIN_LED_DETECTED = 3;  // D3 -> nRF24 Detected LED

RF24 radio(PIN_CE, PIN_CSN);

void setup() {
    pinMode(PIN_LED_COMM, OUTPUT);
    pinMode(PIN_LED_DETECTED, OUTPUT);
    Serial.begin(115200);

    if (radio.begin() && radio.isChipConnected()) {
        digitalWrite(PIN_LED_DETECTED, HIGH); // Visual confirmation of SPI detection
        
        radio.setAddressWidth(5);
        radio.setChannel(76);
        radio.setAutoAck(false);
        radio.setDataRate(RF24_1MBPS);

5. Formal Design Documents & Reports

The project development is documented across three primary engineering artifacts:

DocumentFile LinkDescriptionStatus
Design Report📄 DR_TE-IFS09-TeleReceiver.pdfTechnical Design Report detailing circuit justifications, component selections, mechanical constraints, and post-fabrication test protocol.Rev 1.0 (Completed)
Work Order📄 WO_TE-IFS09-TeleReceiver.pdfInitial engineering Work Order specifying design requirements, pin mappings, and acceptance criteria.Rev 1.0 (Released)
Schematics Sheet📄 Schematics-2.0.pdfComplete KiCad schematic export with subsystem annotations and decoupling networks.v2.0 (Final)

6. Repository Structure

text
IFS09-TE-TeleReceiver/
├── docs/                              # Documentation Assets
│   └── images/
│       ├── schematic_v2.png           # Exported Schematic v2.0 Image
│       ├── pcb_layout_2d.png          # 2D PCB Layout Routing View
│       ├── pcb_render_3d.png          # 3D PCB Render Model
│       └── rf_nano_pinout.png         # Definitive Pinout Reference
├── IFS09-TeleReceiver/                # KiCad Project Files (KiCad E.D.A. 10.x / 8.x)
│   ├── IFS09-TeleReceiver.kicad_pro   # Project Configuration
│   ├── IFS09-TeleReceiver.kicad_sch   # Schematic Sheet
│   └── IFS09-TeleReceiver.kicad_pcb   # PCB Layout & Netlist
├── SW/                                # Firmware Sketches & Libraries
│   └── RTT_nano_26/                   # Production Telemetry Receiver Firmware
│       ├── RTT_nano_26.ino            # Main Arduino Receiver Sketch
│       └── printf.h                   # Serial Printf Header
├── DR_TE-IFS09-TeleReceiver.pdf       # Official Design Report (Rev 1)
├── WO_TE-IFS09-TeleReceiver.pdf       # Work Order Specification (Rev 1)
├── Schematics-2.0.pdf                 # Latest Exported Schematic Sheet (v2.0)
├── Schematics-1.0.pdf                 # Initial Schematic Sheet (v1.0)
├── .gitignore                         # KiCad and OS ignore rules
└── README.md                          # Comprehensive Documentation

7. Validation & Testing Protocol (Post-Fabrication)

Upon arrival of manufactured PCB units, the following sequential validation protocol will be executed prior to track deployment:

mermaid
flowchart LR
    A[1. Power Rail Check (TP1)] --> B[2. SPI & Detection (LED D2)]
    B --> C[3. PuTTY Stream (115200)]
    C --> D[4. Dynamic Range Test (≥300m)]
  1. Power Supply Rail Verification:
    • Unpowered continuity check across TP_5V $\rightarrow$ GND and TP1 (3V3) $\rightarrow$ GND ($> 10,\text{k}\Omega$).
    • Connect USB-C: Verify $5.00,\text{V} \pm 0.25,\text{V}$ input and $3.30,\text{V} \pm 0.10,\text{V}$ output on TP1 with peak ripple $< 30,\text{mV}_{p-p}$.
  2. Microcontroller to Transceiver Interface Test:
    • Flash receiver test sketch. Verify radio.isChipConnected() == true and illumination of nRF24_detected LED (D3).
    • Probe SCK, MOSI, MISO, CSN, and CE testpoints with logic analyzer/oscilloscope.
  3. USB-Serial Communication Test (PuTTY):
    • Connect to ground station PC at 115200 baud (8-N-1, No Flow Control).
    • Stream mock telemetry frames continuously for 10 minutes with 0% framing errors or data dropouts.
  4. Vehicle Dynamic Range & Link Budget Test:
    • Mount transmitter in car; place base station in pits with external 2.4 GHz whip antenna.
    • Verify Packet Reception Rate ($\text{PRR} \ge 95%$) over the full track perimeter ($\ge 300,\text{m}$ line of sight).

8. Author & Team Credits

  • Subsystem: Telemetry Subsystem (TE)
  • Author & Technical Director: Andrés Sánchez de Ágreda
  • Team: ISC Formula Student Racing Team — Universidad Pontificia Comillas (ICAI)
  • Season: 2026 / 2027

ISC Racing Team — IFS09 Telemetry Subsystem

Parts

14
QtyValueFootprintReferences
210uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC4, C5
22kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2
2LEDLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD1, D2
1100nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3
110nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2
11uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1
1Arduino_Nano_v3.xModule:Arduino_Nano_WithMountingHolesA1
1LM1117MP-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U2
1LOGOISC_mecanica:CompleteLogo_01G***
1NRF24L01_BreakoutRF_Module:nRF24L01_BreakoutU1
1nrf_power_tpTestPoint:TestPoint_Pad_D2.0mmTP1

Similar boards

  • 2 layers82.1 × 82.1 mmUncut Gem, the printed circuit board in 3D

    Uncut Gem

    QuantumVillage/UncutGem

    A prototype Full Stack fully Open Source NV Center Diamond Magnetometer

    207 parts210AGPL-3.0
  • 4 layers126.6 × 37.7 mmGruzik2.0, the printed circuit board in 3D

    Gruzik2.0

    NYDEREK/LineFollower_GRUZIK2.0-light

    GRUZIK2.0 is simple light construction made for "line follower light" competition

    50 parts101MIT
  • 2 layers93.1 × 33.7 mmFT817-BT JDY67, the printed circuit board in 3D

    FT817-BT JDY67

    BG6LH/FT-81x-BT-DIGI-Adaptor

    A PCB Design of Bluetooth DIGI Adaptor for Yaesu FT-817/818 Series Transceivers

    34 parts70
  • 4 layers43 × 62.3 mmVfd night projector clock, the printed circuit board in 3D

    Vfd night projector clock

    shufps/vfd-night-projector-clock

    The VFD Night Projector Clock is the first and only (at the moment and to my knowledge 😁) night projecting clock that uses a VFD display.

    72 parts19MIT
  • 4 layers133.1 × 126.6 mmValiant turtle-2, the printed circuit board in 3D

    Valiant turtle-2

    simoninns/valiant-turtle-2

    The Valiant Turtle 2

    55 parts16GPL-3.0
  • 4 layers46 × 110 mmAware01 h7 rev2 0, the printed circuit board in 3D

    Aware01 h7 rev2 0

    95lux/aware01

    Aarebot is a dynamic realtime sampler built as a Eurorack module. At its core is a stereo tape-style engine with a hot-swapping record/playback buffer - this enables to record and play simultaneously.

    158 parts15GPL-3.0
  • 2 layers75.9 × 50.1 mmSuspension telemetry, the printed circuit board in 3D

    Suspension telemetry

    porast1/suspension-telemetry

    Suspension telemetry system for mountain bike or dirt bike

    77 parts14MIT
  • 2 layers115 × 115 mmDrone, the printed circuit board in 3D

    Drone

    rmingon/drone-uwb

    Drone design for automatic position in space with UWB

    49 parts13

Questions

How big is the IFS09-TeleReceiver PCB?

It measures 38.8 × 48.9 mm and has 2 copper layers, 1.6 mm thick.

What parts does the IFS09-TeleReceiver use?

14 parts, built around the LM1117MP-3.3. 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 IFS09-TeleReceiver KiCad files?

From the isc-fs/IFS09-TE-TeleReceiver repository on GitHub, at the commit this page was made from: the board is IFS09-TeleReceiver/IFS09-TeleReceiver.kicad_pcb and its schematic IFS09-TeleReceiver/IFS09-TeleReceiver.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the IFS09-TeleReceiver design in my own project?

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