FOSSASIA PSLab Pocket Science Lab

This lab introduces students to open-source hardware instrumentation and mixed-signal test and measurement using the FOSSASIA PSLab (Pocket Science Lab) platform. Students explore the design and operation of a multifunction laboratory instrument that combines a multichannel digital oscilloscope, logic analyzer, waveform and PWM generator, programmable voltage and current sources, frequency counter, and capacitance meter. Through hands-on experimentation, students measure analog and digital signals, characterize analog front-end circuits featuring operational amplifiers and programmable gain amplifiers, and observe split-rail power generation using charge pump inverters and doublers. Working across hardware, firmware, and Python software interfaces, learners gain practical experience in data acquisition, embedded instrument control, sensor interfacing, and electronic circuit debugging.

electronics electrical engineering instrumentation oscilloscope logic analyzer function generator waveform generator data acquisition DAQ test and measurement embedded systems microcontroller PIC24 digital to analog converter DAC programmable gain amplifier signal conditioning open source hardware circuit analysis

Uploaded by demo on 2026-09-03 · ready · Electronics · Original source ↗

Files: pslab_hardware_README.md · pslab_python_README.md · pyproject.toml · requirements.txt

Readiness checks

  • complete 2026-09-03 15:58 🛡 Cybersecurity: Review before networking · 8 findings 41 searches · 12 pages
    view · PDF

Latest report — 2026-09-03 15:58

Readiness: FOSSASIA PSLab Pocket Science Lab

Verdict: Ready with caveats · 2026-09-03 · est. parts cost $40–$60 per board (distributor single-unit pricing, excluding the bare PCB and the one-time programmer) Cybersecurity — software & network: Review before networking

This is the cold check — the first readiness report for this lab, so it establishes the baseline every future check will measure drift against. Every part on the board is buyable today and nothing is priced unreasonably: fifteen of the bill-of-materials lines came back Active and in stock, several with six-figure inventories. Three things keep this from a plain "Ready". The PICkit 3 programmer the lab requires is obsolete with zero stock at every authorized distributor checked, and the replacement the lab's own notes suggest (PICkit 4) is equally obsolete — you need a PICkit 5 at $79.68. The TC1240A charge pump is on Last Time Buy, so it is comfortable today and gone tomorrow. And the lab's written parts list disagrees with the v6 board file this run fetched — on the USB bridge's package, the fuse rating, and whether the board even has the manual amplitude knob and DC power jack the documentation describes. Settle which board revision you are building before you place an order.

Action required

Part Problem Recommended action
PICkit 3 (PG164130) Obsolete. Zero stock at DigiKey (14-week factory lead), RS and Mouser both out of stock — no authorized distributor has any. Buy the PICkit 5 (PG164150), $79.68, 1,691 in stock. One per class, not per board. Do not order the PICkit 4 — it is obsolete too.
TC1240A (TC1240AECHTR) Last Time Buy. 12,156 pieces remain and there will be no restock. Buy now for the full class if you build soon; otherwise design in LM2665M6/NOPB ($1.36, 48,207 in stock), which matches on package, switching frequency and supply range.
74HC126 (SN74HC126PW) The exact tube part is Obsolete ($0.94, 3,530 left). Order SN74HC126PWR instead — $0.40, 12,073 in stock, same TI device and same 14-TSSOP package, differing only in reel-versus-tube packaging.
LDL212PU50R Active, but DigiKey stock is zero. Not a shortage — order from Mouser (8,437 in stock at $0.51) or Rochester (422 at $0.3063). ECIA rates its lifecycle risk Low.
Protection fuse The lab's part number 0ZCJ0050FF2E does not exist at DigiKey or any ECIA distributor. The board file names 0ZCJ0025FF2E — $0.21, 105,105 in stock. Note it holds 250 mA and trips at 500 mA, not the 0.5 A hold the lab text specifies.
USB Type-C receptacle The board's part U262-161N-4BVC11 returns no results at DigiKey and no ECIA distributor lists it. Alternatives exist from $0.85, but none was verified against the board's land pattern. Match a candidate to the board footprint before ordering.
SI1 amplitude potentiometer No part number in any source, and no potentiometer appears anywhere in the v6 board file. Confirm which board revision the lab targets. On the v6 file this control does not exist and the amplitude is set digitally.
CP2102N package conflict The lab specifies CP2102N-A02-GQFN24 (QFN-24, 4×4); the v6 board file specifies a QFN-20 3×3 variant. Check the footprint on the board in hand before ordering — these are not interchangeable.

Cybersecurity — software & network

Review before networking — The USB-only setup is low risk, but the optional Wi-Fi bridge has no documented authentication, the host dependencies are entirely unpinned with known high-severity flaws at their declared floors, and the desktop application is archived.

