Skip to the content
PCBKitNew board
2 layers79 × 83 mmInterface module, the printed circuit board in 3D

Minimal Test Stand Supervisory

Size
79 × 83 mm
Copper layers
2
Thickness
1.6 mm
Parts
113
Nets
108
Pads
426
Tracks, vias
777, 211
Pours
24
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
25 Feb 2024
Updated
4 Sep 2026

Overview

Interface module is an open-source printed circuit board by psas, from the psas/mints-scada-hardware repository on GitHub. It is a 2-layer board of 79 × 83 mm with 113 parts on 108 nets, routed with 777 tracks and 211 vias.

It is built around the MCP3464-E/NC, TCA9548ARGERQ1 and RMCF0603FT4K70, with the 1SS396,LF, SMBJ5360B-TP and B1911USD-20D000114U1930 among its other parts. Its parts include 45 resistors, 24 diodes, 11 ICs, 8 transistors and 7 capacitors. It belongs with the interfaces and adapters boards of this library.

Main components

12

README

README.md

mints-scada-hardware

Minimal Test Stand Supervisory Control and Data Acquisition system hardware and firmware. See mints-scada-software for the computer software to control the whole system.

Assembly

stm32devboards

  • Populate all SMD components on the board
    • Only populate the 60.4 ohm CAN termination resistors on the nodes on the ends of the chain.
    • Populate the USB port and solder its mounting lugs
    • Do not populate the headers on the sides as they will make it more difficult to work on the boards if problems are discovered
  • Complete the board testing
  • Populate THT components

interface-module

  • Select the desired configuration of the board. This can be one of
    • 8x Push and/or Pull outputs
    • 4x I2C
    • 4x ADC
    • See notes in KiCad for configuration information
  • Assemble only the required components for that version of the board. Leave the rest unpopulated

Firmware flashing

Firmware files are located in the firmware/bin directory.

Command line (recommended)

Command line firmware flashing instructions are provided for Ubuntu 24.04. Other debian-based Linux distros should follow a similar procedure. Flashing from Mac or Windows should be possible, but is not covered here.

Setup
  1. Install dfu-util with sudo apt install dfu-util
  2. Set up udev rules
    1. Put the following into /etc/udev/rules.d/60-stm32
    text
    # STM32
    ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess"
    1. Either reboot or run sudo udevadm control --reload-rules && sudo udevadm trigger to reload the udev rules
Flashing:
  1. Remove the devboard from the module if it was installed.
  2. Put the device in bootloader mode
    • If the device is unplugged, hold the BOOT button while plugging it in
    • If the device is already plugged in, press RESET and BOOT, then release RESET then BOOT
  3. Run dfu-util --list and confirm that there are two devices with the vendor:product ID 0483:df11, one with the name @Option Bytes and one with the name @Internal Flash. If any other devices with that ID are present, remove them before continuing.
  4. Flash the device with dfu-util --device 0483:df11 --alt 0 --dfuse-address 0x08000000:leave --download [path/to/file/]<filename>.bin. It should erase the flash, then download the new file and show File downloaded successfully when it is done.

Visual

STM32CubeProgrammer can be used to flash device firmware. Setup will be platform-dependent, and thusly not covered here.

To build and upload:

  1. Open the PlatformIO tab in the left toolbar
  2. Under PROJECT TASKS > Build > General execute the Build procedure by clicking on it
  3. Execute Upload to upload to the microcontroller. Ensure that only a single board is plugged in to ensure you are writing to the correct device.

Building Firmware

Building firmware from source shouldn't be needed unless you are making changes to it. Firmware build instructions are provided for Ubuntu 24.04. Other debian-based Linux distros should follow a similar procedure. Flashing from Mac or Windows should be possible, but is not covered here.

You will need:

  • GCC for arm sudo apt install gcc-arm-none-eabi
  • make sudo apt install make
  • Everything as described in the command line flashing setup section above.

To build the code, simply run make in the firmware folder. This will build the firmware and copy the .bin into the firmware folder. Running make flash will build the firmware then upload it to a connected DFU mode microcontroller.

