{
  "release": "documentation-2026-10-22",
  "application": "Six supplied Python files arranged for the Pico root; contents unchanged. Display driver imports successfully; builder reports prior hardware tests passed.",
  "files": [
    {
      "name": "ECG_Part_1.stl",
      "size_bytes": 192584,
      "sha256": "74f4096661d71d616a3b533877245474e00e731acbea705c38cb0d81c0b8a495",
      "triangles": 3850,
      "extents_model_units": [
        78.651,
        106.555,
        17.95
      ],
      "units": "STL does not declare units; verify scale in the slicer."
    },
    {
      "name": "ECG_Part_2.stl",
      "size_bytes": 265384,
      "sha256": "d6d84948197e1fa9f58069f7b779e88b3ee339fb030ea8c1ffbcc23aed7e1944",
      "triangles": 5306,
      "extents_model_units": [
        78.651,
        106.555,
        24.5
      ],
      "units": "STL does not declare units; verify scale in the slicer."
    },
    {
      "name": "MEGO_Dual_v2.f3z",
      "size_bytes": 454497,
      "sha256": "795500506fd90445678be462090a64e6b401c8ecb8d1d2acc36f74467c6c0571",
      "provenance": "Supplied Fusion component reference archive; bytes unchanged."
    },
    {
      "name": "START_HERE.html",
      "provenance": "Project package entry guide.",
      "size_bytes": 6591,
      "sha256": "1bcfa85c8312633c59a5f1993632fdbe60d19e847297573b0b86b1f70c459287"
    },
    {
      "name": "SpO2Calculators.py",
      "size_bytes": 5115,
      "sha256": "9ee8d7b2311c1133970e9f69872d82dbd810ca5d81e8f61d5b56545b78141a1e",
      "provenance": "Supplied source bytes unchanged; canonical import names and package paths."
    },
    {
      "name": "application-source.zip",
      "size_bytes": 13194,
      "sha256": "4ec57f9dde397acfdd8808d6d2f1c1b756823e2362bfc86790bc2950f131cefc",
      "provenance": "Source bundle or documentation asset."
    },
    {
      "name": "biosignal_monitor.py",
      "size_bytes": 8401,
      "sha256": "0b38c20ab6d357c01b2308e7bb7e8a4f1753d58d62e9f0edf7ea52df117b545f"
    },
    {
      "name": "build-notes.html",
      "size_bytes": 35973,
      "sha256": "e973221eea664ca6d88048e01a31a16158ad2f4e154d72f04a28c890a3dbd629",
      "provenance": "Project-specific installation documentation adapted from cited primary references."
    },
    {
      "name": "build-process.html",
      "provenance": "Project package asset.",
      "size_bytes": 4449,
      "sha256": "81d604095b925028159d58ad6bebc97cd3b5681b5703060106b53e199ac1c62a"
    },
    {
      "name": "enclosure-print-files.zip",
      "provenance": "Bundle of the two supplied STL meshes; original mesh bytes unchanged.",
      "size_bytes": 111676,
      "sha256": "09deba2c910ed5b318c38bf136117dd2426441fa22631a199e7ce1427344b5b3"
    },
    {
      "name": "main.py",
      "size_bytes": 8401,
      "sha256": "0b38c20ab6d357c01b2308e7bb7e8a4f1753d58d62e9f0edf7ea52df117b545f",
      "provenance": "Supplied source bytes unchanged; canonical import names and package paths."
    },
    {
      "name": "max30102/__init__.py",
      "size_bytes": 26783,
      "sha256": "6a5bf939be50151f68f448e656d6f51c1537bbf1ea177ed8c15bdff13b8ef89a",
      "provenance": "Supplied source bytes unchanged; canonical import names and package paths."
    },
    {
      "name": "max30102/circular_buffer.py",
      "size_bytes": 1056,
      "sha256": "fa694f289c62e832672ea3ceb1200cd4a75e42b971e2b70460fbfc70f43fad2f",
      "provenance": "Supplied source bytes unchanged; canonical import names and package paths."
    },
    {
      "name": "photos/ad8232-board.jpg",
      "size_bytes": 150224,
      "sha256": "614973ef233809d1d608256f97211849d9530098adba5299bef725a70507d43c",
      "provenance": "Original supplied photograph; bytes unchanged."
    },
    {
      "name": "photos/breadboard-ecg-display.jpg",
      "provenance": "Original development photograph supplied by the builder; original bytes unchanged.",
      "size_bytes": 217588,
      "sha256": "5d2ad295b1e2be93897afa52c72e0d1c691685d663793f13fc1737e62d6a8dd5"
    },
    {
      "name": "photos/breadboard-emg-development.jpg",
      "provenance": "Original development photograph supplied by the builder; original bytes unchanged.",
      "size_bytes": 513843,
      "sha256": "fe928d7d1f3a603d3588091b289b6a7f4f9eb39a992f538d6d8c6e70fc08b0f2"
    },
    {
      "name": "photos/breadboard-system-wiring.jpg",
      "provenance": "Original development photograph supplied by the builder; original bytes unchanged.",
      "size_bytes": 451700,
      "sha256": "4d4df8c740f244fa8a19080f9c33e832172cc15b89dd2e686a98649f4193d722"
    },
    {
      "name": "photos/emg-board.jpg",
      "size_bytes": 138197,
      "sha256": "fbc30ee442e1a759a81e6460d759db865356218a2bcd4c93b520095c7cea99b1",
      "provenance": "Original supplied photograph; bytes unchanged."
    },
    {
      "name": "photos/max30102-board.jpg",
      "size_bytes": 104328,
      "sha256": "27b32fcb957c6eb240a90f346f9b9908d988ac461e7c3e892ecd6140c0f72e7e",
      "provenance": "Original supplied photograph; bytes unchanged."
    },
    {
      "name": "photos/prototype-printed-base.jpg",
      "provenance": "Original development photograph supplied by the builder; original bytes unchanged.",
      "size_bytes": 474128,
      "sha256": "5378b0260dfd95377c9cbeb7e70ed18e523b57e60626a55a3e1ef43b441f332e"
    },
    {
      "name": "photos/st7789-board.jpg",
      "size_bytes": 168831,
      "sha256": "a5d6a63e193548321044052f6ef2562687d19f63b2d1b8ef8e71b0358f76696d",
      "provenance": "Original supplied photograph; bytes unchanged."
    },
    {
      "name": "photos/stepico-board.jpg",
      "size_bytes": 213629,
      "sha256": "34688e356bd6c896f6c0965053790b59643d0a4d4f90739bb06de46af527d5f5",
      "provenance": "Original supplied photograph; bytes unchanged."
    },
    {
      "name": "pico-setup.html",
      "size_bytes": 6853,
      "sha256": "f5fc91c4c74387ddd46030a86205d8b186a74922b93b0d926fe3633620d5bb36",
      "provenance": "Project-specific installation documentation adapted from cited primary references."
    },
    {
      "name": "power-map.svg",
      "size_bytes": 6787,
      "sha256": "e2c4f31a514f2f0e9ff29830031294516934e44e4a08652e84e09f65f4b1c5da",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "references/ad8232-reference.svg",
      "provenance": "Locally hosted reference imagery; source and visual-reference status recorded in references/image-sources.json.",
      "size_bytes": 209197,
      "sha256": "e97925901668923d8906191312e65fb9b650ae632cdf55022adc7f96d6831b29"
    },
    {
      "name": "references/emg-reference.svg",
      "provenance": "Locally hosted reference imagery; source and visual-reference status recorded in references/image-sources.json.",
      "size_bytes": 209270,
      "sha256": "f1cabed166c17ea08a24ebdc70ae22d0e7777033a954018c0ff1c2e134ddcbd1"
    },
    {
      "name": "references/image-sources.json",
      "provenance": "Locally hosted reference imagery; source and visual-reference status recorded in references/image-sources.json.",
      "size_bytes": 3123,
      "sha256": "c516fe3de2617d5653fa6cc630a9ee54dbf47aca0d3a48b1dca867e0e47be4d6"
    },
    {
      "name": "references/max30102-reference.jpg",
      "provenance": "Locally hosted reference imagery; source and visual-reference status recorded in references/image-sources.json.",
      "size_bytes": 184430,
      "sha256": "3e73682df3da14d0988aea1864bed1d324ec3e9d782267c08cac8dda5e79e4e1"
    },
    {
      "name": "references/st7789-reference.jpg",
      "provenance": "Locally hosted reference imagery; source and visual-reference status recorded in references/image-sources.json.",
      "size_bytes": 25924,
      "sha256": "478c804c6c5433a1f582525a802aee7cf926799c9402618739498714b56b08ad"
    },
    {
      "name": "references/stepico-cad.svg",
      "provenance": "Locally hosted reference imagery; source and visual-reference status recorded in references/image-sources.json.",
      "size_bytes": 2040153,
      "sha256": "d943a34f6bb4642a98fa9b0781da94ac8d6f6afaf378e07f5ff7b9449c030754"
    },
    {
      "name": "signal-map.svg",
      "size_bytes": 7696,
      "sha256": "a0cd2dacf723e50a5778debf071a771de7165679a6e84dbd67c192ff8d6e3843",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "vga1_16x16.py",
      "size_bytes": 12853,
      "sha256": "763dcd3e9986965c96d11395ddd0791e75efa636244d702bed3aa09e889d2414",
      "provenance": "Supplied source bytes unchanged; canonical import names and package paths."
    },
    {
      "name": "vga1_8x8.py",
      "size_bytes": 3667,
      "sha256": "c5a6fd6ec65264810c2dd4128d94615321f7af9cd27d0deaac38e939899de116",
      "provenance": "Supplied source bytes unchanged; canonical import names and package paths."
    },
    {
      "name": "wiring/01-max30102.png",
      "size_bytes": 112852,
      "sha256": "70f323b30d5eed83cf3cc3b142f973b2e08f3c5bb637319c57b8f804e404c446",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "wiring/01-max30102.svg",
      "size_bytes": 123267,
      "sha256": "507caf74f545c1d80420fed6ebfe23c349b966cd0af1e07e5dc75798346d9cdd",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "wiring/02-st7789.png",
      "size_bytes": 124514,
      "sha256": "1ac62849de7db5b1a6c9f3c05c587122f9e25a715c2bdfa63759d5c36516ef28",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "wiring/02-st7789.svg",
      "size_bytes": 88093,
      "sha256": "39d85f0ddfda31a434e787d085b5615669c7a2a616e869fcae6d02930e95d100",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "wiring/03-ad8232.png",
      "size_bytes": 106863,
      "sha256": "32e96dfdef18b7157351d09febdccaaf3a7be7522ad9656b39a0fe6fd0bdfa16",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "wiring/03-ad8232.svg",
      "size_bytes": 83023,
      "sha256": "56ff6844662f320a44e74a16f6be464f7a7c76de13fc3ae27f0bd192463c6af8",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "wiring/04-controls.png",
      "size_bytes": 129393,
      "sha256": "95d8d75e36eb303ea248987854d5b36c80105e668f9feca8ce5885b9502576a2",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "wiring/04-controls.svg",
      "size_bytes": 85790,
      "sha256": "6c2ac30afd934fe874c812e161b3f4f46d1d498ccf8ef8e3ccead7b571b4480d",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "wiring/05-emg.png",
      "size_bytes": 136034,
      "sha256": "3c02e654577eb57c069ca6db25556b5159e93586c6d1cee506a988f913b2fc25",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "wiring/05-emg.svg",
      "size_bytes": 85338,
      "sha256": "404ba8db58757b85e971e1dc90d21d6def6e31c540a090cbb34d8709870776ad",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "wiring/connections.json",
      "size_bytes": 4853,
      "sha256": "4631cf140a3735599c8a3055bc2e3c0a47aedc5bc26f078124c942c90b691f97",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "wiring/index.html",
      "size_bytes": 3421,
      "sha256": "1c5007d58e2501688de1a03c246a2b7304a338b9b3524fe3f5f03dc36f4114df",
      "provenance": "Documentation asset; source program unchanged."
    },
    {
      "name": "wiring-diagrams.zip",
      "size_bytes": 596935,
      "sha256": "34ed0f12f9e0abf62cc43be9070d9a6b96886852313a5c50dec448238b2a96aa",
      "provenance": "Documentation asset; source program unchanged."
    }
  ],
  "software": {
    "source_zip": [
      "main.py",
      "SpO2Calculators.py",
      "max30102/__init__.py",
      "max30102/circular_buffer.py",
      "vga1_16x16.py",
      "vga1_8x8.py"
    ],
    "external_dependencies_not_bundled": [
      "st7789"
    ],
    "driver_review_status": "Supplied Python libraries included unchanged. Display driver import confirmed. Builder reports prior hardware tests passed; host edge-case findings remain documented.",
    "reported_runtime": {
      "evidence": "Builder-provided Pico Shell output, 21 Oct 2026",
      "name": "micropython",
      "version": [
        1,
        20,
        0
      ],
      "machine": "Raspberry Pi Pico with RP2040",
      "mpy": 4358,
      "st7789_import_confirmed": true,
      "exact_firmware_image": null,
      "st7789_import_result": "<module 'st7789'>"
    },
    "known_limits": [
      "Zero-baseline input raises ZeroDivisionError in calculator",
      "main.py ratio division does not exclude zero ir_ratio",
      "CircularBuffer.pop_head issue is outside current application read path"
    ],
    "hardware_test_record": {
      "status": "Prior operational tests passed, as reported by builder",
      "confirmation_date": "2026-10-21",
      "test_date": null,
      "scope": [
        "Display",
        "Controls",
        "ECG mode",
        "EMG mode",
        "Optical mode"
      ],
      "evidence": "Builder confirmation in this conversation; no detailed test log supplied",
      "repeat_testing_requested": false
    },
    "setup_guide": {
      "file": "pico-setup.html",
      "primary_reference": "https://support.eimtechnology.com/documentation/stepico",
      "steps": [
        "Prepare Thonny and USB",
        "Choose driver-compatible RP2040 firmware",
        "Enter BOOT mode",
        "Transfer UF2",
        "Select interpreter and serial port",
        "Copy six files and run main.py"
      ],
      "current_working_board": "Continue at interpreter / file-copy steps; no repeat operational test requested"
    },
    "firmware_references": [
      {
        "filename": "RPI_PICO-20250415-v1.25.0.uf2",
        "version": "1.25.0",
        "size_bytes": 667648,
        "sha256": "e0c40eacf1afc550a6add74888c48bb981b28788a6d75a62a0e2444e997b9864",
        "bundled": false,
        "status": "Supplied reference; not identified as the running image; st7789 compatibility unverified"
      },
      {
        "filename": "RPI_PICO-20250809-v1.26.0.uf2",
        "version": "1.26.0",
        "size_bytes": 668672,
        "sha256": "3fb807524074c75694bd4b13a587dc8673e0815d393a5bdfc250c7cd561b34df",
        "bundled": false,
        "status": "Supplied reference; not identified as the running image; st7789 compatibility unverified"
      },
      {
        "filename": "RPI_PICO-20260824-v1.29.0.uf2",
        "version": "1.29.0",
        "size_bytes": 680960,
        "sha256": "e1160e602e277d85920adb5fe741435edccba9ba6ecadc85fdab75252eeff4e9",
        "bundled": false,
        "status": "Supplied reference; not identified as the running image; st7789 compatibility unverified"
      }
    ]
  },
  "power": {
    "module": "MEGO Dual component reference; Fusion archive supplied",
    "non_emg_supply": "STEPico 3V3; AD8232, MAX30102 breakout, display and potentiometer",
    "non_emg_ground": "STEPico GND",
    "evidence": "Builder supply confirmation, 21 Oct 2026; not an electrical measurement",
    "emg_connections": {
      "+VS": "MEGO +VCC",
      "-VS": "MEGO -VEE",
      "power_GND": "MEGO GND",
      "signal_GND": "STEPico GND"
    },
    "positive_output_volts": 5,
    "negative_output_volts": null,
    "proposed_backlight_gpio": "GP20; optional guide assignment, not in uploaded application"
  },
  "validation_limits": [
    "Hardware operation is builder-reported; detailed test logs and reference-instrument validation not supplied",
    "CAD archive container checked; geometry not verified in Fusion",
    "Print settings and fastening record not supplied",
    "Analog conditioning and isolation not verified"
  ],
  "wiring": {
    "format": "Five pictorial breadboard-style module sheets in SVG and PNG, plus an offline index",
    "directory": "wiring",
    "bundle": "wiring-diagrams.zip",
    "evidence": "Source GPIO assignments; builder-reported module supplies; official Pico-compatible header numbering",
    "layout_limits": "Illustrative placement and artwork. TFT terminal strip is arranged by signal name; its physical order needs confirmation. MEGO output terminal order is illustrative.",
    "unverified": "EMG output conditioning / ADC range, negative rail voltage and MEGO input wiring",
    "proposed": "Display BL to GP20 / physical pin 26, not in uploaded source"
  },
  "bundle": {
    "version": "1.2",
    "updated": "2026-10-22",
    "archive": "biosignal-monitor-v1.2.zip",
    "entry": "START_HERE.html",
    "version_scope": "Complete project package; supplied application and design bytes unchanged.",
    "contents": [
      "Application and supplied libraries",
      "Two STL enclosure meshes",
      "MEGO Dual component CAD",
      "Five SVG and PNG wiring sheets",
      "Signal and power maps",
      "Offline setup and build tutorials",
      "Original board and development photographs with an offline photo guide",
      "Attributed reference imagery"
    ]
  }
}
