Skip to the content
PCBKitNew board
4 layers82.5 × 78 mmBloodlight, the printed circuit board in 3D

Medical PPG Testbed Hardware

Size
82.5 × 78 mm
Copper layers
4
Thickness
1.6 mm
Parts
102
Nets
87
Pads
326
Tracks, vias
839, 604
Pours
21
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
7 Jul 2020
Updated
12 Jan 2021

Overview

Bloodlight is an open-source printed circuit board by CodethinkLabs, from the CodethinkLabs/bloodlight-hardware repository on GitHub. It is a 4-layer board of 82.5 × 78 mm with 102 parts on 87 nets, routed with 839 tracks and 604 vias.

It is built around the AD8605ART, ULN2803A and TPS73433DDCR, with the USBLC6-2SC6 among its other parts. Its parts include 35 capacitors, 23 resistors, 10 ICs, 3 connectors and 1 crystal. It belongs with the STM32 boards of this library.

Main components

4

README

hardware/README.md

Description

This is a test-bed for medical photoplethysmography (PPG).

The current design has 16 LED's and 4 Photodiodes covering multiple wavelengths between visible light and near infrared (roughly 400nm-1600nm).

Tools

You'll need KiCad 5 to view or modify the schematics/pcb. For Ubuntu users I'd suggest using this PPA: https://launchpad.net/~js-reynaud/+archive/ubuntu/kicad-5

If you wish to modify the schematics then you should install the latest symbols, footprints and 3D models from git.

If you wish to send the board off for manufacturing or creat an accurate render then you'll need the kicad-util tool which can be found here: https://gitlab.com/dren.dk/kicad-util

Generating a model for the case

In addition to the above tools, you will also need blender https://www.blender.org/.

1. Delete the faceplate

The faceplate is not required for the case and will only get in the way.

Using kicad 5, open up bloodlight.pro, then bloodlight.kicad_pcb.

Select and drag around the entire face plate to the right and delete it.

Then, click on the lines going from the main board to the faceplate and delete those, too.

2. Export the model to vrml

From the pcb viewer, do File->export->VRML, and ensure the output units are in mm. The file should be named something like bloodlight.wrl

3. Convert the VRML to STL

Run blender --background --python blender-wrl-to-stl.py -- bloodlight.wrl This will generate a board.stl in the same directory as bloodlight.wrl.

Manufacture

1. Create Snap-offs

BloodLight is designed to be processed by the kicad-util panel tool. This is required to create the mousebites and the 3D render will show errors for if this step is not done.

To create the mousebites, run: java -jar kicadutil.jar pcb -f bloodlight.kicad_pcb panel

2. Generate Drills & Plots

To get the PCB itself made we need a collection of drill and plot files.

Open the "output.bloodlight.kicad_pcb" file generated in the first pass. Click "File"->"Plot..."

Note that this dialog will output multiple files so it's best to create an output directory (I usually call it "plots/") to so you can group them later.

Click "Generate Drill Files..." Click "Generate Drill File" in the dialog. Close the drill dialog. Click "Plot" to generate the plot files. Close the dialog.

Open the output directory and create a zip file of all of the plots and drill files. This zip file can be used at to generate the PCB.

3. Generate Pick & Place File

With the PCB file still open in kicad as in the previous step: Click "File"->"Fabrication Outputs"->"Footprint Position (.pos) File..." Set the output directory as above (I set it to "plots/"). Set the Format to CSV.

Note that we only care about the position file for the top of the board as in this case we expect to hand assemble the bottom.

To apply the rotations to the placement file use the following command: patch plots/output.bloodlight-top-pos.csv placement.patch

Note that for any future changes to the design the rotation patch will need to be updated accordingly, as desribed in the next section.

3.1. Manually Fix Pick & Place File

Open the resulting file(s) using either a spreadsheet program or a text editor.

JLCPCB expects the fields to be titled differently to KiCAD, so we have to modify the titles as follows: "Ref" -> "Designator" "PosX" -> "MidX" "PosY" -> "MidY" "Rot" -> "Rotation" "Side" -> "Layer"