Initialization code was generated using [https://www.st.com/en/development-tools/stm32cubemx.html](STM32Cube initialization code generator). You should not need to mofidy this, but if you do, the module_io.ioc is included. If you regenerate the code, you may have to add

text
#######################################
# Flash
#######################################
flash: all
	dfu-util --device 0483:df11 --alt 0 --dfuse-address 0x08000000:leave --download $(BUILD_DIR)/$(TARGET).bin

to the end of Makefile. Optionally, add cp $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin to target all in the makefile (add line 171) to copy the bin out of the build direcotry. Generally, CubeMX does not seem to update the Makefile if it exists.

Testing

stm32devboards

  1. Populate all SMD components as described in the assembly sections. Do not populate THT components yet
  2. Visually inspect the board. Fix any issues and inspect again until no issues remain
    • Verify that no pins are shorted
    • Verify the correct orientation and alignment of all components. Pay special attention to the STM32 since its square shape makes it more difficult to notice errors
    • Bridges can hide under the USB port where you can't see them unless you tilt the board to look deep under the port. They can often be fixed by applying flux then heating the two bridged pins.
    • Fixing any of these issues is easier before soldering THT parts since everything here is reflow safe, so it is less likely to be damaged during repairs.
  3. Use a DMM to test between GND 3v3, and GND and either pad of the polyfuse (the component in the corner of the board by the USB port). Verify there are no shorts.
  4. On your computer run sudo dmesg -Hw to monitor system messages in real time (-m) with human-readable timestamps (-h). Keep this window open and visible for the next step
  5. Plug the board in via USB. Watch dmesg. The following should appear. If it does not, then there is a problem with your board.
text
[<starttime>] usb 3-2: new full-speed USB device number <id> using xhci_hcd
[  +0.148877] usb 3-2: New USB device found, idVendor=0483, idProduct=df11, bcdDevice=22.00
[  +0.000014] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  +0.000006] usb 3-2: Product: STM32  BOOTLOADER
[  +0.000006] usb 3-2: Manufacturer: STMicroelectronics
[  +0.000005] usb 3-2: SerialNumber: FFFFFFFEFFFF
  1. Use the above procedure to flash the blink-fast.bin firmware. Confirm that the LED blinks at about 10Hz.
  2. Use the above procedure to flash the blink-slow.bin firmware. Confirm that the LED blinks at about 1Hz. This confirms that you are able to flash new firmware to the device.
  3. Install the THT components as described in the assembly section.

blink-fast.bin and blink-slow.bin should already be built in the firmware/bin directory. If they are not, they can be rebuilt with the blink project. To rebuild them, run the following in firmware/blink

text
make clean && make DELAY=500 && cp blink.bin ../bin/blink-slow.bin
make clean && make DELAY=50 && cp blink.bin ../bin/blink-fast.bin

Parts