Component Version How known Support status
Microchip MPLAB X IDE 3.35 inferred (Recorded in the snapshot from the lab's pslab_hardware_README.md; that file was not re-fetched this run, so the version is not confirmed against a project file.) —
Microchip MPLAB XC16 C Compiler not determined not determined (Referenced by name only in pslab_hardware_README.md; the lab states no version.) —
pslab-bootloader (PIC24 bootloader source) not determined unpinned (Built from the repository's current default branch 'main'; the lab pins no revision. Repository active, last code push 2026-08-16 (GitHub API, fetched/04-pslab-bootloader).) —
pslab-firmware (PIC24 firmware source) not determined unpinned (Built from the repository's current default branch 'main'; the lab pins no revision. Repository active, last code push 2026-08-28 (GitHub API, fetched/03-pslab-firmware).) —
pslab-app (mobile/cross-platform application) not determined unpinned (Installed from the project's current sources; the lab pins no version. Repository active, last code push 2026-09-03 (GitHub API, fetched/02-pslab-app).) —
pslab-desktop (desktop application) not determined unpinned (Archived, read-only repository; last code push 2024-02-06 (GitHub API, fetched/01-pslab-desktop). No version is pinned by the lab.) —
Python (host environment) 3.8 inferred (pyproject.toml declares requires-python = '>=3.8' (fetched/05-pyproject.toml); 3.8 is the lowest version the project allows, not a pin.) unsupported since 2024-10-07
flit_core (build backend) 3.4.0 inferred (pyproject.toml [build-system] requires 'flit_core >=3.4,<4' (fetched/05-pyproject.toml); 3.4.0 is the floor of that range, not a pin.) —
mcbootflash 8.0.0 inferred (Floor constraints only, and they disagree: pyproject.toml requires '>=8.0.0' (fetched/05-pyproject.toml) while requirements.txt requires '>=4.1.0' (fetched/06-requirements.txt). Both floors were checked.) —
numpy 1.16.3 inferred (requirements.txt declares 'numpy >=1.16.3' (fetched/06-requirements.txt) and pyproject.toml lists numpy with no constraint; 1.16.3 is the floor, not a pin.) —
scipy 1.3.0 inferred (requirements.txt declares 'scipy >=1.3.0' (fetched/06-requirements.txt) and pyproject.toml lists scipy with no constraint; 1.3.0 is the floor, not a pin.) —
pyserial 3.4 inferred (requirements.txt declares 'pyserial >=3.4' (fetched/06-requirements.txt) and pyproject.toml lists pyserial with no constraint; 3.4 is the floor, not a pin.) —
setuptools 35.0.2 inferred (requirements.txt declares 'setuptools >=35.0.2' (fetched/06-requirements.txt); 35.0.2 is the floor, not a pin.) —
Silicon Labs CP210x VCP drivers not determined not determined (The lab links the vendor download page but states no version.) —
Component Finding Severity Fix available?
numpy requirements.txt allows numpy as old as 1.16.3, a version with a null-pointer dereference and buffer-handling flaws that can crash or corrupt the analysis step when a lab feeds it malformed measurement data. — GHSA-5545-2q6w-2gh6, GHSA-f7c7-j99h-c22f, GHSA-6p56-wp2h-9hxr, GHSA-fpfv-jqm9-f5jm high Yes — update to 1.22
setuptools requirements.txt allows setuptools as old as 35.0.2, and that version carries an arbitrary file write and a command-injection flaw reachable when the packaging tools fetch a package URL, so a student environment built to the stated floor is exploitable during installation. — GHSA-5rjg-fvgr-3xxf, GHSA-cx63-2mw6-8hw5, GHSA-r9hx-vwmv-q579, GHSA-h35f-9h28-mq5c high Yes — update to 83.0.0
scipy requirements.txt allows scipy as old as 1.3.0, which has a memory-leak issue and a disputed use-after-free report; the practical effect on this lab is instability over long capture sessions rather than a break-in. — PYSEC-2023-114, PYSEC-2023-102 low Yes — update to 1.10.0
ESP-01 Wi-Fi bridge (optional) Fitting the optional ESP-01 module turns the board's serial control channel into a network service, and the lab's documentation states no listening ports, services, or credentials for it, so whether it asks for any authentication is unknown. posture Mitigation only — leave the ESP-01 socket unpopulated, or place the board on an isolated lab network segment and confirm the module's configuration before use
pslab-desktop (desktop application) The desktop application's repository is archived and read-only with no code changes since 2024-02-06, so it will receive no further fixes of any kind. posture Mitigation only — use the maintained pslab-python client library or the pslab-app application instead
pslab-python (pyproject.toml) Dependencies unpinned: 4 of 4 in pyproject.toml, three of them with no constraint at all, and its mcbootflash floor (>=8.0.0) contradicts requirements.txt (>=4.1.0), so the two install paths do not agree on what gets installed. posture Mitigation only — pin versions / use the lockfile
pslab-python (requirements.txt) Dependencies unpinned: 5 of 5 in requirements.txt are floor constraints only, so two students installing on different days can get different versions and the environment has no fixed security state to check. posture Mitigation only — pin versions / use the lockfile
Python (host environment) The project still permits Python 3.8, which stopped receiving security updates on 2024-10-07, so an environment built to the stated floor runs an unsupported interpreter. posture Mitigation only — install on a currently supported Python release and raise requires-python

What this means for your lab

As shipped, this instrument is a USB device: the board talks to the host over a serial connection and nothing is exposed to the network, so a plain USB setup is low risk. That changes if you fit the optional ESP-01 Wi-Fi module, which puts the board's control channel on the network; the project's documentation does not say what port it opens or whether it asks for a password, so we cannot tell you it is protected. Treat it as unprotected until you have checked: leave the ESP-01 socket empty unless you need wireless, and if you do need it, ask campus IT for an isolated segment rather than the general campus Wi-Fi. On the host side, the Python client library does not pin the versions of the packages it installs, so what students end up with varies by install date. The oldest versions the project still allows are genuinely unsafe - setuptools 35.0.2 can be tricked into writing files and running commands during installation - and Python 3.8, which the project still permits, stopped receiving security updates in October 2024. Install on a current Python and let pip fetch current numpy, scipy and setuptools rather than the stated minimums, and prefer the maintained client library or mobile app over the desktop application, whose code has been archived and unchanged since February 2024.

Not checked

  • Microchip MPLAB XC16 C Compiler: the lab states no version, and no advisory database covers Microchip compiler releases
  • pslab-firmware and pslab-bootloader (C sources): no vulnerability database covers vendor C firmware sources, and the lab pins no released revision
  • pslab-app (Dart/Flutter application): the lab pins no version and no dependency manifest for it was fetched this run
  • pslab-desktop (JavaScript application): archived; the lab pins no version and no dependency manifest for it was fetched this run
  • Silicon Labs CP210x VCP drivers: version not stated, and vendor driver packages are not covered by an advisory database
  • ESP-01 module firmware: the lab's materials do not state which firmware the module runs
  • Installed versions of the pslab-python dependencies: every declared dependency is a floor constraint, so no exact installed version exists; the declared floors were checked against OSV instead
  • mplab 3.35: support status: endoflife.date has no such product

Parts

Package suffixes matter: they encode the physical footprint, and a part in the wrong package will not fit the board. Where the lab's documentation left a package unstated, this run resolved it from the v6 board file (docs/components/BillOfMaterials.csv, pslab-v6 branch), fetched this session.

Microcontroller and Digital Logic

Part Spec/Package Status Stock Price Source
PIC24EP256GP204-I/PT 16-bit MCU, 256 KB Flash, 44-TQFP (10×10), Vdd 3–3.6 V Active — readily available 458 $4.54 DigiKey (Microchip)
SN74HC126PW Quad 3-state buffer, 14-TSSOP, 2–6 V Obsolete — order the reel variant 3,530 $0.94 DigiKey (TI)

Analog Front-End, Data Conversion, and Signal Conditioning

Part Spec/Package Status Stock Price Source
MCP6S21-I/SN SPI programmable gain amp, 8-SOIC, 2.5–5.5 V. Qty 2 per board (U14, U18) per the board file Active — readily available 423 $1.49 DigiKey (Microchip)
MCP4728T-E/UN 4-ch 12-bit I2C DAC, 10-MSOP, 2.7–5.5 V Active — readily available 20,125 $2.50 DigiKey (Microchip)
TL082IDR Dual JFET-input op-amp, 8-SOIC, 10–30 V span Active — readily available 1,622 $0.47 DigiKey (TI)
LM324APT Quad op-amp, TSSOP-14 (board footprint), 3–30 V Active — readily available 14,273 $0.43 DigiKey (ST)
TC7660EOA713 Charge-pump inverter, 8-SOIC, Vin 1.5–10 V Active — readily available 13,383 $1.06 DigiKey (Microchip)
TC1240AECHTR Charge-pump doubler, SOT-23-6, Vin 2.5–5.5 V, 40 mA, 80 kHz Last Time Buy — end of life 12,156 $1.11 DigiKey (Microchip)

The lab runs the TC7660 at the 5 V rail, well inside the standard part's 10 V ceiling. If the full 1.5–12 V range the lab text quotes is genuinely needed, TC7660SEOA713 covers it in the same 8-SOIC package — Active, $1.22, 2,304 in stock.

Power Regulation, Protection, and Support ICs

Part Spec/Package Status Stock Price Source
LDFM33PUR 3.3 V LDO, DFN6 3×3 Active — readily available 1,625 $0.89 DigiKey (ST)
LDL212PU50R 5.0 V LDO 1.2 A, 6-DFN 3×3, Vin ≤ 18 V Active — zero at DigiKey, in stock elsewhere 0 at DigiKey; 8,437 Mouser, 422 Rochester, 32 Arrow $0.49 DigiKey; $0.51 Mouser ECIA authorized-distributor check
CP2102N-A02-GQFN24 USB-to-UART bridge, 24-QFN 4×4, 3–3.6 V Active — readily available (see package conflict) 5,868 DigiKey; 3,727 Mouser; 1,811 Arrow $5.15 DigiKey (Silicon Labs)
DS1307Z+ I2C RTC, 8-SOIC, 4.5–5.5 V, battery 2–3.5 V Active — readily available 3,818 DigiKey; 4,627 Mouser; 779 Newark $6.03 DigiKey; $5.41 Mouser DigiKey / ECIA (ADI-Maxim)
SP0503BAHTG 3-ch TVS ESD array, SOT-143, 5.5 V standoff Active — readily available 82,357 $1.50 DigiKey (Littelfuse)
0ZCJ0050FF2E (as written in the lab docs) 0.5 A PTC resettable fuse Not found — no DigiKey result, no ECIA listing — — —
0ZCJ0025FF2E (the board file's actual part) PTC resettable fuse, 1206, hold 250 mA / trip 500 mA Active — readily available 105,105 $0.21 DigiKey (Bel Fuse)

The board file's own price column lists the DS1307Z+ at $3.69. That figure is stale; $6.03 at DigiKey or $5.41 at Mouser is current.

Electromechanical, Controls, Passives, and Expansion

Part Spec/Package Status Stock Price Source
SI1 amplitude potentiometer PCB-mount potentiometer with a student-operated knob not checked — no part number in any source, and no potentiometer row exists in the v6 board file — — —
Status LED, blue — HSMR-C170-R0000 0805 SMD LED Active — readily available 9,893 $1.00 DigiKey (Broadcom)
Status LED, green — HSMQ-C170-T0000 0805 SMD LED Active — readily available 2,646 $1.25 DigiKey (Broadcom)
LTST-C190GKT (the lab's representative LED) 0603 SMD green LED Active — readily available 1,332,607 $0.14 DigiKey (Lite-On)
Crystal, 32.768 kHz — representative ABS07-166-32.768KHZ-T 32.768 kHz tuning fork, 12.5 pF load, for the DS1307Z+ Active — representative part only; the board's exact crystal is not confirmed 19,342 $0.83 DigiKey (Abracon)
Assorted passives (resistors, capacitors, diodes, inductors, transistors) All 0603 unless noted. Caps: 12 pF ×3, 1 nF ×2, 10 nF ×4, 100 nF ×18, 1 µF ×3, 2.2 µF ×1, 10 µF ×7, 22 µF ×8 (10–16 V). Resistors: 18 Ω ×4, 200 Ω ×9, 1 kΩ ×5, 5.1 kΩ ×13, 10 kΩ ×31, 12 kΩ ×1, 30 kΩ ×1, 51 kΩ ×1, 100 kΩ ×1, 180 kΩ ×1, 200 kΩ ×7, 1 MΩ ×3. Diodes: 1N4148W ×2, BZV55B6V8 6.8 V zener ×2, K1N5817HW Schottky ×1. Inductors: 3.3 µH ×3, 4.7 µH ×1. Transistors: MMBT3904 ×1, MMBT3906 ×2 (SOT-23) not checked individually — commodity parts; values and counts read from the v6 board file this run — roughly $10–$20 per board at single-unit pricing v6 board file (counts); no individual lookups run
USB Type-C receptacle — U262-161N-4BVC11 16-position Type-C SMT receptacle Not found — no DigiKey result, no ECIA listing. Alternatives unverified against the board footprint — alternatives from $0.85 Google Shopping
External DC power input jack PCB-mount DC connector not checked — no part number in any source, and no DC jack row exists in the v6 board file (it carries a battery-cell connector and a CR1225 holder instead) — — —
MicroSD card socket Push-push SMD microSD socket, TF-015 footprint, no part number in the board file Commodity — plentiful; land pattern not verified — $1.12 Molex 475710001 Google Shopping (DigiKey seller)
ESP-01 socket — SSW-104-01-T-D Samtec 2×4 female header, 2.54 mm Active — available, thinnest stock of any part checked 248 $1.22 DigiKey (Samtec)
ESP8266 ESP-01 module (optional) ESP-01/ESP-01S Wi-Fi module, 3.3 V Widely stocked at retail — $1.86–$5.49 Google Shopping
Bluetooth module header socket 2.54 mm female pin header, pin count not specified Commodity — no distinct Bluetooth header in the v6 board file; family priced via SSW-114-01-T-D 1,200 $2.95 DigiKey (Samtec)

Programming and Toolchain Hardware

Part Spec/Package Status Stock Price Source
PICkit 3 (PG164130) ICSP programmer/debugger, 6-pin 0.1" header Obsolete — zero stock at every authorized distributor checked 0 (DigiKey 14-week lead; RS and Mouser out of stock) $47.95 listed, unavailable DigiKey / ECIA (Microchip)
PICkit 4 (PG164140) — the lab's suggested replacement ICSP programmer/debugger Obsolete — zero stock at every authorized distributor checked 0 (DigiKey 40-week lead) $94.075 listed, unavailable DigiKey / ECIA (Microchip)
PICkit 5 (PG164150) — recommended ICSP programmer/debugger Active — readily available 1,691 $79.68 DigiKey (Microchip)

Substitutes

For part Substitute Differences Verified Judgment
SN74HC126PW (Obsolete) SN74HC126PWR — $0.40, 12,073 in stock Same TI device, same 14-TSSOP (0.173", 4.40 mm) package, same 2–6 V supply. The only difference is tape-and-reel versus tube packaging. Cheaper than the obsolete part. Verified: package + width (DigiKey parametrics, both 14-TSSOP 0.173"/4.40 mm); supply range (both 2–6 V, covers the 3.3 V and 5.0 V rails). Nothing outstanding. Acceptable — a direct swap.
SN74HC126PW (Obsolete) MC74HC126ADR2G — $0.32, 1,137 in stock onsemi equivalent, but 14-SOIC against the board's TSSOP-14 footprint. Verified: package (DigiKey parametrics, 14-SOIC) against the board file footprint TSSOP-14 — they do not match. Rejected — hard stop. Wrong footprint.
TC1240AECHTR (Last Time Buy) LM2665M6/NOPB — $1.36, 48,207 in stock Package SOT-23-6 = SOT-23-6. Switching frequency 80 kHz = 80 kHz. Input 2.5–5.5 V = 2.5–5.5 V. Output current 40 mA = 40 mA. Output 2×Vin, with an extra Vin/2 mode the TC1240A lacks. Temperature range quoted as −40 °C to 85 °C TJ rather than TA — no shortfall at this power level. $0.25 dearer. Verified: package/footprint (DigiKey parametrics, both SOT-23-6); switching frequency (both 80 kHz, DigiKey parametrics); supply range (both 2.5–5.5 V, DigiKey parametrics); output current (both 40 mA). Not verified: pin assignment — the lab requires a matching pinout, and the parametrics give package and pin count but not pin order. Acceptable, subject to a pinout check. Matches every constraint that could be checked; confirm the pin order against the LM2665 datasheet before ordering.
TC1240AECHTR (Last Time Buy) MCP1259T-E/MF — $0.5544, DigiKey "MFR Recommended" 10-DFN package against the board's SOT-23-6. Verified: package (DigiKey substitution data, 10-DFN) against the board's SOT-23-6 — they do not match. Rejected — hard stop. Wrong footprint, despite being the manufacturer's nominal recommendation.
LM324APT (if a TI part is preferred) LM324APWR — $0.32, 18,947 in stock Same 14-TSSOP footprint, 3–30 V supply, 1.2 MHz gain-bandwidth. Cheaper than the ST part. Verified: package (DigiKey parametrics, 14-TSSOP 0.173"/4.40 mm, against the board file footprint TSSOP-14 4.4×5 mm P0.65 mm); supply range (3–30 V, covers single-rail and split operation). Not verified: pin assignment. Acceptable.
LM324 — the common LM324DR LM324DR — $0.28, 590,419 in stock 14-SOIC against the board's TSSOP-14 footprint. Verified: package (DigiKey parametrics, 14-SOIC) against the board file footprint TSSOP-14 — they do not match. Rejected — hard stop. The cheapest and most plentiful result is the wrong footprint; do not let a parts search default to it.
PICkit 3 (PG164130, Obsolete) PICkit 5 (PG164150) — $79.68, 1,691 in stock The only in-stock ICSP programmer found. Microchip's own replacement chain runs PICkit 3 → PICkit 4 → PICkit 5. The lab permits any compatible Microchip ICSP programmer supporting the PIC24EP family. Roughly $32 dearer than the PICkit 3's last listed price. Verified: obsolescence of both the PICkit 3 and the PICkit 4 (DigiKey lifecycle status plus the ECIA multi-distributor check — zero stock at every authorized distributor listed); current stock and price of the PICkit 5 (DigiKey); the manufacturer-recommended replacement chain (DigiKey substitution data this session). Not verified: explicit PIC24EP device support — Microchip's product page could not be fetched this session, so nothing in evidence states the supported device families. Acceptable, subject to a device-support check. Confirm PIC24EP support on Microchip's device list before ordering.
PICkit 3 (PG164130, Obsolete) PICkit 4 (PG164140) — $94.075 listed The replacement the lab's own notes suggest. Verified: lifecycle status Obsolete and zero stock at DigiKey (40-week lead), Richardson RFPD, RS and Mouser (ECIA check); ECIA lifecycle risk High, supply-chain risk High. Rejected. Also obsolete and unobtainable — dearer than the PICkit 5 and not buyable.

Verify any substitute against its datasheet and against your own board's footprint before ordering.

Other dependencies

  • Ready-made PSLab boards — thin market. The only relevant retail listing found was a pre-order, "Pre-Order: Pocket Science Lab Version 2023", $103.28, from PSLab. No in-stock offer appeared. The Seeed Studio product page was fetched but returned only the site's export-compliance boilerplate, with no price or stock, so nothing can be said about Seeed's availability from evidence. Plan on fabricating rather than buying.
  • PCB fabrication — 4 copper layers, Arduino Mega form factor, all components surface-mount on the top side. Not checked: no fabrication quotes were run this session. The Gerbers and drill files are absent from the upload and must be pulled from the fossasia/pslab-hardware repository.
  • Board design files — the v6 bill of materials (docs/components/BillOfMaterials.csv, pslab-v6 branch) was fetched successfully this run and resolved the packages the lab's prose left unstated. The fetch returned 58 of the file's 61 rows; anything whose reference sorts after U16 — including the crystal rows — is not on the record, which is why the crystal above is a representative rather than the board's confirmed part.
  • External links — pslab.io and the five project repositories on GitHub. Four repositories were queried directly this run and all resolved; what they contain is judged in the Cybersecurity section above.
  • Board-revision ambiguity — the lab's written parts list and the v6 board file disagree in several places: the USB bridge package (QFN-24 4×4 versus QFN-20 3×3), the fuse rating (0.5 A hold versus 250 mA hold / 500 mA trip), and the existence of the SI1 potentiometer and the DC power jack, neither of which appears in the board file. The board file also carries parts the lab text never mentions (an AMS1117-3.3 regulator, an MCP4822 DAC, a WS2812B RGB LED, three tactile switches). Resolve this before ordering.

Watch list

  • TC1240A — Last Time Buy. Healthy stock today, but this part is on its way out and the next check should confirm whether the 12,156 pieces have started draining. The LM2665M6/NOPB substitute is the exit route.
  • PIC24EP256GP204-I/PT — only 458 pieces at DigiKey and no ECIA-authorized distributor lists the part number, so this is effectively single-sourced. No substitution is permitted (the firmware is built for this device), which makes it the single most fragile line in the build.
  • SSW-104-01-T-D (ESP-01 socket) — 248 pieces is the thinnest stock of anything checked. A class-sized order could clear it.
  • MCP6S21-I/SN — 423 pieces, and the board needs two per unit, so roughly 211 boards' worth. No substitution permitted.
  • PICkit programmers — the PICkit 3 and PICkit 4 are already obsolete. Watch whether the PICkit 5 stays available, since it is now the only route to flashing the board.
  • USB Type-C receptacle — the board's specified part is unlisted at every distributor checked. Until an alternative is matched to the land pattern, this is an open sourcing question rather than a solved one.
  • DS1307Z+ pricing — at $6.03 it is the most expensive chip on the board and well above the $3.69 the board file records, so it is worth re-pricing each check.
Snapshot What the lab depended on when it was uploaded — the baseline the readiness checks research against.

The FOSSASIA PSLab (Pocket Science Lab) is an open-source multifunction electronic test and measurement instrument that functions as an oscilloscope (3-channel, up to 2 MSPS), logic analyzer (4-channel, 4 MHz), programmable voltage source (three 12-bit outputs: ±3.3 V, ±5.0 V, 0 to 3.0 V), programmable current source (12-bit, 0 to 3.3 mA), frequency counter, capacitance meter, and waveform/PWM generator. The system operates on dual internal power rails: a 5.0 V primary rail derived from USB Type-C or an external DC power input jack (regulated via an STMicroelectronics LDL212PU50R LDO) and a 3.3 V digital/analog supply rail (regulated via an STMicroelectronics LDFM33PUR LDO). In addition, on-board switched-capacitor charge pumps generate an inverted negative rail (via a Microchip TC7660) and a doubled positive rail (via a Microchip TC1240A) to power the analog front-end op-amps for bipolar signal measurements ranging from ±10 mV to ±16 V. Host communication runs over USB Type-C via a Silicon Labs CP2102N USB-to-UART bridge, with optional wireless networking provided through an ESP8266 ESP-01 Wi-Fi header or Bluetooth module socket.

Bill of Materials

Microcontroller and Digital Logic

  • Microcontroller

    • Identity: Microchip PIC24EP256GP204 (16-bit digital signal controller, 256 KB Flash, 32 KB RAM)
    • Quantity: 1
    • Footprint/package: Described only as PIC24EP256GP204 (standard Microchip 44-pin TQFP or QFN; specific package suffix not stated in the upload documentation).
    • Electrical constraints: Operates from the 3.3 V supply rail (operating voltage range 3.0 V to 3.6 V); operates up to 70 MIPS.
    • Substitution latitude: No substitution permitted. The firmware and bootloader are built specifically for the PIC24EP256GP204 microcontroller architecture and its peripheral register mapping.
    • Operated control: No.
    • Sourcing plan: distributor lookup: PIC24EP256GP204
  • Quad Bus Buffer

    • Identity: Texas Instruments / NXP 74HC126 (Quad buffer/line driver with 3-state outputs)
    • Quantity: 1
    • Footprint/package: Described only as 74HC126 (typically SOIC-14 or TSSOP-14; specific package suffix not stated).
    • Electrical constraints: CMOS logic operating across the 3.3 V / 5.0 V rail (operating supply 2.0 V to 6.0 V).
    • Substitution latitude: Any 74HC126 or pin-compatible 74HCT126 / 74AHC126 quad buffer in the matching footprint.
    • Operated control: No.
    • Sourcing plan: distributor lookup: 74HC126

Analog Front-End, Data Conversion, and Signal Conditioning

  • Programmable Gain Amplifier (PGA)

    • Identity: Microchip MCP6S21 (Single-channel SPI programmable gain amplifier)
    • Quantity: 1
    • Footprint/package: Described only as MCP6S21 (typically SOIC-8 or MSOP-8; specific package suffix not stated).
    • Electrical constraints: Supply voltage range 2.5 V to 5.5 V (operates on the analog rail); provides SPI-controlled gains of 1, 2, 4, 5, 8, 10, 16, and 32 V/V for oscilloscope input scaling.
    • Substitution latitude: No substitution permitted without rewriting the SPI command routines in the firmware.
    • Operated control: No.
    • Sourcing plan: distributor lookup: MCP6S21
  • Digital-to-Analog Converter (DAC)

    • Identity: Microchip MCP4728 (4-channel, 12-bit voltage output DAC with EEPROM and I2C interface)
    • Quantity: 1
    • Footprint/package: Described only as MCP4728 (10-pin MSOP; specific package suffix not stated).
    • Electrical constraints: Supply voltage 2.7 V to 5.5 V; drives the programmable voltage sources (PV1, PV2, PV3) and the 12-bit programmable current source.
    • Substitution latitude: No substitution permitted; firmware communicates directly with the MCP4728 I2C command structure and internal EEPROM.
    • Operated control: No.
    • Sourcing plan: distributor lookup: MCP4728
  • Dual Operational Amplifier

    • Identity: Texas Instruments TL082 (Dual JFET-input operational amplifier)
    • Quantity: 1
    • Footprint/package: Described only as TL082 (typically SOIC-8; specific package suffix not stated).
    • Electrical constraints: JFET input stages for high input impedance; powered from split rails generated by the charge pumps.
    • Substitution latitude: Any dual JFET-input operational amplifier in the matching pinout and package (e.g., TL072, LF353) capable of operating on the split supply rails.
    • Operated control: No.
    • Sourcing plan: distributor lookup: TL082
  • Quad Operational Amplifier

    • Identity: Texas Instruments LM324 (Quad operational amplifier)
    • Quantity: 1
    • Footprint/package: Described only as LM324 (typically SOIC-14 or TSSOP-14; specific package suffix not stated).
    • Electrical constraints: Single or split rail operation down to ground; used for buffering reference voltages and signal conditioning.
    • Substitution latitude: Any industry-standard quad operational amplifier (e.g., LM324, LMV324) in the matching SMD package.
    • Operated control: No.
    • Sourcing plan: distributor lookup: LM324
  • Charge Pump Voltage Inverter

    • Identity: Microchip TC7660 (Charge pump DC-to-DC voltage converter)
    • Quantity: 1
    • Footprint/package: Described only as TC7660 (typically SOIC-8 or MSOP-8; specific package suffix not stated).
    • Electrical constraints: Input operating voltage 1.5 V to 12.0 V; inverts positive supply to provide negative supply rail for analog op-amps.
    • Substitution latitude: Any pin-compatible 7660-type charge pump inverter (e.g., ICL7660, MAX1044) meeting the voltage and current requirements.
    • Operated control: No.
    • Sourcing plan: distributor lookup: TC7660
  • Charge Pump Voltage Doubler

    • Identity: Microchip TC1240A (Positive doubling charge pump)
    • Quantity: 1
    • Footprint/package: Described only as TC1240A (typically SOT-23-6; specific package suffix not stated).
    • Electrical constraints: Input operating voltage 2.5 V to 5.5 V; boosts rail voltage to provide positive headroom for analog stages.
    • Substitution latitude: Must match the TC1240A pinout, switching frequency, and footprint.
    • Operated control: No.
    • Sourcing plan: distributor lookup: TC1240A

Power Regulation, Protection, and Support ICs

  • 3.3 V Low-Dropout Linear Regulator

    • Identity: STMicroelectronics LDFM33PUR (Very low drop linear regulator, 3.3 V fixed output)
    • Quantity: 1
    • Footprint/package: DFN6 (3x3 mm), indicated by the "PUR" suffix.
    • Electrical constraints: Input voltage up to 16 V; fixed 3.3 V output at up to 500 mA / 1 A.
    • Substitution latitude: Must match the ST DFN6 pinout and thermal pad configuration.
    • Operated control: No.
    • Sourcing plan: distributor lookup: LDFM33PUR
  • 5.0 V Low-Dropout Linear Regulator

    • Identity: STMicroelectronics LDL212PU50R (1.2 A low-dropout ultra-low noise linear regulator, 5.0 V fixed output)
    • Quantity: 1
    • Footprint/package: DFN-6L (3x3 mm), indicated by the "PUR" suffix.
    • Electrical constraints: Input voltage up to 18 V; fixed 5.0 V output at up to 1.2 A.
    • Substitution latitude: Must match the DFN-6L footprint and pinout.
    • Operated control: No.
    • Sourcing plan: distributor lookup: LDL212PU50R
  • USB-to-UART Bridge Controller

    • Identity: Silicon Labs CP2102N-A02-GQFN24 (USBXpress single-chip USB-to-UART bridge)
    • Quantity: 1
    • Footprint/package: QFN-24 (4x4 mm).
    • Electrical constraints: USB 2.0 full-speed interface; powered via USB 5 V VBUS with internal 3.3 V LDO; UART signals at 3.3 V logic levels up to 3 Mbaud.
    • Substitution latitude: Must be CP2102N in the 24-pin QFN footprint.
    • Operated control: No.
    • Sourcing plan: distributor lookup: CP2102N-A02-GQFN24
  • Real-Time Clock (RTC)

    • Identity: Maxim Integrated / Analog Devices DS1307Z+ (64 x 8 I2C real-time clock)
    • Quantity: 1
    • Footprint/package: 8-pin SOIC (150 mil), indicated by the "Z" package code.
    • Electrical constraints: Operates from 5.0 V rail; connects via I2C bus; requires external 32.768 kHz crystal.
    • Substitution latitude: Must be DS1307Z+ or exact register-compatible I2C equivalent.
    • Operated control: No.
    • Sourcing plan: distributor lookup: DS1307Z+
  • ESD Protection TVS Diode Array

    • Identity: Littelfuse SP0503BAHTG (3-channel TVS diode array for ESD protection)
    • Quantity: 1 (at least 1; protects USB lines and/or input pins)
    • Footprint/package: SOT-143 (indicated by the "HTG" suffix).
    • Electrical constraints: Reverse standoff voltage 5.5 V; clamp voltage under ESD transient; low capacitance.
    • Substitution latitude: Any 3-channel TVS diode array with matching pin configuration in a SOT-143 package.
    • Operated control: No.
    • Sourcing plan: distributor lookup: SP0503BAHTG
  • Protection Fuse

    • Identity: 0.5 A Fuse (described only as "0.5 A Fuse")
    • Quantity: 1
    • Footprint/package: Surface-mount footprint (typically SMD 1206 or 1812 PTC polyfuse; footprint not stated in text).
    • Electrical constraints: Hold current 0.5 A (500 mA), trip current ≥ 1.0 A, voltage rating ≥ 6 V DC.
    • Substitution latitude: Any 0.5 A resettable PTC fuse fitting the board footprint.
    • Operated control: No.
    • Sourcing plan: distributor lookup (representative example — sources give spec only): 0ZCJ0050FF2E

Electromechanical, Controls, Passives, and Expansion

  • SI1 Waveform Generator Manual Amplitude Potentiometer

    • Identity: Manual potentiometer / trimmer for SI1 amplitude control (described in hardware documentation as "Manual amplitude control for SI1", adjusting output up to ±3 V)
    • Quantity: 1
    • Footprint/package: PCB-mount potentiometer (package and footprint not stated in upload files).
    • Electrical constraints: Analog signal attenuator for the SI1 waveform generator channel (±3 V range).
    • Substitution latitude: Must have a physically accessible user actuator (knob or thumbwheel) because students manually adjust signal amplitude during experiments. A set-once flat screw trimmer cannot substitute for a user-operated control.
    • Operated control: YES (manual rotary control for SI1 amplitude).
    • Sourcing plan: general web research: "What potentiometer part number and footprint is used for SI1 amplitude control in PSLab v6?"
  • Status Indicator LEDs

    • Identity: On-board visual indicator LEDs (described in software README: "check that both the LEDs light up")
    • Quantity: 2
    • Footprint/package: Surface-mount LED (typically 0603 or 0805; package not stated in upload files).
    • Electrical constraints: Forward voltage ~2.0 V to 3.3 V with series current-limiting resistors.
    • Substitution latitude: Any SMD LED in the matching physical package.
    • Operated control: No (visual indicator only).
    • Sourcing plan: distributor lookup (representative example — sources give spec only): LTST-C190GKT
  • Crystal Oscillators

    • Identity: Clock crystals (described in v2 revision history: "added voltage regulator and crystal oscillator"; required by DS1307 RTC and optionally PIC24 MCU)
    • Quantity: At least 1 (32.768 kHz crystal for DS1307; MCU primary crystal if used)
    • Footprint/package: SMD crystal package (unspecified in text).
    • Electrical constraints: 32.768 kHz, 12.5 pF load capacitance for DS1307Z+.
    • Substitution latitude: Standard 32.768 kHz tuning fork crystal matching footprint and load capacitance.
    • Operated control: No.
    • Sourcing plan: general web research: "What crystal oscillators are used on the FOSSASIA PSLab v6 board?"
  • Assorted Passives (Resistors, Capacitors, Diodes)

    • Identity: Assorted resistors, capacitors, and diodes (described only as "Assorted resistors, capacitors & diodes")
    • Quantity: Assorted (exact counts omitted from uploaded markdown documentation; external file docs/components/BillOfMaterials.csv was not provided in upload).
    • Footprint/package: SMD (standard open-hardware 0805 or 0603 passives).
    • Electrical constraints: Bypass capacitors (0.1 µF, 1 µF, 10 µF, rated ≥ 10 V), I2C pull-ups (4.7 kΩ), analog dividers, and clamping diodes.
    • Substitution latitude: Standard commodity SMD passive components matching the schematic values.
    • Operated control: No.
    • Sourcing plan: general web research: "What are the exact passive component values in pslab-hardware docs/components/BillOfMaterials.csv?"
  • USB Type-C Connector

    • Identity: USB Type-C Receptacle (described in v6 revision: "Added external power input, RTC module, SD Card slot, USB type C, ESP 01")
    • Quantity: 1
    • Footprint/package: Surface-mount USB Type-C female connector (typically 12-pin or 16-pin USB 2.0 Type-C; footprint not specified in text).
    • Electrical constraints: USB 2.0 bus lines (D+, D-), 5.0 V VBUS power line, CC1/CC2 pins with 5.1 kΩ pull-downs.
    • Substitution latitude: Must match the exact PCB pad pattern and through-hole shell shield mounting posts.
    • Operated control: No (plug-in cable port).
    • Sourcing plan: retail shopping search: "USB Type-C female SMD receptacle 16 pin"
  • External Power Input Jack

    • Identity: External DC Power Input Jack (described in v6 revision: "Added external power input")
    • Quantity: 1
    • Footprint/package: PCB-mounted DC power connector (barrel jack or screw terminal; footprint not specified in text).
    • Electrical constraints: DC power input feeding on-board linear regulators.
    • Substitution latitude: Must match PCB land pattern and pin diameter.
    • Operated control: No.
    • Sourcing plan: general web research: "What is the connector part number for the external power input jack on PSLab v6?"
  • MicroSD Card Slot

    • Identity: MicroSD Card Socket (described in v6 revision: "SD Card slot")
    • Quantity: 1
    • Footprint/package: SMD MicroSD card socket (push-push or push-pull; footprint not specified in text).
    • Electrical constraints: 3.3 V SPI / SDIO interface lines to PIC24 MCU.
    • Substitution latitude: Must physically match the PCB land pattern.
    • Operated control: Yes (students insert/remove microSD memory cards for data logging).
    • Sourcing plan: retail shopping search: "Micro SD card socket SMD PCB mount"
  • Wi-Fi Module Header Socket & ESP8266 Module (Optional Expansion)

    • Identity: Espressif ESP8266 (ESP-01) Module and mating 2x4 female socket (described in documentation as "ESP8266 (ESP-01) - UART-TCP bridge")
    • Quantity: 1 module, 1 header socket
    • Footprint/package: 2x4 pin, 0.1 inch (2.54 mm) pitch through-hole female header; ESP-01 module.
    • Electrical constraints: 3.3 V supply, 3.3 V UART signaling, peak current up to 300 mA during RF bursts.
    • Substitution latitude: Standard ESP-01 or ESP-01S module; mating header must be 2x4 pin 2.54 mm pitch.
    • Operated control: No.
    • Sourcing plan: retail shopping search: "ESP8266 ESP-01 module and 2x4 2.54mm female header"
  • Bluetooth Module Header Socket

    • Identity: Bluetooth module expansion header socket (described in v5 revision: "Added socket for external bluetooth module")
    • Quantity: 1
    • Footprint/package: Female pin header (typically 4-pin or 6-pin 0.1 inch / 2.54 mm pitch; pin count not specified in text).
    • Electrical constraints: 3.3 V or 5.0 V power, UART TX/RX lines.
    • Substitution latitude: Standard 0.1 inch (2.54 mm) female pin header matching board pin count.
    • Operated control: No.
    • Sourcing plan: retail shopping search: "female pin header 2.54mm pitch for Bluetooth module"

Programming and Toolchain Hardware

  • In-Circuit Debugger / Programmer
    • Identity: Microchip PICkit 3 In-Circuit Debugger / Programmer (Microchip Part Number: PG164130)
    • Quantity: 1 (required tool to flash firmware/bootloader to the PIC24 MCU)
    • Footprint/package: Standalone external programmer with 6-pin 0.1" ICSP connector.
    • Electrical constraints: Interfaces with target at 3.3 V VDD; connects to MCLR, ICSPDAT, ICSPCLK.
    • Substitution latitude: Compatible Microchip ICSP programmers supporting the PIC24EP family (e.g., PICkit 4, SNAP, MPLAB ICD 3/4).
    • Operated control: External shop/bench programming tool.
    • Sourcing plan: distributor lookup: PG164130

Software and network dependencies

  • Microchip MPLAB X IDE

    • Name: Microchip MPLAB X IDE
    • Source: http://www.microchip.com/mplab/mplab-x-ide
    • Version: v3.35
    • Where the version came from: stated in documentation (pslab_hardware_README.md).
    • Version pinning: Pinned to major/minor version v3.35 in documentation.
    • Manifest location: pslab_hardware_README.md
    • Check plan: support-status lookup: Microchip MPLAB X IDE v3.35
  • Microchip MPLAB XC16 C Compiler

    • Name: Microchip MPLAB XC16 Compiler
    • Source: http://www.microchip.com/mplab/compilers
    • Version: not stated
    • Where the version came from: not stated (referenced by name only in pslab_hardware_README.md).
    • Version pinning: Unpinned in documentation.
    • Manifest location: pslab_hardware_README.md
    • Check plan: not checkable: version not stated
  • PSLab PIC24 Bootloader

    • Name: pslab-bootloader
    • Source: https://github.com/fossasia/pslab-bootloader
    • Version: not stated
    • Where the version came from: not stated.
    • Version pinning: Unpinned.
    • Manifest location: pslab_hardware_README.md
    • Check plan: not checkable: version not stated
  • PSLab Microcontroller Firmware

    • Name: pslab-firmware
    • Source: https://github.com/fossasia/pslab-firmware
    • Version: not stated
    • Where the version came from: not stated.
    • Version pinning: Unpinned.
    • Manifest location: pslab_hardware_README.md
    • Check plan: not checkable: version not stated
  • PSLab Desktop and Mobile Application

    • Name: pslab-app
    • Source: https://github.com/fossasia/pslab-app
    • Version: not stated
    • Where the version came from: not stated.
    • Version pinning: Unpinned.
    • Manifest location: pslab_hardware_README.md and pslab_python_README.md
    • Check plan: not checkable: version not stated
  • Python Host Environment

    • Name: Python
    • Source: https://www.python.org
    • Version: >= 3.8
    • Where the version came from: pinned in pyproject.toml (requires-python = ">=3.8").
    • Version pinning: Minimum version constraint only (>=3.8); no upper bound pinned.
    • Manifest location: pyproject.toml
    • Check plan: support-status lookup: Python 3.8
  • flit_core Build Backend

    • Name: flit_core
    • Source: PyPI
    • Version: >= 3.4, < 4
    • Where the version came from: pinned in pyproject.toml (requires = ["flit_core >=3.4,<4"]).
    • Version pinning: Constrained to range >= 3.4, < 4.
    • Manifest location: pyproject.toml
    • Check plan: vulnerability lookup: flit_core / PyPI / 3.4.0
  • mcbootflash (Python Microchip Bootloader Flashing Library)

    • Name: mcbootflash
    • Source: PyPI
    • Version: >= 8.0.0 (in pyproject.toml) / >= 4.1.0 (in requirements.txt)
    • Where the version came from: pinned in pyproject.toml (mcbootflash >= 8.0.0) and pinned in requirements.txt (mcbootflash >= 4.1.0).
    • Version pinning: Minimum floor constraints only; disagreement between pyproject.toml (>= 8.0.0) and requirements.txt (>= 4.1.0).
    • Manifest location: pyproject.toml and requirements.txt
    • Check plan: vulnerability lookup: mcbootflash / PyPI / 8.0.0
  • NumPy

    • Name: numpy
    • Source: PyPI
    • Version: >= 1.16.3 (in requirements.txt) / unpinned (in pyproject.toml)
    • Where the version came from: pinned in requirements.txt (numpy >= 1.16.3); unpinned bare string in pyproject.toml.
    • Version pinning: Minimum floor constraint only in requirements.txt; unpinned in pyproject.toml.
    • Manifest location: requirements.txt and pyproject.toml
    • Check plan: vulnerability lookup: numpy / PyPI / 1.16.3
  • SciPy

    • Name: scipy
    • Source: PyPI
    • Version: >= 1.3.0 (in requirements.txt) / unpinned (in pyproject.toml)
    • Where the version came from: pinned in requirements.txt (scipy >= 1.3.0); unpinned bare string in pyproject.toml.
    • Version pinning: Minimum floor constraint only in requirements.txt; unpinned in pyproject.toml.
    • Manifest location: requirements.txt and pyproject.toml
    • Check plan: vulnerability lookup: scipy / PyPI / 1.3.0
  • pySerial

    • Name: pyserial
    • Source: PyPI
    • Version: >= 3.4 (in requirements.txt) / unpinned (in pyproject.toml)
    • Where the version came from: pinned in requirements.txt (pyserial >= 3.4); unpinned bare string in pyproject.toml.
    • Version pinning: Minimum floor constraint only in requirements.txt; unpinned in pyproject.toml.
    • Manifest location: requirements.txt and pyproject.toml
    • Check plan: vulnerability lookup: pyserial / PyPI / 3.4
  • setuptools

    • Name: setuptools
    • Source: PyPI
    • Version: >= 35.0.2
    • Where the version came from: pinned in requirements.txt (setuptools >= 35.0.2).
    • Version pinning: Minimum floor constraint only (>= 35.0.2).
    • Manifest location: requirements.txt
    • Check plan: vulnerability lookup: setuptools / PyPI / 35.0.2
  • Silicon Labs CP210x VCP Drivers

  • Network Exposure and Host Access Configuration

    • Network Exposure: The physical board includes an expansion socket for an Espressif ESP8266 (ESP-01) module used as an optional UART-to-TCP/Wi-Fi bridge operating in Access Point or Station mode ("PSLab also has space for an ESP-01 module for WiFi access with access point/station mode" in pslab_hardware_README.md). Specific listening ports, services, and default credentials are not stated in the sources.
    • Host Access: Host communication is conducted over a local USB-to-UART serial interface (CP2102N). On Linux, access requires adding the user to the dialout group or installing a udev rule using the command pslab install run as root (pslab_python_README.md). On Windows, manual installation of Silicon Labs CP210x VCP drivers is required. The documentation does not instruct users to enable SSH or open any host web server interface.

External Downloads and Fabrication