This position file needs fixing because kicad and JLCPCB's tooling disagree on the default rotation for some part.

To ensure the rotations are correct upload your design JLCPCB.com and view their rendered output to check the part rotations are correct and manually fixup where they are incorrect.

4. Generate the BOM

We store the BOM in the SYLK format so that the equations for costing and pin count are saved while keeping everything in a text based format.

JLCPCB expect the BOM to be in CSV format, the easiest way to achieve this is to open the BOM.SYLK file in a graphical spreadsheet program such as LibreOffice Calc and save the file as BOM.CSV.

5. Order from JLCPCB

In order to get an estimate for assembly you'll need a login, I'd highly suggest using google to log in to JLCPCB prior to beginning the process.

Navigate to: https://jlcpcb.com/ Click on "Quote Now"

Click "Add your gerber file" and upload the zip file created in step 2.

Select the "PCB Qty" which will set the maximum number of assembled boards. The default and cheapest option is 5, but 10 costs very little more.

Select the "Surface Finish" as "ENIG-RoHS", other surface finishes are cheaper but ENIG gives a flatter surface to solder to, doesn't go off and is likely safest for against skin. HASL (with lead) is cheapest and is legal for prototyping in the EU but it's not advisable as this device will be used for prolonged periods against skin.

I'm selecting "Yes/JLC7628" for "Impedance", unsure as to whether this matters particularly but my assumption is that by picking one we make the process more reproducible.

For assembly 1.6mm Green is recommended, the rest of the options should be unchanged as they're unlikely to have an important impact.

Select "SMT Assembly" and click "Assemble top side".

For SMD QTY we can select either the number of boards or 2, select as appropriate.

Select "DHL Express Priority (DDP)" for shipping estimate to get a cost estimate which is realistic. There's likely to be an additional £10 fee from DHL (or any other carrier) for the delivery if not ordered via a business account.

Click "Confirm".

Click "Add BOM File" and add the BOM.csv file generated in step 4. Click "Add CPL File" and add the *-top.csv file generated in step 3.

Click "Next".

You should now see a screen where each assembled part is listed, do a quick check to ensure that all parts marked "Assembled" in the BOM are present in the list.

Click "Next".

Check on this screen using the graphical tool that all parts are placed correctly and as expected, if a part is incorrecly rotated then the rotation patch will need changing and the CPL file will need updating.

Once you're happy with this, click "SAVE TO CART", the rest of the ordering process is straight-forward and self-explanatory.

Parts