113
QtyValueFootprintReferences
104k7Resistor_SMD:R_0603_1608MetricR201, R202, R203, R204, R205, R206, R207, R208, R304, R305
8140357145200Package_SO:SO-4_4.4x3.6mm_P2.54mmU201, U202, U203, U204, U205, U206, U207, U208
81SS396Package_TO_SOT_SMD:SOT-23D101, D102, D103, D104, D105, D106, D107, D108
8DMP3050LVT-7Package_TO_SOT_SMD:TSOT-23-6Q201, Q202, Q203, Q204, Q205, Q206, Q207, Q208
8SMBJ5360B-TPDiode_SMD:D_SMBD201, D202, D203, D204, D213, D214, D215, D216
8redLED_SMD:LED_0603_1608MetricD205, D206, D207, D208, D209, D210, D211, D212
60Resistor_SMD:R_0603_1608MetricR102, R103, R301, R302, R303, R328
41uCapacitor_SMD:C_0603_1608MetricC101, C103, C104, C301
4R_ADC_BTMResistor_SMD:R_0603_1608MetricR106, R110, R114, R118
4R_ADC_NEGResistor_SMD:R_0603_1608MetricR107, R111, R115, R119
4R_ADC_POSResistor_SMD:R_0603_1608MetricR105, R109, R113, R117
4R_ADC_TOPResistor_SMD:R_0603_1608MetricR104, R108, R112, R116
4R_BIASResistor_SMD:R_0603_1608MetricR124, R125, R126, R127
4R_SHUNTResistor_SMD:R_0603_1608MetricR120, R121, R122, R123
210kResistor_SMD:R_0603_1608MetricR1, R3
210uCapacitor_SMD:C_0603_1608MetricC102, C105
2330Resistor_SMD:R_Array_Convex_4x0603RN201, RN202
24k7Resistor_SMD:R_Array_Convex_4x0603RN301, RN302
25k1Resistor_SMD:R_Array_Convex_4x0603RN203, RN204
2Conn_01x08footprints:TerminalBlock_CUI-8_P5.08mmJ1, J2
10.1uCapacitor_SMD:C_0603_1608MetricC106
11Resistor_SMD:R_0603_1608MetricR101
1150mA PolyFuse:Fuse_1206_3216MetricF301
115A slowFuse:Fuseholder_Cylinder-5x20mm_Schurter_0031_8201_Horizontal_OpenF201
1350mA PolyFuse:Fuse_1206_3216MetricF2
1Conn_01x02TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ3
1INFO1Resistor_SMD:R_0603_1608MetricR2
1INFO2Resistor_SMD:R_0603_1608MetricR4
1MCP3464Package_DFN_QFN:UQFN-20-1EP_3x3mm_P0.4mm_EP1.85x1.85mmU101
1SW_Coded_SH-7050Button_Switch_THT:Nidec_Copal_SH-7010CSW1
1TCA9548Package_DFN_QFN:Texas_RGE0024C_VQFN-24-1EP_4x4mm_P0.5mm_EP2.1x2.1mmU301
1TestPointTestPoint:TestPoint_Pad_D1.0mmTP201
1~footprints:stm32devU1

The 109 most common of 113 parts.

Questions

How big is the Interface module PCB?

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

What parts does the Interface module use?

113 parts, built around the MCP3464-E/NC, TCA9548ARGERQ1, RMCF0603FT4K70 and 1SS396,LF. 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 Interface module KiCad files?

From the psas/mints-scada-hardware repository on GitHub, at the commit this page was made from: the board is interface-module/interface-module.kicad_pcb and its schematic interface-module/config1_adc.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Interface module design in my own project?

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

More from psas/mints-scada-hardware

1
  • 4 layers20.3 × 61 mmStm32devboard, the printed circuit board in 3D

    Stm32devboard

    psas/mints-scada-hardware

    Minimal Test Stand Supervisory

    44 parts

Similar boards

  • 4 layers150 × 100 mmPower profiler carrier, the printed circuit board in 3D

    Power profiler carrier

    Guiimartinho/open-power-profiler

    Open-source PPK2-class power profiler built on the Raspberry Pi Pico 2: 100 kSPS, 100 nA to 1 A auto-ranging, source meter and ampere meter modes, USB stream.

    425 partsMIT
  • 4 layers99.8 × 94.6 mmStar tracker card, the printed circuit board in 3D

    Star tracker card

    oresat/oresat-star-tracker-hardware

    Hardware for OreSat's Star Tracker

    263 parts49
  • 4 layers99.8 × 94.6 mmOresat c3, the printed circuit board in 3D

    Oresat c3

    oresat/oresat-c3-hardware

    C3 (Command, Communication, and Control) our Command and Data Handling (C&DH) card.

    504 parts27
  • 4 layers99.8 × 94.6 mmOresat live card, the printed circuit board in 3D

    Oresat live card

    oresat/oresat-dxwifi-hardware

    OreSat hardware for high speed data communications using 2.4 GHz WiFi.

    376 parts19GPL-3.0
  • 4 layers99.8 × 94.6 mmCfc processor, the printed circuit board in 3D

    Cfc processor

    oresat/oresat-cfc-hardware

    Cirrrus Flux Camera hardware repository

    196 parts2CERN-OHL-S-2.0
  • 4 layers52 × 42 mmHa coap pcb, the printed circuit board in 3D

    Ha coap pcb

    yanntalhouarne/ha-coap-pcb

    104 parts
  • 4 layers99.8 × 94.6 mmOresat mag card, the printed circuit board in 3D

    Oresat mag card

    oresat/oresat-adcs-hardware

    Controller PCB for OreSat reaction wheels, magnetorquers, IMU, and magnetometers

    217 parts21GPL-2.0