{
  "plan": "- Electrical components: RAKwireless WisBlock Core (LoRa MCU) or ESP32-S3 with sub-GHz LoRa, BME280 environmental sensor, TP4056 or BQ25504 solar MPPT charge controller, 18650 Li-ion battery (3000mAh), and low-loss external whip antenna.\n- Solar panel: 5x5 inch 3W 6V rigid monocrystalline solar panel mounted to the top face.\n- Custom 3D-printed parts: ASA or UV-stable polycarbonate icosahedron/octahedron enclosure, mounting bracket for the solar panel, internal PCB mounting sled, and battery holder.\n- Structural components: M3 stainless steel screws, silicone gasket cord for IP67 sealing, brass threaded inserts, and PG7 waterproof cable glands for the antenna cable.",
  "nodes": [
    {
      "id": "lora_mcu",
      "name": "LoRaWAN Microcontroller",
      "pins": [
        "3V3",
        "GND",
        "I2C_SDA",
        "I2C_SCL",
        "TXD",
        "RXD",
        "AIN0",
        "RST",
        "ANTENNA_RF"
      ],
      "type": "mcu",
      "partId": "9b74617f-7f06-480f-bdb7-f1d92eeaa9cb",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=RAKwireless+WisBlock+Core+RAK4631&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "electrical",
      "imageUrl": "https://m.media-amazon.com/images/I/41WGpKYi68L._SL500_.jpg",
      "quantity": 1,
      "research": {
        "sourcing": [
          {
            "url": "https://www.amazon.com/dp/B0DP74SKM1?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$62.68",
            "vendor": "Amazon"
          },
          {
            "url": "https://www.aliexpress.com/w/wholesale-rakwireless-wisblock-core-rak4631.html",
            "vendor": "AliExpress"
          }
        ]
      },
      "amazonUrl": "https://www.amazon.com/dp/B0DP74SKM1?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "dimensions": "30x20x5mm",
      "productName": "RAKwireless WisBlock Core RAK4631",
      "purchaseUrl": "https://store.rakwireless.com/products/rak4631-lpwan-node-1",
      "aliexpressUrl": "https://s.click.aliexpress.com/e/_c2vGtouT",
      "estimatedCost": 15.5
    },
    {
      "id": "base_board",
      "name": "WisBlock Base Board",
      "pins": [
        "SYS_5V",
        "3V3",
        "GND",
        "I2C_SDA",
        "I2C_SCL",
        "A0",
        "AIN0",
        "SOLAR_IN",
        "BATT_IN"
      ],
      "type": "module",
      "partId": "61b93fcc-e10a-42bd-ab4b-a84fcc36d1b9",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=RAKwireless+WisBlock+Base+RAK19007&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "electrical",
      "imageUrl": "https://ae-pic-a1.aliexpress-media.com/kf/S9d8180ce0ba846768bc4ffe9535c7bbeh.png",
      "quantity": 1,
      "research": {
        "sourcing": [
          {
            "url": "https://www.aliexpress.com/item/1005005808913586.html?pdp_npi=6%40dis%21USD%2111.99%2111.99%21%21%2111.99%2111.99%21%40214114e317794415782575897e10ea%2112000034426591246%21affd%21%21%21%211%210%21",
            "price": "$11.99",
            "vendor": "AliExpress"
          },
          {
            "url": "",
            "vendor": "Amazon"
          }
        ]
      },
      "amazonUrl": null,
      "dimensions": "60x30x10mm",
      "productName": "RAKwireless WisBlock Base RAK19007",
      "purchaseUrl": "https://store.rakwireless.com/products/rak19007-wisblock-base-board-2nd-gen",
      "aliexpressUrl": "https://s.click.aliexpress.com/s/fwx308cRD9Eny963e3KDdYxyIpNj8TXVr7saiF9Um5rMUg1kZtJALLnfa2LNXtiVgnxdD8Og6MmvwBoxhnSYQGM6r0c08U4TfX8DFGo7vviCuu3q62Q60OAhRZcqm3G8PtwM69xY7TOEWRrvulP5ukZQ4uQbBBtaVsdr6EffAqVmp3O5GyUANU2DoA3dJufNhDfh7KOlLgKIvRVhDxRESHLmea6fTE26gLUqKEUuuizJiLENrCbax94DZHDu8WhaXM9vQ86gzlqceNPO5w3vwXm4VrBF3x2lAMEl06wgNdTSMiT7cNG4HIdW0JxHIHlzWaLEJrazOLjUIACSvA0pDo9qZFfzdq4MTki0ZfBJVisz8o0NWON8sM7usAAAsfi97hQEzLt1GeORQMlEWozPIgdVt1KeB1DsivFDavtDZTjwyX5HgsAUcBWMKbwgTBivfEbht3Ck6rej6lmj67768rd0XBh9m0sp31KEOb5tRxJ816AUdPXPnGHLsAZ2H642FiFIjx5un3o1oOzbZqWaFaT1ZddVH7ak7CGUNK77Uez8GzrIC3huQRlI5sFvwzyQSdhPXGvGqHFHHLysyqqEi5botFYa3MBGafZ4mxB1wkZp9hyasn5wkcIGhx9YPzH3dzuQAlBSozriexy1Uc0zrUIfBtVNFQKf7tjfLk6Q2Lp3GlEzLaZnWlHPoQj7bAewiXYTHtfOQaSfbc21T7qtqCOEvISTpOda2Vlb3TbD0O7g1Yp7AkYqEYVTXTWdDOzlTT8eGZmMtLYNrg4vHtWoTg2SonFRrSN9NuAcHlsNkTsRH0fzO0imq8f1PlIRg2O3wepRMy5UhyeZn7ZHvFdvAFxZoy6DfEFJz8f4OVqGJITDt2wWZ0IDCUeFho1b1DAWzQdljRbLihsWIDahPrAEoAETPHLqBCPBuGO3pOibI8BsL4nFebJPvSrwAlGxvvOUmXM42MSmrM6mPZukJ1",
      "estimatedCost": 10
    },
    {
      "id": "mppt_charger",
      "name": "LTO Solar MPPT Charger",
      "pins": [
        "VIN_DC",
        "VSTOR",
        "VBAT",
        "VBAT_OV",
        "VBAT_UV",
        "GND"
      ],
      "type": "power",
      "partId": "c5c93fa4-11fe-4030-b969-9798a9c7f3ee",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=Texas+Instruments+BQ25504+Nanopower+Harvester&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "electrical",
      "imageUrl": "https://m.media-amazon.com/images/I/41ERhFLR7uL._SL500_.jpg",
      "quantity": 1,
      "research": {
        "sourcing": [
          {
            "url": "https://www.aliexpress.com/w/wholesale-ti-bq25504-energy-harvesting-ic.html",
            "vendor": "AliExpress"
          },
          {
            "url": "",
            "vendor": "Amazon"
          },
          {
            "url": "https://www.amazon.com/dp/B0G5PL66HH?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$17.73",
            "vendor": "Amazon"
          }
        ]
      },
      "amazonUrl": "https://www.amazon.com/dp/B0G5PL66HH?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "dimensions": "25x25x4mm",
      "productName": "Texas Instruments BQ25504 Nanopower Harvester",
      "purchaseUrl": "https://www.digikey.com/en/products/result?keywords=BQ25504",
      "aliexpressUrl": "https://s.click.aliexpress.com/e/_c40rnWFb",
      "estimatedCost": 14.95
    },
    {
      "id": "lto_battery",
      "name": "LTO Buffer Battery",
      "pins": [
        "ANODE",
        "CATHODE"
      ],
      "type": "power",
      "partId": "14bc2a98-26a8-4207-a3a3-28d017075730",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=Yinlong+LTO+18650+2.4V+500mAh+Cell&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "electrical",
      "imageUrl": "https://m.media-amazon.com/images/I/41BhSrRX34L._SL500_.jpg",
      "quantity": 1,
      "amazonUrl": "https://www.amazon.com/dp/B0F9WRXCDP?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "dimensions": "18x18x65mm",
      "productName": "Yinlong LTO 18650 2.4V 500mAh Cell",
      "purchaseUrl": "https://www.amazon.com/s?k=LTO+18650+battery",
      "aliexpressUrl": "https://s.click.aliexpress.com/e/_c4SS3mrH",
      "estimatedCost": 9.5
    },
    {
      "id": "solar_panel",
      "name": "Top Face Solar Panel",
      "pins": [
        "POS",
        "NEG"
      ],
      "type": "power",
      "partId": "0a3fd5cd-160e-4fee-8e29-925a3e2533c7",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=Voltset+3W+6V+Monocrystalline+Solar+Panel&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "electrical",
      "imageUrl": "https://m.media-amazon.com/images/I/41pcCUaeQfL._SL500_.jpg",
      "quantity": 1,
      "amazonUrl": "https://www.amazon.com/dp/B0G1T8FQJ9?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "dimensions": "125x125x3mm",
      "productName": "Voltset 3W 6V Monocrystalline Solar Panel",
      "purchaseUrl": "https://www.amazon.com/s?k=3W+6V+monocrystalline+solar+panel+125mm",
      "aliexpressUrl": "https://s.click.aliexpress.com/e/_c3RCAhcL",
      "estimatedCost": 12.99
    },
    {
      "id": "relay_module",
      "name": "Low-Power Relay Module",
      "pins": [
        "COIL_PLUS",
        "COIL_MINUS",
        "COM",
        "NO",
        "NC"
      ],
      "type": "actuator",
      "partId": "a350ac5a-b1d3-4fb5-8537-ec2f62f96ca1",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=Panasonic+TX2-3V+Latching+Relay&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "electrical",
      "imageUrl": "https://m.media-amazon.com/images/I/41GPg+SyggL._SL500_.jpg",
      "quantity": 1,
      "amazonUrl": "https://www.amazon.com/dp/B00DKYL61U?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "dimensions": "15x7.4x8.2mm",
      "productName": "Panasonic TX2-3V Latching Relay",
      "purchaseUrl": "https://www.digikey.com/en/products/result?keywords=TX2-3V",
      "aliexpressUrl": "https://s.click.aliexpress.com/e/_c2RnNEgr",
      "estimatedCost": 4.5
    },
    {
      "id": "internal_antenna",
      "name": "Internal PCB Patch Antenna",
      "pins": [
        "RF_FEED",
        "GND"
      ],
      "type": "module",
      "partId": "8214e343-f1a8-41a8-955b-159aace34c7c",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=Taoglas+PC81+915MHz+PCB+Antenna&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "electrical",
      "imageUrl": "https://m.media-amazon.com/images/I/218PJS7O8aL._SL500_.jpg",
      "quantity": 1,
      "amazonUrl": "https://www.amazon.com/dp/B0DPSB5F8R?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "dimensions": "34x7x1mm",
      "productName": "Taoglas PC81 915MHz PCB Antenna",
      "purchaseUrl": "https://www.digikey.com/en/products/result?keywords=Taoglas+PC81",
      "aliexpressUrl": "https://s.click.aliexpress.com/e/_c4NwaUDt",
      "estimatedCost": 3.8
    },
    {
      "id": "octahedron_top_shell",
      "name": "Octahedron Top Enclosure Shell",
      "type": "3d_printed",
      "category": "mechanical",
      "material": "ASA",
      "quantity": 1,
      "mountsFor": "solar_panel",
      "dimensions": "127x127x90mm",
      "description": "Upper half of the UV-stable ASA octahedron enclosure. Features a flat 5x5 inch mounting face for the solar panel and integrated internal mounting bosses.",
      "purchaseUrl": "https://www.amazon.com/s?k=ASA+filament+1.75mm+weatherproof",
      "estimatedCost": 12.5,
      "printSettings": "4 perimeter walls, 30% gyroid infill, 0.2mm layer height"
    },
    {
      "id": "octahedron_bottom_shell",
      "name": "Octahedron Bottom Enclosure Shell",
      "type": "3d_printed",
      "category": "mechanical",
      "material": "ASA",
      "quantity": 1,
      "dimensions": "127x127x90mm",
      "description": "Lower half of the UV-stable ASA octahedron housing. Features protected bottom-facing sensor vents to allow airflow while keeping out rain.",
      "purchaseUrl": "https://www.amazon.com/s?k=ASA+filament+1.75mm+weatherproof",
      "estimatedCost": 14,
      "printSettings": "4 perimeter walls, 30% gyroid infill, 0.2mm layer height"
    },
    {
      "id": "internal_electronics_sled",
      "name": "Internal Electronics Sled",
      "type": "3d_printed",
      "category": "mechanical",
      "material": "PETG",
      "quantity": 1,
      "mountsFor": "base_board",
      "dimensions": "80x80x45mm",
      "description": "Internal chassis frame that slides into the top shell to securely mount the core PCB stack and sub-GHz antenna.",
      "purchaseUrl": "https://www.amazon.com/s?k=PETG+filament+1.75mm",
      "estimatedCost": 4.5,
      "printSettings": "3 perimeter walls, 20% grid infill, 0.2mm layer height"
    },
    {
      "id": "lto_battery_cradle",
      "name": "LTO Battery Isolation Holder",
      "type": "3d_printed",
      "category": "mechanical",
      "material": "PETG",
      "quantity": 1,
      "mountsFor": "lto_battery",
      "dimensions": "75x50x30mm",
      "description": "Thermally and physically isolated mounting cradle for the LTO buffer batteries, securing them deep inside the central cavity.",
      "purchaseUrl": "https://www.amazon.com/s?k=PETG+filament+1.75mm",
      "estimatedCost": 3,
      "printSettings": "3 perimeter walls, 25% grid infill, 0.2mm layer height"
    },
    {
      "id": "patch_antenna_bracket",
      "name": "Internal Patch Antenna Mount",
      "type": "3d_printed",
      "category": "mechanical",
      "material": "PETG",
      "quantity": 1,
      "mountsFor": "internal_antenna",
      "dimensions": "40x40x15mm",
      "description": "Custom angled bracket to mount the internal sub-GHz patch antenna flush against an optimal RF-transparent octahedron face.",
      "purchaseUrl": "https://www.amazon.com/s?k=PETG+filament+1.75mm",
      "estimatedCost": 1.5,
      "printSettings": "2 perimeter walls, 15% infill, 0.2mm layer height"
    },
    {
      "id": "silicone_gasket_cord",
      "name": "Weatherproof Sealing Gasket",
      "type": "structural",
      "partId": "63ea6b9c-0c15-4d96-ae9d-84795bd32834",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=2mm+Silicone+O-Ring+Cord+Stock&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "mechanical",
      "imageUrl": "https://m.media-amazon.com/images/I/51-8Kg6NugL._SL500_.jpg",
      "material": "Silicone Rubber",
      "quantity": 1,
      "research": {
        "sourcing": [
          {
            "url": "https://www.amazon.com/dp/B0DTK4251X?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$38.99",
            "vendor": "Amazon"
          }
        ]
      },
      "amazonUrl": "https://www.amazon.com/dp/B0DTK4251X?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "dimensions": "480x2x2mm",
      "description": "Continuous silicone rubber cord inserted into the mating perimeter groove of the top/bottom shell to ensure an IP67 rating.",
      "productName": "2mm Silicone O-Ring Cord Stock",
      "purchaseUrl": "https://www.amazon.com/dp/B0DTK4251X?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "aliexpressUrl": "https://s.click.aliexpress.com/e/_c2Rs4jHV",
      "estimatedCost": 2.2
    },
    {
      "id": "shell_fastening_screws",
      "name": "M3 Shell Assembly Screws",
      "type": "misc",
      "partId": "ad04be78-d229-40fb-9ff8-137b3c326238",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=M3x16mm+Hex+Button+Head+Cap+Screws+%28316+Stainless%29&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "mechanical",
      "material": "316 Stainless Steel",
      "quantity": 6,
      "amazonUrl": "https://www.amazon.com/dp/B075PQLF83?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "dimensions": "M3x16mm",
      "description": "Corrosion-resistant stainless steel screws to clamp the top and bottom shells together across the gasket seal.",
      "productName": "M3x16mm Hex Button Head Cap Screws (316 Stainless)",
      "purchaseUrl": "https://www.amazon.com/s?k=M3x16mm+316+stainless+button+head+screws",
      "aliexpressUrl": "https://s.click.aliexpress.com/e/_c4n3h34L",
      "estimatedCost": 0.15
    },
    {
      "id": "brass_threaded_inserts",
      "name": "M3 Heat-Set Threaded Inserts",
      "type": "misc",
      "partId": "665171d8-bdcd-4439-adfe-cb26b9d34075",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=M3x4.6mm+Brass+Threaded+Heat-Set+Inserts+for+Plastic&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "mechanical",
      "material": "Brass",
      "quantity": 12,
      "amazonUrl": "https://www.amazon.com/dp/B08T7M2H4S?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "dimensions": "M3x4.6mm",
      "description": "Brass threaded inserts melted into the shell connection points to allow repeated opening/closing without stripping plastic.",
      "productName": "M3x4.6mm Brass Threaded Heat-Set Inserts for Plastic",
      "purchaseUrl": "https://www.amazon.com/s?k=M3x4.6mm+brass+threaded+inserts+3d+printing",
      "aliexpressUrl": "https://s.click.aliexpress.com/e/_c3SygiXl",
      "estimatedCost": 0.08
    },
    {
      "id": "board_mounting_screws",
      "name": "M2.5 PCB Standoff Screws",
      "type": "misc",
      "partId": "637f83df-a637-4458-a338-26a693e2ced7",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=M2.5x6mm+Pan+Head+Machine+Screws&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "mechanical",
      "imageUrl": "https://m.media-amazon.com/images/I/41XZe8SqOKL._SL500_.jpg",
      "material": "Stainless Steel",
      "quantity": 8,
      "research": {
        "sourcing": [
          {
            "url": "https://www.amazon.com/dp/B0CLCSSDH4?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$5.12",
            "vendor": "Amazon"
          },
          {
            "url": "https://www.aliexpress.com/w/wholesale-m2-5x6mm-pan-head-machine-screws.html",
            "vendor": "AliExpress"
          },
          {
            "url": "https://www.amazon.com/dp/B0F12D66S8?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$5.69",
            "vendor": "Amazon"
          },
          {
            "url": "https://www.amazon.com/dp/B01LK6XXCE?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
            "price": "$7.09",
            "vendor": "Amazon"
          }
        ]
      },
      "amazonUrl": "https://www.amazon.com/dp/B0CLCSSDH4?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "dimensions": "M2.5x6mm",
      "description": "Small screws to secure the PCB base board and sensors to the internal 3D-printed chassis sled.",
      "productName": "M2.5x6mm Pan Head Machine Screws",
      "purchaseUrl": "https://www.amazon.com/dp/B0CLCSSDH4?tag=blueprintam-20&linkCode=osi&th=1&psc=1",
      "aliexpressUrl": "https://s.click.aliexpress.com/e/_c3PyPVU1",
      "estimatedCost": 0.05
    },
    {
      "id": "gore_vent",
      "name": "Pressure Equalizing Vent",
      "type": "structural",
      "partId": "4bda9719-0754-46cd-9d2d-85839ebc4024",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=Gore+Protective+Vent+PMF100391+IP67&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "mechanical",
      "material": "Polycarbonate/PTFE",
      "quantity": 1,
      "amazonUrl": null,
      "dimensions": "12x12x10mm",
      "description": "Screw-in breathable membrane element that equalizes internal enclosure pressure while remaining completely waterproof.",
      "productName": "Gore Protective Vent PMF100391 IP67",
      "purchaseUrl": "https://www.amazon.com/s?k=Gore+protective+vent+IP67+M12",
      "aliexpressUrl": "https://s.click.aliexpress.com/e/_c4X3EfBt",
      "estimatedCost": 6.8
    },
    {
      "id": "lora_mcu_mount",
      "name": "LoRaWAN Microcontroller Mount",
      "type": "3d_printed",
      "category": "mechanical",
      "material": "PETG",
      "quantity": 1,
      "mountsFor": "lora_mcu",
      "dimensions": "60x40x12mm",
      "description": "Standoff bracket sized to the LoRaWAN Microcontroller's mounting hole pattern. M2.5 holes for board fasteners; vented underside for airflow.",
      "purchaseUrl": "",
      "estimatedCost": 2,
      "printSettings": "30% infill, 0.2mm layer, 4 perimeters"
    },
    {
      "id": "relay_module_mount",
      "name": "Low-Power Relay Module Mount",
      "type": "3d_printed",
      "category": "mechanical",
      "material": "PETG",
      "quantity": 1,
      "mountsFor": "relay_module",
      "dimensions": "50x50x20mm",
      "description": "Per-position bracket for the Low-Power Relay Module with M3 mounting holes matched to its bolt pattern. Rated for the actuator's continuous torque/load class.",
      "purchaseUrl": "",
      "estimatedCost": 2,
      "printSettings": "30% infill, 0.2mm layer, 4 perimeters"
    },
    {
      "id": "bme680_sensor",
      "name": "BME680 Environmental Sensor",
      "pins": [
        "VIN",
        "3V3",
        "GND",
        "SCK",
        "SDI",
        "CS",
        "SDO"
      ],
      "type": "sensor",
      "ebayUrl": "https://www.ebay.com/sch/i.html?_nkw=Bosch+BME680+Breakout+Board&_sacat=0&_from=R40&mkcid=1&mkrid=711-53200-19255-0&siteid=0&campid=5339153059&customid=blueprint&toolid=10001&mkevt=1",
      "category": "electrical",
      "imageUrl": "https://m.media-amazon.com/images/I/51t37e1ZtkL._SL500_.jpg",
      "quantity": 1,
      "description": "High-accuracy gas, pressure, temperature, and humidity sensor for advanced telemetry.",
      "productName": "Bosch BME680 Breakout Board",
      "purchaseUrl": "https://www.adafruit.com/product/3660",
      "estimatedCost": 15
    },
    {
      "id": "bme680_sensor_mount",
      "name": "BME680 Sensor Mount",
      "type": "3d_printed",
      "category": "mechanical",
      "quantity": 1,
      "description": "3D printed mount custom-fit for the BME680 sensor breakout board.",
      "productName": "Custom 3D Printed BME680 Mount",
      "purchaseUrl": "https://www.thingiverse.com/",
      "estimatedCost": 2
    }
  ],
  "notes": [
    "5x5 inch footprint",
    "polycarbonate enclosure",
    "solar powered",
    "sub GHz radio",
    "icosahedron octahedron shape",
    "external antenna",
    "weatherproof enclosure",
    "deep sleep focus on board sleep"
  ],
  "assembly": {
    "version": 2,
    "joints": [
      {
        "id": "mig-internal_electronics_sled-base_board",
        "parent": {
          "part": "internal_electronics_sled"
        },
        "child": {
          "part": "base_board"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": -27.5,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-bme680_sensor_mount-bme680_sensor",
        "parent": {
          "part": "bme680_sensor_mount"
        },
        "child": {
          "part": "bme680_sensor"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 5,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-internal_electronics_sled-bme680_sensor_mount",
        "parent": {
          "part": "internal_electronics_sled"
        },
        "child": {
          "part": "bme680_sensor_mount"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 15,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-octahedron_bottom_shell-gore_vent",
        "parent": {
          "part": "octahedron_bottom_shell"
        },
        "child": {
          "part": "gore_vent"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 40,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-patch_antenna_bracket-internal_antenna",
        "parent": {
          "part": "patch_antenna_bracket"
        },
        "child": {
          "part": "internal_antenna"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 0,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-octahedron_bottom_shell-internal_electronics_sled",
        "parent": {
          "part": "octahedron_bottom_shell"
        },
        "child": {
          "part": "internal_electronics_sled"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 67.5,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-lora_mcu_mount-lora_mcu",
        "parent": {
          "part": "lora_mcu_mount"
        },
        "child": {
          "part": "lora_mcu"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 0,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-internal_electronics_sled-lora_mcu_mount",
        "parent": {
          "part": "internal_electronics_sled"
        },
        "child": {
          "part": "lora_mcu_mount"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 28.5,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-lto_battery_cradle-lto_battery",
        "parent": {
          "part": "lto_battery_cradle"
        },
        "child": {
          "part": "lto_battery"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 0,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-internal_electronics_sled-lto_battery_cradle",
        "parent": {
          "part": "internal_electronics_sled"
        },
        "child": {
          "part": "lto_battery_cradle"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 0,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-silicone_gasket_cord-mppt_charger",
        "parent": {
          "part": "silicone_gasket_cord"
        },
        "child": {
          "part": "mppt_charger"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 0,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-silicone_gasket_cord-octahedron_bottom_shell",
        "parent": {
          "part": "silicone_gasket_cord"
        },
        "child": {
          "part": "octahedron_bottom_shell"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": -45,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-octahedron_bottom_shell-octahedron_top_shell",
        "parent": {
          "part": "octahedron_bottom_shell"
        },
        "child": {
          "part": "octahedron_top_shell"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 90,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-octahedron_top_shell-patch_antenna_bracket",
        "parent": {
          "part": "octahedron_top_shell"
        },
        "child": {
          "part": "patch_antenna_bracket"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 0,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-relay_module_mount-relay_module",
        "parent": {
          "part": "relay_module_mount"
        },
        "child": {
          "part": "relay_module"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 0,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-internal_electronics_sled-relay_module_mount",
        "parent": {
          "part": "internal_electronics_sled"
        },
        "child": {
          "part": "relay_module_mount"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 32.5,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      },
      {
        "id": "mig-octahedron_top_shell-solar_panel",
        "parent": {
          "part": "octahedron_top_shell"
        },
        "child": {
          "part": "solar_panel"
        },
        "type": "rigid",
        "offset": {
          "translation": {
            "x": 0,
            "y": 46.5,
            "z": 0
          },
          "rotationDeg": {
            "x": 0,
            "y": 0,
            "z": 0
          }
        }
      }
    ]
  },
  "projectName": "Solar LTO Sensor Node",
  "originalPrompt": "Yes — for a solar-powered **sensor + relay** node, the hardware is very achievable, but “indefinitely” only works if the average power stays tiny and the enclosure is designed around the solar budget rather than around the electronics alone. [news.rakwireless](https://news.rakwireless.com/how-to-access-lorawan-using-solar-energy/)\n## What the hardware should be\nA practical node stack looks like this:\n- Low-power MCU with sub-GHz radio.\n- Small environmental sensor set.\n- Solar panel matched to the load.\n- Rechargeable battery buffer.\n- Charge controller with low quiescent current.\n- RF-transparent outdoor enclosure.\n- External or carefully isolated antenna.\n\nThis is the same basic structure used in outdoor LoRaWAN and Meshtastic solar builds: solar panel, battery, charge management, radio board, and weatherproof enclosure. [news.rakwireless](https://news.rakwireless.com/how-to-access-lorawan-using-solar-energy/)\n## Power reality\nFor a 5x5 inch top surface in a traction building 3D shape that is harmonious with RF design itself like a icosahedron or an octahedron the solar ceiling is modest. Using a conservative panel output estimate, that footprint can produce roughly 2.7 W peak and about 8.2 Wh per sunny day in good conditions. That is enough for a very low-power node, but not for a chatty relay or anything with continuous radio activity. [thinkrobotics](https://thinkrobotics.com/blogs/learn/designing-solar-powered-iot-devices-a-comprehensive-guide)\n\nA useful rule of thumb:\n- **Average 0.05 W:** very easy to sustain.\n- **Average 0.1 W:** still realistic.\n- **Average 0.2 W:** possible, but needs careful design and good sun.\n- **Average 0.5 W:** too much for comfort in this footprint unless conditions are excellent.\n\nThat means the node must spend most of its life asleep and wake only briefly to sample or relay. [ti](https://www.ti.com/lit/pdf/ssztcl1)\n## Solar enclosure design\nThe enclosure should be designed so that the panel, antenna, and electronics do not fight each other.\n\nRecommended mechanical layout:\n- **Top face:** solar panel.\n- **Upper edge or separate mast:** antenna.\n- **Center cavity:** battery and board.\n- **Lower face:** sensor vents or protected sampling ports.\n- **Gasketed lid:** sealed against rain and dust.\n- **UV-stable plastic shell:** not bare metal for the main body.\n\nFor wireless devices, non-metallic enclosures are preferred because polycarbonate and ABS are RF-friendly, while metal shells block RF unless you intentionally create an RF window or use an external antenna. [eabel](https://www.eabel.com/how-to-choose-the-best-enclosure-material-for-wireless-controls/)\n## Why not full aluminum\nAluminum is good mechanically, but it creates RF problems unless the antenna is external or isolated behind a window. A fully metallic shell behaves like a Faraday cage and reduces internal antenna performance dramatically. So if you want cheap abundance and easy radio tuning, use **UV-stable polycarbonate** or ABS for the main housing, and reserve metal only for mounts, shielding, or heat spreaders where needed. [eabel](https://www.eabel.com/how-to-choose-the-best-enclosure-material-for-wireless-controls/)\n## Battery and autonomy\nIndefinite solar operation means the battery is just a buffer, not the primary energy source. The battery should cover:\n- night operation,\n- cloudy periods,\n- brief high-load bursts,\n- and startup surges.\n\nA tiny node can work with a small lithium cell or 18650-class pack if the average load is low enough, and solar IoT designs commonly pair compact panels with battery storage for off-grid uptime. [news.rakwireless](https://news.rakwireless.com/how-to-access-lorawan-using-solar-energy/)\n## Best configuration for your case\nThe strongest first build is:\n\n- **Board:** low-power LoRa/sub-GHz module.\n- **Sensors:** temperature, humidity, pressure, maybe light or gas.\n- **Power:** 3 W class solar panel plus rechargeable battery.\n- **Enclosure:** UV-stable polycarbonate outdoor shell.\n- **Antenna:** external or top-mounted to avoid enclosure losses.\n- **Firmware:** deep sleep, periodic beacon, event-triggered relay.\n\nThat matches what solar LoRa node builders are already doing in field projects: small panel, battery, waterproof case, sealed cable entry, and an antenna brought out of the enclosure. [thethingsnetwork](https://www.thethingsnetwork.org/forum/t/solar-powered-lorawan-gateway-howto/40783)\n## Size verdict\nA 5x5 inch form factor is enough for a **sensor-relay seed node** if:\n- the radio is low-power,\n- the duty cycle is very low,\n- the antenna is not buried in metal,\n- and the solar exposure is good.\n\nIt is not enough for a power-hungry mesh relay or a node that talks too often. In other words: the hardware is feasible, but the network protocol must be designed to be sparse and efficient. [youtube](https://www.youtube.com/watch?v=1XyBj_Z7ZDc)\n## Best next hardware step\nThe smartest prototype path is:\n1. Build a bench prototype around a low-power LoRa board.\n2. Measure actual average wattage.\n3. Move the same electronics into a UV-stable sealed enclosure.\n4. Add a solar panel sized to exceed the measured load by a healthy margin.\n5. Test it outdoors for several weeks before scaling.\n\nThat sequence is how you find the real autonomy boundary before committing to a production enclosure. [thethingsnetwork](https://www.thethingsnetwork.org/forum/t/solar-powered-lorawan-gateway-howto/40783)\n\nIf you want, I can turn this into a **specific enclosure and BOM concept** for a 5x5 inch node, including panel size, battery size, antenna placement, and a recommended enclosure geometry.",
  "instructionSteps": [
    {
      "id": "fabricate",
      "subSteps": [
        {
          "id": "fabricate_1",
          "title": "3D print enclosure shells and internal mounting brackets",
          "partIds": [
            "octahedron_top_shell",
            "octahedron_bottom_shell",
            "internal_electronics_sled",
            "lto_battery_cradle",
            "patch_antenna_bracket",
            "lora_mcu_mount",
            "relay_module_mount",
            "bme680_sensor_mount"
          ]
        },
        {
          "id": "fabricate_2",
          "title": "Install M3 brass heat-set inserts into bottom shell and electronics sled",
          "partIds": [
            "brass_threaded_inserts",
            "octahedron_bottom_shell",
            "internal_electronics_sled"
          ]
        },
        {
          "id": "fabricate_3",
          "title": "Install the silicone gasket cord into the bottom shell groove",
          "partIds": [
            "silicone_gasket_cord",
            "octahedron_bottom_shell"
          ]
        },
        {
          "id": "fabricate_4",
          "title": "Mount the pressure equalizing Gore vent into the bottom shell",
          "partIds": [
            "gore_vent",
            "octahedron_bottom_shell"
          ]
        }
      ]
    },
    {
      "id": "wire",
      "subSteps": [
        {
          "id": "wire_1",
          "title": "Solder solar panel output leads to the MPPT charger input",
          "partIds": [
            "solar_panel",
            "mppt_charger"
          ]
        },
        {
          "id": "wire_2",
          "title": "Wire MPPT charger outputs to LTO battery and WisBlock base board",
          "partIds": [
            "mppt_charger",
            "lto_battery",
            "base_board"
          ]
        },
        {
          "id": "wire_3",
          "title": "Wire power and I2C lines from WisBlock Base Board to BME680 sensor",
          "partIds": [
            "base_board",
            "lora_mcu",
            "bme680_sensor"
          ]
        },
        {
          "id": "wire_4",
          "title": "Wire the relay module coil pins to the LoRa MCU and WisBlock base board",
          "partIds": [
            "base_board",
            "lora_mcu",
            "relay_module"
          ]
        },
        {
          "id": "wire_5",
          "title": "Connect RF feed and ground from LoRa MCU to internal patch antenna",
          "partIds": [
            "lora_mcu",
            "internal_antenna"
          ]
        }
      ]
    },
    {
      "id": "bringup",
      "subSteps": [
        {
          "id": "bringup_1",
          "title": "Verify battery charge voltage and MPPT output with multimeter",
          "partIds": [
            "mppt_charger",
            "lto_battery",
            "base_board"
          ]
        },
        {
          "id": "bringup_2",
          "title": "Upload test sketch to scan I2C bus and verify BME680 detection",
          "partIds": [
            "lora_mcu",
            "bme680_sensor"
          ]
        },
        {
          "id": "bringup_3",
          "title": "Test low-power relay triggering code and measure deep sleep currents",
          "partIds": [
            "lora_mcu",
            "relay_module"
          ]
        },
        {
          "id": "bringup_4",
          "title": "Perform LoRaWAN join sequence test to confirm antenna and RF circuit",
          "partIds": [
            "lora_mcu",
            "internal_antenna"
          ]
        }
      ]
    },
    {
      "id": "assemble",
      "subSteps": [
        {
          "id": "assemble_1",
          "title": "Secure BME680, LoRa MCU, and Relay Module to their respective 3D mounts",
          "partIds": [
            "bme680_sensor",
            "bme680_sensor_mount",
            "lora_mcu",
            "lora_mcu_mount",
            "relay_module",
            "relay_module_mount"
          ]
        },
        {
          "id": "assemble_2",
          "title": "Mount the base board, battery cradle, and modular mounts to the internal electronics sled",
          "partIds": [
            "internal_electronics_sled",
            "base_board",
            "lto_battery_cradle",
            "lto_battery",
            "lora_mcu_mount",
            "relay_module_mount",
            "bme680_sensor_mount",
            "board_mounting_screws"
          ]
        },
        {
          "id": "assemble_3",
          "title": "Mount top solar panel and slide patch antenna bracket into top shell guide slots",
          "partIds": [
            "octahedron_top_shell",
            "solar_panel",
            "patch_antenna_bracket",
            "internal_antenna"
          ]
        },
        {
          "id": "assemble_4",
          "title": "Secure electronics sled into bottom shell, connect remaining sub-assemblies, and fasten top shell",
          "partIds": [
            "internal_electronics_sled",
            "octahedron_bottom_shell",
            "octahedron_top_shell",
            "shell_fastening_screws"
          ]
        }
      ]
    }
  ],
  "wiringCleanedHash": "75f9c0c8-53db-4789-b086-f53cbd7bcaa8::base_board:SYS_5V|3V3|GND|I2C_SDA|I2C_SCL|A0|AIN0|SOLAR_IN|BATT_IN,bme680_sensor:VIN|3V3|GND|SCK|SDI|CS|SDO,internal_antenna:RF_FEED|GND,lora_mcu:3V3|GND|I2C_SDA|I2C_SCL|TXD|RXD|AIN0|RST|ANTENNA_RF,lto_battery:ANODE|CATHODE,mppt_charger:VIN_DC|VSTOR|VBAT|VBAT_OV|VBAT_UV|GND,relay_module:COIL_PLUS|COIL_MINUS|COM|NO|NC,solar_panel:POS|NEG::data|lora_mcu|AIN0|relay_module|COIL_PLUS|gpio|;data|lora_mcu|ANTENNA_RF|internal_antenna|RF_FEED||0.1V_RF_signal_level_approximate;data|lora_mcu|I2C_SCL|base_board|I2C_SCL|i2c|;data|lora_mcu|I2C_SCL|bme680_sensor|SCK|i2c|;data|lora_mcu|I2C_SDA|base_board|I2C_SDA|i2c|;data|lora_mcu|I2C_SDA|bme680_sensor|SDI|i2c|;power|base_board|3V3|bme680_sensor|3V3||3.3V;power|base_board|3V3|lora_mcu|3V3||3.3V;power|base_board|3V3|relay_module|COM||3.3V;power|base_board|GND|bme680_sensor|GND||0V;power|base_board|GND|lora_mcu|GND||;power|base_board|GND|relay_module|COIL_MINUS||;power|lora_mcu|GND|internal_antenna|GND||0V;power|lto_battery|CATHODE|mppt_charger|GND||0V;power|mppt_charger|GND|base_board|GND||;power|mppt_charger|VBAT|lto_battery|ANODE||2.4V;power|mppt_charger|VSTOR|base_board|SOLAR_IN||3.3V;power|solar_panel|NEG|mppt_charger|GND||;power|solar_panel|POS|mppt_charger|VIN_DC||5.5V",
  "projectDescription": "Constructed inside a compact, weatherproof polycarbonate enclosure, this solar-powered environmental monitor uses a BME680 sensor to track localized climate metrics. The system leverages a low-power LoRaWAN microcontroller, sub-GHz radio, and LTO battery charged via MPPT to sustain ultra-low-power deep sleep cycles indefinitely.",
  "imagePromptSnapshot": {
    "description": "Yes — for a solar-powered **sensor + relay** node, the hardware is very achievable, but “indefinitely” only works if the average power stays tiny and the enclosure is designed around the solar budget rather than around the electronics alone. [news.rakwireless](https://news.rakwireless.com/how-to-access-lorawan-using-solar-energy/)\n## What the hardware should be\nA practical node stack looks like this:\n- Low-power MCU with sub-GHz radio.\n- Small environmental sensor set.\n- Solar panel matched to the load.\n- Rechargeable battery buffer.\n- Charge controller with low quiescent current.\n- RF-transparent outdoor enclosure.\n- External or carefully isolated antenna.\n\nThis is the same basic structure used in outdoor LoRaWAN and Meshtastic solar builds: solar panel, battery, charge management, radio board, and weatherproof enclosure. [news.rakwireless](https://news.rakwireless.com/how-to-access-lorawan-using-solar-energy/)\n## Power reality\nFor a 5x5 inch top surface in a traction building 3D shape that is harmonious with RF design itself like a icosahedron or an octahedron the solar ceiling is modest. Using a conservative panel output estimate, that footprint can produce roughly 2.7 W peak and about 8.2 Wh per sunny day in good conditions. That is enough for a very low-power node, but not for a chatty relay or anything with continuous radio activity. [thinkrobotics](https://thinkrobotics.com/blogs/learn/designing-solar-powered-iot-devices-a-comprehensive-guide)\n\nA useful rule of thumb:\n- **Average 0.05 W:** very easy to sustain.\n- **Average 0.1 W:** still realistic.\n- **Average 0.2 W:** possible, but needs careful design and good sun.\n- **Average 0.5 W:** too much for comfort in this footprint unless conditions are excellent.\n\nThat means the node must spend most of its life asleep and wake only briefly to sample or relay. [ti](https://www.ti.com/lit/pdf/ssztcl1)\n## Solar enclosure design\nThe enclosure should be designed so that the panel, antenna, and electronics do not fight each other.\n\nRecommended mechanical layout:\n- **Top face:** solar panel.\n- **Upper edge or separate mast:** antenna.\n- **Center cavity:** battery and board.\n- **Lower face:** sensor vents or protected sampling ports.\n- **Gasketed lid:** sealed against rain and dust.\n- **UV-stable plastic shell:** not bare metal for the main body.\n\nFor wireless devices, non-metallic enclosures are preferred because polycarbonate and ABS are RF-friendly, while metal shells block RF unless you intentionally create an RF window or use an external antenna. [eabel](https://www.eabel.com/how-to-choose-the-best-enclosure-material-for-wireless-controls/)\n## Why not full aluminum\nAluminum is good mechanically, but it creates RF problems unless the antenna is external or isolated behind a window. A fully metallic shell behaves like a Faraday cage and reduces internal antenna performance dramatically. So if you want cheap abundance and easy radio tuning, use **UV-stable polycarbonate** or ABS for the main housing, and reserve metal only for mounts, shielding, or heat spreaders where needed. [eabel](https://www.eabel.com/how-to-choose-the-best-enclosure-material-for-wireless-controls/)\n## Battery and autonomy\nIndefinite solar operation means the battery is just a buffer, not the primary energy source. The battery should cover:\n- night operation,\n- cloudy periods,\n- brief high-load bursts,\n- and startup surges.\n\nA tiny node can work with a small lithium cell or 18650-class pack if the average load is low enough, and solar IoT designs commonly pair compact panels with battery storage for off-grid uptime. [news.rakwireless](https://news.rakwireless.com/how-to-access-lorawan-using-solar-energy/)\n## Best configuration for your case\nThe strongest first build is:\n\n- **Board:** low-power LoRa/sub-GHz module.\n- **Sensors:** temperature, humidity, pressure, maybe light or gas.\n- **Power:** 3 W class solar panel plus rechargeable battery.\n- **Enclosure:** UV-stable polycarbonate outdoor shell.\n- **Antenna:** external or top-mounted to avoid enclosure losses.\n- **Firmware:** deep sleep, periodic beacon, event-triggered relay.\n\nThat matches what solar LoRa node builders are already doing in field projects: small panel, battery, waterproof case, sealed cable entry, and an antenna brought out of the enclosure. [thethingsnetwork](https://www.thethingsnetwork.org/forum/t/solar-powered-lorawan-gateway-howto/40783)\n## Size verdict\nA 5x5 inch form factor is enough for a **sensor-relay seed node** if:\n- the radio is low-power,\n- the duty cycle is very low,\n- the antenna is not buried in metal,\n- and the solar exposure is good.\n\nIt is not enough for a power-hungry mesh relay or a node that talks too often. In other words: the hardware is feasible, but the network protocol must be designed to be sparse and efficient. [youtube](https://www.youtube.com/watch?v=1XyBj_Z7ZDc)\n## Best next hardware step\nThe smartest prototype path is:\n1. Build a bench prototype around a low-power LoRa board.\n2. Measure actual average wattage.\n3. Move the same electronics into a UV-stable sealed enclosure.\n4. Add a solar panel sized to exceed the measured load by a healthy margin.\n5. Test it outdoors for several weeks before scaling.\n\nThat sequence is how you find the real autonomy boundary before committing to a production enclosure. [thethingsnetwork](https://www.thethingsnetwork.org/forum/t/solar-powered-lorawan-gateway-howto/40783)\n\nIf you want, I can turn this into a **specific enclosure and BOM concept** for a 5x5 inch node, including panel size, battery size, antenna placement, and a recommended enclosure geometry.",
    "tags": [
      "5x5 inch footprint",
      "polycarbonate enclosure",
      "solar powered",
      "sub GHz radio",
      "icosahedron octahedron shape",
      "external antenna",
      "weatherproof enclosure",
      "deep sleep focus on board sleep"
    ],
    "technicalDescription": "Constructed inside a compact, weatherproof polycarbonate enclosure, this solar-powered environmental monitor uses a BME680 sensor to track localized climate metrics. The system leverages a low-power LoRaWAN microcontroller, sub-GHz radio, and LTO battery charged via MPPT to sustain ultra-low-power deep sleep cycles indefinitely."
  },
  "instructionPreamble": {
    "tools": [
      "Soldering iron with fine tip",
      "Brass heat-set insert installation tip",
      "M3 hex key",
      "M2.5 hex key",
      "M2 hex key",
      "Wire strippers",
      "Multimeter",
      "3D printer (ASA and PETG capable)"
    ],
    "assumptions": [
      "3D printing slicing software is set up for ASA and PETG materials.",
      "Basic electronics soldering experience and safety equipment are available.",
      "Arduino IDE or VS Code/PlatformIO is installed with required LoRaWAN and BME680 libraries."
    ]
  },
  "electricalConnections": [
    {
      "type": "data",
      "label": "Relay control pin",
      "source": "lora_mcu",
      "target": "relay_module",
      "protocol": "gpio",
      "sourcePin": "AIN0",
      "targetPin": "COIL_PLUS"
    },
    {
      "type": "power",
      "source": "base_board",
      "target": "bme680_sensor",
      "voltage": "3.3V",
      "sourcePin": "3V3",
      "targetPin": "3V3"
    },
    {
      "type": "power",
      "source": "base_board",
      "target": "bme680_sensor",
      "voltage": "0V",
      "sourcePin": "GND",
      "targetPin": "GND"
    },
    {
      "type": "data",
      "source": "lora_mcu",
      "target": "bme680_sensor",
      "protocol": "i2c",
      "sourcePin": "I2C_SDA",
      "targetPin": "SDI"
    },
    {
      "type": "data",
      "source": "lora_mcu",
      "target": "bme680_sensor",
      "protocol": "i2c",
      "sourcePin": "I2C_SCL",
      "targetPin": "SCK"
    },
    {
      "type": "data",
      "source": "lora_mcu",
      "target": "internal_antenna",
      "voltage": "0.1V_RF_signal_level_approximate",
      "sourcePin": "ANTENNA_RF",
      "targetPin": "RF_FEED"
    },
    {
      "type": "power",
      "source": "lora_mcu",
      "target": "internal_antenna",
      "voltage": "0V",
      "sourcePin": "GND",
      "targetPin": "GND"
    },
    {
      "type": "power",
      "source": "solar_panel",
      "target": "mppt_charger",
      "sourcePin": "NEG",
      "targetPin": "GND"
    },
    {
      "type": "power",
      "source": "mppt_charger",
      "target": "base_board",
      "sourcePin": "GND",
      "targetPin": "GND"
    },
    {
      "type": "power",
      "source": "base_board",
      "target": "lora_mcu",
      "sourcePin": "GND",
      "targetPin": "GND"
    },
    {
      "type": "power",
      "source": "base_board",
      "target": "relay_module",
      "sourcePin": "GND",
      "targetPin": "COIL_MINUS"
    },
    {
      "type": "power",
      "source": "solar_panel",
      "target": "mppt_charger",
      "voltage": "5.5V",
      "sourcePin": "POS",
      "targetPin": "VIN_DC"
    },
    {
      "type": "power",
      "source": "mppt_charger",
      "target": "lto_battery",
      "voltage": "2.4V",
      "sourcePin": "VBAT",
      "targetPin": "ANODE"
    },
    {
      "type": "power",
      "source": "lto_battery",
      "target": "mppt_charger",
      "voltage": "0V",
      "sourcePin": "CATHODE",
      "targetPin": "GND"
    },
    {
      "type": "power",
      "source": "mppt_charger",
      "target": "base_board",
      "voltage": "3.3V",
      "sourcePin": "VSTOR",
      "targetPin": "SOLAR_IN"
    },
    {
      "type": "power",
      "source": "base_board",
      "target": "lora_mcu",
      "voltage": "3.3V",
      "sourcePin": "3V3",
      "targetPin": "3V3"
    },
    {
      "type": "power",
      "source": "base_board",
      "target": "relay_module",
      "voltage": "3.3V",
      "sourcePin": "3V3",
      "targetPin": "COM"
    },
    {
      "type": "data",
      "source": "lora_mcu",
      "target": "base_board",
      "protocol": "i2c",
      "sourcePin": "I2C_SDA",
      "targetPin": "I2C_SDA"
    },
    {
      "type": "data",
      "source": "lora_mcu",
      "target": "base_board",
      "protocol": "i2c",
      "sourcePin": "I2C_SCL",
      "targetPin": "I2C_SCL"
    }
  ],
  "mechanicalConnections": [
    {
      "delta": {
        "x": 0,
        "y": -90,
        "z": 0
      },
      "label": "M3 Shell Assembly Screws into Heat-Set Inserts",
      "source": "octahedron_top_shell",
      "target": "octahedron_bottom_shell"
    },
    {
      "delta": {
        "x": 0,
        "y": -45,
        "z": 0
      },
      "label": "Pressed into groove",
      "source": "silicone_gasket_cord",
      "target": "octahedron_bottom_shell"
    },
    {
      "delta": {
        "x": 0,
        "y": -43,
        "z": 0
      },
      "label": "Heat-set installation",
      "source": "brass_threaded_inserts",
      "target": "octahedron_bottom_shell"
    },
    {
      "delta": {
        "x": 0,
        "y": 0,
        "z": 0
      },
      "label": "Thru-hole clearance",
      "source": "shell_fastening_screws",
      "target": "octahedron_top_shell"
    },
    {
      "delta": {
        "x": 0,
        "y": -40,
        "z": 0
      },
      "label": "Threaded install with O-ring",
      "source": "gore_vent",
      "target": "octahedron_bottom_shell"
    },
    {
      "delta": {
        "x": 0,
        "y": -67.5,
        "z": 0
      },
      "label": "M3 bolts to molded bosses",
      "source": "internal_electronics_sled",
      "target": "octahedron_bottom_shell"
    },
    {
      "delta": {
        "x": 0,
        "y": -28.5,
        "z": 0
      },
      "label": "Integrated snap-fit",
      "source": "lora_mcu_mount",
      "target": "internal_electronics_sled"
    },
    {
      "delta": {
        "x": 0,
        "y": -32.5,
        "z": 0
      },
      "label": "M2.5 screws",
      "source": "relay_module_mount",
      "target": "internal_electronics_sled"
    },
    {
      "delta": {
        "x": 0,
        "y": -25.5,
        "z": 0
      },
      "label": "Threaded into sled brass inserts",
      "source": "board_mounting_screws",
      "target": "internal_electronics_sled"
    },
    {
      "delta": {
        "x": 0,
        "y": 0,
        "z": 0
      },
      "label": "M3 bolts",
      "source": "lto_battery_cradle",
      "target": "internal_electronics_sled"
    },
    {
      "delta": {
        "x": 0,
        "y": 0,
        "z": 0
      },
      "label": "Slid into molded guide slots",
      "source": "patch_antenna_bracket",
      "target": "octahedron_top_shell"
    },
    {
      "delta": {
        "x": 0,
        "y": 46.5,
        "z": 0
      },
      "label": "mount",
      "source": "octahedron_top_shell",
      "target": "solar_panel"
    },
    {
      "delta": {
        "x": 0,
        "y": -27.5,
        "z": 0
      },
      "label": "mount",
      "source": "internal_electronics_sled",
      "target": "base_board"
    },
    {
      "delta": {
        "x": 0,
        "y": 0,
        "z": 0
      },
      "label": "mount",
      "source": "lto_battery_cradle",
      "target": "lto_battery"
    },
    {
      "delta": {
        "x": 0,
        "y": 0,
        "z": 0
      },
      "label": "mount",
      "source": "patch_antenna_bracket",
      "target": "internal_antenna"
    },
    {
      "delta": {
        "x": 0,
        "y": 0,
        "z": 0
      },
      "label": "mount",
      "source": "lora_mcu_mount",
      "target": "lora_mcu"
    },
    {
      "delta": {
        "x": 0,
        "y": 0,
        "z": 0
      },
      "label": "mount",
      "source": "relay_module_mount",
      "target": "relay_module"
    },
    {
      "delta": {
        "x": 0,
        "y": 0,
        "z": 0
      },
      "label": "attached",
      "source": "silicone_gasket_cord",
      "target": "mppt_charger"
    },
    {
      "delta": {
        "x": 0,
        "y": -15,
        "z": 0
      },
      "label": "M2.5 screws",
      "source": "bme680_sensor_mount",
      "target": "internal_electronics_sled"
    },
    {
      "delta": {
        "x": 0,
        "y": 5,
        "z": 0
      },
      "label": "M2 screws",
      "source": "bme680_sensor_mount",
      "target": "bme680_sensor"
    }
  ],
  "projectId": "75f9c0c8-53db-4789-b086-f53cbd7bcaa8"
}