102
QtyValueFootprintReferences
16100nF/16VCapacitor_SMD:C_0402_1005MetricC9, C10, C11, C12, C13, C14, C21, C22, C23, C24, C29, C30, C31, C32, C33, C34
61uF/16VCapacitor_SMD:C_0805_2012MetricC15, C16, C17, C19, C26, C35
420mA/1VLED_SMD:LED_1206_3216Metric_CastellatedLD5, LD6, LD7, LD8
456/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR6, R8, R19, R20
4AD8605rounded:SOT-23-5U1, U2, U3, U4
4MountingHoleMountingHole:MountingHole_2.2mm_M2MH1, MH2, MH3, MH4
31.5A/22RInductor_SMD:L_0805_2012MetricFB1, FB2, FB3
310nF/50VCapacitor_SMD:C_0402_1005MetricC7, C8, C25
310pF/50VCapacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolderC1, C2, C3
2130/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR5, R13
2165/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR9, R12
222uF/16VCapacitor_SMD:C_0805_2012MetricC27, C28
227/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR17, R18
26pF/50VCapacitor_SMD:C_0402_1005MetricC5, C6
275/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR10, R11
2ULN2803APackage_SO:SOIC-18W_7.5x11.6mm_P1.27mmU5, U6
11.2M/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR2
11.8M/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR4
110pF/50Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolderC4
1120/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR16
11580nmLED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolderPD4
116MHz/8pFrounded:Crystal_SMD_2520-4Pin_2.5x2.0mmX1
12.2uF/16VCapacitor_SMD:C_1206_3216MetricC18
120mA/1.2VLED_SMD:LED_0805_2012Metric_CastellatedLD3
120mA/1.3VLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderLD2
120mA/1.45Vfootprints:LED_1206_3015Metric_CastellatedLD1
120mA/1.7VLED_SMD:LED_1206_3216Metric_CastellatedLD9
120mA/1.8VLED_SMD:LED_0805_2012Metric_CastellatedLD10
120mA/2.1VLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderLD11
120mA/2.1Vfootprints:LED_Broadcom_HSMx-C110LD14
120mA/2VLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderLD12
120mA/2VLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderLD13
120mA/3.2VLED_SMD:LED_0805_2012Metric_CastellatedLD15
120mA/3.3Vfootprints:LED_BrightLED_HB332YLD16
122/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR15
127k/1%Resistor_SMD:R_0402_1005MetricR26
12M/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR3
133/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR14
1390/1%Resistor_SMD:R_0402_1005MetricR22
14.7uF/16VCapacitor_SMD:C_1206_3216MetricC20
14mA/1.85VLED_SMD:LED_0603_1608MetricLD17
150mA/1.3Vrounded:LED_PLCC-2LD4
1560k/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR1
156k/1%Resistor_SMD:R_0402_1005MetricR25
1570nmfootprints:Osram_SFH24xxPD1
168/1%Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR7
1820nmLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderPD2
1940nmLED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolderPD3
1Debugfootprints:PinHeader_2x03_P2.54mm_Horizontal_SMDJ2
1EXTrounded:Harwin_M20-89006xx_1x06_P2.54mm_HorizontalJ3
1FORCE_GNDTestPoint:TestPoint_Pad_D1.0mmTP3
1Flatmushfootprints:FlatmushLOGO1
1LM4132rounded:SOT-23-5U8
1STM32G474CBxxPackage_QFP:LQFP-48_7x7mm_P0.5mmU10
1TPS73433DDCRrounded:SOT-23-5U7
1USBLC6-2SC6rounded:SOT-23-6U9
1USB_B_Microfootprints:USB_Micro-B_XKB-U254-051N-4BH806J1

Questions

How big is the Bloodlight PCB?

It measures 82.5 × 78 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Bloodlight use?

102 parts, built around the AD8605ART, ULN2803A, TPS73433DDCR and USBLC6-2SC6. 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 Bloodlight KiCad files?

From the CodethinkLabs/bloodlight-hardware repository on GitHub, at the commit this page was made from: the board is hardware/bloodlight.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Bloodlight design in my own project?

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

Similar boards

  • 4 layers60 × 107 mmClock sync 16, the printed circuit board in 3D

    Clock sync 16

    AllenNeuralDynamics/harp.device.white-rabbit

    0361: A 16-output Harp clock synchronizer

    172 parts1
  • 2 layers40 × 50 mmComma pedal, the printed circuit board in 3D

    Comma pedal

    Wim426F/Pedal-interceptor-hardware

    41 parts
  • 2 layers85 × 60 mmNestbox v2, the printed circuit board in 3D

    Nestbox v2

    Octanis3/Octanis3-Electronics

    Contains PCB files of the Owl Monitoring Device

    107 parts2MIT
  • 4 layers71.6 × 40.2 mmCapstone, the printed circuit board in 3D

    Capstone

    anas-ambri/contactless-life-monitoring

    321 partsMIT
  • 4 layers134.6 × 127 mmH750 Base, the printed circuit board in 3D

    H750 Base

    CalciumCarbideElectronic/STM32H750VB-Mobo

    Motherboard for STM32H750VB Coreboard

    281 parts
  • 2 layers100 × 67.5 mmCapProbe, the printed circuit board in 3D

    CapProbe

    MAHESH-THILAK-K/ADDITIONAL-PROJECT

    67 parts1Apache-2.0
  • 2 layers53.5 × 41 mmImpedanceP1, the printed circuit board in 3D

    ImpedanceP1

    wenkeli/impedance_meter

    Electronics to measure the resistance of multi-channel animal electrodes

    35 parts1
  • 2 layers31.5 × 21.5 mmNanoCurrents, the printed circuit board in 3D

    NanoCurrents

    frchp/nano-currents

    Spy power consumption

    20 parts