Skip to the content
2 layers43.5 × 50 mmI2C Mux Project, the printed circuit board in 3D

Hey! This final section documents how I wrapped multiple pieces of status data into a single, clean custom ROS 2 message interface, built a unified package for it, and automated the whole ecosystem with a single launch…

Size
43.5 × 50 mm
Copper layers
2
Thickness
1.6 mm
Parts
3
Nets
48
Pads
62
Tracks, vias
86, 0
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
1 Jul 2026
Updated
13 Jul 2026

Overview

I2C Mux Project is an open-source printed circuit board by harithamarimuthu07-code, from the harithamarimuthu07-code/Haritha_EnC_Inductions repository on GitHub. It is a 2-layer board of 43.5 × 50 mm with 3 parts on 48 nets, routed with 86 tracks and 0 vias.

It is built around the BME280. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

1

README

README.md

Haritha_EnC_Inductions

#QUESTION 1

ROS 2 Rover Status Publisher

1. System Architecture

I created two nodes that chat over three separate topics:

  • rover_status_publisher: Simulates live data feeds from the rover.
  • rover_status_subscriber: Listens to all three channels at once and prints the combined status to the console.

Topic Setup

  • /battery_level (std_msgs/msg/Float32): Tracks remaining power.
  • /rover_mode (std_msgs/msg/String): Shows the current mode (Manual, Auto, etc.).
  • /emergency_stop (std_msgs/msg/Bool): Flag for hard safety stops.

2. CLI Inspection & Verification

While both nodes were running, I used the following ROS 2 command-line tools to inspect the system. (All screenshots are saved in the assets/ folder).

#Question 2 & Bonus

ROS 2 Custom Messages & Multi-Node Launch

Hey! This final section documents how I wrapped multiple pieces of status data into a single, clean custom ROS 2 message interface, built a unified package for it, and automated the whole ecosystem with a single launch file.

1. Custom Message Definition (RoverStatus.msg)

Instead of cluttering the system graph with multiple standalone topics, I grouped related telemetry properties into a single unified interface structure.

Interface Composition

text
float32 battery_percentage
float32 velocity
bool emergency_stop
string mode


#**QUESTION 3**
# 2-Link Planar Manipulator Kinematics 
## 1. Manipulator Specifications
* **Link 1 ($L_1$):** 2.0 m
* **Link 2 ($L_2$):** 1.5 m
* **Base:** Anchor fixed at origin $(0, 0)$, operating exclusively in the XY-plane.

## 2. Workspace Bounds

* **Maximum Reach ($R_{\max}$):** Achieved when the arm stretches completely straight ($\theta_2 = 0$):
  $$R_{\max} = L_1 + L_2 = 2.0 + 1.5 = 3.5\text{ m}$$

* **Minimum Reach ($R_{\min}$):** Achieved when the arm folds completely back over itself ($\theta_2 = \pi$):
  $$R_{\min} = |L_1 - L_2| = |2.0 - 1.5| = 0.5\text{ m}$$

A target coordinate $(x, y)$ is mathematically reachable if its Euclidean distance from the origin ($d = \sqrt{x^2 + y^2}$) satisfies:
$$0.5\text{ m} \le d \le 3.5\text{ m}$$

Parts

3
QtyValueFootprintReferences
1Arduino_Nano_v3.xModule:Arduino_NanoA1
1BME280Package_LGA:Bosch_LGA-8_2.5x2.5mm_P0.65mm_ClockwisePinNumberingU3
1~Custom_Footprints:Module_TCA9548A_BreakoutU1

Similar boards

  • 2 layers70.1 × 43.2 mmIaq device, the printed circuit board in 3D

    Iaq device

    nkitanov/iaq_board

    IAQ Board is a DIY (Do-It-Yourself) device for measuring internal air quality

    19 parts396
  • 4 layers38.6 × 39.5 mmRuuvitag revb71, the printed circuit board in 3D

    Ruuvitag revb71

    ruuvi/ruuvitag_hw

    RuuviTag hardware projects

    64 parts115
  • 4 layers35.1 × 76.3 mmTiny4FSK, the printed circuit board in 3D

    Tiny4FSK

    New-England-Weather-Balloon-Society/Tiny4FSK

    Horus Binary v2 HAB Tracker

    90 parts96CERN-OHL-W-2.0
  • 2 layers29.8 × 33.7 mmPecanpico9, the printed circuit board in 3D

    Pecanpico9

    DL7AD/pecanpico9

    A lightweight APRS tracker for balloons

    116 parts68GPL-3.0
  • 2 layers136 × 100 mmClimateSprinklerController, the printed circuit board in 3D

    ClimateSprinklerController

    kbx81/ClimateSprinklerController

    ESP32-based climate and sprinkler controller for use with ESPHome

    194 parts56
  • 4 layers36.6 × 60.3 mmStratoSoar MK3.0, the printed circuit board in 3D

    StratoSoar MK3.0

    crnicholson/StratoSoar-MK3

    StratoSoar MK3, an autonomous glider meant for high-altitudes, accessible to everyone

    85 parts43
  • 2 layers23 × 50 mmPecanpico10, the printed circuit board in 3D

    Pecanpico10

    DL7AD/pecanpico10

    A lightweight APRS tracker and digipeater

    123 parts43
  • 2 layers97 × 77.5 mmESPlant, the printed circuit board in 3D

    ESPlant

    CCHS-Melbourne/ESPlant

    Environmental Sensor Plant - solar WiFi gardening/meteorological sensor using ESP8266

    77 parts37

Questions

How big is the I2C Mux Project PCB?

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

What parts does the I2C Mux Project use?

3 parts, built around the BME280. 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 I2C Mux Project KiCad files?

From the harithamarimuthu07-code/Haritha_EnC_Inductions repository on GitHub, at the commit this page was made from: the board is I2C_Mux_Project/I2C_Mux_Project.kicad_pcb and its schematic ESP32S3_Breakout/ESP32S3_Breakout.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the I2C Mux Project design in my own project?

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