Skip to the content
PCBKitNew board
2 layers40 × 40 mmMODULE IHSC, the printed circuit board in 3D

A thermal imaging module consisting of XIAO RP2040 & WAVESHARE MLX90640 for thermal camera and XIAO for the onboard processing

Size
40 × 40 mm
Copper layers
2
Thickness
1.6 mm
Parts
16
Nets
16
Pads
47
Tracks, vias
80, 0
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
21 Apr 2026
Updated
25 Jun 2026

Overview

MODULE IHSC is an open-source printed circuit board by RishabhMewada, from the RishabhMewada/MODULE-IHSC repository on GitHub, published under the MIT licence. It is a 2-layer board of 40 × 40 mm with 16 parts on 16 nets, routed with 80 tracks and 0 vias.

Its parts include 3 capacitors, 3 resistors, 1 IC, 1 transistor and 1 connector. It belongs with the RP2040 boards of this library.

README

README.md

MODULE-IHSC

A thermal imaging module consisting of XIAO RP2040 & MLX90640 for thermal camera and XIAO for the onboard processing which supports usb type c streaming and usb screen sharing extension via an 4 pin I2C extension

PCB-3D-FRONT


Purpose

The goal of this project was to design a low profile thermal camera module capable of streaming live footage over to the screen via type c and I2C pins

things considerd in mind to make it happen

  • PCB design
  • CAD
  • Components
  • Firmware modularization and easy modification

Schematics

Screenshot 2026-04-22 180021


Features

Core Hardware

  • XIAO RP2040
  • MLX90640
  • 4 Pin I2C horizontal pins
  • buzzer for beeping
  • tactile switch
  • transistor

Transport & Connectivity

  • 4 Pin I2C horizontal pins
  • USB-C connection

Hardware

The PCB is designed using KiCad (open-source) and the case using Fusion 360.

Specifications

  • 2-layer PCB
  • XIAO RP2040 Proccessing
  • MLX90640 heat Camera
  • I²C 4 pin connector

All PCB source files are available in /hardware/kicad.

CAD-3


Firmware

  • Thermal Sensing camera

Raw MLX90640 32×24 thermal array with 768 pixels, connected directly via I2C with 110° wide field of view built into the camera and have the abillity to measure −40 °C to +300 °C measurement range Dual I2C bus architecture — sensor on I2C1 (GP6/GP7), display on I2C0 (GP4/GP5) to prevent bus conflicts

  • Rainbow Heatmap

Full 7-stop rainbow colour mapping (violet → blue → cyan → green → yellow → orange → red) Bicubic interpolation upscaling from 32×24 to full display resolution which will convert it into Real-time hotspot and coldspot crosshair overlays with temperature labels Live temperature scale bar rendered on-screen

Rainbow heatmap

  • Dual Output System

USB-CDC mode — binary frame stream over via a Type-C cable to a PC host viewer I2C display mode — frames rendered directly onto an external OLED via the 4-pin PCB connector (SSD1306 128×64 or SH1107 128×128) BOTH mode — simultaneous USB stream and I2C display output Smart startup auto-detection: defaults to BOTH if display and USB host are both detected, I2C is used only if no PC is connected or USB if no display is found

  • Output Switching

Short-press mode button cycles USB → I2C → BOTH → USB in real time Long-press mode button saves current mode to flash (persists across reboots) PC-side display_switch.py utility to switch modes remotely over USB without touching the device Soft-reset trigger from PC so new mode activates immediately without unplugging (made for future integration)

  • PC Host Viewer (host_display.py)

Live OpenCV window with rainbow heatmap whit support up to 30 fps Bicubic interpolation for smooth upscaled display Adjustable window scale factor and it Cycle's through 5 colour maps: Rainbow, Inferno, Plasma, Bone, Jet and the Temperature range lock/unlock (freeze min–max for consistent colour mapping) and shows Hotspot and coldspot crosshairs with live °C labels and it has a Full-screen toggle Live FPS counter and frame index overlay

  • PC Switch Utility (display_switch.py)

Query current output mode from the device which Switchs to the output mode (USB / I2C / BOTH) via command line and Scan the 4-pin I2C connector bus to detect connected display hardware and then the Live frame monitor — prints per-frame FPS, Tmin, Tmax, and checksum status and it also Auto-detects RP2040 serial port (no --port flag needed in most cases)

  • Performance

~30 fps live thermal stream at 32 Hz sensor refresh rate in the MLX90640 camera -USB-CDC frame size: 1562 bytes per frame (~47 KB/s, well within USB bandwidth) and uses Binary framing protocol with magic header and checksum validation for data integrity and Frame index tracking for dropped frame detection

  • Hardware Controls

