{
  "projectName": "Dr.Auto OBD Diagnostic Unit",
  "nodes": [
    {
      "id": "edge_compute_som",
      "name": "Edge Compute Module",
      "productName": "Raspberry Pi Compute Module 4 (CM4004000)",
      "category": "electrical",
      "type": "mcu",
      "pins": [
        "GPIO12/TXD0",
        "GPIO13/RXD0",
        "SDA1",
        "SCL1",
        "SPI0_MOSI",
        "SPI0_MISO",
        "SPI0_SCLK",
        "SPI0_CE0_N",
        "3.3V",
        "5V",
        "GND",
        "TXD1",
        "RXD1"
      ],
      "dimensions": "55x40x4.7mm",
      "quantity": 1,
      "estimatedCost": 35,
      "purchaseUrl": "https://www.digikey.com/en/products/result?keywords=SC0671",
      "partId": "0ad4b0bf-d48a-4107-84e6-c903a12e1cb7",
      "description": "Quad-core ARM Cortex-A72 processor, 4GB RAM for Linux OS and applications. Provides PCIe, USB, CSI/DSI, GPIO.",
      "imageUrl": "https://cdn-shop.adafruit.com/640x480/4787-05.jpg",
      "aliexpressUrl": "https://s.click.aliexpress.com/s/fwx308cRD9Eny963e3KDdYxyIpNj8TXVr7saiF9Um5rMUg1kZtJALLnfa2LNXtiVgnxdD8Og6MmvwBoxhnSYQGM6r0c08U4TfX8DFGo7vviCuu3q62Q60OAhRZcqm3G8PtwM69xY7TOEWRrvulP5ukZQ4uQbBBtaVsdr6EffAqVmp3O5GyUANU2DoA3dJufNhDfh7KOlLgKIvRVhDxRESHLmea6fTE26gLUqKEUuuizJiLENrCbax94DZHDu8WhaXM9vQ86gzlqceNPO5w3vwXm4VrBF3x2lAMEl06wgNdTSMiT7cNG4HIdW0JxRceXBa5KP2wuzMcQgaS8CuRSIiZ38ucJV7kYCKsmCnusTQzVa42KA6XU7RQjQqq604FMzuVl9S0Jxm0uD4crdh7U0PpZroSbYjbiHWum2p0v3P7jPERQKxc5VVbUm2duPye7cF2wLLJ1eQNkgFyuSP4sjtgMMpljHlgKL1q0p7BCSgaxVwVtkgxTYVRMQ8Kzhg0isbSGbLZiYBnmsPib0jiw1TmGcnVlREhO3yP2WF6dxW1458ed0oP0xlIQiXkOxUtaxqXOR5EV8L2B6kVhvn3jsVmwuLqBlAtoVE8puFf06saVBmvd63kKGjCcUEK32YLA6y6OnDpmQddXqgpmHsxdm1plTdMk2uXMzSaITDGp976qD4WDVu1TlOqciuY4nThz42O1cX9g6uJSk69f4TR4EhdRhGCla7lu99lT9ic5xbdTeueo1Ws06P8yFnlUKpzw7howAHguEj6NibkUHRgtFepL8BgJVPDz9905mw0HWjdQqNM8A96JyMgZcFZZcM9ptlFSVjqQ9daIgnwIh8ySrktOEPou0fJnOtP3sB4s89MHpWo0zrlx0FMzhi3ffUBn8CN4JsVlYGvNo4FLFbgSAbdJOodj2029fiJ4OqpcpHhFb9lmqBkjYBXqRSYa66lfbxcBNe4F9EparMoq9zD",
      "research": {
        "documentationUrls": [
          {
            "url": "https://www.adafruit.com/product/4787",
            "title": "Product Page (Adafruit)"
          }
        ],
        "sourcing": [
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B0BXP3VS3M?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$75.99"
          },
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B0D14FG2HH?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$151.99"
          },
          {
            "vendor": "AliExpress",
            "url": "https://www.aliexpress.com/item/1005005666493641.html?pdp_npi=6%40dis%21USD%21111.78%21107.31%21%21%21752.20%21722.11%21%402151fd2c17804583282563388e11e6%2112000033963620104%21affd%21%21%21%211%210%21",
            "price": "$107.31"
          },
          {
            "vendor": "Adafruit",
            "url": "https://www.adafruit.com/product/4787",
            "price": "$35"
          },
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B0C73GT389?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$99.99"
          }
        ]
      },
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=Raspberry+Pi+Compute+Module+4+%28CM4004000%29&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "amazonUrl": "https://www.amazon.com/dp/B0BXP3VS3M?tag=blueprintam-20&linkCode=osi&th=1&psc=1"
    },
    {
      "id": "obd_transceiver_stn1110",
      "name": "Multi-Protocol OBD Interface IC",
      "productName": "STN1110 OBD-to-UART Interpreter",
      "category": "electrical",
      "type": "module",
      "pins": [
        "TX",
        "RX",
        "CAN_TX",
        "CAN_RX",
        "ISO_K",
        "ISO_L",
        "VDD",
        "VSS"
      ],
      "dimensions": "10x10x1.4mm",
      "quantity": 1,
      "estimatedCost": 8.5,
      "purchaseUrl": "https://www.digikey.com/en/products/result?keywords=STN1110",
      "partId": "2cab6497-3327-4cb7-af2a-6fbe6da83618",
      "imageUrl": "https://m.media-amazon.com/images/I/41oxdJ4J99L._SL500_.jpg",
      "aliexpressUrl": "https://s.click.aliexpress.com/e/_c3mDP7Bv",
      "research": {
        "sourcing": [
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B081N7G2BR?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$17.99"
          },
          {
            "vendor": "AliExpress",
            "url": "https://www.aliexpress.com/w/wholesale-stn1110-obd-ii-to-uart-interpreter.html"
          }
        ]
      },
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=STN1110+OBD-to-UART+Interpreter&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "amazonUrl": "https://www.amazon.com/dp/B081N7G2BR?tag=blueprintam-20&linkCode=osi&th=1&psc=1"
    },
    {
      "id": "can_transceiver",
      "name": "Automotive CAN Transceiver",
      "productName": "MCP2562-E/SN",
      "category": "electrical",
      "type": "module",
      "pins": [
        "TXD",
        "RXD",
        "CANH",
        "CANL",
        "VDD",
        "VIO",
        "STBY",
        "VSS"
      ],
      "dimensions": "4.9x3.9x1.25mm",
      "quantity": 1,
      "estimatedCost": 1.15,
      "purchaseUrl": "https://www.digikey.com/en/products/result?keywords=MCP2562-E%2FSN",
      "partId": "3115c40a-33c3-460c-ab74-1f713cbc9c69",
      "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/S36edd547892a4313b4e51da242083d56R.jpg",
      "aliexpressUrl": "https://s.click.aliexpress.com/s/fwx308cRD9Eny963e3KDdYxyIpNj8TXVr7saiF9Um5rMUg1kZtJALLnfa2LNXtiVgnxdD8Og6MmvwBoxhnSYQGM6r0c08U4TfX8DFGo7vviCuu3q62Q60OAhRZcqm3G8PtwM69xY7TOEWRrvulP5ukZQ4uQbBBtaVsdr6EffAqVmp3O5GyUANU2DoA3dJufNhDfh7KOlLgKIvRVhDxRESHLmea6fTE26gLUqKEUuuizJiLENrCbax94DZHDu8WhaXM9vQ86gzlqceNPO5w3vwXm4VrBF3x2lAMEl06wgNdTSMiT7cNG4HIdW0JxwIwWVJdjpBdvVZbqkcRuqJdJ3ezxuNBYJNUMn5DrkZzhg8dZ2YFfdCUWpDtIu2PBOWkOOD3bsebXY27G4dbWWrkIQsroA3Ie7A6WyzOznksNPsJOjsNB2ePKjK9BMUGiXcdhio7EWntUhcINYHu9Q9DCAbWliBrej197sudzLzhBFND2r55h9GxthoGBGwPyfa26Pxdf25GwYrCAbedrrGwZgUWlOpUro44lX6cqQXX5UZrtT3PuY6UgOsoMqsQwPCNOiATR3hGWgZawdc5UESQVfXbJplPx4xD7h5w8TF3H3Vn3hfsbXlbXTslELnoGEkHNTsVkX0uaHnK3VjuuJY03Hz4v1aD11j9KK6jkOQT33Zgik5x55i7mVyWgDVWDZXjQOGVUX9Etu4csJikewcIaPIRaWsy39jp8iuMeLlGwQyxRxwpsPHRQ6SSrUA4zLXcW7nC7lTtY87C5YgIbwQTmUDMg7v8vjJLzY7jWjsFPvXtkSLF4RiMsiCLVEUKmj67omWa5q1b2xpONyC8oCtGkXY8mXMc3ydfcOUiPsJpTTG2xn0YRGk57tJgRgdB5z2nI6luCw97ZVfS5vvrfCUWEVcePNULPCoIy6owe8rFWcTd08s8SmkXBsrEFEsoZXAfsZewr6X4hbU6BfDJniN9",
      "research": {
        "sourcing": [
          {
            "vendor": "AliExpress",
            "url": "https://www.aliexpress.com/item/1005008017607264.html?pdp_npi=6%40dis%21USD%219.61%218.65%21%21%219.61%218.65%21%402101611117810410602173683e0f24%2112000043264069921%21affd%21%21%21%211%210%21",
            "price": "$8.65"
          },
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B0DDWT9SQH?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$9.99"
          }
        ]
      },
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=MCP2562-E%2FSN&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1"
    },
    {
      "id": "lte_gps_module",
      "name": "Cellular and GPS Module",
      "productName": "Quectel EG25-G Mini PCIe",
      "category": "electrical",
      "type": "module",
      "pins": [
        "VCC",
        "GND",
        "USB_TX",
        "USB_RX",
        "GPS_ANT",
        "LTE_ANT",
        "SIM_DET"
      ],
      "dimensions": "51x30x4.9mm",
      "quantity": 1,
      "estimatedCost": 39,
      "purchaseUrl": "https://www.digikey.com/en/products/result?keywords=Quectel+EG25-G",
      "partId": "be8ab76a-728c-48da-99c6-0cc98c97bd29",
      "description": "LTE Cat 4 module with integrated GNSS, Wi-Fi, and Bluetooth, Mini PCIe form factor, industrial temperature range.",
      "imageUrl": "https://m.media-amazon.com/images/I/416O9YXUb-L._SL500_.jpg",
      "aliexpressUrl": "https://s.click.aliexpress.com/s/fwx308cRD9Eny963e3KDdYxyIpNj8TXVr7saiF9Um5rMUg1kZtJALLnfa2LNXtiVgnxdD8Og6MmvwBoxhnSYQGM6r0c08U4TfX8DFGo7vviCuu3q62Q60OAhRZcqm3G8PtwM69xY7TOEWRrvulP5ukZQ4uQbBBtaVsdr6EffAqVmp3O5GyUANU2DoA3dJufNhDfh7KOlLgKIvRVhDxRESHLmea6fTE26gLUqKEUuuizJiLENrCbax94DZHDu8WhaXM9vQ86gzlqceNPO5w3vwXm4VrBF3x2lAMEl06wgNdTSMiT7cNG4HIdW0JxgYr8akJ4dbc7jeF2JGWZJ35Xlr5ZmX0FSblquZk2EY1zYPsM2G6iwGGmpG9Y9xJRPGhS86JbMSns41pTE8kQOfQi2njMFqYNnEMIG1t11Iq13jLzsl5HLKD6YnBXuqPtd7XzPpotwFsaCFxvAEXB4EobZ6xYFqxuVnqbPOqVHakHYUlkTCY58iOnb4ugzelvY84vRtRnPwFQPyNIqG4TMNEQHOtPjoqOftXjwcfARquLCwx6Fa9en4GqYYNU9S1zoCH7KZeoo7Ql8cl0mRiSwLGBa6YiIEO8lmX7MFzsJBR8syEss7NwQq7MhZFxHeZjYfh6jsVQY71D0TB734KHuoSi2ROm5Jd702hooofXT8XO5Hyq27qB9tulo5NPzI64OgeqPS1CPbRfNpx4FsBWvpMJiXoFklpN7wLtsyfe2h8WEw9bCoojBoAfawXf4IysNyYMOURe4NSHaYNALf5FDrwhB1tPzpBZxRarGRlPXDI1YRjiFSA1PtvsHCSG7OO04djqEheyZFtR6l9fREoVwggmPh6uttoLYTJQzYoDBUSkuuvHXeb5Wh38PF9Q4llS3EXiPrz7SxnV7xxQfHnoyDjhkGzVvZUw4bk1qOS3L1iZPpB9je6Y1axODRMaHtrIoPRgf74KdTYSuEUoR2ugmJD",
      "research": {
        "sourcing": [
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B0DGTDHSPV?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$63.99"
          },
          {
            "vendor": "AliExpress",
            "url": "https://www.aliexpress.com/item/1005008653780287.html?pdp_npi=6%40dis%21USD%2145.11%2140.25%21%21%2145.11%2140.25%21%402151fd3a17793625184463556e0e40%2112000046108575053%21affd%21%21%21%211%210%21",
            "price": "$40.25"
          },
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B0GL4F26D1?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$67.86"
          },
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B0DHBYX4RQ?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$66.23"
          }
        ]
      },
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=Quectel+EG25-G+Mini+PCIe&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "amazonUrl": "https://www.amazon.com/dp/B0DGTDHSPV?tag=blueprintam-20&linkCode=osi&th=1&psc=1"
    },
    {
      "id": "automotive_buck_regulator",
      "name": "Vehicle Power Regulator",
      "productName": "Texas Instruments LM25011-Q1",
      "category": "electrical",
      "type": "power",
      "pins": [
        "VIN",
        "SW",
        "FB",
        "RON",
        "VCC",
        "SS",
        "GND",
        "EP"
      ],
      "dimensions": "4x4x0.8mm",
      "quantity": 1,
      "estimatedCost": 2.45,
      "purchaseUrl": "https://www.digikey.com/en/products/result?keywords=LM25011Q1",
      "partId": "57049c8e-e96f-49b7-ab05-855d9e8ef54e",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=Texas+Instruments+LM25011-Q1&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "imageUrl": "https://m.media-amazon.com/images/I/51mrofC96zL._SL500_.jpg",
      "amazonUrl": "https://www.amazon.com/dp/B07FT5G1X4?tag=blueprintam-20&linkCode=osi&th=1&psc=1"
    },
    {
      "id": "tvs_diode_protection",
      "name": "Transient Voltage Suppressor",
      "productName": "Littelfuse TPSMC30A",
      "category": "electrical",
      "type": "power",
      "pins": [
        "ANODE",
        "CATHODE"
      ],
      "dimensions": "7.9x5.9x2.3mm",
      "quantity": 1,
      "estimatedCost": 1.25,
      "purchaseUrl": "https://www.digikey.com/en/products/result?keywords=TPSMC30A",
      "partId": "acf340f0-72e8-4516-a81d-2d31c85ad117",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=Littelfuse+TPSMC30A&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "imageUrl": "https://m.media-amazon.com/images/I/31TpU1977cL._SL500_.jpg",
      "amazonUrl": "https://www.amazon.com/dp/B00SGM5H52?tag=blueprintam-20&linkCode=osi&th=1&psc=1"
    },
    {
      "id": "obd_male_connector",
      "name": "OBD-II Male 16-Pin Connector",
      "productName": "iSincer OBD2 16 Pin Male Connector Plug",
      "category": "mechanical",
      "type": "structural",
      "description": "Standard 16-pin male OBD-II connector with solder terminals to interface directly with the vehicle's diagnostic port.",
      "dimensions": "38x42x21mm",
      "material": "Nylon",
      "quantity": 1,
      "estimatedCost": 4.5,
      "purchaseUrl": "https://www.amazon.com/s?k=OBD2+16+Pin+Male+Connector+Plug",
      "partId": "e34df4ec-a631-4db3-b619-8f7ae7078827",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=iSincer+OBD2+16+Pin+Male+Connector+Plug&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "amazonUrl": "https://www.amazon.com/dp/B0G8TTGM2L?tag=blueprintam-20&linkCode=osi&th=1&psc=1"
    },
    {
      "id": "main_enclosure_base",
      "name": "Enclosure Base Shell",
      "category": "mechanical",
      "type": "3d_printed",
      "description": "Custom 3D-printed lower housing designed to support the main board stack, power supply module, and secure the OBD-II connector neck.",
      "dimensions": "95x55x22mm",
      "material": "ABS",
      "printSettings": "40% infill, 0.2mm layer, high heat resistance",
      "quantity": 1,
      "estimatedCost": 3,
      "purchaseUrl": "https://www.amazon.com/s?k=ABS+filament+high+temp"
    },
    {
      "id": "main_enclosure_lid",
      "name": "Enclosure Top Lid",
      "category": "mechanical",
      "type": "3d_printed",
      "description": "Custom 3D-printed top cover with thermal ventilation slots and window cutouts for LTE/GPS status LEDs.",
      "dimensions": "95x55x12mm",
      "material": "ABS",
      "printSettings": "40% infill, 0.2mm layer",
      "quantity": 1,
      "estimatedCost": 2,
      "purchaseUrl": "https://www.amazon.com/s?k=ABS+filament+high+temp"
    },
    {
      "id": "som_thermal_heatsink",
      "name": "SOM Heat Sink",
      "productName": "Easycargo 20mm Aluminum Heatsink",
      "category": "mechanical",
      "type": "structural",
      "description": "Anodized aluminum passive heat sink with thermal adhesive tape to dissipate heat from the Cortex-A edge compute module.",
      "dimensions": "20x20x6mm",
      "material": "Aluminum",
      "mountsFor": "edge_compute_som",
      "quantity": 1,
      "estimatedCost": 1.2,
      "purchaseUrl": "https://www.amazon.com/s?k=20mm+aluminum+heatsink+thermal+tape",
      "partId": "9a2fff49-96a0-41c7-a81e-3c83c11d2707",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=Easycargo+20mm+Aluminum+Heatsink&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "amazonUrl": "https://www.amazon.com/dp/B0DY77S9LF?tag=blueprintam-20&linkCode=osi&th=1&psc=1"
    },
    {
      "id": "lte_gps_antenna_adhesive",
      "name": "Internal Patch Antenna Mount",
      "category": "mechanical",
      "type": "3d_printed",
      "description": "Angled internal 3D-printed bracket to orient and securely hold the cellular and GPS combo patch antenna away from internal EMI sources.",
      "dimensions": "35x15x10mm",
      "material": "ABS",
      "printSettings": "20% infill, 0.2mm layer",
      "mountsFor": "lte_gps_module",
      "quantity": 1,
      "estimatedCost": 0.8,
      "purchaseUrl": "https://www.amazon.com/s?k=ABS+filament"
    },
    {
      "id": "pcb_mounting_screws",
      "name": "PCB Mounting Fasteners",
      "productName": "M2 Hex Button Head Machine Screws",
      "category": "mechanical",
      "type": "misc",
      "description": "High-strength machine screws to secure the PCB stack and cellular module to the internal 3D-printed structural standoffs.",
      "dimensions": "M2x6mm",
      "material": "Stainless Steel",
      "quantity": 6,
      "estimatedCost": 0.15,
      "purchaseUrl": "https://www.amazon.com/s?k=M2x6mm+button+head+screws",
      "partId": "321fb3df-7009-499d-bf72-c0a90038716a",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=M2+Hex+Button+Head+Machine+Screws&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "amazonUrl": "https://www.amazon.com/dp/B0DDY2L533?tag=blueprintam-20&linkCode=osi&th=1&psc=1"
    },
    {
      "id": "brass_heatset_inserts",
      "name": "Standoff Heat-Set Inserts",
      "productName": "M2 Brass Threaded Heat-Set Inserts",
      "category": "mechanical",
      "type": "misc",
      "description": "Threaded brass inserts melted into the 3D-printed enclosure base to receive the PCB mounting screws securely without stripping plastic.",
      "dimensions": "M2x3mm",
      "material": "Brass",
      "quantity": 6,
      "estimatedCost": 0.25,
      "purchaseUrl": "https://www.adafruit.com/product/4255",
      "partId": "9b0ae269-1d38-4f5a-a811-572fcde5531e",
      "imageUrl": "https://cdn-shop.adafruit.com/640x480/4255-02.jpg",
      "aliexpressUrl": "https://s.click.aliexpress.com/s/fwx308cRD9Eny963e3KDdYxyIpNj8TXVr7saiF9Um5rMUg1kZtJALLnfa2LNXtiVgnxdD8Og6MmvwBoxhnSYQGM6r0c08U4TfX8DFGo7vviCuu3q62Q60OAhRZcqm3G8PtwM69xY7TOEWRrvulP5ukZQ4uQbBBtaVsdr6EffAqVmp3O5GyUANU2DoA3dJufNhDfh7KOlLgKIvRVhDxRESHLmea6fTE26gLUqKEUuuizJiLENrCbax94DZHDu8WhaXM9vQ86gzlqceNPO5w3vwXm4VrBF3x2lAMEl06wgNdTSMiT7cNG4HIdW0Jya2LhnDeissuMDirdgsJls0tlXooZ5tKv8e3BvIsUJsxNlvpcEoBGBvsGC3wECf4p4b2CyzuBt9xqGtJTar1pal9tEmWdESUOW1OQOtbQWKLESbH03XPnCXWF8qDkONN8Bm9gpZPMM9NBCMryVuAYIJ7a1e1EQQjbv1brXm2LIOdVJVXKbBhjFvKbdw8M8db1iAyAcqpROSnBnGbOQ3xjCPWtHECCortgSe98xBTPasl5kqaZDIpAeengmpEkitSyEmnz7WpVf4mfphqZ6KfxG4Qc0hUBGAaYu93nFR92zzRvyqsIRrrRaAXQ6fxU50JiekoqgxmIOquLty2e6x8wyvkBAtgIwtWpyg65FY19qXzg67OqSbBzwJpI5VPzGhiHG0cV7rhwUhJGS4WwgXaabp3kSRpMgV4TLiKOK3TN5zHJa5NRtxViHGsBAFix7emf9k1m6mGvR3XsLKDpYetqscsTbYBWWAG6HjRYSrIDba85Qq8Fjjh9qRJByopENF8nU0uwWChQDE1bvAkZGhRGlbljPnS4VgHWUfJVWkBPdeSl3vNdT3rj739YZxWppq9u2L8AnVSN88I0MHaau7YLfbxfEQjrdeQPCEZUlpFtkdhsZhcXThaRej1tnABi9e6RgLsm7QZY4ADUmz7G6fafhoX",
      "research": {
        "documentationUrls": [
          {
            "url": "https://www.adafruit.com/product/4255",
            "title": "Product Page (Adafruit)"
          }
        ],
        "sourcing": [
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B0CS6XJSSL?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$8.99"
          },
          {
            "vendor": "Adafruit",
            "url": "https://www.adafruit.com/product/4255",
            "price": "$5.95"
          },
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B0CLKDPN65?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$14.98"
          },
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B0FM3YWMX1?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$4.49"
          },
          {
            "vendor": "AliExpress",
            "url": "https://www.aliexpress.com/item/1005009460464815.html?pdp_npi=6%40dis%21USD%218.79%214.13%21%21%2159.48%2127.96%21%402140d36217794313988867894e1175%2112000049174436967%21affd%21%21%21%211%210%21",
            "price": "$4.13"
          }
        ]
      },
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=M2+Brass+Threaded+Heat-Set+Inserts&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1"
    },
    {
      "id": "enclosure_assembly_screws",
      "name": "Case Assembly Screws",
      "productName": "M3 Flat Head Phillips Machine Screws",
      "category": "mechanical",
      "type": "misc",
      "description": "Countersunk machine screws to rigidly fasten the top lid of the enclosure to the base shell.",
      "dimensions": "M3x12mm",
      "material": "Black Oxide Alloy Steel",
      "quantity": 4,
      "estimatedCost": 0.18,
      "purchaseUrl": "https://www.amazon.com/dp/B0CCPH974T?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "partId": "881f92f4-74f2-4878-a20d-b9578d2f3b42",
      "imageUrl": "https://m.media-amazon.com/images/I/51qTMc4rzcL._SL500_.jpg",
      "research": {
        "sourcing": [
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B0CCPH974T?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$6.58"
          }
        ]
      },
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=M3+Flat+Head+Phillips+Machine+Screws&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "amazonUrl": "https://www.amazon.com/dp/B0CCPH974T?tag=blueprintam-20&linkCode=osi&th=1&psc=1"
    },
    {
      "id": "case_heatset_inserts",
      "name": "Enclosure Corner Inserts",
      "productName": "M3 Brass Threaded Heat-Set Inserts",
      "category": "mechanical",
      "type": "misc",
      "description": "Threaded brass inserts installed in the corner bosses of the enclosure base for rugged lid assembly cycles.",
      "dimensions": "M3x4mm",
      "material": "Brass",
      "quantity": 4,
      "estimatedCost": 0.28,
      "purchaseUrl": "https://s.click.aliexpress.com/s/fwx308cRD9Eny963e3KDdYxyIpNj8TXVr7saiF9Um5rMUg1kZtJALLnfa2LNXtiVgnxdD8Og6MmvwBoxhnSYQGM6r0c08U4TfX8DFGo7vviCuu3q62Q60OAhRZcqm3G8PtwM69xY7TOEWRrvulP5ukZQ4uQbBBtaVsdr6EffAqVmp3O5GyUANU2DoA3dJufNhDfh7KOlLgKIvRVhDxRESHLmea6fTE26gLUqKEUuuizJiLENrCbax94DZHDu8WhaXM9vQ86gzlqceNPO5w3vwXm4VrBF3x2lAMEl06wgNdTSMiT7cNG4HIdW0JxgNN69lIIDIECscgtgGU9UYxef4BRiw7YumAEEqwxfnfC3Yg67nOYI4dFlZCGwoomZsjoNu8orcnDAMD7B9ug5ljEl8J2qRKQrspZ0SYqxZIHKBRoDD5m0MTsX2TX0DyPj7M2IMyGVVlZVrhtqSl2m9AbLDTVdocvmpCeVWuVvBJFKYM4sacYEtD8eojrkr2NpnME7qmuSCRMiIgGrNCQEOP94PATioqAkCQ1GnYLBj4LzqBMzl6cigSS1amrvBPovhHStjY2ekMNool55yXlTlQeRwQgVMXlXWIOFhdjBnZxalEvJHYW7CJQP2rUBZ95q6RH1lKaW15lQW4DQaQLaDdOHJamlhNDd0zTBdazMof7j5RvBVug4AkzTM4d72VmUFNDnrRa4M22zw3Ei85gB8uxExFXFR0o6OUJ0EebGMsII0ZnE0SDRKGTXyEouEVD1VVmkvW5qMfmjUhw8wdQJuedbCBmiuVz5ICNpZdEyB43tWDc3bL9deJYXP4esd0bO2FG8eHqJTkn897Tbmm6cF2Rm5AGQBo7Oea0mD9NKCSuq4HxvtjcrNqXCJugRo5zXHwta26RC5htFhQJdAAKoUdDxlRH19TwnZRrrPukQGvm0wLw4QqqEwxO4ZmMoQP9zChkSjNSK5qniJr1mU60Zxd",
      "partId": "e360c15f-1acd-42c8-8ce7-96ea4c29f7b7",
      "imageUrl": "https://cdn-shop.adafruit.com/640x480/4255-02.jpg",
      "aliexpressUrl": "https://s.click.aliexpress.com/s/fwx308cRD9Eny963e3KDdYxyIpNj8TXVr7saiF9Um5rMUg1kZtJALLnfa2LNXtiVgnxdD8Og6MmvwBoxhnSYQGM6r0c08U4TfX8DFGo7vviCuu3q62Q60OAhRZcqm3G8PtwM69xY7TOEWRrvulP5ukZQ4uQbBBtaVsdr6EffAqVmp3O5GyUANU2DoA3dJufNhDfh7KOlLgKIvRVhDxRESHLmea6fTE26gLUqKEUuuizJiLENrCbax94DZHDu8WhaXM9vQ86gzlqceNPO5w3vwXm4VrBF3x2lAMEl06wgNdTSMiT7cNG4HIdW0JxgNN69lIIDIECscgtgGU9UYxef4BRiw7YumAEEqwxfnfC3Yg67nOYI4dFlZCGwoomZsjoNu8orcnDAMD7B9ug5ljEl8J2qRKQrspZ0SYqxZIHKBRoDD5m0MTsX2TX0DyPj7M2IMyGVVlZVrhtqSl2m9AbLDTVdocvmpCeVWuVvBJFKYM4sacYEtD8eojrkr2NpnME7qmuSCRMiIgGrNCQEOP94PATioqAkCQ1GnYLBj4LzqBMzl6cigSS1amrvBPovhHStjY2ekMNool55yXlTlQeRwQgVMXlXWIOFhdjBnZxalEvJHYW7CJQP2rUBZ95q6RH1lKaW15lQW4DQaQLaDdOHJamlhNDd0zTBdazMof7j5RvBVug4AkzTM4d72VmUFNDnrRa4M22zw3Ei85gB8uxExFXFR0o6OUJ0EebGMsII0ZnE0SDRKGTXyEouEVD1VVmkvW5qMfmjUhw8wdQJuedbCBmiuVz5ICNpZdEyB43tWDc3bL9deJYXP4esd0bO2FG8eHqJTkn897Tbmm6cF2Rm5AGQBo7Oea0mD9NKCSuq4HxvtjcrNqXCJugRo5zXHwta26RC5htFhQJdAAKoUdDxlRH19TwnZRrrPukQGvm0wLw4QqqEwxO4ZmMoQP9zChkSjNSK5qniJr1mU60Zxd",
      "research": {
        "documentationUrls": [
          {
            "url": "https://www.adafruit.com/product/4255",
            "title": "Product Page (Adafruit)"
          }
        ],
        "sourcing": [
          {
            "vendor": "Amazon",
            "url": "https://www.amazon.com/dp/B0CS6VZYL8?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$8.99"
          },
          {
            "vendor": "Adafruit",
            "url": "https://www.adafruit.com/product/4255",
            "price": "$5.95"
          },
          {
            "vendor": "AliExpress",
            "url": "https://www.aliexpress.com/item/1005008429882858.html?pdp_npi=6%40dis%21USD%217.69%213.85%21%21%2151.98%2125.99%21%402151fce817793667557276802e1127%2112000045059903241%21affd%21%21%21%211%210%21",
            "price": "$3.85"
          }
        ]
      },
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=M3+Brass+Threaded+Heat-Set+Inserts&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1"
    },
    {
      "id": "obd_transceiver_stn1110_mount",
      "name": "Multi-Protocol OBD Interface IC Mount",
      "category": "mechanical",
      "type": "3d_printed",
      "mountsFor": "obd_transceiver_stn1110",
      "description": "Adapter plate for the Multi-Protocol OBD Interface IC that bolts to the main chassis with M3 hardware. Includes wire-routing channels.",
      "material": "PETG",
      "printSettings": "30% infill, 0.2mm layer, 4 perimeters",
      "quantity": 1,
      "estimatedCost": 2,
      "purchaseUrl": "",
      "dimensions": "50x40x12mm"
    },
    {
      "id": "can_transceiver_mount",
      "name": "Automotive CAN Transceiver Mount",
      "category": "mechanical",
      "type": "3d_printed",
      "mountsFor": "can_transceiver",
      "description": "Adapter plate for the Automotive CAN Transceiver that bolts to the main chassis with M3 hardware. Includes wire-routing channels.",
      "material": "PETG",
      "printSettings": "30% infill, 0.2mm layer, 4 perimeters",
      "quantity": 1,
      "estimatedCost": 2,
      "purchaseUrl": "",
      "dimensions": "50x40x12mm"
    },
    {
      "id": "power_dist_block",
      "name": "Power Distribution Block",
      "category": "electrical",
      "type": "module",
      "productName": "Power Distribution Block",
      "description": "Screw terminal block / power distribution node to aggregate and clean up power routing",
      "pins": [
        "V12_IN",
        "V12_OUT",
        "V5_IN",
        "V5_OUT1",
        "V5_OUT2",
        "V5_OUT3",
        "V3_8_IN",
        "V3_8_OUT",
        "GND"
      ],
      "quantity": 1,
      "estimatedCost": 0,
      "purchaseUrl": "",
      "imageUrl": "https://m.media-amazon.com/images/I/41LtG8JaNbL._SL500_.jpg"
    }
  ],
  "electricalConnections": [
    {
      "source": "edge_compute_som",
      "target": "obd_transceiver_stn1110",
      "type": "data",
      "protocol": "uart",
      "sourcePin": "GPIO12/TXD0",
      "targetPin": "RX",
      "label": "obd_tx"
    },
    {
      "source": "obd_transceiver_stn1110",
      "target": "edge_compute_som",
      "type": "data",
      "protocol": "uart",
      "sourcePin": "TX",
      "targetPin": "GPIO13/RXD0",
      "label": "obd_rx"
    },
    {
      "source": "obd_transceiver_stn1110",
      "target": "can_transceiver",
      "type": "data",
      "protocol": "gpio",
      "sourcePin": "CAN_TX",
      "targetPin": "TXD",
      "label": "stn_can_tx"
    },
    {
      "source": "can_transceiver",
      "target": "obd_transceiver_stn1110",
      "type": "data",
      "protocol": "gpio",
      "sourcePin": "RXD",
      "targetPin": "CAN_RX",
      "label": "stn_can_rx"
    },
    {
      "source": "edge_compute_som",
      "target": "can_transceiver",
      "type": "data",
      "protocol": "gpio",
      "sourcePin": "SPI0_CE0_N",
      "targetPin": "STBY",
      "label": "can_standby_control"
    },
    {
      "source": "automotive_buck_regulator",
      "target": "edge_compute_som",
      "type": "power",
      "sourcePin": "GND",
      "targetPin": "GND"
    },
    {
      "source": "automotive_buck_regulator",
      "target": "obd_transceiver_stn1110",
      "type": "power",
      "sourcePin": "GND",
      "targetPin": "VSS"
    },
    {
      "source": "automotive_buck_regulator",
      "target": "can_transceiver",
      "type": "power",
      "sourcePin": "GND",
      "targetPin": "VSS"
    },
    {
      "source": "automotive_buck_regulator",
      "target": "lte_gps_module",
      "type": "power",
      "sourcePin": "GND",
      "targetPin": "GND"
    },
    {
      "source": "tvs_diode_protection",
      "target": "automotive_buck_regulator",
      "type": "power",
      "voltage": "12V2A_filtered?? No, this represents power from the protection diode to the buck converter input pin VIN. Let's map it correctly based on the node pins available. TVS Cathode receives supply, Anode goes to Ground, TVS is usually in parallel across VIN to protect it. Let's wire CATHODE to automotive_buck_regulator.VIN and ANODE to automotive_buck_regulator.GND as is standard for protection. Wait, standard is TVS is placed in parallel, so we need to bridge tvs_diode_protection.CATHODE to VIN."
    },
    {
      "source": "tvs_diode_protection",
      "target": "automotive_buck_regulator",
      "type": "power",
      "sourcePin": "CATHODE",
      "targetPin": "VIN",
      "voltage": "12V"
    },
    {
      "source": "automotive_buck_regulator",
      "target": "power_dist_block",
      "type": "power",
      "sourcePin": "SW",
      "targetPin": "V5_IN",
      "voltage": "5V"
    },
    {
      "source": "power_dist_block",
      "target": "edge_compute_som",
      "type": "power",
      "sourcePin": "V5_OUT1",
      "targetPin": "5V",
      "voltage": "5V"
    },
    {
      "source": "power_dist_block",
      "target": "obd_transceiver_stn1110",
      "type": "power",
      "sourcePin": "V5_OUT2",
      "targetPin": "VDD",
      "voltage": "5V"
    },
    {
      "source": "power_dist_block",
      "target": "can_transceiver",
      "type": "power",
      "sourcePin": "V5_OUT3",
      "targetPin": "VDD",
      "voltage": "5V"
    },
    {
      "source": "automotive_buck_regulator",
      "target": "power_dist_block",
      "type": "power",
      "sourcePin": "VCC",
      "targetPin": "V3_8_IN",
      "voltage": "3.8V"
    },
    {
      "source": "power_dist_block",
      "target": "lte_gps_module",
      "type": "power",
      "sourcePin": "V3_8_OUT",
      "targetPin": "VCC",
      "voltage": "3.8V"
    },
    {
      "source": "edge_compute_som",
      "target": "lte_gps_module",
      "type": "data",
      "sourcePin": "GPIO12/TXD0",
      "targetPin": "USB_RX",
      "voltage": "3.3V_logic_level_shifter_assumed?? No, the connection listed SPI0_MOSI to USB_RX and USB_TX to SPI0_MISO but protocol was uart. This was a mismatch where SPI pins were being used for UART. Let's fix them to map to actual UART pins on the SOM if possible, or add TXD1/RXD1 to the edge SOM, or we can use the main UART if it is not shared, but it is already used for OBD transceiver. STN1110 requires UART. Let's add UART1 RX/TX pins to the Edge compute module to handle the LTE module. Alternatively, we map to actual USB lines if they have them, but LTE module shows USB_TX and USB_RX. Let's add TXD1 and RXD1 to edge_compute_som."
    },
    {
      "source": "edge_compute_som",
      "target": "lte_gps_module",
      "type": "data",
      "sourcePin": "TXD1",
      "targetPin": "USB_RX",
      "voltage": "3.3V_assumed_or_defined_by_protocol_uart_link?? Protocol is uart."
    }
  ],
  "mechanicalConnections": [
    {
      "source": "main_enclosure_base",
      "target": "brass_heatset_inserts",
      "label": "heat-set press fit",
      "delta": {
        "x": 0,
        "y": 0,
        "z": 0
      }
    },
    {
      "source": "main_enclosure_base",
      "target": "case_heatset_inserts",
      "label": "heat-set press fit",
      "delta": {
        "x": 42.5,
        "y": 10,
        "z": 22.5
      }
    },
    {
      "source": "pcb_mounting_screws",
      "target": "brass_heatset_inserts",
      "label": "threaded mating",
      "delta": {
        "x": 0,
        "y": -4.5,
        "z": 0
      }
    },
    {
      "source": "main_enclosure_lid",
      "target": "main_enclosure_base",
      "label": "aligned mating",
      "delta": {
        "x": 0,
        "y": -17,
        "z": 0
      }
    },
    {
      "source": "enclosure_assembly_screws",
      "target": "case_heatset_inserts",
      "label": "threaded mating through lid",
      "delta": {
        "x": 0,
        "y": -8,
        "z": 0
      }
    },
    {
      "source": "obd_male_connector",
      "target": "main_enclosure_base",
      "label": "snap-fit retention slots",
      "delta": {
        "x": 0,
        "y": -21.5,
        "z": -66.5
      }
    },
    {
      "source": "som_thermal_heatsink",
      "target": "main_enclosure_base",
      "label": "M2 screws and standoffs",
      "delta": {
        "x": 0,
        "y": 14,
        "z": 0
      }
    },
    {
      "source": "lte_gps_antenna_adhesive",
      "target": "main_enclosure_lid",
      "label": "double-sided adhesive tape",
      "delta": {
        "x": 0,
        "y": 11,
        "z": 0
      }
    },
    {
      "source": "obd_transceiver_stn1110_mount",
      "target": "main_enclosure_base",
      "label": "integrated snap clips",
      "delta": {
        "x": 0,
        "y": 17,
        "z": 0
      }
    },
    {
      "source": "can_transceiver_mount",
      "target": "main_enclosure_base",
      "label": "integrated snap clips",
      "delta": {
        "x": 0,
        "y": 17,
        "z": 0
      }
    },
    {
      "source": "som_thermal_heatsink",
      "target": "edge_compute_som",
      "label": "mount",
      "delta": {
        "x": 0,
        "y": -5.3,
        "z": 0
      }
    },
    {
      "source": "lte_gps_antenna_adhesive",
      "target": "lte_gps_module",
      "label": "mount",
      "delta": {
        "x": 8,
        "y": 7.5,
        "z": 0
      }
    },
    {
      "source": "obd_transceiver_stn1110_mount",
      "target": "obd_transceiver_stn1110",
      "label": "mount",
      "delta": {
        "x": 0,
        "y": 6.7,
        "z": 0
      }
    },
    {
      "source": "can_transceiver_mount",
      "target": "can_transceiver",
      "label": "mount",
      "delta": {
        "x": 0,
        "y": 6.6,
        "z": 0
      }
    },
    {
      "source": "obd_male_connector",
      "target": "automotive_buck_regulator",
      "label": "attached",
      "delta": {
        "x": 0,
        "y": 10.9,
        "z": 0
      }
    },
    {
      "source": "obd_male_connector",
      "target": "tvs_diode_protection",
      "label": "attached",
      "delta": {
        "x": 0,
        "y": 11.7,
        "z": 0
      }
    }
  ],
  "projectDescription": "An edge-compute OBD-II diagnostic unit that captures real-time engine telemetry, performs local multi-axis vehicle state modeling, and logs anomalies. It features a multi-protocol interface IC, automotive CAN transceiver, and cellular/GPS module, powered by a transient-protected vehicle regulator within a compact, thermal-dissipating enclosure.",
  "imagePromptSnapshot": {
    "description": "Project idea: # Dr.Auto Baseline-and-Aberrance Specification\n\n## Overview\n\nDr.Auto is a quantitative vehicle-state modeling system for engine and drivability diagnostics. Its first purpose is to establish a verified baseline of normal automotive operation using live OBD-II telemetry, derived relationships among parameters, and trip-context data; its second purpose is to detect aberrance, rank likely root causes, and route recommendations through an approval workflow before any corrective action is taken.[cite:177][cite:91]\n\nThe system is designed around a simple premise: a healthy engine and drivetrain produce repeatable multivariate patterns under comparable operating conditions. If those patterns can be modeled well enough, then deviations from them become machine-detectable events rather than purely human intuition.[cite:168][cite:177]\n\nDr.Auto is therefore not defined primarily as an ECU-writing tool. It is defined as a baseline-learning, anomaly-scoring, and correction-governance layer that can eventually support bounded corrective actions on approved vehicle platforms while remaining useful even when limited to read-only OBD access.[cite:180][cite:152]\n\n## System goals\n\nThe core goals are:\n\n- Learn a vehicle-specific baseline of normal operation across load, RPM, temperature, fuel, and ambient conditions.[cite:91][cite:177]\n- Detect aberrance in combustion, fueling, timing-related behavior, and drivability before a driver notices a severe fault.[cite:168][cite:181]\n- Explain why a pattern is anomalous using interpretable PID relationships and cluster/feature-based cause investigation, not only black-box scores.[cite:177]\n- Route all proposed corrections through an auditable approval layer before any write, reconfiguration, or service recommendation is executed.[cite:180][cite:152]\n- Improve over time using fleet and trip history while isolating safety-critical control from unrestricted network influence.[cite:180][cite:190]\n\n## Architecture\n\nThe system has five layers.\n\n### 1. Acquisition layer\n\nThis layer ingests generic and enhanced OBD-II telemetry, diagnostic trouble codes, Mode 01 live parameters, and trip context. Core generic PIDs relevant to baseline modeling include calculated engine load, coolant temperature, short- and long-term fuel trims, fuel pressure, manifold pressure, RPM, vehicle speed, intake air temperature, MAF, and throttle position.[cite:179]\n\nExample baseline PID group:\n\n| PID / signal | Diagnostic value |\n|---|---|\n| Engine RPM | Combustion stability, load mapping, idle consistency.[cite:179] |\n| Calculated engine load | Normalization across driving states.[cite:179] |\n| Throttle position | Driver demand vs. engine response.[cite:179] |\n| Short-term and long-term fuel trim | Air-fuel correction behavior, vacuum leak and fueling anomaly clues.[cite:179][cite:181] |\n| MAF / MAP | Air-path consistency, volumetric efficiency, intake restriction clues.[cite:179][cite:186] |\n| Coolant and intake air temperature | Context normalization for warmup and thermal behavior.[cite:179] |\n| Oxygen / AFR sensor readings | Combustion outcome and mixture interpretation.[cite:186][cite:187] |\n| Misfire counters / Mode $06 when available | Cylinder-event anomaly evidence.[cite:164][cite:187] |\n\nThe acquisition layer should timestamp every sample, preserve sampling frequency metadata, and tag records with contextual features such as cold start, idle, cruise, decel fuel cut, moderate acceleration, and wide-open throttle. The same raw PID can mean different things in different operating regions, so phase-of-operation labeling is mandatory for useful baselines.[cite:181][cite:186]\n\n### 2. Baseline modeling layer\n\nThe baseline model should be vehicle-specific first, then fleet-informed second. A healthy operating envelope is learned from repeated trips after obvious faults are excluded, using multivariate distributions and state-conditioned relationships rather than static thresholds.[cite:168][cite:177]\n\nRecommended baseline representations:\n\n- **State-cluster baseline:** group data by operating regimes such as warm idle, light cruise, transient acceleration, and high-load pull; then learn normal ranges inside each regime.[cite:177]\n- **Relational baseline:** model expected relationships such as throttle-to-load, RPM-to-MAF, trim response by load, and oxygen-sensor behavior following transient events.[cite:181][cite:186]\n- **Temporal baseline:** learn how quickly parameters settle after throttle changes, starts, and thermal transitions.\n- **Fleet prior:** use same-engine or same-platform cohorts only as priors, never as a replacement for the local vehicle baseline.\n\nA practical implementation can begin with explainable clustering and outlier detection, such as dimension reduction plus density-based clustering, then evolve toward sequence models once sufficient trip data accumulates.[cite:177]\n\n### 3. Aberrance scoring layer\n\nAberrance is defined as statistically significant departure from the baseline envelope under comparable conditions. Scores should be multi-axis rather than binary.\n\nSuggested anomaly dimensions:\n\n- Combustion stability anomaly.\n- Fueling anomaly.\n- Air-path anomaly.\n- Sensor disagreement anomaly.\n- Thermal behavior anomaly.\n- Drivability / response anomaly.\n- Persistent versus transient anomaly.\n\nEach event should produce:\n\n```text\nanomaly_score\nconfidence\naffected_subsystem\noperating_context\ntop contributing signals\ncomparison to historical baseline\nrecommended next action\n```\n\nThe system should separate **momentary oddity** from **repeatable aberrance**. A single transient spike may be logged only; repeated cross-trip deviation in the same operating context should escalate to a driver or technician-facing issue.[cite:168][cite:177]\n\n### 4. Approval and correction workflow\n\nNo corrective action should be executed solely because an anomaly score is high. The workflow should be gated.\n\n#### Workflow states\n\n1. **Observe** — read-only data collection and baseline formation.\n2. **Detect** — anomaly event identified and scored.\n3. **Explain** — likely causes and supporting PID evidence attached.\n4. **Recommend** — service step, calibration check, or bounded software change proposed.\n5. **Approve** — human, authorized fleet operator, or approved policy engine confirms action.\n6. **Apply** — only on explicitly supported platforms and only within bounded permissions.\n7. **Verify** — compare post-action telemetry against pre-action aberrance.\n\nThis keeps the system valuable in read-only mode while providing a path to controlled intervention where legally, technically, and cybernetically appropriate.[cite:180][cite:152]\n\n### 5. Secure update and fleet learning layer\n\nThe network component should improve detection quality, not become a backdoor into safety-critical systems. NHTSA guidance emphasizes that aftermarket devices and OTA paths can widen the attack surface, so critical updates need secure delivery, authentication, integrity checking, and strict separation between model updates and any control permissions.[cite:180][cite:152]\n\nRecommended network policy:\n\n- Diagnostic models may update over the air only if signed and versioned.[cite:151][cite:180]\n- Fleet learning should aggregate anonymized feature patterns, not raw personally identifying trip histories by default.\n- Correction policies must be separately permissioned from anomaly models.\n- Safety-relevant writes must require stronger authorization than read-only diagnostics.\n- Rollback and provenance logs are mandatory for any deployed model or rule set.[cite:151]\n\n## Normal-state modeling\n\n### Operating regions\n\nA vehicle should not have one single baseline. It should have many conditional baselines.\n\nMinimum operating regions:\n\n- Cold start.\n- Warm idle.\n- Light cruise.\n- Moderate steady-state load.\n- Tip-in acceleration.\n- High-load / high-throttle pull.\n- Deceleration / coastdown.\n- Stop-and-go urban driving.\n\nA baseline generated without regioning will overfit to common states and underperform on the conditions where emerging faults are most visible.[cite:181][cite:186]\n\n### Feature schema\n\nRecommended feature families:\n\n- Raw PIDs: RPM, load, speed, throttle, MAP/MAF, trims, temperatures, O2/AFR, fuel pressure where available.[cite:179]\n- Derived features: RPM variance at idle, trim imbalance, throttle-to-load gain, MAP lag after throttle event, thermal rise rate.\n- Cross-sensor agreement: expected AFR versus O2 trends, MAF versus MAP consistency, load versus airflow consistency.\n- Temporal features: settling time, oscillation frequency, repeated event counts, duration-above-threshold.\n- Context features: ambient temperature proxy, trip phase, time since start, fuel state where known.\n\n### Example healthy relationships\n\nHealthy operation is often better represented by relationships than by absolute values alone:\n\n- Fuel trims near normal under comparable idle and cruise conditions, with interpretable shifts by load.[cite:181][cite:191]\n- Stable idle RPM variance once warm.\n- Predictable airflow response relative to throttle and RPM.[cite:186]\n- Expected oxygen-sensor or AFR transitions after transient fueling changes.[cite:187]\n- Repeatable warmup profile for coolant and intake air.\n\nThese relationships become the mathematical backbone of “normal.”\n\n## Anomaly classes\n\n### Misfire and combustion anomalies\n\nMisfire-related anomalies can be inferred from direct counters where available or indirectly through RPM fluctuation, oxygen content changes, trim behavior, and downstream exhaust-sensor patterns.[cite:164][cite:187]\n\nIndicators include:\n\n- Irregular RPM deceleration events at constant driver demand.\n- Excess oxygen signatures associated with non-combusted mixture.[cite:187]\n- Fuel-trim compensation patterns inconsistent with stable combustion.\n- Repeating cylinder-specific or phase-specific events where enhanced data exists.\n\n### Fueling and air-path anomalies\n\nFuel trims are particularly valuable because they reflect how the ECU is correcting for underlying deviation. High idle trims that reduce at higher RPM can indicate vacuum-leak-like behavior, while persistent corrections across broader load regions may indicate delivery or metering issues.[cite:181]\n\nThe model should therefore treat trims not as isolated numbers but as response surfaces over RPM, load, and temperature.\n\n### Timing and knock-proxy anomalies\n\nOn many vehicles, direct spark timing and knock data may be partially visible, enhanced-only, or unavailable through generic OBD. The baseline model should therefore support both direct and indirect timing-related inference.\n\nDirect signals when available:\n\n- Spark advance.\n- Knock retard.\n- Cylinder correction factors.\n\nIndirect signals when not available:\n\n- Torque response deficit for similar throttle/load input.\n- Fuel-trim instability under load.\n- Repeated transient anomalies around combustion-pressure peaks.\n- Temperature and efficiency drift relative to baseline.\n\n## Approval model\n\nThe correction system should support multiple approval modes.\n\n| Mode | Use case | Action scope |\n|---|---|---|\n| Driver approval | Consumer device | Recommendations only; no live control changes |\n| Technician approval | Repair / calibration workflow | Service procedures, relearn initiation, authorized bounded adjustments |\n| Fleet approval | Managed fleet | Policy-based deployment on supported vehicle classes |\n| OEM / platform approval | Deep integration | Higher authority actions with cryptographic authorization |\n\nEvery approval should generate a signed record containing anomaly evidence, model version, operator identity or policy source, action requested, and verification outcome.[cite:151][cite:180]\n\n## Correction boundaries\n\nCorrection should be divided into four levels.\n\n### Level 0: Observe only\n\n- Read live data.\n- Store baseline.\n- Detect anomalies.\n- No recommendations shown.\n\n### Level 1: Advisory\n\n- Present likely issue.\n- Show confidence and evidence.\n- Recommend diagnostic or maintenance action.\n- Compare before/after outcomes.\n\n### Level 2: Assisted service workflow\n\n- Trigger supported relearn or test sequences.\n- Guide technician through calibration checks.\n- Validate repair using post-fix telemetry.\n\n### Level 3: Bounded adjustment on supported platforms\n\n- Only where platform APIs, authorization, safety constraints, emissions compliance, and cybersecurity controls explicitly permit it.\n- Small-scoped, reversible actions only.\n- Mandatory rollback path and verification trip.\n\nUnbounded live timing/fueling control by a generic aftermarket dongle should be treated as out of scope for the base specification.[cite:180][cite:152]\n\n## Data governance\n\nThe system should store three categories of data:\n\n- **Raw telemetry windows** for local debugging and verification.\n- **Derived feature summaries** for long-term modeling efficiency.\n- **Fleet abstractions** for cross-vehicle learning.\n\nData retention should be tiered so that high-rate raw streams expire sooner than compact anomaly summaries. Any fleet-sharing policy should default to de-identified feature sharing unless explicit consent is given.\n\n## Suggested first implementation\n\n### Phase 1: Read and baseline\n\n- OBD dongle or embedded CAN/OBD interface.\n- Select high-value PIDs only to manage bandwidth and device cost.[cite:179]\n- Build state-labeled trip recorder.\n- Create baseline envelopes for each operating region.\n\n### Phase 2: Explainable anomaly engine\n\n- Start with clustering/outlier approach similar to explainable OBD snapshot methods.[cite:177]\n- Add rule-assisted cause ranking using known PID relationships such as trim behavior across load, RPM irregularity, and sensor disagreement.[cite:181][cite:187]\n- Deliver technician-readable evidence summaries.\n\n### Phase 3: Approval workflow and post-fix verification\n\n- Add human approval UI.\n- Compare pre-fix and post-fix operating envelopes.\n- Measure whether anomaly score materially decreased after intervention.\n\n### Phase 4: Secure fleet learning\n\n- Introduce signed diagnostic model updates.[cite:151][cite:180]\n- Share normalized anomaly fingerprints across supported cohorts.\n- Keep control authority separated from learning authority.\n\n## Example event object\n\n```json\n{\n  \"vehicle_id\": \"local-anon-id\",\n  \"timestamp\": 1784765400,\n  \"operating_region\": \"warm_idle\",\n  \"anomaly_class\": \"combustion_instability\",\n  \"score\": 0.87,\n  \"confidence\": 0.81,\n  \"supporting_signals\": [\n    \"rpm_variance_high\",\n    \"ltft_bank1_positive_drift\",\n    \"post_cat_o2_unexpected_pattern\"\n  ],\n  \"likely_causes\": [\n    \"ignition_misfire\",\n    \"vacuum_leak\",\n    \"injector_imbalance\"\n  ],\n  \"recommended_action\": \"inspect ignition and intake for cylinder-specific fault; run verification after service\",\n  \"model_version\": \"diag-baseline-0.4.2\",\n  \"approval_required\": true\n}\n```\n\n## Recommended product framing\n\nDr.Auto should be framed as:\n\n- a quantitative vehicle-state model,\n- an anomaly and aberrance detection system,\n- a predictive drivability monitor,\n- and a human-approved correction workflow.\n\nThat framing matches the evidence base for OBD-driven anomaly detection while leaving room for deeper supported integrations later.[cite:91][cite:168][cite:177]\n\nDesign notes: OBD-II telemetry, Quantitative vehicle-state modeling, State-conditioned anomaly scoring, Read-only diagnostics, Secure updates, Multi-axis anomaly dimensions, Approval workflow\n\nElectrical components (current): Edge Compute Module (mcu, 55x40x4.7mm); 3x module: Multi-Protocol OBD Interface IC, Automotive CAN Transceiver, Cellular and GPS Module; 2x power: Vehicle Power Regulator, Transient Voltage Suppressor\n\nMechanical/structural parts (current): 2x structural: OBD-II Male 16-Pin Connector, SOM Heat Sink; 5x 3d_printed: Enclosure Base Shell, Enclosure Top Lid, Internal Patch Antenna Mount, Multi-Protocol OBD Interface IC Mount +1 more; 4x misc: PCB Mounting Fasteners, Standoff Heat-Set Inserts, Case Assembly Screws, Enclosure Corner Inserts",
    "tags": [
      "OBD-II telemetry",
      "Quantitative vehicle-state modeling",
      "State-conditioned anomaly scoring",
      "Read-only diagnostics",
      "Secure updates",
      "Multi-axis anomaly dimensions",
      "Approval workflow"
    ]
  },
  "originalPrompt": "# Dr.Auto Baseline-and-Aberrance Specification\n\n## Overview\n\nDr.Auto is a quantitative vehicle-state modeling system for engine and drivability diagnostics. Its first purpose is to establish a verified baseline of normal automotive operation using live OBD-II telemetry, derived relationships among parameters, and trip-context data; its second purpose is to detect aberrance, rank likely root causes, and route recommendations through an approval workflow before any corrective action is taken.[cite:177][cite:91]\n\nThe system is designed around a simple premise: a healthy engine and drivetrain produce repeatable multivariate patterns under comparable operating conditions. If those patterns can be modeled well enough, then deviations from them become machine-detectable events rather than purely human intuition.[cite:168][cite:177]\n\nDr.Auto is therefore not defined primarily as an ECU-writing tool. It is defined as a baseline-learning, anomaly-scoring, and correction-governance layer that can eventually support bounded corrective actions on approved vehicle platforms while remaining useful even when limited to read-only OBD access.[cite:180][cite:152]\n\n## System goals\n\nThe core goals are:\n\n- Learn a vehicle-specific baseline of normal operation across load, RPM, temperature, fuel, and ambient conditions.[cite:91][cite:177]\n- Detect aberrance in combustion, fueling, timing-related behavior, and drivability before a driver notices a severe fault.[cite:168][cite:181]\n- Explain why a pattern is anomalous using interpretable PID relationships and cluster/feature-based cause investigation, not only black-box scores.[cite:177]\n- Route all proposed corrections through an auditable approval layer before any write, reconfiguration, or service recommendation is executed.[cite:180][cite:152]\n- Improve over time using fleet and trip history while isolating safety-critical control from unrestricted network influence.[cite:180][cite:190]\n\n## Architecture\n\nThe system has five layers.\n\n### 1. Acquisition layer\n\nThis layer ingests generic and enhanced OBD-II telemetry, diagnostic trouble codes, Mode 01 live parameters, and trip context. Core generic PIDs relevant to baseline modeling include calculated engine load, coolant temperature, short- and long-term fuel trims, fuel pressure, manifold pressure, RPM, vehicle speed, intake air temperature, MAF, and throttle position.[cite:179]\n\nExample baseline PID group:\n\n| PID / signal | Diagnostic value |\n|---|---|\n| Engine RPM | Combustion stability, load mapping, idle consistency.[cite:179] |\n| Calculated engine load | Normalization across driving states.[cite:179] |\n| Throttle position | Driver demand vs. engine response.[cite:179] |\n| Short-term and long-term fuel trim | Air-fuel correction behavior, vacuum leak and fueling anomaly clues.[cite:179][cite:181] |\n| MAF / MAP | Air-path consistency, volumetric efficiency, intake restriction clues.[cite:179][cite:186] |\n| Coolant and intake air temperature | Context normalization for warmup and thermal behavior.[cite:179] |\n| Oxygen / AFR sensor readings | Combustion outcome and mixture interpretation.[cite:186][cite:187] |\n| Misfire counters / Mode $06 when available | Cylinder-event anomaly evidence.[cite:164][cite:187] |\n\nThe acquisition layer should timestamp every sample, preserve sampling frequency metadata, and tag records with contextual features such as cold start, idle, cruise, decel fuel cut, moderate acceleration, and wide-open throttle. The same raw PID can mean different things in different operating regions, so phase-of-operation labeling is mandatory for useful baselines.[cite:181][cite:186]\n\n### 2. Baseline modeling layer\n\nThe baseline model should be vehicle-specific first, then fleet-informed second. A healthy operating envelope is learned from repeated trips after obvious faults are excluded, using multivariate distributions and state-conditioned relationships rather than static thresholds.[cite:168][cite:177]\n\nRecommended baseline representations:\n\n- **State-cluster baseline:** group data by operating regimes such as warm idle, light cruise, transient acceleration, and high-load pull; then learn normal ranges inside each regime.[cite:177]\n- **Relational baseline:** model expected relationships such as throttle-to-load, RPM-to-MAF, trim response by load, and oxygen-sensor behavior following transient events.[cite:181][cite:186]\n- **Temporal baseline:** learn how quickly parameters settle after throttle changes, starts, and thermal transitions.\n- **Fleet prior:** use same-engine or same-platform cohorts only as priors, never as a replacement for the local vehicle baseline.\n\nA practical implementation can begin with explainable clustering and outlier detection, such as dimension reduction plus density-based clustering, then evolve toward sequence models once sufficient trip data accumulates.[cite:177]\n\n### 3. Aberrance scoring layer\n\nAberrance is defined as statistically significant departure from the baseline envelope under comparable conditions. Scores should be multi-axis rather than binary.\n\nSuggested anomaly dimensions:\n\n- Combustion stability anomaly.\n- Fueling anomaly.\n- Air-path anomaly.\n- Sensor disagreement anomaly.\n- Thermal behavior anomaly.\n- Drivability / response anomaly.\n- Persistent versus transient anomaly.\n\nEach event should produce:\n\n```text\nanomaly_score\nconfidence\naffected_subsystem\noperating_context\ntop contributing signals\ncomparison to historical baseline\nrecommended next action\n```\n\nThe system should separate **momentary oddity** from **repeatable aberrance**. A single transient spike may be logged only; repeated cross-trip deviation in the same operating context should escalate to a driver or technician-facing issue.[cite:168][cite:177]\n\n### 4. Approval and correction workflow\n\nNo corrective action should be executed solely because an anomaly score is high. The workflow should be gated.\n\n#### Workflow states\n\n1. **Observe** — read-only data collection and baseline formation.\n2. **Detect** — anomaly event identified and scored.\n3. **Explain** — likely causes and supporting PID evidence attached.\n4. **Recommend** — service step, calibration check, or bounded software change proposed.\n5. **Approve** — human, authorized fleet operator, or approved policy engine confirms action.\n6. **Apply** — only on explicitly supported platforms and only within bounded permissions.\n7. **Verify** — compare post-action telemetry against pre-action aberrance.\n\nThis keeps the system valuable in read-only mode while providing a path to controlled intervention where legally, technically, and cybernetically appropriate.[cite:180][cite:152]\n\n### 5. Secure update and fleet learning layer\n\nThe network component should improve detection quality, not become a backdoor into safety-critical systems. NHTSA guidance emphasizes that aftermarket devices and OTA paths can widen the attack surface, so critical updates need secure delivery, authentication, integrity checking, and strict separation between model updates and any control permissions.[cite:180][cite:152]\n\nRecommended network policy:\n\n- Diagnostic models may update over the air only if signed and versioned.[cite:151][cite:180]\n- Fleet learning should aggregate anonymized feature patterns, not raw personally identifying trip histories by default.\n- Correction policies must be separately permissioned from anomaly models.\n- Safety-relevant writes must require stronger authorization than read-only diagnostics.\n- Rollback and provenance logs are mandatory for any deployed model or rule set.[cite:151]\n\n## Normal-state modeling\n\n### Operating regions\n\nA vehicle should not have one single baseline. It should have many conditional baselines.\n\nMinimum operating regions:\n\n- Cold start.\n- Warm idle.\n- Light cruise.\n- Moderate steady-state load.\n- Tip-in acceleration.\n- High-load / high-throttle pull.\n- Deceleration / coastdown.\n- Stop-and-go urban driving.\n\nA baseline generated without regioning will overfit to common states and underperform on the conditions where emerging faults are most visible.[cite:181][cite:186]\n\n### Feature schema\n\nRecommended feature families:\n\n- Raw PIDs: RPM, load, speed, throttle, MAP/MAF, trims, temperatures, O2/AFR, fuel pressure where available.[cite:179]\n- Derived features: RPM variance at idle, trim imbalance, throttle-to-load gain, MAP lag after throttle event, thermal rise rate.\n- Cross-sensor agreement: expected AFR versus O2 trends, MAF versus MAP consistency, load versus airflow consistency.\n- Temporal features: settling time, oscillation frequency, repeated event counts, duration-above-threshold.\n- Context features: ambient temperature proxy, trip phase, time since start, fuel state where known.\n\n### Example healthy relationships\n\nHealthy operation is often better represented by relationships than by absolute values alone:\n\n- Fuel trims near normal under comparable idle and cruise conditions, with interpretable shifts by load.[cite:181][cite:191]\n- Stable idle RPM variance once warm.\n- Predictable airflow response relative to throttle and RPM.[cite:186]\n- Expected oxygen-sensor or AFR transitions after transient fueling changes.[cite:187]\n- Repeatable warmup profile for coolant and intake air.\n\nThese relationships become the mathematical backbone of “normal.”\n\n## Anomaly classes\n\n### Misfire and combustion anomalies\n\nMisfire-related anomalies can be inferred from direct counters where available or indirectly through RPM fluctuation, oxygen content changes, trim behavior, and downstream exhaust-sensor patterns.[cite:164][cite:187]\n\nIndicators include:\n\n- Irregular RPM deceleration events at constant driver demand.\n- Excess oxygen signatures associated with non-combusted mixture.[cite:187]\n- Fuel-trim compensation patterns inconsistent with stable combustion.\n- Repeating cylinder-specific or phase-specific events where enhanced data exists.\n\n### Fueling and air-path anomalies\n\nFuel trims are particularly valuable because they reflect how the ECU is correcting for underlying deviation. High idle trims that reduce at higher RPM can indicate vacuum-leak-like behavior, while persistent corrections across broader load regions may indicate delivery or metering issues.[cite:181]\n\nThe model should therefore treat trims not as isolated numbers but as response surfaces over RPM, load, and temperature.\n\n### Timing and knock-proxy anomalies\n\nOn many vehicles, direct spark timing and knock data may be partially visible, enhanced-only, or unavailable through generic OBD. The baseline model should therefore support both direct and indirect timing-related inference.\n\nDirect signals when available:\n\n- Spark advance.\n- Knock retard.\n- Cylinder correction factors.\n\nIndirect signals when not available:\n\n- Torque response deficit for similar throttle/load input.\n- Fuel-trim instability under load.\n- Repeated transient anomalies around combustion-pressure peaks.\n- Temperature and efficiency drift relative to baseline.\n\n## Approval model\n\nThe correction system should support multiple approval modes.\n\n| Mode | Use case | Action scope |\n|---|---|---|\n| Driver approval | Consumer device | Recommendations only; no live control changes |\n| Technician approval | Repair / calibration workflow | Service procedures, relearn initiation, authorized bounded adjustments |\n| Fleet approval | Managed fleet | Policy-based deployment on supported vehicle classes |\n| OEM / platform approval | Deep integration | Higher authority actions with cryptographic authorization |\n\nEvery approval should generate a signed record containing anomaly evidence, model version, operator identity or policy source, action requested, and verification outcome.[cite:151][cite:180]\n\n## Correction boundaries\n\nCorrection should be divided into four levels.\n\n### Level 0: Observe only\n\n- Read live data.\n- Store baseline.\n- Detect anomalies.\n- No recommendations shown.\n\n### Level 1: Advisory\n\n- Present likely issue.\n- Show confidence and evidence.\n- Recommend diagnostic or maintenance action.\n- Compare before/after outcomes.\n\n### Level 2: Assisted service workflow\n\n- Trigger supported relearn or test sequences.\n- Guide technician through calibration checks.\n- Validate repair using post-fix telemetry.\n\n### Level 3: Bounded adjustment on supported platforms\n\n- Only where platform APIs, authorization, safety constraints, emissions compliance, and cybersecurity controls explicitly permit it.\n- Small-scoped, reversible actions only.\n- Mandatory rollback path and verification trip.\n\nUnbounded live timing/fueling control by a generic aftermarket dongle should be treated as out of scope for the base specification.[cite:180][cite:152]\n\n## Data governance\n\nThe system should store three categories of data:\n\n- **Raw telemetry windows** for local debugging and verification.\n- **Derived feature summaries** for long-term modeling efficiency.\n- **Fleet abstractions** for cross-vehicle learning.\n\nData retention should be tiered so that high-rate raw streams expire sooner than compact anomaly summaries. Any fleet-sharing policy should default to de-identified feature sharing unless explicit consent is given.\n\n## Suggested first implementation\n\n### Phase 1: Read and baseline\n\n- OBD dongle or embedded CAN/OBD interface.\n- Select high-value PIDs only to manage bandwidth and device cost.[cite:179]\n- Build state-labeled trip recorder.\n- Create baseline envelopes for each operating region.\n\n### Phase 2: Explainable anomaly engine\n\n- Start with clustering/outlier approach similar to explainable OBD snapshot methods.[cite:177]\n- Add rule-assisted cause ranking using known PID relationships such as trim behavior across load, RPM irregularity, and sensor disagreement.[cite:181][cite:187]\n- Deliver technician-readable evidence summaries.\n\n### Phase 3: Approval workflow and post-fix verification\n\n- Add human approval UI.\n- Compare pre-fix and post-fix operating envelopes.\n- Measure whether anomaly score materially decreased after intervention.\n\n### Phase 4: Secure fleet learning\n\n- Introduce signed diagnostic model updates.[cite:151][cite:180]\n- Share normalized anomaly fingerprints across supported cohorts.\n- Keep control authority separated from learning authority.\n\n## Example event object\n\n```json\n{\n  \"vehicle_id\": \"local-anon-id\",\n  \"timestamp\": 1784765400,\n  \"operating_region\": \"warm_idle\",\n  \"anomaly_class\": \"combustion_instability\",\n  \"score\": 0.87,\n  \"confidence\": 0.81,\n  \"supporting_signals\": [\n    \"rpm_variance_high\",\n    \"ltft_bank1_positive_drift\",\n    \"post_cat_o2_unexpected_pattern\"\n  ],\n  \"likely_causes\": [\n    \"ignition_misfire\",\n    \"vacuum_leak\",\n    \"injector_imbalance\"\n  ],\n  \"recommended_action\": \"inspect ignition and intake for cylinder-specific fault; run verification after service\",\n  \"model_version\": \"diag-baseline-0.4.2\",\n  \"approval_required\": true\n}\n```\n\n## Recommended product framing\n\nDr.Auto should be framed as:\n\n- a quantitative vehicle-state model,\n- an anomaly and aberrance detection system,\n- a predictive drivability monitor,\n- and a human-approved correction workflow.\n\nThat framing matches the evidence base for OBD-driven anomaly detection while leaving room for deeper supported integrations later.[cite:91][cite:168][cite:177]",
  "plan": "- Microcontroller: High-performance dual-core MCU (e.g., ESP32-S3 or STM32F4 series) with integrated CAN controller transceiver (e.g., TJA1050 or MCP2551) for high-speed OBD-II/CAN communication.\n- Storage and Memory: External SPI flash or MicroSD card module for local storage of raw high-rate diagnostic telemetry and baseline model files.\n- Power Management: Automotive-grade step-down buck converter (e.g., LM2596 or similar regulator) to safely drop 12V OBD-II bus power down to 5V and 3.3V, featuring overvoltage and transient voltage suppression (TVS) protection.\n- Mechanical Interface: Standard OBD-II 16-pin male connector shell for direct vehicle dashboard port integration.\n- Enclosure: Custom 3D-printed compact ABS enclosure designed to house the PCB, featuring ventilation slots for heat dissipation and secure snap-fit or M2 bolt closures.",
  "notes": [
    "OBD-II telemetry",
    "Quantitative vehicle-state modeling",
    "State-conditioned anomaly scoring",
    "Read-only diagnostics",
    "Secure updates",
    "Multi-axis anomaly dimensions",
    "Approval workflow"
  ],
  "projectId": "0415c236-cd87-48e7-82ce-525824d79031",
  "instructionPreamble": {
    "tools": [
      "Soldering iron with fine tip",
      "Multimeter",
      "M2 screwdriver",
      "M3 hex key",
      "3D printer (ABS and PETG capable)",
      "Brass insert installation tip / soldering iron tool",
      "Double-sided adhesive tape",
      "Wire strippers and side cutters"
    ],
    "assumptions": [
      "Builder has experience with fine-pitch soldering and basic PCB diagnostic tools.",
      "A regulated 12V bench power supply is available for testing.",
      "The 3D printer is calibrated for correct tolerances to support snap-fits and heat-set inserts.",
      "Access to safe firmware flashing utilities is ready on a host PC."
    ]
  },
  "instructionSteps": [
    {
      "id": "fabricate",
      "subSteps": [
        {
          "id": "fabricate_1",
          "title": "3D print enclosure components, antenna mount, and IC mounts",
          "partIds": [
            "main_enclosure_base",
            "main_enclosure_lid",
            "obd_transceiver_stn1110_mount",
            "can_transceiver_mount",
            "lte_gps_antenna_adhesive"
          ]
        },
        {
          "id": "fabricate_2",
          "title": "Heat-set M2 brass inserts into internal standoffs of the enclosure base",
          "partIds": [
            "main_enclosure_base",
            "brass_heatset_inserts"
          ]
        },
        {
          "id": "fabricate_3",
          "title": "Heat-set M3 corner brass inserts into the outer shell of the enclosure base",
          "partIds": [
            "main_enclosure_base",
            "case_heatset_inserts"
          ]
        },
        {
          "id": "fabricate_4",
          "title": "Test fit the OBD male connector and printed IC mounts into the enclosure base",
          "partIds": [
            "main_enclosure_base",
            "obd_male_connector",
            "obd_transceiver_stn1110_mount",
            "can_transceiver_mount"
          ]
        }
      ]
    },
    {
      "id": "wire",
      "subSteps": [
        {
          "id": "wire_1",
          "title": "Solder TVS Diode protection to input terminal of Buck Regulator",
          "partIds": [
            "tvs_diode_protection",
            "automotive_buck_regulator"
          ]
        },
        {
          "id": "wire_2",
          "title": "Connect power regulator outputs to edge compute and communication ICs",
          "partIds": [
            "automotive_buck_regulator",
            "edge_compute_som",
            "obd_transceiver_stn1110",
            "can_transceiver",
            "lte_gps_module"
          ]
        },
        {
          "id": "wire_3",
          "title": "Connect UART data lines between OBD Transceiver and Edge Compute",
          "partIds": [
            "edge_compute_som",
            "obd_transceiver_stn1110"
          ]
        },
        {
          "id": "wire_4",
          "title": "Connect digital RX/TX control lines between OBD Transceiver and CAN Transceiver",
          "partIds": [
            "obd_transceiver_stn1110",
            "can_transceiver"
          ]
        },
        {
          "id": "wire_5",
          "title": "Solder SPI/UART bus and control interfaces between Edge Compute and LTE/GPS module",
          "partIds": [
            "edge_compute_som",
            "lte_gps_module",
            "can_transceiver"
          ]
        },
        {
          "id": "wire_6",
          "title": "Check all solder joints for continuous connections and trace separation with multimeter",
          "partIds": [
            "automotive_buck_regulator",
            "edge_compute_som",
            "obd_transceiver_stn1110",
            "can_transceiver",
            "lte_gps_module"
          ]
        }
      ]
    },
    {
      "id": "bringup",
      "subSteps": [
        {
          "id": "bringup_1",
          "title": "Perform cold resistance checks on all core power rails",
          "partIds": [
            "automotive_buck_regulator",
            "edge_compute_som"
          ]
        },
        {
          "id": "bringup_2",
          "title": "Apply bench power and verify voltage output thresholds on regulator lanes",
          "partIds": [
            "automotive_buck_regulator",
            "tvs_diode_protection"
          ]
        },
        {
          "id": "bringup_3",
          "title": "Flash base OS and test digital logic lines on Edge Compute SOM",
          "partIds": [
            "edge_compute_som"
          ]
        },
        {
          "id": "bringup_4",
          "title": "Verify UART protocol link and query command responses from STN1110 transceiver",
          "partIds": [
            "edge_compute_som",
            "obd_transceiver_stn1110",
            "can_transceiver"
          ]
        },
        {
          "id": "bringup_5",
          "title": "Initiate diagnostic software and confirm GPS satellite and cellular network status",
          "partIds": [
            "edge_compute_som",
            "lte_gps_module"
          ]
        }
      ]
    },
    {
      "id": "assemble",
      "subSteps": [
        {
          "id": "assemble_1",
          "title": "Mount OBD IC and CAN transceivers into their dedicated printed PETG mounts",
          "partIds": [
            "obd_transceiver_stn1110",
            "obd_transceiver_stn1110_mount",
            "can_transceiver",
            "can_transceiver_mount"
          ]
        },
        {
          "id": "assemble_2",
          "title": "Attach SOM heat sink to Edge Compute Module",
          "partIds": [
            "edge_compute_som",
            "som_thermal_heatsink"
          ]
        },
        {
          "id": "assemble_3",
          "title": "Secure LTE and GPS internal antenna mount to the upper lid of the enclosure",
          "partIds": [
            "lte_gps_antenna_adhesive",
            "main_enclosure_lid",
            "lte_gps_module"
          ]
        },
        {
          "id": "assemble_4",
          "title": "Secure all internal mounting components inside the main enclosure base",
          "partIds": [
            "main_enclosure_base",
            "obd_male_connector",
            "pcb_mounting_screws",
            "brass_heatset_inserts"
          ]
        },
        {
          "id": "assemble_5",
          "title": "Align and screw the enclosure lid to base shell with assembly screws",
          "partIds": [
            "main_enclosure_lid",
            "main_enclosure_base",
            "enclosure_assembly_screws",
            "case_heatset_inserts"
          ]
        }
      ]
    }
  ],
  "wiringCleanedHash": "0415c236-cd87-48e7-82ce-525824d79031::automotive_buck_regulator:VIN|SW|FB|RON|VCC|SS|GND|EP,can_transceiver:TXD|RXD|CANH|CANL|VDD|VIO|STBY|VSS,edge_compute_som:GPIO12/TXD0|GPIO13/RXD0|SDA1|SCL1|SPI0_MOSI|SPI0_MISO|SPI0_SCLK|SPI0_CE0_N|3.3V|5V|GND|TXD1|RXD1,lte_gps_module:VCC|GND|USB_TX|USB_RX|GPS_ANT|LTE_ANT|SIM_DET,obd_transceiver_stn1110:TX|RX|CAN_TX|CAN_RX|ISO_K|ISO_L|VDD|VSS,power_dist_block:V12_IN|V12_OUT|V5_IN|V5_OUT1|V5_OUT2|V5_OUT3|V3_8_IN|V3_8_OUT|GND,tvs_diode_protection:ANODE|CATHODE::data|can_transceiver|RXD|obd_transceiver_stn1110|CAN_RX|gpio|;data|edge_compute_som|GPIO12/TXD0|lte_gps_module|USB_RX||3.3V_logic_level_shifter_assumed?? No, the connection listed SPI0_MOSI to USB_RX and USB_TX to SPI0_MISO but protocol was uart. This was a mismatch where SPI pins were being used for UART. Let's fix them to map to actual UART pins on the SOM if possible, or add TXD1/RXD1 to the edge SOM, or we can use the main UART if it is not shared, but it is already used for OBD transceiver. STN1110 requires UART. Let's add UART1 RX/TX pins to the Edge compute module to handle the LTE module. Alternatively, we map to actual USB lines if they have them, but LTE module shows USB_TX and USB_RX. Let's add TXD1 and RXD1 to edge_compute_som.;data|edge_compute_som|GPIO12/TXD0|obd_transceiver_stn1110|RX|uart|;data|edge_compute_som|SPI0_CE0_N|can_transceiver|STBY|gpio|;data|edge_compute_som|TXD1|lte_gps_module|USB_RX||3.3V_assumed_or_defined_by_protocol_uart_link?? Protocol is uart.;data|obd_transceiver_stn1110|CAN_TX|can_transceiver|TXD|gpio|;data|obd_transceiver_stn1110|TX|edge_compute_som|GPIO13/RXD0|uart|;power|automotive_buck_regulator|GND|can_transceiver|VSS||;power|automotive_buck_regulator|GND|edge_compute_som|GND||;power|automotive_buck_regulator|GND|lte_gps_module|GND||;power|automotive_buck_regulator|GND|obd_transceiver_stn1110|VSS||;power|automotive_buck_regulator|SW|power_dist_block|V5_IN||5V;power|automotive_buck_regulator|VCC|power_dist_block|V3_8_IN||3.8V;power|power_dist_block|V3_8_OUT|lte_gps_module|VCC||3.8V;power|power_dist_block|V5_OUT1|edge_compute_som|5V||5V;power|power_dist_block|V5_OUT2|obd_transceiver_stn1110|VDD||5V;power|power_dist_block|V5_OUT3|can_transceiver|VDD||5V;power|tvs_diode_protection|CATHODE|automotive_buck_regulator|VIN||12V;power|tvs_diode_protection||automotive_buck_regulator|||12V2A_filtered?? No, this represents power from the protection diode to the buck converter input pin VIN. Let's map it correctly based on the node pins available. TVS Cathode receives supply, Anode goes to Ground, TVS is usually in parallel across VIN to protect it. Let's wire CATHODE to automotive_buck_regulator.VIN and ANODE to automotive_buck_regulator.GND as is standard for protection. Wait, standard is TVS is placed in parallel, so we need to bridge tvs_diode_protection.CATHODE to VIN."
}