Power button (GP28): short press pauses/resumes streaming; long press enters light-sleep Mode button (GP29): short press cycles output mode; long press saves mode to flash Buzzer (GP27): distinct beep patterns for each event — power-on, mode switch (unique per mode), mode saved, sleep, and error

  • Buzzer Feedback

Single long beep on power-on 1 beep = USB mode selected 2 beeps = I2C display mode selected 3 beeps = BOTH mode / mode saved to flash Double beep = entering sleep 5 rapid beeps = sensor not found (wiring error)

  • Persistent Configuration

Output mode saved to output_mode.json on the RP2040's onboard flash Automatically restored on every reboot with no user intervention

Firmware files are located in /firmware.


Images

PCB

Screenshot 2026-06-25 164149

Screenshot 2026-06-25 164611


BOM

The complete bill of materials (BOM), including purchase links, is available in
/hardware/bom.csv.

Manufacturing & sourcing:

  • PCB fabrication: JLCPCB

  • Components (India): Robu.in

  • Enclosure: Online 3D printing services (if needed)

    Screenshot 2026-04-22 172205

Bill of Materials

NameQuantityTotal Cost (USD)DistributorLink
PCB5$8.00JLCPCBBuy
Soldering Flux1$0.27Robu.inBuy
MLX906401$37.48Digikey.inBuy
XIAO RP20401$6.41Robocraze.inBuy
Buzzer (BZ1)1$0.15Robu.inBuy
1×4 Pin Header (J1)1$0.14Robu.inBuy
Low Profile Tactile Switch SMD1$0.11Robu.inBuy
Resistor 4.7 kΩ 0603 (R2)2$0.11Robu.inBuy
Resistor 1 kΩ 0805 (R1)1$0.11Robu.inBuy
Capacitor 100 nF 0805 (C1)1$0.12Robu.inBuy
Capacitor 1 µF 0603 (C3)1$0.11Robu.inBuy
Capacitor 10 µF 0805 (C2)1$0.11Robu.inBuy
2N2219 Transistor1$link
Total$77.81

please note that most of the parts are from indian suppliers !

*note there's also a transistor in the project (2N2219) but it's not available anywhere online for me that's why it's not included in the BOM with price and link


License

This project is open-source hardware and software and is released under the MIT License.

Parts

16
QtyValueFootprintReferences
4MountingHoleMountingHole:MountingHole_2.1mmH1, H2, H3, H4
24.7kResistor_SMD:R_0603_1608MetricR2, R3
1100nFCapacitor_SMD:C_0603_1608MetricC2
11kResistor_SMD:R_0805_2012MetricR1
11uFCapacitor_SMD:C_0603_1608MetricC3
11uF - 10uFCapacitor_SMD:C_0805_2012MetricC1
12N2219Package_TO_SOT_THT:TO-39-3Q1
1BuzzerBuzzer_Beeper:Buzzer_12x9.5RM7.6BZ1
1Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_HorizontalJ1
1MLX90640ESF-BAA-000-SPMLX90640ESF-BAA-000-SP:TO292P930H600-4A1
1SW_PushButton_Switch_SMD:SW_SPST_TL3342SW1
1seedstudio RP2040XIAO RP2040:MODULE_102010428U1

Questions

How big is the MODULE IHSC PCB?

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

What parts does the MODULE IHSC use?

16 parts. 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 MODULE IHSC KiCad files?

From the RishabhMewada/MODULE-IHSC repository on GitHub, at the commit this page was made from: the board is hardware/Kicad/MODULE-IHSC.kicad_pcb and its schematic hardware/Kicad/MODULE-IHSC.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the MODULE IHSC 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).

Similar boards

  • 2 layers140.5 × 30 mmType e, the printed circuit board in 3D

    Type e

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    16 parts3kApache-2.0
  • 2 layers41.4 × 14.5 mmU2f zero, the printed circuit board in 3D

    U2f zero

    conorpp/u2f-zero

    U2F USB token optimized for physical security, affordability, and style

    16 parts2.4k
  • 2 layers122 × 37 mmV0-UmbilicalBoard, the printed circuit board in 3D

    V0-UmbilicalBoard

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    16 parts1.1kGPL-3.0
  • 2 layers152 × 57.6 mmVideoslotadapter, the printed circuit board in 3D

    Videoslotadapter

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    16 parts1kGPL-3.0
  • 2 layers36 × 63.4 mmSmart ringfinal layout, the printed circuit board in 3D

    Smart ringfinal layout

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    16 parts915
  • 2 layers60 × 40 mmHASwitchPlate, the printed circuit board in 3D

    HASwitchPlate

    aderusha/HASwitchPlate

    LCD touchscreen for Home Automation

    16 parts738MIT
  • 2 layers21.1 × 26.9 mmDemo, the printed circuit board in 3D

    Demo

    easyw/kicadStepUpMod

    kicadStepUp: ECAD to MCAD FreeCAD WorkBench

    16 parts704