{"title":"Sensors","description":"General-purpose sensor modules for Arduino, ESP32 and Raspberry Pi projects — temperature, humidity, pressure, distance and proximity sensing.","products":[{"product_id":"lj12a3-2-z-bx-proximity-sensor-npn-no-3-wire","title":"LJ12A3-2-Z\/BX Inductive Proximity Sensor – NPN NO 12mm IP65 3-Wire","description":"\u003cstyle\u003e\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@400;500;600;700\u0026display=swap');\n  .nzn-desc .tagline{font-family:'DM Sans',sans-serif;font-size:17px;line-height:1.7;color:#333;border-left:3px solid #e07e2c;padding-left:16px;margin-bottom:32px}\n  .nzn-desc .section-title{font-family:'DM Sans',sans-serif;font-size:15px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#e07e2c;margin-bottom:14px}\n  .nzn-desc .specs-table{width:100%;border-collapse:collapse;margin-bottom:32px;font-family:'DM Sans',sans-serif;font-size:14px}\n  .nzn-desc .specs-table tr{border-bottom:1px solid #ebebeb}\n  .nzn-desc .specs-table tr:last-child{border-bottom:none}\n  .nzn-desc .specs-table td{padding:10px 8px}\n  .nzn-desc .specs-table td:first-child{color:#888;width:42%;font-size:14px}\n  .nzn-desc .specs-table td:last-child{font-weight:600;color:#1a1a1a}\n  .nzn-desc .uses-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:32px}\n  .nzn-desc .use-item{background:#f7f7f7;border-left:3px solid #e07e2c;padding:12px 14px;font-family:'DM Sans',sans-serif;font-size:13.5px;line-height:1.5;color:#2a2a2a}\n  .nzn-desc .note{background:#fafafa;border:1px solid #e8e8e8;border-radius:4px;padding:14px 16px;font-family:'DM Sans',sans-serif;font-size:13px;color:#888;line-height:1.6}\n  .nzn-desc .note strong{color:#555}\n  .nzn-desc .setup-box{background:#f0f7ff;border-left:3px solid #4a90d9;padding:14px 16px;font-family:'DM Sans',sans-serif;font-size:13px;color:#2c4a6e;line-height:1.7;margin-bottom:32px;border-radius:0 4px 4px 0}\n  .nzn-desc .faq-item{margin-bottom:12px}\n  .nzn-desc .faq-q{font-family:'DM Sans',sans-serif;font-size:13.5px;font-weight:700;color:#1a1a1a;margin-bottom:3px}\n  .nzn-desc .faq-a{font-family:'DM Sans',sans-serif;font-size:13.5px;color:#555;line-height:1.5;padding-left:14px;border-left:2px solid #e07e2c}\n  .nzn-desc hr.divider{border:none;border-top:1px solid #ebebeb;margin:28px 0}\n\u003c\/style\u003e\n\u003cdiv class=\"nzn-desc\" style=\"max-width:1200px;margin:0 auto;\"\u003e\n  \u003cp class=\"tagline\"\u003e12mm cylindrical inductive proximity sensor with NPN normally-open output and IP65 weather resistance. Detects ferrous and non-ferrous metals within 2mm without physical contact. 6–36V DC, 500Hz switching frequency. Standard for CNC homing, 3D printer bed levelling, conveyor systems, and robotics. Includes clamp nuts and washers.\u003c\/p\u003e\n  \u003chr class=\"divider\"\u003e\n  \u003cp class=\"section-title\"\u003eSpecifications\u003c\/p\u003e\n  \u003ctable class=\"specs-table\"\u003e\n    \u003ctr\u003e\n\u003ctd\u003eModel\u003c\/td\u003e\n\u003ctd\u003eLJ12A3-2-Z\/BX\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eBody Diameter\u003c\/td\u003e\n\u003ctd\u003eM12 (12mm)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eBody Length\u003c\/td\u003e\n\u003ctd\u003e~64mm\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eSensing Distance\u003c\/td\u003e\n\u003ctd\u003e2mm (±10%)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eOutput Type\u003c\/td\u003e\n\u003ctd\u003eNPN, Normally Open (NO)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eSupply Voltage\u003c\/td\u003e\n\u003ctd\u003e6–36V DC\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eOutput Current\u003c\/td\u003e\n\u003ctd\u003e≤300mA (sink)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eSwitching Frequency\u003c\/td\u003e\n\u003ctd\u003e500Hz\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eCable Length\u003c\/td\u003e\n\u003ctd\u003e~100cm\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eIP Rating\u003c\/td\u003e\n\u003ctd\u003eIP65\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eHousing Material\u003c\/td\u003e\n\u003ctd\u003eNickel-plated brass\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eTarget Material\u003c\/td\u003e\n\u003ctd\u003eFerrous \u0026amp; non-ferrous metals\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003c\/table\u003e\n  \u003chr class=\"divider\"\u003e\n  \u003cp class=\"section-title\"\u003eWiring — 3-Wire NPN\u003c\/p\u003e\n  \u003ctable class=\"specs-table\"\u003e\n    \u003ctr\u003e\n\u003ctd\u003eBrown wire\u003c\/td\u003e\n\u003ctd\u003eVCC — connect to positive supply (6–36V DC)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eBlue wire\u003c\/td\u003e\n\u003ctd\u003eGND — connect to negative \/ ground of supply\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eBlack wire\u003c\/td\u003e\n\u003ctd\u003eSignal output — pulls LOW when metal detected (NPN open collector). Connect to your input pin with a 10kΩ pull-up to VCC.\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003c\/table\u003e\n  \u003cdiv class=\"setup-box\"\u003e\n    \u003cstrong\u003eUsing with Arduino (5V):\u003c\/strong\u003e Power the sensor from the Arduino 5V pin (minimum operating voltage). Connect Brown → 5V, Blue → GND, Black → digital input pin. Add a 10kΩ resistor from the input pin to 5V as a pull-up. The pin reads HIGH when no metal, LOW when metal is detected.\u003cbr\u003e\u003cbr\u003e\n    \u003cstrong\u003eUsing with 12V\/24V PLC or system:\u003c\/strong\u003e Power from your 12V\/24V supply. Use a voltage divider or logic level converter on the black signal wire before connecting to a 5V or 3.3V microcontroller input.\n  \u003c\/div\u003e\n  \u003chr class=\"divider\"\u003e\n  \u003cp class=\"section-title\"\u003eWhat's Included\u003c\/p\u003e\n  \u003ctable class=\"specs-table\"\u003e\n    \u003ctr\u003e\n\u003ctd\u003e1 ×\u003c\/td\u003e\n\u003ctd\u003eLJ12A3-2-Z\/BX inductive proximity sensor with ~100cm cable\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e2 ×\u003c\/td\u003e\n\u003ctd\u003eClamp nuts\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e2 ×\u003c\/td\u003e\n\u003ctd\u003eLock washers\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003c\/table\u003e\n  \u003chr class=\"divider\"\u003e\n  \u003cp class=\"section-title\"\u003eCommon Uses\u003c\/p\u003e\n  \u003cdiv class=\"uses-grid\"\u003e\n    \u003cdiv class=\"use-item\"\u003eCNC machine homing, end-stops \u0026amp; limit switch replacement\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003e3D printer bed levelling \u0026amp; axis limit detection\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eConveyor belt object counting \u0026amp; position sensing\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eRobotic arm \u0026amp; actuator position feedback\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eIndustrial metal part presence\/absence detection\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eDIY automation \u0026amp; maker projects\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003chr class=\"divider\"\u003e\n  \u003cp class=\"section-title\"\u003eCommon Questions\u003c\/p\u003e\n  \u003cdiv class=\"faq-item\"\u003e\n    \u003cdiv class=\"faq-q\"\u003eWill this detect aluminium or copper?\u003c\/div\u003e\n    \u003cdiv class=\"faq-a\"\u003eYes, but at a reduced sensing distance — typically 40–50% of the rated 2mm. So expect reliable detection at ~1mm for non-ferrous metals. For iron\/steel, the full 2mm range applies.\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"faq-item\"\u003e\n    \u003cdiv class=\"faq-q\"\u003eCan I use this as a filament runout sensor on my 3D printer?\u003c\/div\u003e\n    \u003cdiv class=\"faq-a\"\u003eNot directly — it detects metals only, not plastic filament. It's ideal for axis limit switches and bed levelling probes on metal print beds, but not for filament runout detection.\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003chr class=\"divider\"\u003e\n  \u003cp class=\"note\"\u003e\u003cstrong\u003ePlease note:\u003c\/strong\u003e Detects metal only. Non-ferrous metals have ~40–50% reduced effective sensing range. Do not exceed 36V supply voltage. Includes 2 clamp nuts and 2 lock washers.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"Default Title","offer_id":42680889868384,"sku":"SEN-LJ12A3-NPN-NO","price":8.99,"currency_code":"NZD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/main-hero-lj12a3-2-zbx-orange.png?v=1777361426"},{"product_id":"dht22-am2302-temperature-humidity-sensor","title":"DHT22 \/ AM2302 Temperature \u0026 Humidity Sensor Module","description":"\u003cstyle\u003e\n  .nzn-desc {\n    width: 100%;\n    max-width: 1400px;\n    margin: 0 auto;\n    font-family: inherit;\n    color: #101114;\n    padding: 0 5%;\n    box-sizing: border-box;\n  }\n\n  .nzn-desc,\n  .nzn-desc * {\n    box-sizing: border-box;\n  }\n\n  .nzn-desc .nzn-tabs {\n    width: 100%;\n    display: flex;\n    gap: 30px;\n    border-bottom: 1px solid #e7e7e7;\n    overflow-x: auto;\n    scrollbar-width: none;\n    min-height: 55px;\n    align-items: flex-end;\n  }\n\n  .nzn-desc .nzn-tabs::-webkit-scrollbar {\n    display: none;\n  }\n\n  .nzn-desc .nzn-tab {\n    flex: 0 0 auto;\n    background: none;\n    border: 0;\n    padding: 16px 0;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 800;\n    white-space: nowrap;\n    border-bottom: 3px solid transparent;\n    color: #101114;\n    cursor: pointer;\n  }\n\n  .nzn-desc .nzn-tab.is-active {\n    border-bottom-color: #ff7a2f;\n  }\n\n  .nzn-desc .nzn-card {\n    border: 1px solid #e7e7e7;\n    border-top: 0;\n    border-radius: 0 0 18px 18px;\n    padding: 38px 34px;\n    background: #fff;\n  }\n\n  .nzn-desc .nzn-panel {\n    display: none;\n  }\n\n  .nzn-desc .nzn-panel.is-active {\n    display: block;\n  }\n\n  .nzn-desc .nzn-overview {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 46px;\n  }\n\n  .nzn-desc p {\n    font-size: 15px;\n    line-height: 1.65;\n    color: #60646c;\n    margin: 0;\n  }\n\n  .nzn-desc .nzn-checks {\n    list-style: none;\n    padding: 0;\n    margin: 34px auto 0;\n    display: grid;\n    gap: 18px;\n    width: fit-content;\n    text-align: left;\n  }\n\n  .nzn-desc .nzn-checks li {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    font-size: 14.5px;\n    color: #101114;\n  }\n\n  .nzn-desc .nzn-checks li::before {\n    content: \"✓\";\n    color: #ff7a2f;\n    font-weight: 900;\n  }\n\n  .nzn-desc .nzn-section-title {\n    margin: 0 0 30px;\n    text-transform: uppercase;\n    letter-spacing: .12em;\n    font-size: 14px;\n    font-weight: 900;\n    color: #ff7a2f;\n  }\n\n  .nzn-desc .nzn-started {\n    background: #eef6ff;\n    border-left: 4px solid #4a9af7;\n    border-radius: 16px;\n    padding: 26px 28px;\n  }\n\n  .nzn-desc .nzn-started h3 {\n    margin: 0 0 20px;\n    font-size: 14px;\n    font-weight: 900;\n    color: #1f4268;\n    text-transform: uppercase;\n  }\n\n  .nzn-desc .nzn-step {\n    display: grid;\n    grid-template-columns: 34px 1fr;\n    gap: 14px;\n    margin-bottom: 18px;\n  }\n\n  .nzn-desc .nzn-step span {\n    width: 34px;\n    height: 34px;\n    border-radius: 999px;\n    background: #fff;\n    border: 1px solid #d9e9fb;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-weight: 900;\n  }\n\n  .nzn-desc .nzn-specs {\n    border-top: 1px solid #e7e7e7;\n  }\n\n  .nzn-desc .nzn-specs div {\n    display: grid;\n    grid-template-columns: minmax(180px, .8fr) 1.4fr;\n    gap: 24px;\n    padding: 15px 14px;\n    border-bottom: 1px solid #e7e7e7;\n    font-size: 14px;\n  }\n\n  .nzn-desc .nzn-specs div:nth-child(even) {\n    background: #fafafa;\n  }\n\n  .nzn-desc .nzn-specs span {\n    color: #60646c;\n  }\n\n  .nzn-desc .nzn-specs strong {\n    font-weight: 800;\n    color: #101114;\n  }\n\n  .nzn-desc .nzn-uses {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 12px;\n  }\n\n  .nzn-desc .nzn-use {\n    border-left: 3px solid #ff7a2f;\n    background: #f7f7f7;\n    padding: 15px 16px;\n    font-size: 14px;\n    border-radius: 0 8px 8px 0;\n  }\n\n  .nzn-desc .nzn-faq {\n    display: grid;\n    gap: 12px;\n  }\n\n  .nzn-desc .nzn-faq-item {\n    border: 1px solid #e7e7e7;\n    border-radius: 12px;\n    padding: 16px 18px;\n    background: #fff;\n  }\n\n  .nzn-desc .nzn-note {\n    margin-top: 30px;\n    background: #fafafa;\n    border: 1px solid #e7e7e7;\n    border-radius: 12px;\n    padding: 16px 18px;\n    text-align: center;\n    color: #60646c;\n    font-size: 13px;\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"nzn-desc\"\u003e\n  \u003cdiv class=\"nzn-tabs\"\u003e\n    \u003cbutton class=\"nzn-tab is-active\" type=\"button\" data-tab=\"overview\"\u003eOverview\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"specifications\"\u003eSpecifications\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"howitworks\"\u003eHow It Works\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"included\"\u003eWhat's Included\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"uses\"\u003eCommon Uses\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"faqs\"\u003eFAQs\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"nzn-card\"\u003e\n\n    \u003cdiv class=\"nzn-panel is-active\" data-panel=\"overview\"\u003e\n      \u003cdiv class=\"nzn-overview\"\u003e\n\n        \u003cdiv\u003e\n          \u003cp\u003e\n            High-accuracy DHT22 \/ AM2302 digital temperature and humidity sensor module for Arduino, ESP32, Raspberry Pi, ESPHome, and Home Assistant projects. Offers significantly better accuracy and wider operating range than the popular DHT11 sensor.\n          \u003c\/p\u003e\n\n          \u003cul class=\"nzn-checks\"\u003e\n            \u003cli\u003eTemperature \u0026amp; humidity sensing\u003c\/li\u003e\n            \u003cli\u003eDigital single-bus output\u003c\/li\u003e\n            \u003cli\u003eBuilt-in pull-up resistor\u003c\/li\u003e\n            \u003cli\u003e3.3V \u0026amp; 5V compatible\u003c\/li\u003e\n            \u003cli\u003eIdeal for smart home projects\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nzn-started\"\u003e\n          \u003ch3\u003eQuick Start\u003c\/h3\u003e\n\n          \u003cdiv class=\"nzn-step\"\u003e\n            \u003cspan\u003e1\u003c\/span\u003e\n            \u003cdiv\u003e\n              \u003cstrong\u003eConnect power\u003c\/strong\u003e\n              \u003cp\u003eWire VCC to 3.3V or 5V and connect GND.\u003c\/p\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-step\"\u003e\n            \u003cspan\u003e2\u003c\/span\u003e\n            \u003cdiv\u003e\n              \u003cstrong\u003eConnect DATA pin\u003c\/strong\u003e\n              \u003cp\u003eUse any digital GPIO pin on Arduino or ESP32.\u003c\/p\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-step\"\u003e\n            \u003cspan\u003e3\u003c\/span\u003e\n            \u003cdiv\u003e\n              \u003cstrong\u003eInstall library\u003c\/strong\u003e\n              \u003cp\u003eUse the standard DHT sensor library or native ESPHome support.\u003c\/p\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-step\"\u003e\n            \u003cspan\u003e4\u003c\/span\u003e\n            \u003cdiv\u003e\n              \u003cstrong\u003eRead live data\u003c\/strong\u003e\n              \u003cp\u003eBegin monitoring temperature and humidity instantly.\u003c\/p\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n        \u003cstrong\u003ePlease note:\u003c\/strong\u003e This module includes the onboard pull-up resistor already fitted for plug-and-play operation.\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nzn-panel\" data-panel=\"specifications\"\u003e\n      \u003ch3 class=\"nzn-section-title\"\u003eSpecifications\u003c\/h3\u003e\n\n      \u003cdiv class=\"nzn-specs\"\u003e\n        \u003cdiv\u003e\n\u003cspan\u003eModel\u003c\/span\u003e\u003cstrong\u003eDHT22 \/ AM2302\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003e\n\u003cspan\u003eOperating Voltage\u003c\/span\u003e\u003cstrong\u003e3.3V – 5.5V DC\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003e\n\u003cspan\u003eOutput Type\u003c\/span\u003e\u003cstrong\u003eDigital Single-Bus\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003e\n\u003cspan\u003eTemperature Range\u003c\/span\u003e\u003cstrong\u003e-40°C to 80°C\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003e\n\u003cspan\u003eTemperature Accuracy\u003c\/span\u003e\u003cstrong\u003e±0.5°C\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003e\n\u003cspan\u003eHumidity Range\u003c\/span\u003e\u003cstrong\u003e20–90% RH\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003e\n\u003cspan\u003eHumidity Accuracy\u003c\/span\u003e\u003cstrong\u003e±2% RH\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003e\n\u003cspan\u003eSampling Rate\u003c\/span\u003e\u003cstrong\u003e1 Reading Every 2 Seconds\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003e\n\u003cspan\u003eSignal Distance\u003c\/span\u003e\u003cstrong\u003eUp to 20 Metres\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003e\n\u003cspan\u003ePins\u003c\/span\u003e\u003cstrong\u003eVCC \/ DATA \/ GND\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003e\n\u003cspan\u003ePCB Size\u003c\/span\u003e\u003cstrong\u003e40 × 23mm\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003e\n\u003cspan\u003eWeight\u003c\/span\u003e\u003cstrong\u003e4g\u003c\/strong\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n        \u003cstrong\u003ePlease note:\u003c\/strong\u003e Compatible with both 3.3V and 5V microcontroller platforms.\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nzn-panel\" data-panel=\"howitworks\"\u003e\n      \u003cdiv class=\"nzn-started\"\u003e\n        \u003ch3\u003eHow It Works\u003c\/h3\u003e\n\n        \u003cdiv class=\"nzn-step\"\u003e\n          \u003cspan\u003e1\u003c\/span\u003e\n          \u003cdiv\u003e\n            \u003cstrong\u003eInternal sensor measures environment\u003c\/strong\u003e\n            \u003cp\u003eThe DHT22 continuously monitors surrounding temperature and humidity.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nzn-step\"\u003e\n          \u003cspan\u003e2\u003c\/span\u003e\n          \u003cdiv\u003e\n            \u003cstrong\u003eDigital conversion\u003c\/strong\u003e\n            \u003cp\u003eSensor data is processed internally and transmitted digitally.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nzn-step\"\u003e\n          \u003cspan\u003e3\u003c\/span\u003e\n          \u003cdiv\u003e\n            \u003cstrong\u003eSingle-wire communication\u003c\/strong\u003e\n            \u003cp\u003eOnly one DATA pin is required for communication.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nzn-step\"\u003e\n          \u003cspan\u003e4\u003c\/span\u003e\n          \u003cdiv\u003e\n            \u003cstrong\u003eMicrocontroller reads values\u003c\/strong\u003e\n            \u003cp\u003eArduino, ESP32, or Raspberry Pi receives live readings for automation or display.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n        \u003cstrong\u003ePlease note:\u003c\/strong\u003e Recommended minimum interval between readings is 2 seconds.\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nzn-panel\" data-panel=\"included\"\u003e\n      \u003ch3 class=\"nzn-section-title\"\u003eWhat's Included\u003c\/h3\u003e\n\n      \u003cdiv class=\"nzn-specs\"\u003e\n        \u003cdiv\u003e\n\u003cspan\u003e1 ×\u003c\/span\u003e\u003cstrong\u003eDHT22 \/ AM2302 Sensor Module\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003cdiv\u003e\n\u003cspan\u003eConnector\u003c\/span\u003e\u003cstrong\u003ePre-soldered 3-pin header\u003c\/strong\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n        \u003cstrong\u003ePlease note:\u003c\/strong\u003e Ready to connect directly to breadboards and Dupont jumper wires.\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nzn-panel\" data-panel=\"uses\"\u003e\n      \u003ch3 class=\"nzn-section-title\"\u003eCommon Uses\u003c\/h3\u003e\n\n      \u003cdiv class=\"nzn-uses\"\u003e\n        \u003cdiv class=\"nzn-use\"\u003eHome Assistant \u0026amp; ESPHome projects\u003c\/div\u003e\n        \u003cdiv class=\"nzn-use\"\u003eWeather stations\u003c\/div\u003e\n        \u003cdiv class=\"nzn-use\"\u003eGreenhouse monitoring\u003c\/div\u003e\n        \u003cdiv class=\"nzn-use\"\u003eHVAC automation\u003c\/div\u003e\n        \u003cdiv class=\"nzn-use\"\u003eServer room monitoring\u003c\/div\u003e\n        \u003cdiv class=\"nzn-use\"\u003eEnvironmental data logging\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n        \u003cstrong\u003ePlease note:\u003c\/strong\u003e Popular for both beginner and advanced smart home projects.\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nzn-panel\" data-panel=\"faqs\"\u003e\n      \u003ch3 class=\"nzn-section-title\"\u003eCommon Questions\u003c\/h3\u003e\n\n      \u003cdiv class=\"nzn-faq\"\u003e\n\n        \u003cdiv class=\"nzn-faq-item\"\u003e\n          \u003cstrong\u003eWhat is the difference between DHT11 and DHT22?\u003c\/strong\u003e\n          \u003cp\u003eDHT22 offers significantly better accuracy, wider temperature range, and improved humidity sensing compared to DHT11.\u003c\/p\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nzn-faq-item\"\u003e\n          \u003cstrong\u003eDoes this module include the pull-up resistor?\u003c\/strong\u003e\n          \u003cp\u003eYes. The pull-up resistor is already installed onboard, so no external resistor is required.\u003c\/p\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nzn-faq-item\"\u003e\n          \u003cstrong\u003eWill it work with ESPHome and Home Assistant?\u003c\/strong\u003e\n          \u003cp\u003eYes. DHT22 sensors are natively supported by ESPHome and integrate easily into Home Assistant dashboards.\u003c\/p\u003e\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n        \u003cstrong\u003ePlease note:\u003c\/strong\u003e Compatible with Arduino IDE, MicroPython, CircuitPython, and ESPHome environments.\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n  document.addEventListener('click', function(event) {\n    const tab = event.target.closest('.nzn-desc .nzn-tab');\n    if (!tab) return;\n\n    const wrapper = tab.closest('.nzn-desc');\n    const target = tab.getAttribute('data-tab');\n\n    wrapper.querySelectorAll('.nzn-tab').forEach(function(item) {\n      item.classList.remove('is-active');\n    });\n\n    wrapper.querySelectorAll('.nzn-panel').forEach(function(panel) {\n      panel.classList.remove('is-active');\n    });\n\n    tab.classList.add('is-active');\n\n    const panel = wrapper.querySelector('[data-panel=\"' + target + '\"]');\n    if (panel) panel.classList.add('is-active');\n  });\n\u003c\/script\u003e","brand":"AOSONG","offers":[{"title":"Default Title","offer_id":42737188044896,"sku":"DHT22-AM2302-MODULE","price":5.99,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/DHT-22-Producthero.png?v=1779011528"},{"product_id":"ds18b20-waterproof-temperature-sensor-probe-1m","title":"DS18B20 Waterproof Temperature Probe - 1m","description":"\u003cstyle\u003e\n.nznpd{--o:#F57C00;--od:#E65100;--ink:#0F172A;--mut:#5b6573;--line:#E8ECF0;--soft:#F7F8FA;max-width:1120px;margin:0 auto;color:var(--ink);font-family:inherit;line-height:1.6;padding:0 5%;box-sizing:border-box}\n.nznpd,.nznpd *{box-sizing:border-box}\n.nznpd p{margin:0;color:var(--mut);font-size:15px;line-height:1.65}\n.nznpd strong{color:var(--ink)}\n.nznpd__intro{font-size:16px;color:var(--ink);font-weight:500;line-height:1.6;max-width:72ch}\n.nznpd__checks{list-style:none;padding:0;margin:22px 0 0;display:grid;grid-template-columns:repeat(2,1fr);column-gap:26px;row-gap:13px}\n.nznpd__checks li{display:flex;gap:11px;align-items:flex-start;font-size:15px;color:var(--ink);line-height:1.45}\n.nznpd__checks li::before{content:\"✓\";flex:0 0 auto;width:21px;height:21px;margin-top:1px;border-radius:999px;background:#FFF3E8;color:var(--o);font-size:12px;font-weight:900;line-height:21px;text-align:center}\n.nznpd__qs{background:linear-gradient(170deg,#FFF9F3,#FFF1E6);border:2px solid #FCE0C6;border-radius:16px;padding:22px}\n.nznpd__qs h3{margin:0 0 16px;font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--od)}\n.nznpd__steps{list-style:none;counter-reset:s;padding:0;margin:0;display:grid;gap:14px}\n.nznpd__steps li{display:grid;grid-template-columns:27px 1fr;gap:12px}\n.nznpd__steps li::before{counter-increment:s;content:counter(s);width:27px;height:27px;border-radius:999px;background:#fff;border:2px solid #FCE0C6;color:var(--od);font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center}\n.nznpd__steps strong{display:block;font-size:14px}\n.nznpd__steps p{font-size:13px;margin-top:2px;line-height:1.45}\n.nznpd__block{margin-top:36px;padding-top:30px;border-top:1px solid var(--line)}\n.nznpd__h{margin:0 0 28px;font-size:1.15rem;font-weight:800;letter-spacing:-.02em;color:var(--ink);display:flex;align-items:center;gap:10px}\n.nznpd__h::before{content:\"\";flex:0 0 auto;width:20px;height:3px;border-radius:2px;background:var(--o)}\n.nznpd__specs{border:2px solid var(--line);border-radius:12px;overflow:hidden}\n.nznpd__spec{display:grid;grid-template-columns:minmax(150px,.7fr) 1fr;gap:18px;padding:12px 16px;font-size:14px}\n.nznpd__spec:nth-child(odd){background:var(--soft)}\n.nznpd__spec span{color:var(--mut)}\n.nznpd__spec strong{font-weight:700}\n.nznpd__included{display:flex;gap:16px;align-items:center;border:2px solid var(--line);border-radius:16px;background:var(--soft);padding:18px 20px}\n.nznpd__qty{flex:0 0 auto;width:46px;height:46px;border-radius:12px;background:#FFF3E8;color:var(--o);font-weight:800;display:flex;align-items:center;justify-content:center}\n.nznpd__included strong{display:block;font-size:15px;margin-bottom:3px}\n.nznpd__uses{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}\n.nznpd__use{padding:13px 14px;background:var(--soft);border-left:3px solid var(--o);border-radius:0 10px 10px 0;font-size:14px;color:var(--ink);line-height:1.4}\n.nznpd__faqs{display:grid;gap:10px}\n.nznpd__faq{border:2px solid var(--line);border-radius:12px;background:#fff;padding:0 16px;transition:border-color .18s ease}\n.nznpd__faq[open]{border-color:#FCE0C6}\n.nznpd__faq summary{list-style:none;cursor:pointer;padding:15px 0;font-weight:700;font-size:14px;color:var(--ink);display:flex;justify-content:space-between;align-items:center;gap:12px}\n.nznpd__faq summary::-webkit-details-marker{display:none}\n.nznpd__faq summary::after{content:\"›\";flex:0 0 auto;color:var(--o);font-weight:800;font-size:20px;line-height:1;display:inline-block;transform:rotate(90deg);transition:transform .22s ease}\n.nznpd__faq[open] summary::after{transform:rotate(-90deg)}\n.nznpd__faq p{padding:0 0 16px;font-size:14px}\n.nznpd__faq[open] p{animation:nznpdReveal .24s ease}\n@keyframes nznpdReveal{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}\n.nznpd p.nznpd__note{margin-top:16px;background:var(--soft);border:2px solid var(--line);border-radius:12px;padding:14px 16px;font-size:13.5px;color:var(--mut);line-height:1.55}\n@media (prefers-reduced-motion:reduce){.nznpd__faq summary::after{transition:none}.nznpd__faq[open] p{animation:none}}\n@media (max-width:749px){.nznpd__checks{grid-template-columns:1fr}.nznpd__uses{grid-template-columns:1fr}.nznpd__spec{grid-template-columns:1fr;gap:2px}}\n\u003c\/style\u003e\n\u003cdiv class=\"nznpd\"\u003e\n\u003cdiv class=\"nznpd__lead\"\u003e\n\u003cp class=\"nznpd__intro\"\u003eThe DS18B20 is a waterproof digital temperature sensor in a sealed stainless steel probe. It speaks 1-Wire — one GPIO pin, one data wire, and you can chain up to 127 probes on that same line, each with its own unique address burned in at the factory. This is the 1m cable version.\u003c\/p\u003e\n\u003cbr\u003e\n\u003cul class=\"nznpd__checks\"\u003e\n\u003cli\u003eSealed stainless steel probe — IP67 waterproof\u003c\/li\u003e\n\u003cli\u003e1-Wire protocol — one GPIO pin for any number of sensors\u003c\/li\u003e\n\u003cli\u003e-55°C to +125°C range, ±0.5°C accuracy (-10°C to 85°C)\u003c\/li\u003e\n\u003cli\u003e9–12 bit configurable resolution\u003c\/li\u003e\n\u003cli\u003eChain multiple probes on a single data line\u003c\/li\u003e\n\u003cli\u003eWorks with Arduino, ESP32 and Raspberry Pi\u003c\/li\u003e\n\u003cli\u003e1m cable between probe and controller\u003c\/li\u003e\n\u003cli\u003e3.0–5.5V supply or parasite power mode\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003ch3 class=\"nznpd__h\"\u003eSpecifications\u003c\/h3\u003e\n\u003cbr\u003e\n\u003cdiv class=\"nznpd__specs\"\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eSensor\u003c\/span\u003e\u003cstrong\u003eDS18B20 (Dallas\/Maxim)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eInterface\u003c\/span\u003e\u003cstrong\u003e1-Wire (single data pin)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eSupply voltage\u003c\/span\u003e\u003cstrong\u003e3.0–5.5V (or parasite power)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eTemperature range\u003c\/span\u003e\u003cstrong\u003e-55°C to +125°C\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eAccuracy\u003c\/span\u003e\u003cstrong\u003e±0.5°C (-10°C to +85°C)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eResolution\u003c\/span\u003e\u003cstrong\u003e9–12 bit (configurable)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eCable length\u003c\/span\u003e\u003cstrong\u003e1m\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eProbe material\u003c\/span\u003e\u003cstrong\u003e304 stainless steel\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eIP rating\u003c\/span\u003e\u003cstrong\u003eIP67\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eWire colours\u003c\/span\u003e\u003cstrong\u003eRed (VCC), Black (GND), Yellow (Data)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003ePull-up resistor\u003c\/span\u003e\u003cstrong\u003e4.7kΩ required, not included\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003ch3 class=\"nznpd__h\"\u003eWhat's in the box\u003c\/h3\u003e\n\u003cbr\u003e\n\u003cdiv class=\"nznpd__included\"\u003e\n\u003cdiv class=\"nznpd__qty\"\u003e1×\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cstrong\u003eDS18B20 waterproof temperature probe with 1m cable\u003c\/strong\u003e\u003cp\u003eA 4.7kΩ pull-up resistor is required and not included — most Arduino starter kits include one.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003ch3 class=\"nznpd__h\"\u003eGreat for\u003c\/h3\u003e\n\u003cbr\u003e\n\u003cdiv class=\"nznpd__uses\"\u003e\n\u003cdiv class=\"nznpd__use\"\u003eAquarium and fish tank temperature monitoring\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eHomebrewing wort and fermentation temperature\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eWeather stations and outdoor data loggers\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eSoil and hydroponic grow temperature\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eFridge, freezer and coolroom alarms\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eSolar water heater and heat pump control\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003cdiv class=\"nznpd__qs\"\u003e\n\u003ch3\u003eWiring \u0026amp; getting started\u003c\/h3\u003e\n\u003col class=\"nznpd__steps\"\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eWire up the probe\u003c\/strong\u003e\u003cp\u003eRed to 3.3–5V, Black to GND, Yellow to a free GPIO pin on your Arduino or ESP32.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eAdd the pull-up resistor\u003c\/strong\u003e\u003cp\u003eConnect a 4.7kΩ resistor between the Yellow (data) wire and VCC. Without it the sensor won't communicate reliably.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eInstall the libraries\u003c\/strong\u003e\u003cp\u003eIn Arduino IDE, install \u003cstrong\u003eOneWire\u003c\/strong\u003e by Jim Studt and \u003cstrong\u003eDallasTemperature\u003c\/strong\u003e by Miles Burton via Library Manager.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eUpload the example sketch\u003c\/strong\u003e\u003cp\u003eOpen File → Examples → DallasTemperature → Simple. Upload and open Serial Monitor at 9600 baud to see your reading.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003ch3 class=\"nznpd__h\"\u003eCommon questions\u003c\/h3\u003e\n\u003cbr\u003e\n\u003cdiv class=\"nznpd__faqs\"\u003e\n\u003cdetails class=\"nznpd__faq\" open\u003e\n\u003csummary\u003eDo I really need a pull-up resistor?\u003c\/summary\u003e\n\u003cp\u003eYes. A 4.7kΩ resistor between the data wire and VCC is required. Without it you'll get 85°C (the power-on default) or -127°C (a communication error) instead of real readings.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eCan I chain multiple probes on one wire?\u003c\/summary\u003e\n\u003cp\u003eYes. All probes share the same three wires. Each sensor has a unique 64-bit address so you can read them individually. One pull-up resistor handles a short run of probes.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eCan the probe be fully submerged?\u003c\/summary\u003e\n\u003cp\u003eYes, it's IP67 rated. Try to keep the cable exit point above the waterline for permanent builds — the probe itself handles full submersion.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eWill it work with a Raspberry Pi?\u003c\/summary\u003e\n\u003cp\u003eYes. Enable 1-Wire in raspi-config (add dtoverlay=w1-gpio to \/boot\/config.txt) then read from \/sys\/bus\/w1\/devices\/.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003cp class=\"nznpd__note\"\u003e\u003cstrong\u003eGood to know:\u003c\/strong\u003e Wire colours — Red is VCC (3.3–5V), Black is GND, Yellow is Data. A 4.7kΩ pull-up between Data and VCC is required but not included. The 3m version of this probe is also in stock if you need more reach.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"Default","offer_id":42738657853536,"sku":"NZE-DS18B20-1M","price":5.99,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/DS18B20_1m_Hero_Main.png?v=1777968957"},{"product_id":"ds18b20-waterproof-temperature-sensor-probe-3m","title":"DS18B20 Waterproof Temperature Probe - 3m","description":"\u003cstyle\u003e\n.nznpd{--o:#F57C00;--od:#E65100;--ink:#0F172A;--mut:#5b6573;--line:#E8ECF0;--soft:#F7F8FA;max-width:1120px;margin:0 auto;color:var(--ink);font-family:inherit;line-height:1.6;padding:0 5%;box-sizing:border-box}\n.nznpd,.nznpd *{box-sizing:border-box}\n.nznpd p{margin:0;color:var(--mut);font-size:15px;line-height:1.65}\n.nznpd strong{color:var(--ink)}\n.nznpd__intro{font-size:16px;color:var(--ink);font-weight:500;line-height:1.6;max-width:72ch}\n.nznpd__checks{list-style:none;padding:0;margin:22px 0 0;display:grid;grid-template-columns:repeat(2,1fr);column-gap:26px;row-gap:13px}\n.nznpd__checks li{display:flex;gap:11px;align-items:flex-start;font-size:15px;color:var(--ink);line-height:1.45}\n.nznpd__checks li::before{content:\"✓\";flex:0 0 auto;width:21px;height:21px;margin-top:1px;border-radius:999px;background:#FFF3E8;color:var(--o);font-size:12px;font-weight:900;line-height:21px;text-align:center}\n.nznpd__qs{background:linear-gradient(170deg,#FFF9F3,#FFF1E6);border:2px solid #FCE0C6;border-radius:16px;padding:22px}\n.nznpd__qs h3{margin:0 0 16px;font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--od)}\n.nznpd__steps{list-style:none;counter-reset:s;padding:0;margin:0;display:grid;gap:14px}\n.nznpd__steps li{display:grid;grid-template-columns:27px 1fr;gap:12px}\n.nznpd__steps li::before{counter-increment:s;content:counter(s);width:27px;height:27px;border-radius:999px;background:#fff;border:2px solid #FCE0C6;color:var(--od);font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center}\n.nznpd__steps strong{display:block;font-size:14px}\n.nznpd__steps p{font-size:13px;margin-top:2px;line-height:1.45}\n.nznpd__block{margin-top:36px;padding-top:30px;border-top:1px solid var(--line)}\n.nznpd__h{margin:0 0 28px;font-size:1.15rem;font-weight:800;letter-spacing:-.02em;color:var(--ink);display:flex;align-items:center;gap:10px}\n.nznpd__h::before{content:\"\";flex:0 0 auto;width:20px;height:3px;border-radius:2px;background:var(--o)}\n.nznpd__specs{border:2px solid var(--line);border-radius:12px;overflow:hidden}\n.nznpd__spec{display:grid;grid-template-columns:minmax(150px,.7fr) 1fr;gap:18px;padding:12px 16px;font-size:14px}\n.nznpd__spec:nth-child(odd){background:var(--soft)}\n.nznpd__spec span{color:var(--mut)}\n.nznpd__spec strong{font-weight:700}\n.nznpd__included{display:flex;gap:16px;align-items:center;border:2px solid var(--line);border-radius:16px;background:var(--soft);padding:18px 20px}\n.nznpd__qty{flex:0 0 auto;width:46px;height:46px;border-radius:12px;background:#FFF3E8;color:var(--o);font-weight:800;display:flex;align-items:center;justify-content:center}\n.nznpd__included strong{display:block;font-size:15px;margin-bottom:3px}\n.nznpd__uses{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}\n.nznpd__use{padding:13px 14px;background:var(--soft);border-left:3px solid var(--o);border-radius:0 10px 10px 0;font-size:14px;color:var(--ink);line-height:1.4}\n.nznpd__faqs{display:grid;gap:10px}\n.nznpd__faq{border:2px solid var(--line);border-radius:12px;background:#fff;padding:0 16px;transition:border-color .18s ease}\n.nznpd__faq[open]{border-color:#FCE0C6}\n.nznpd__faq summary{list-style:none;cursor:pointer;padding:15px 0;font-weight:700;font-size:14px;color:var(--ink);display:flex;justify-content:space-between;align-items:center;gap:12px}\n.nznpd__faq summary::-webkit-details-marker{display:none}\n.nznpd__faq summary::after{content:\"›\";flex:0 0 auto;color:var(--o);font-weight:800;font-size:20px;line-height:1;display:inline-block;transform:rotate(90deg);transition:transform .22s ease}\n.nznpd__faq[open] summary::after{transform:rotate(-90deg)}\n.nznpd__faq p{padding:0 0 16px;font-size:14px}\n.nznpd__faq[open] p{animation:nznpdReveal .24s ease}\n@keyframes nznpdReveal{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}\n.nznpd p.nznpd__note{margin-top:16px;background:var(--soft);border:2px solid var(--line);border-radius:12px;padding:14px 16px;font-size:13.5px;color:var(--mut);line-height:1.55}\n@media (prefers-reduced-motion:reduce){.nznpd__faq summary::after{transition:none}.nznpd__faq[open] p{animation:none}}\n@media (max-width:749px){.nznpd__checks{grid-template-columns:1fr}.nznpd__uses{grid-template-columns:1fr}.nznpd__spec{grid-template-columns:1fr;gap:2px}}\n\u003c\/style\u003e\n\u003cdiv class=\"nznpd\"\u003e\n\u003cdiv class=\"nznpd__lead\"\u003e\n\u003cp class=\"nznpd__intro\"\u003eThe same waterproof DS18B20 digital temperature sensor as the 1m version, with a longer 3m cable. The extra reach is useful when the probe needs to be in a tank, pipe or outdoor location while the controller stays somewhere dry and safe.\u003c\/p\u003e\n\u003cbr\u003e\n\u003cul class=\"nznpd__checks\"\u003e\n\u003cli\u003eSealed stainless steel probe — IP67 waterproof\u003c\/li\u003e\n\u003cli\u003e1-Wire protocol — one GPIO pin for any number of sensors\u003c\/li\u003e\n\u003cli\u003e-55°C to +125°C range, ±0.5°C accuracy (-10°C to 85°C)\u003c\/li\u003e\n\u003cli\u003e9–12 bit configurable resolution\u003c\/li\u003e\n\u003cli\u003eChain multiple probes on a single data line\u003c\/li\u003e\n\u003cli\u003eWorks with Arduino, ESP32 and Raspberry Pi\u003c\/li\u003e\n\u003cli\u003e3m cable — more reach between probe and controller\u003c\/li\u003e\n\u003cli\u003e3.0–5.5V supply or parasite power mode\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003ch3 class=\"nznpd__h\"\u003eSpecifications\u003c\/h3\u003e\n\u003cbr\u003e\n\u003cdiv class=\"nznpd__specs\"\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eSensor\u003c\/span\u003e\u003cstrong\u003eDS18B20 (Dallas\/Maxim)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eInterface\u003c\/span\u003e\u003cstrong\u003e1-Wire (single data pin)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eSupply voltage\u003c\/span\u003e\u003cstrong\u003e3.0–5.5V (or parasite power)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eTemperature range\u003c\/span\u003e\u003cstrong\u003e-55°C to +125°C\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eAccuracy\u003c\/span\u003e\u003cstrong\u003e±0.5°C (-10°C to +85°C)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eResolution\u003c\/span\u003e\u003cstrong\u003e9–12 bit (configurable)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eCable length\u003c\/span\u003e\u003cstrong\u003e3m\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eProbe material\u003c\/span\u003e\u003cstrong\u003e304 stainless steel\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eIP rating\u003c\/span\u003e\u003cstrong\u003eIP67\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eWire colours\u003c\/span\u003e\u003cstrong\u003eRed (VCC), Black (GND), Yellow (Data)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003ePull-up resistor\u003c\/span\u003e\u003cstrong\u003e4.7kΩ required, not included\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003ch3 class=\"nznpd__h\"\u003eWhat's in the box\u003c\/h3\u003e\n\u003cbr\u003e\n\u003cdiv class=\"nznpd__included\"\u003e\n\u003cdiv class=\"nznpd__qty\"\u003e1×\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cstrong\u003eDS18B20 waterproof temperature probe with 3m cable\u003c\/strong\u003e\u003cp\u003eA 4.7kΩ pull-up resistor is required and not included.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003ch3 class=\"nznpd__h\"\u003eGreat for\u003c\/h3\u003e\n\u003cbr\u003e\n\u003cdiv class=\"nznpd__uses\"\u003e\n\u003cdiv class=\"nznpd__use\"\u003eLarge aquariums, sumps and water tanks\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eHomebrewing fermenters and kegs\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eOutdoor weather and soil temperature stations\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eHot water cylinders and solar collectors\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003ePool and spa water temperature monitoring\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eFridge, freezer and coolroom alarms\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003cdiv class=\"nznpd__qs\"\u003e\n\u003ch3\u003eWiring \u0026amp; getting started\u003c\/h3\u003e\n\u003col class=\"nznpd__steps\"\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eWire up the probe\u003c\/strong\u003e\u003cp\u003eRed to 3.3–5V, Black to GND, Yellow to a free GPIO pin on your board.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eAdd the pull-up resistor\u003c\/strong\u003e\u003cp\u003e4.7kΩ between the data wire and VCC at the controller end. Required — the sensor won't work without it.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eInstall the libraries\u003c\/strong\u003e\u003cp\u003eIn Arduino IDE, install \u003cstrong\u003eOneWire\u003c\/strong\u003e by Jim Studt and \u003cstrong\u003eDallasTemperature\u003c\/strong\u003e by Miles Burton via Library Manager.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eUpload the example sketch\u003c\/strong\u003e\u003cp\u003eFile → Examples → DallasTemperature → Simple. Upload and open Serial Monitor at 9600 baud.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"nznpd__block\"\u003e\n\u003ch3 class=\"nznpd__h\"\u003eCommon questions\u003c\/h3\u003e\n\u003cbr\u003e\n\u003cdiv class=\"nznpd__faqs\"\u003e\n\u003cdetails class=\"nznpd__faq\" open\u003e\n\u003csummary\u003eDoes the longer cable affect accuracy?\u003c\/summary\u003e\n\u003cp\u003eSlightly longer cables can add signal noise. For a 3m run a 4.7kΩ pull-up is usually fine. If you see errors, try reducing to 2.2kΩ.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eCan I extend it further?\u003c\/summary\u003e\n\u003cp\u003eYes, with care. The 1-Wire protocol handles decent distances. Twisted pair wire and shorter pull-up values help. Most users run 5–10m without issues.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eCan the probe be fully submerged?\u003c\/summary\u003e\n\u003cp\u003eYes, IP67 rated. Keep the cable exit point above the waterline for permanent installations.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eDo I need a resistor?\u003c\/summary\u003e\n\u003cp\u003eYes — 4.7kΩ pull-up between data and VCC is required. Without it you'll get 85°C or -127°C readings.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003cp class=\"nznpd__note\"\u003e\u003cstrong\u003eGood to know:\u003c\/strong\u003e Red is VCC (3.3–5V), Black is GND, Yellow is Data. 4.7kΩ pull-up required, not included. The 1m version is also in stock if you don't need the extra reach.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"Default","offer_id":42738660311136,"sku":"NZE-DS18B20-3M","price":9.99,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/DS18B20_3m_Hero.png?v=1777968755"},{"product_id":"bmp280-barometric-pressure-temperature-sensor-module","title":"BMP280 Barometric Pressure Temperature Sensor Module 3.3V","description":"\u003cstyle\u003e\n  .nzn-desc {\n    width: 100%;\n    max-width: 1400px;\n    margin: 0 auto;\n    font-family: inherit;\n    color: #101114;\n    padding: 0 5%;\n    box-sizing: border-box;\n  }\n\n  .nzn-desc,\n  .nzn-desc * {\n    box-sizing: border-box;\n  }\n\n  .nzn-desc .nzn-tabs {\n    width: 100%;\n    max-width: 100%;\n    display: flex;\n    gap: 30px;\n    border-bottom: 1px solid #e7e7e7;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-width: none;\n    min-height: 55px;\n    align-items: flex-end;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .nzn-desc .nzn-tabs::-webkit-scrollbar {\n    display: none;\n  }\n\n  .nzn-desc .nzn-tab {\n    flex: 0 0 auto;\n    background: none;\n    border: 0;\n    padding: 16px 0;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 800;\n    white-space: nowrap;\n    border-bottom: 3px solid transparent;\n    color: #101114;\n    cursor: pointer;\n    transition: color .18s ease, border-color .18s ease;\n  }\n\n  .nzn-desc .nzn-tab:hover {\n    color: #ff7a2f;\n  }\n\n  .nzn-desc .nzn-tab.is-active {\n    border-bottom-color: #ff7a2f;\n    color: #101114;\n  }\n\n  .nzn-desc .nzn-card {\n    width: 100%;\n    border: 1px solid #e7e7e7;\n    border-top: 0;\n    border-radius: 0 0 18px 18px;\n    padding: 38px 34px;\n    box-shadow: 0 10px 24px rgba(0,0,0,.035);\n    background: #fff;\n    min-height: 620px;\n    display: flex;\n    flex-direction: column;\n  }\n\n  .nzn-desc .nzn-panel {\n    display: none;\n  }\n\n  .nzn-desc .nzn-panel.is-active {\n    display: flex;\n    flex-direction: column;\n    flex: 1;\n    animation: nznTabFade .18s ease both;\n  }\n\n  @keyframes nznTabFade {\n    from {\n      opacity: 0;\n      transform: translateY(6px);\n    }\n    to {\n      opacity: 1;\n      transform: translateY(0);\n    }\n  }\n\n  .nzn-desc .nzn-panel-content {\n    flex: 1;\n  }\n\n  .nzn-desc .nzn-overview {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 46px;\n    align-items: start;\n  }\n\n  .nzn-desc .nzn-overview-copy {\n    padding-top: 6px;\n    text-align: center;\n  }\n\n  .nzn-desc p {\n    font-size: 15px;\n    line-height: 1.65;\n    color: #60646c;\n    margin: 0;\n  }\n\n  .nzn-desc .nzn-checks {\n    list-style: none;\n    padding: 0;\n    margin: 34px auto 0;\n    display: grid;\n    gap: 18px;\n    width: fit-content;\n    max-width: 100%;\n    text-align: left;\n  }\n\n  .nzn-desc .nzn-checks li {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    font-size: 14.5px;\n    color: #101114;\n    line-height: 1.45;\n  }\n\n  .nzn-desc .nzn-checks li::before {\n    content: \"✓\";\n    flex-shrink: 0;\n    color: #ff7a2f;\n    font-weight: 900;\n    font-size: 16px;\n    line-height: 1;\n  }\n\n  .nzn-desc .nzn-section-title {\n    margin: 0 0 30px;\n    padding-top: 10px;\n    text-transform: uppercase;\n    letter-spacing: .12em;\n    font-size: 14px;\n    font-weight: 900;\n    color: #ff7a2f;\n    text-align: left;\n  }\n\n  .nzn-desc .nzn-started {\n    background: #eef6ff;\n    border-left: 4px solid #4a9af7;\n    border-radius: 16px;\n    padding: 26px 28px;\n  }\n\n  .nzn-desc .nzn-started h3 {\n    margin: 0 0 20px;\n    text-transform: uppercase;\n    letter-spacing: .12em;\n    font-size: 14px;\n    font-weight: 900;\n    color: #1f4268;\n  }\n\n  .nzn-desc .nzn-step {\n    display: grid;\n    grid-template-columns: 34px 1fr;\n    gap: 14px;\n    margin-bottom: 18px;\n    text-align: left;\n  }\n\n  .nzn-desc .nzn-step:last-child {\n    margin-bottom: 0;\n  }\n\n  .nzn-desc .nzn-step span {\n    width: 34px;\n    height: 34px;\n    border-radius: 999px;\n    background: #fff;\n    border: 1px solid #d9e9fb;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-weight: 900;\n  }\n\n  .nzn-desc .nzn-step strong {\n    display: block;\n    font-size: 14px;\n    color: #101114;\n  }\n\n  .nzn-desc .nzn-step p {\n    margin-top: 4px;\n    font-size: 13px;\n    color: #40566c;\n  }\n\n  .nzn-desc .nzn-specs {\n    border-top: 1px solid #e7e7e7;\n  }\n\n  .nzn-desc .nzn-specs div {\n    display: grid;\n    grid-template-columns: minmax(180px, .8fr) 1.4fr;\n    gap: 24px;\n    padding: 15px 14px;\n    border-bottom: 1px solid #e7e7e7;\n    font-size: 14px;\n    text-align: left;\n  }\n\n  .nzn-desc .nzn-specs div:nth-child(even) {\n    background: #fafafa;\n  }\n\n  .nzn-desc .nzn-specs span {\n    color: #60646c;\n  }\n\n  .nzn-desc .nzn-specs strong {\n    font-weight: 800;\n    color: #101114;\n  }\n\n  .nzn-desc .nzn-included-card {\n    display: grid;\n    grid-template-columns: auto 1fr;\n    gap: 18px;\n    align-items: center;\n    border: 1px solid #e7e7e7;\n    border-radius: 16px;\n    background: #fafafa;\n    padding: 24px;\n    margin-bottom: 14px;\n  }\n\n  .nzn-desc .nzn-included-qty {\n    width: 48px;\n    height: 48px;\n    border-radius: 999px;\n    background: #fff5ef;\n    border: 1px solid rgba(255,122,47,.2);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-weight: 900;\n    color: #ff7a2f;\n  }\n\n  .nzn-desc .nzn-included-card strong {\n    display: block;\n    font-size: 16px;\n    margin-bottom: 4px;\n  }\n\n  .nzn-desc .nzn-included-card p {\n    font-size: 14px;\n  }\n\n  .nzn-desc .nzn-uses {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 12px;\n  }\n\n  .nzn-desc .nzn-use {\n    border-left: 3px solid #ff7a2f;\n    background: #f7f7f7;\n    padding: 15px 16px;\n    font-size: 14px;\n    line-height: 1.45;\n    text-align: left;\n    border-radius: 0 8px 8px 0;\n  }\n\n  .nzn-desc .nzn-faq {\n    display: grid;\n    gap: 12px;\n  }\n\n  .nzn-desc .nzn-faq-item {\n    border: 1px solid #e7e7e7;\n    border-radius: 12px;\n    padding: 16px 18px;\n    background: #fff;\n    text-align: left;\n  }\n\n  .nzn-desc .nzn-faq-item strong {\n    display: block;\n    margin-bottom: 7px;\n    color: #101114;\n  }\n\n  .nzn-desc .nzn-faq-item p {\n    font-size: 14px;\n  }\n\n  .nzn-desc .nzn-note {\n    margin-top: 30px;\n    background: #fafafa;\n    border: 1px solid #e7e7e7;\n    border-radius: 12px;\n    padding: 16px 18px;\n    text-align: center;\n    color: #60646c;\n    font-size: 13px;\n    line-height: 1.55;\n  }\n\n  @media (max-width: 750px) {\n    .nzn-desc {\n      width: 100%;\n      max-width: 100%;\n      padding: 0 5%;\n      overflow: hidden;\n    }\n\n    .nzn-desc .nzn-tabs {\n      display: grid;\n      grid-template-columns: repeat(3, 1fr);\n      gap: 0;\n      overflow: visible;\n      min-height: unset;\n      border-bottom: 0;\n      width: 100%;\n      max-width: 100%;\n    }\n\n    .nzn-desc .nzn-tab {\n      width: 100%;\n      min-width: 0;\n      padding: 12px 6px;\n      font-size: 12px;\n      line-height: 1.15;\n      text-align: center;\n      white-space: normal;\n      border-bottom: 2px solid #e7e7e7;\n    }\n\n    .nzn-desc .nzn-tab.is-active {\n      border-bottom-color: #ff7a2f;\n    }\n\n    .nzn-desc .nzn-card {\n      padding: 24px 16px;\n      min-height: unset;\n      width: 100%;\n      max-width: 100%;\n      border-top: 1px solid #e7e7e7;\n      border-radius: 0 0 16px 16px;\n    }\n\n    .nzn-desc .nzn-panel.is-active {\n      display: block;\n    }\n\n    .nzn-desc .nzn-overview {\n      grid-template-columns: 1fr;\n      gap: 26px;\n    }\n\n    .nzn-desc .nzn-overview-copy {\n      padding-top: 0;\n      text-align: center;\n    }\n\n    .nzn-desc p {\n      font-size: 14.5px;\n      text-align: center;\n    }\n\n    .nzn-desc .nzn-checks {\n      margin-top: 24px;\n      gap: 13px;\n      width: fit-content;\n      max-width: 100%;\n    }\n\n    .nzn-desc .nzn-checks li {\n      align-items: flex-start;\n      gap: 10px;\n      font-size: 14px;\n      text-align: left;\n    }\n\n    .nzn-desc .nzn-checks li::before {\n      margin-top: 2px;\n    }\n\n    .nzn-desc .nzn-uses {\n      grid-template-columns: 1fr;\n    }\n\n    .nzn-desc .nzn-specs div {\n      grid-template-columns: 1fr;\n      gap: 4px;\n      padding: 13px 10px;\n    }\n\n    .nzn-desc .nzn-section-title {\n      text-align: left;\n      padding-top: 0;\n      margin-bottom: 22px;\n    }\n\n    .nzn-desc .nzn-started {\n      padding: 20px 16px;\n    }\n\n    .nzn-desc .nzn-included-card {\n      grid-template-columns: 1fr;\n      text-align: left;\n      justify-items: start;\n    }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"nzn-desc\"\u003e\n  \u003cdiv class=\"nzn-tabs\"\u003e\n    \u003cbutton class=\"nzn-tab is-active\" type=\"button\" data-tab=\"overview\"\u003eOverview\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"specifications\"\u003eSpecifications\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"getting-started\"\u003eGetting Started\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"included\"\u003eWhat's Included\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"uses\"\u003eCommon Uses\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"faqs\"\u003eFAQs\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"nzn-card\"\u003e\n    \u003cdiv class=\"nzn-panel is-active\" data-panel=\"overview\"\u003e\n      \u003cdiv class=\"nzn-panel-content\"\u003e\n        \u003cdiv class=\"nzn-overview\"\u003e\n          \u003cdiv class=\"nzn-overview-copy\"\u003e\n            \u003cp\u003eThe BMP280 is a compact barometric pressure and temperature sensor module for Arduino, ESP32, Raspberry Pi, and other microcontroller projects. It is ideal for weather stations, altitude measurement, drones, environmental monitoring, and data logging.\u003c\/p\u003e\n\n            \u003cul class=\"nzn-checks\"\u003e\n              \u003cli\u003eMeasures barometric pressure and temperature\u003c\/li\u003e\n              \u003cli\u003eSupports both I2C and SPI communication\u003c\/li\u003e\n              \u003cli\u003eCompact GY-BM280 breakout module\u003c\/li\u003e\n              \u003cli\u003eGreat for Arduino, ESP32, Raspberry Pi, and STM32 projects\u003c\/li\u003e\n              \u003cli\u003ePerfect for weather, altitude, and environmental sensing\u003c\/li\u003e\n            \u003c\/ul\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-started\"\u003e\n            \u003ch3\u003eQuick Start\u003c\/h3\u003e\n\n            \u003cdiv class=\"nzn-step\"\u003e\n              \u003cspan\u003e1\u003c\/span\u003e\n              \u003cdiv\u003e\n                \u003cstrong\u003eConnect power\u003c\/strong\u003e\n                \u003cp\u003eConnect VCC to 3.3V and GND to GND.\u003c\/p\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"nzn-step\"\u003e\n              \u003cspan\u003e2\u003c\/span\u003e\n              \u003cdiv\u003e\n                \u003cstrong\u003eConnect I2C pins\u003c\/strong\u003e\n                \u003cp\u003eConnect SCL to A5\/SCL and SDA to A4\/SDA on an Arduino Uno.\u003c\/p\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"nzn-step\"\u003e\n              \u003cspan\u003e3\u003c\/span\u003e\n              \u003cdiv\u003e\n                \u003cstrong\u003eInstall library\u003c\/strong\u003e\n                \u003cp\u003eUse the Adafruit BMP280 library or another compatible BMP280 Arduino library.\u003c\/p\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"nzn-step\"\u003e\n              \u003cspan\u003e4\u003c\/span\u003e\n              \u003cdiv\u003e\n                \u003cstrong\u003eCheck address\u003c\/strong\u003e\n                \u003cp\u003eDefault I2C address is usually 0x76. Pull SDO high to use 0x77.\u003c\/p\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n        \u003cstrong\u003ePlease note:\u003c\/strong\u003e This is the BMP280 version. It measures pressure and temperature only, not humidity.\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nzn-panel\" data-panel=\"specifications\"\u003e\n      \u003cdiv class=\"nzn-panel-content\"\u003e\n        \u003ch3 class=\"nzn-section-title\"\u003eSpecifications\u003c\/h3\u003e\n\n        \u003cdiv class=\"nzn-specs\"\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eSensor Chip\u003c\/span\u003e\u003cstrong\u003eBMP280\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eBoard Type\u003c\/span\u003e\u003cstrong\u003eGY-BM280 breakout module\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eOperating Voltage\u003c\/span\u003e\u003cstrong\u003e3.3V\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eInterface\u003c\/span\u003e\u003cstrong\u003eI2C \/ SPI\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eI2C Address\u003c\/span\u003e\u003cstrong\u003e0x76 default, 0x77 configurable\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003ePressure Range\u003c\/span\u003e\u003cstrong\u003e300–1100 hPa\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003ePressure Accuracy\u003c\/span\u003e\u003cstrong\u003e±1 hPa absolute\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eRelative Pressure Accuracy\u003c\/span\u003e\u003cstrong\u003e±0.12 hPa\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eTemperature Range\u003c\/span\u003e\u003cstrong\u003e−40°C to +85°C\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eTemperature Accuracy\u003c\/span\u003e\u003cstrong\u003e±1.0°C\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003ePressure Resolution\u003c\/span\u003e\u003cstrong\u003e0.16 Pa\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eTemperature Resolution\u003c\/span\u003e\u003cstrong\u003e0.01°C\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003ePins\u003c\/span\u003e\u003cstrong\u003eVCC, GND, SCL, SDA, CSB, SDO\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n        \u003cstrong\u003ePlease note:\u003c\/strong\u003e Do not connect this 3.3V module directly to 5V unless your setup uses suitable level shifting.\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nzn-panel\" data-panel=\"getting-started\"\u003e\n      \u003cdiv class=\"nzn-panel-content\"\u003e\n        \u003cdiv class=\"nzn-started\"\u003e\n          \u003ch3\u003eGetting Started\u003c\/h3\u003e\n\n          \u003cdiv class=\"nzn-step\"\u003e\n            \u003cspan\u003e1\u003c\/span\u003e\n            \u003cdiv\u003e\n              \u003cstrong\u003eWire VCC and GND\u003c\/strong\u003e\n              \u003cp\u003eConnect VCC to 3.3V and GND to GND.\u003c\/p\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-step\"\u003e\n            \u003cspan\u003e2\u003c\/span\u003e\n            \u003cdiv\u003e\n              \u003cstrong\u003eWire I2C\u003c\/strong\u003e\n              \u003cp\u003eFor Arduino Uno, connect SCL to A5 and SDA to A4.\u003c\/p\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-step\"\u003e\n            \u003cspan\u003e3\u003c\/span\u003e\n            \u003cdiv\u003e\n              \u003cstrong\u003eLeave CSB and SDO unconnected\u003c\/strong\u003e\n              \u003cp\u003eThis keeps the module in default I2C mode with address 0x76.\u003c\/p\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-step\"\u003e\n            \u003cspan\u003e4\u003c\/span\u003e\n            \u003cdiv\u003e\n              \u003cstrong\u003eInstall a BMP280 library\u003c\/strong\u003e\n              \u003cp\u003eInstall the Adafruit BMP280 library through the Arduino Library Manager.\u003c\/p\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-step\"\u003e\n            \u003cspan\u003e5\u003c\/span\u003e\n            \u003cdiv\u003e\n              \u003cstrong\u003eUpload example sketch\u003c\/strong\u003e\n              \u003cp\u003eOpen a BMP280 example sketch, select your board and port, then upload.\u003c\/p\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n        \u003cstrong\u003eWiring:\u003c\/strong\u003e VCC → 3.3V, GND → GND, SCL → A5\/SCL, SDA → A4\/SDA.\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nzn-panel\" data-panel=\"included\"\u003e\n      \u003cdiv class=\"nzn-panel-content\"\u003e\n        \u003ch3 class=\"nzn-section-title\"\u003eWhat's Included\u003c\/h3\u003e\n\n        \u003cdiv class=\"nzn-included-card\"\u003e\n          \u003cdiv class=\"nzn-included-qty\"\u003e1×\u003c\/div\u003e\n          \u003cdiv\u003e\n            \u003cstrong\u003eBMP280 3.3V sensor module\u003c\/strong\u003e\n            \u003cp\u003eCompact GY-BM280 breakout board for pressure and temperature sensing.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nzn-included-card\"\u003e\n          \u003cdiv class=\"nzn-included-qty\"\u003e1×\u003c\/div\u003e\n          \u003cdiv\u003e\n            \u003cstrong\u003e6-pin male header strip\u003c\/strong\u003e\n            \u003cp\u003eIncluded unsoldered so you can solder it in your preferred orientation.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n        \u003cstrong\u003ePlease note:\u003c\/strong\u003e Header pins are included but are not pre-soldered.\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nzn-panel\" data-panel=\"uses\"\u003e\n      \u003cdiv class=\"nzn-panel-content\"\u003e\n        \u003ch3 class=\"nzn-section-title\"\u003eCommon Uses\u003c\/h3\u003e\n\n        \u003cdiv class=\"nzn-uses\"\u003e\n          \u003cdiv class=\"nzn-use\"\u003eWeather stations and local pressure monitoring\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eDIY altimeters and altitude measurement\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eDrone and UAV altitude sensing\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eEnvironmental monitoring and data logging\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eGPS altitude enhancement projects\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eIndoor navigation and floor-level detection\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n        \u003cstrong\u003ePlease note:\u003c\/strong\u003e This module is best for pressure, temperature, and altitude-based projects.\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nzn-panel\" data-panel=\"faqs\"\u003e\n      \u003cdiv class=\"nzn-panel-content\"\u003e\n        \u003ch3 class=\"nzn-section-title\"\u003eCommon Questions\u003c\/h3\u003e\n\n        \u003cdiv class=\"nzn-faq\"\u003e\n          \u003cdiv class=\"nzn-faq-item\"\u003e\n            \u003cstrong\u003eIs this a BMP280 or BME280?\u003c\/strong\u003e\n            \u003cp\u003eThis is a BMP280. It measures pressure and temperature only. It does not measure humidity.\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-faq-item\"\u003e\n            \u003cstrong\u003eCan I use this with Arduino?\u003c\/strong\u003e\n            \u003cp\u003eYes, it works with Arduino boards using I2C or SPI. For Arduino Uno I2C, use SDA on A4 and SCL on A5.\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-faq-item\"\u003e\n            \u003cstrong\u003eCan I use this with ESP32 or Raspberry Pi?\u003c\/strong\u003e\n            \u003cp\u003eYes, it is compatible with ESP32, Raspberry Pi, STM32, and other 3.3V microcontroller platforms.\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-faq-item\"\u003e\n            \u003cstrong\u003eCan I connect it to 5V?\u003c\/strong\u003e\n            \u003cp\u003eThis is a 3.3V module. Do not connect directly to 5V unless using proper voltage level shifting.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n        \u003cstrong\u003ePlease note:\u003c\/strong\u003e If your code cannot find the sensor, check the I2C address. It may be 0x76 or 0x77.\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n  document.addEventListener('click', function(event) {\n    const tab = event.target.closest('.nzn-desc .nzn-tab');\n    if (!tab) return;\n\n    const wrapper = tab.closest('.nzn-desc');\n    if (!wrapper) return;\n\n    const target = tab.getAttribute('data-tab');\n\n    wrapper.querySelectorAll('.nzn-tab').forEach(function(item) {\n      item.classList.remove('is-active');\n    });\n\n    wrapper.querySelectorAll('.nzn-panel').forEach(function(panel) {\n      panel.classList.remove('is-active');\n    });\n\n    tab.classList.add('is-active');\n\n    const panel = wrapper.querySelector('[data-panel=\"' + target + '\"]');\n    if (panel) panel.classList.add('is-active');\n  });\n\u003c\/script\u003e","brand":"Bosch","offers":[{"title":"Default Title","offer_id":42757854003296,"sku":"BMP280-3V3","price":3.49,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/BMP280-3.3V-Producthero.png?v=1779047527"},{"product_id":"gy-bmp280-barometric-pressure-temperature-sensor-5v-3-3v","title":"GY-BMP280 Barometric Pressure \u0026 Temperature Sensor - 5V","description":"\u003cstyle\u003e\n  .nzn-desc { width: 100%; max-width: 1400px; margin: 0 auto; font-family: inherit; color: #101114; }\n  .nzn-desc, .nzn-desc * { box-sizing: border-box; }\n  .nzn-desc .nzn-tabs { width: 100%; max-width: 100%; display: flex; gap: 30px; border-bottom: 1px solid #e7e7e7; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; min-height: 55px; align-items: flex-end; -webkit-overflow-scrolling: touch; }\n  .nzn-desc .nzn-tabs::-webkit-scrollbar { display: none; }\n  .nzn-desc .nzn-tab { flex: 0 0 auto; background: none; border: 0; padding: 16px 0; font: inherit; font-size: 14px; font-weight: 800; white-space: nowrap; border-bottom: 3px solid transparent; color: #101114; cursor: pointer; transition: color .18s ease, border-color .18s ease; }\n  .nzn-desc .nzn-tab:hover { color: #ff7a2f; }\n  .nzn-desc .nzn-tab.is-active { border-bottom-color: #ff7a2f; color: #101114; }\n  .nzn-desc .nzn-card { width: 100%; border: 1px solid #e7e7e7; border-top: 0; border-radius: 0 0 18px 18px; padding: 38px 34px; box-shadow: 0 10px 24px rgba(0,0,0,.035); background: #fff; min-height: 620px; display: flex; flex-direction: column; }\n  .nzn-desc .nzn-panel { display: none; }\n  .nzn-desc .nzn-panel.is-active { display: flex; flex-direction: column; flex: 1; animation: nznTabFade .18s ease both; }\n  @keyframes nznTabFade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }\n  .nzn-desc .nzn-panel-content { flex: 1; }\n  .nzn-desc .nzn-overview { display: grid; grid-template-columns: 1fr 1fr; gap: 46px; align-items: start; }\n  .nzn-desc .nzn-overview-copy { padding-top: 6px; text-align: center; }\n  .nzn-desc p { font-size: 15px; line-height: 1.65; color: #60646c; margin: 0; }\n  .nzn-desc .nzn-checks { list-style: none; padding: 0; margin: 34px auto 0; display: grid; gap: 18px; width: fit-content; max-width: 100%; text-align: left; }\n  .nzn-desc .nzn-checks li { display: flex; align-items: center; gap: 12px; font-size: 14.5px; color: #101114; line-height: 1.45; }\n  .nzn-desc .nzn-checks li::before { content: \"✓\"; flex-shrink: 0; color: #ff7a2f; font-weight: 900; font-size: 16px; line-height: 1; }\n  .nzn-desc .nzn-section-title { margin: 0 0 30px; padding-top: 10px; text-transform: uppercase; letter-spacing: .12em; font-size: 14px; font-weight: 900; color: #ff7a2f; text-align: left; }\n  .nzn-desc .nzn-started { background: #eef6ff; border-left: 4px solid #4a9af7; border-radius: 16px; padding: 26px 28px; }\n  .nzn-desc .nzn-started h3 { margin: 0 0 20px; text-transform: uppercase; letter-spacing: .12em; font-size: 14px; font-weight: 900; color: #1f4268; }\n  .nzn-desc .nzn-step { display: grid; grid-template-columns: 34px 1fr; gap: 14px; margin-bottom: 18px; text-align: left; }\n  .nzn-desc .nzn-step:last-child { margin-bottom: 0; }\n  .nzn-desc .nzn-step span { width: 34px; height: 34px; border-radius: 999px; background: #fff; border: 1px solid #d9e9fb; display: flex; align-items: center; justify-content: center; font-weight: 900; }\n  .nzn-desc .nzn-step strong { display: block; font-size: 14px; color: #101114; }\n  .nzn-desc .nzn-step p { margin-top: 4px; font-size: 13px; color: #40566c; }\n  .nzn-desc .nzn-specs { border-top: 1px solid #e7e7e7; }\n  .nzn-desc .nzn-specs div { display: grid; grid-template-columns: minmax(180px, .8fr) 1.4fr; gap: 24px; padding: 15px 14px; border-bottom: 1px solid #e7e7e7; font-size: 14px; text-align: left; }\n  .nzn-desc .nzn-specs div:nth-child(even) { background: #fafafa; }\n  .nzn-desc .nzn-specs span { color: #60646c; }\n  .nzn-desc .nzn-specs strong { font-weight: 800; color: #101114; }\n  .nzn-desc .nzn-uses { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }\n  .nzn-desc .nzn-use { border-left: 3px solid #ff7a2f; background: #f7f7f7; padding: 15px 16px; font-size: 14px; line-height: 1.45; text-align: left; border-radius: 0 8px 8px 0; }\n  .nzn-desc .nzn-included-card { display: grid; grid-template-columns: auto 1fr; gap: 18px; align-items: center; border: 1px solid #e7e7e7; border-radius: 16px; background: #fafafa; padding: 24px; margin-bottom: 12px; }\n  .nzn-desc .nzn-included-qty { width: 48px; height: 48px; border-radius: 999px; background: #fff5ef; border: 1px solid rgba(255,122,47,.2); display: flex; align-items: center; justify-content: center; font-weight: 900; color: #ff7a2f; }\n  .nzn-desc .nzn-included-card strong { display: block; font-size: 16px; margin-bottom: 4px; }\n  .nzn-desc .nzn-included-card p { font-size: 14px; }\n  .nzn-desc .nzn-faq { display: grid; gap: 12px; }\n  .nzn-desc .nzn-faq-item { border: 1px solid #e7e7e7; border-radius: 12px; padding: 16px 18px; background: #fff; text-align: left; }\n  .nzn-desc .nzn-faq-item strong { display: block; margin-bottom: 7px; color: #101114; }\n  .nzn-desc .nzn-faq-item p { font-size: 14px; }\n  .nzn-desc .nzn-note { margin-top: 30px; background: #fafafa; border: 1px solid #e7e7e7; border-radius: 12px; padding: 16px 18px; text-align: center; color: #60646c; font-size: 13px; line-height: 1.55; }\n  .nzn-desc .nzn-wiring-box { background: #eef6ff; border-left: 4px solid #4a9af7; border-radius: 0 12px 12px 0; padding: 16px 20px; font-size: 13.5px; color: #2c4a6e; line-height: 1.7; margin-top: 20px; }\n  @media (max-width: 750px) {\n    .nzn-desc { width: 100%; max-width: 100%; padding: 0; overflow: hidden; }\n    .nzn-desc .nzn-tabs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; overflow: visible; min-height: unset; border-bottom: 0; width: 100%; max-width: 100%; }\n    .nzn-desc .nzn-tab { width: 100%; min-width: 0; padding: 12px 6px; font-size: 12px; line-height: 1.15; text-align: center; white-space: normal; border-bottom: 2px solid #e7e7e7; }\n    .nzn-desc .nzn-tab.is-active { border-bottom-color: #ff7a2f; }\n    .nzn-desc .nzn-card { padding: 24px 16px; min-height: unset; width: 100%; max-width: 100%; border-top: 1px solid #e7e7e7; border-radius: 0 0 16px 16px; }\n    .nzn-desc .nzn-panel.is-active { display: block; }\n    .nzn-desc .nzn-overview { grid-template-columns: 1fr; gap: 26px; }\n    .nzn-desc .nzn-overview-copy { padding-top: 0; text-align: center; }\n    .nzn-desc p { font-size: 14.5px; text-align: center; }\n    .nzn-desc .nzn-checks { margin-top: 24px; gap: 13px; width: fit-content; max-width: 100%; }\n    .nzn-desc .nzn-checks li { align-items: flex-start; gap: 10px; font-size: 14px; text-align: left; }\n    .nzn-desc .nzn-checks li::before { margin-top: 2px; }\n    .nzn-desc .nzn-uses { grid-template-columns: 1fr; }\n    .nzn-desc .nzn-specs div { grid-template-columns: 1fr; gap: 4px; padding: 13px 10px; }\n    .nzn-desc .nzn-section-title { text-align: left; padding-top: 0; margin-bottom: 22px; }\n    .nzn-desc .nzn-started { padding: 20px 16px; }\n    .nzn-desc .nzn-included-card { grid-template-columns: 1fr; text-align: left; justify-items: start; }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"nzn-desc\"\u003e\n  \u003cdiv class=\"nzn-tabs\"\u003e\n    \u003cbutton class=\"nzn-tab is-active\" type=\"button\" data-tab=\"overview\"\u003eOverview\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"specifications\"\u003eSpecifications\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"wiring\"\u003eWiring\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"included\"\u003eWhat's Included\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"uses\"\u003eCommon Uses\u003c\/button\u003e\n    \u003cbutton class=\"nzn-tab\" type=\"button\" data-tab=\"faqs\"\u003eFAQs\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"nzn-card\"\u003e\n\n    \u003c!-- OVERVIEW --\u003e\n    \u003cdiv class=\"nzn-panel is-active\" data-panel=\"overview\"\u003e\n      \u003cdiv class=\"nzn-panel-content\"\u003e\n        \u003cdiv class=\"nzn-overview\"\u003e\n          \u003cdiv class=\"nzn-overview-copy\"\u003e\n            \u003cp\u003eThe GY-BMP280 is a high-precision barometric pressure and temperature sensor breakout built around Bosch's BMP280. This 5V-ready version adds an onboard 3.3V regulator and I²C level shifter, so it drops straight onto a 5V Arduino (Uno, Nano, Mega) \u003cem\u003eor\u003c\/em\u003e a 3.3V board (ESP32, ESP8266, Raspberry Pi Pico) with no extra level-shifting hardware. Read atmospheric pressure, temperature and approximate altitude over I²C or SPI.\u003c\/p\u003e\n\n            \u003cul class=\"nzn-checks\"\u003e\n              \u003cli\u003eGenuine Bosch BMP280 pressure + temperature sensor\u003c\/li\u003e\n              \u003cli\u003e5V \u0026amp; 3.3V ready — onboard regulator + level shifter\u003c\/li\u003e\n              \u003cli\u003ePressure: 300–1100 hPa, ±1 hPa accuracy\u003c\/li\u003e\n              \u003cli\u003eTemperature: −40°C to +85°C, ±1.0°C\u003c\/li\u003e\n              \u003cli\u003eAltitude resolution down to ~±1 m\u003c\/li\u003e\n              \u003cli\u003eI²C (default 0x76) and SPI interface\u003c\/li\u003e\n              \u003cli\u003eUltra-low power — perfect for battery \u0026amp; IoT builds\u003c\/li\u003e\n            \u003c\/ul\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-started\"\u003e\n            \u003ch3\u003eQuick Start\u003c\/h3\u003e\n\n            \u003cdiv class=\"nzn-step\"\u003e\n              \u003cspan\u003e1\u003c\/span\u003e\n              \u003cdiv\u003e\n                \u003cstrong\u003ePower it\u003c\/strong\u003e\n                \u003cp\u003eVCC to 5V (or 3.3V), GND to GND. The onboard regulator handles either rail safely.\u003c\/p\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"nzn-step\"\u003e\n              \u003cspan\u003e2\u003c\/span\u003e\n              \u003cdiv\u003e\n                \u003cstrong\u003eWire the I²C bus\u003c\/strong\u003e\n                \u003cp\u003eSDA → A4, SCL → A5 on an Uno\/Nano. On an ESP32 use GPIO21 (SDA) and GPIO22 (SCL).\u003c\/p\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"nzn-step\"\u003e\n              \u003cspan\u003e3\u003c\/span\u003e\n              \u003cdiv\u003e\n                \u003cstrong\u003eSet the address\u003c\/strong\u003e\n                \u003cp\u003eTie SDO to GND for address 0x76 (default). Tie it to VCC for 0x77 to run two sensors on one bus.\u003c\/p\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"nzn-step\"\u003e\n              \u003cspan\u003e4\u003c\/span\u003e\n              \u003cdiv\u003e\n                \u003cstrong\u003eLoad the library\u003c\/strong\u003e\n                \u003cp\u003eInstall the Adafruit BMP280 library from the Arduino Library Manager and run the example sketch.\u003c\/p\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n\u003cstrong\u003eHeads up:\u003c\/strong\u003e This is a BMP280 — it measures pressure and temperature only. If you also need humidity, choose a BME280 instead.\u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- SPECIFICATIONS --\u003e\n    \u003cdiv class=\"nzn-panel\" data-panel=\"specifications\"\u003e\n      \u003cdiv class=\"nzn-panel-content\"\u003e\n        \u003ch3 class=\"nzn-section-title\"\u003eSpecifications\u003c\/h3\u003e\n\n        \u003cdiv class=\"nzn-specs\"\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eModel\u003c\/span\u003e\u003cstrong\u003eGY-BMP280 (V461, 5V variant)\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eSensor IC\u003c\/span\u003e\u003cstrong\u003eBosch BMP280\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eMeasurements\u003c\/span\u003e\u003cstrong\u003eBarometric pressure, temperature, altitude\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003ePressure Range\u003c\/span\u003e\u003cstrong\u003e300–1100 hPa\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003ePressure Accuracy\u003c\/span\u003e\u003cstrong\u003e±1 hPa (absolute)\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eTemperature Range\u003c\/span\u003e\u003cstrong\u003e−40°C to +85°C\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eTemperature Accuracy\u003c\/span\u003e\u003cstrong\u003e±1.0°C\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eAltitude Resolution\u003c\/span\u003e\u003cstrong\u003e~±1 m (relative)\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eInterface\u003c\/span\u003e\u003cstrong\u003eI²C (default) \u0026amp; SPI\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eI²C Address\u003c\/span\u003e\u003cstrong\u003e0x76 (default) \/ 0x77\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eSupply Voltage\u003c\/span\u003e\u003cstrong\u003e3.3V – 5V (onboard regulator)\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eLogic Levels\u003c\/span\u003e\u003cstrong\u003e5V \u0026amp; 3.3V tolerant (level shifted)\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eCurrent Draw\u003c\/span\u003e\u003cstrong\u003e~2.7 µA @ 1 Hz\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003ePins\u003c\/span\u003e\u003cstrong\u003e6 — VCC, GND, SCL, SDA, CSB, SDO\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eBoard Size\u003c\/span\u003e\u003cstrong\u003e~21 × 11 mm\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eCompliance\u003c\/span\u003e\u003cstrong\u003eRoHS\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n\u003cstrong\u003eNote:\u003c\/strong\u003e Replaces the older BMP085 \/ BMP180 — lower noise, higher resolution and a faster sample rate.\u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- WIRING --\u003e\n    \u003cdiv class=\"nzn-panel\" data-panel=\"wiring\"\u003e\n      \u003cdiv class=\"nzn-panel-content\"\u003e\n        \u003ch3 class=\"nzn-section-title\"\u003eWiring (I²C)\u003c\/h3\u003e\n\n        \u003cdiv class=\"nzn-specs\"\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eVCC\u003c\/span\u003e\u003cstrong\u003e5V or 3.3V\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eGND\u003c\/span\u003e\u003cstrong\u003eGND\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eSCL\u003c\/span\u003e\u003cstrong\u003eA5 (Uno\/Nano) · GPIO22 (ESP32)\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eSDA\u003c\/span\u003e\u003cstrong\u003eA4 (Uno\/Nano) · GPIO21 (ESP32)\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eSDO\u003c\/span\u003e\u003cstrong\u003eGND for 0x76 · VCC for 0x77\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eCSB\u003c\/span\u003e\u003cstrong\u003eLeave open for I²C (internally pulled high)\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nzn-wiring-box\"\u003e\n          \u003cstrong\u003eUsing SPI instead?\u003c\/strong\u003e Connect CSB as chip select, SCL as SCK (clock), SDA as SDI (MOSI) and SDO as SDO (MISO). Drive CSB low to select the sensor.\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n\u003cstrong\u003eNote:\u003c\/strong\u003e The board includes I²C pull-up resistors, so no external pull-ups are needed on the SDA\/SCL lines.\u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- INCLUDED --\u003e\n    \u003cdiv class=\"nzn-panel\" data-panel=\"included\"\u003e\n      \u003cdiv class=\"nzn-panel-content\"\u003e\n        \u003ch3 class=\"nzn-section-title\"\u003eWhat's Included\u003c\/h3\u003e\n\n        \u003cdiv class=\"nzn-included-card\"\u003e\n          \u003cdiv class=\"nzn-included-qty\"\u003e1×\u003c\/div\u003e\n          \u003cdiv\u003e\n            \u003cstrong\u003eGY-BMP280 Sensor Module (5V)\u003c\/strong\u003e\n            \u003cp\u003eBosch BMP280 breakout with onboard regulator and level shifter, ready for I²C or SPI.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nzn-included-card\"\u003e\n          \u003cdiv class=\"nzn-included-qty\"\u003e1×\u003c\/div\u003e\n          \u003cdiv\u003e\n            \u003cstrong\u003e6-Pin Male Header Strip\u003c\/strong\u003e\n            \u003cp\u003eSupplied loose for breadboard or jumper use — a quick solder fit when you're ready.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n\u003cstrong\u003eNote:\u003c\/strong\u003e Header pins ship unsoldered so you can choose straight or right-angle mounting to suit your build.\u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- USES --\u003e\n    \u003cdiv class=\"nzn-panel\" data-panel=\"uses\"\u003e\n      \u003cdiv class=\"nzn-panel-content\"\u003e\n        \u003ch3 class=\"nzn-section-title\"\u003eCommon Uses\u003c\/h3\u003e\n\n        \u003cdiv class=\"nzn-uses\"\u003e\n          \u003cdiv class=\"nzn-use\"\u003eWeather stations \u0026amp; environmental data logging\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eAltimeters \u0026amp; drone \/ quadcopter altitude hold\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eIoT \u0026amp; home automation sensors (ESP32 \/ ESP8266)\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eIndoor navigation \u0026amp; floor \/ elevation detection\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eHiking \u0026amp; barometric trend \/ storm monitoring\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eMaker, STEM \u0026amp; Arduino learning projects\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n\u003cstrong\u003eNote:\u003c\/strong\u003e Pairs perfectly with an ESP32 or ESP8266 for a wireless weather node you can log to the cloud.\u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- FAQS --\u003e\n    \u003cdiv class=\"nzn-panel\" data-panel=\"faqs\"\u003e\n      \u003cdiv class=\"nzn-panel-content\"\u003e\n        \u003ch3 class=\"nzn-section-title\"\u003eCommon Questions\u003c\/h3\u003e\n\n        \u003cdiv class=\"nzn-faq\"\u003e\n          \u003cdiv class=\"nzn-faq-item\"\u003e\n            \u003cstrong\u003eDoes it really work with a 5V Arduino?\u003c\/strong\u003e\n            \u003cp\u003eYes. Unlike the bare 3.3V purple boards, this version has an onboard regulator and I²C level shifter, so you can power and signal it directly from a 5V Uno, Nano or Mega — and it still works on 3.3V boards like the ESP32.\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-faq-item\"\u003e\n            \u003cstrong\u003eI²C or SPI — which should I use?\u003c\/strong\u003e\n            \u003cp\u003eBoth are supported. I²C is easiest and is the default (address 0x76, only two signal wires). Tie SDO high to switch to 0x77 if you need two sensors on one I²C bus.\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-faq-item\"\u003e\n            \u003cstrong\u003eWhat code library do I use?\u003c\/strong\u003e\n            \u003cp\u003eThe Adafruit BMP280 library is the most popular — search \"Adafruit BMP280\" in the Arduino Library Manager and load the example. The lighter BMP280_DEV library also works well.\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-faq-item\"\u003e\n            \u003cstrong\u003eWhat's the difference between BMP280 and BME280?\u003c\/strong\u003e\n            \u003cp\u003eThe BMP280 measures pressure and temperature. The BME280 adds a humidity sensor. This module is the BMP280, so it does not measure humidity.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n\u003cstrong\u003eStocked \u0026amp; shipped from New Zealand\u003c\/strong\u003e — fast local dispatch, no long waits from overseas.\u003c\/div\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n  document.addEventListener('click', function(event) {\n    const tab = event.target.closest('.nzn-desc .nzn-tab');\n    if (!tab) return;\n    const wrapper = tab.closest('.nzn-desc');\n    if (!wrapper) return;\n    const target = tab.getAttribute('data-tab');\n    wrapper.querySelectorAll('.nzn-tab').forEach(function(item) { item.classList.remove('is-active'); });\n    wrapper.querySelectorAll('.nzn-panel').forEach(function(panel) { panel.classList.remove('is-active'); });\n    tab.classList.add('is-active');\n    const panel = wrapper.querySelector('[data-panel=\"' + target + '\"]');\n    if (panel) panel.classList.add('is-active');\n  });\n\u003c\/script\u003e","brand":"NZN Electronics","offers":[{"title":"1 Pack - ($4.99 ea)","offer_id":42780549120096,"sku":"MOD-BMP280-5V-1","price":4.99,"currency_code":"NZD","in_stock":true},{"title":"5 Pack - ($3.99 ea)","offer_id":42780549152864,"sku":"MOD-BMP280-5V-2","price":19.99,"currency_code":"NZD","in_stock":true},{"title":"10 Pack - ($3.59 ea)","offer_id":42780549185632,"sku":"MOD-BMP280-5V-3","price":35.99,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/GY-BMP-280-5V.png?v=1780277056"},{"product_id":"hc-sr04-ultrasonic-distance-sensor-module","title":"HC-SR04 Ultrasonic Distance Sensor Module","description":"\u003c!--\n  NZN Electronics — HC-SR04 Ultrasonic Distance Sensor\n  Description Template v5\n  SEO: all content in DOM, semantic HTML, dl\/dt\/dd specs\n--\u003e\n\n\u003cstyle\u003e\n  \/* ── Root ── *\/\n  .nznd { width: 100%; max-width: 1400px; margin: 0 auto; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: #101114; }\n  .nznd, .nznd * { box-sizing: border-box; }\n\n  \/* ── Tabs ── *\/\n  .nznd__tabs { width: 100%; display: flex; gap: 0; border-bottom: 2px solid #e7e7e7; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; -webkit-overflow-scrolling: touch; }\n  .nznd__tabs::-webkit-scrollbar { display: none; }\n  .nznd__tab {\n    flex: 0 0 auto; background: none; border: none;\n    border-bottom: 2px solid transparent; margin-bottom: -2px;\n    padding: 13px 18px;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n    font-size: 13.5px; font-weight: 700; white-space: nowrap; color: #60646c;\n    cursor: pointer; transition: color .16s, border-color .16s;\n  }\n  .nznd__tab:hover { color: #ff7a2f; }\n  .nznd__tab.is-active { color: #ff7a2f; border-bottom-color: #ff7a2f; }\n\n  \/* ── Card ── *\/\n  .nznd__card {\n    width: 100%; background: #fff;\n    border: 1px solid #e7e7e7; border-top: none;\n    border-radius: 0 0 16px 16px;\n    padding: 36px 32px;\n    box-shadow: 0 8px 24px rgba(0,0,0,.04);\n    min-height: 480px;\n  }\n\n  \/* ── Panels ── *\/\n  .nznd__panel { display: none; }\n  .nznd__panel.is-active { display: block; animation: nzndIn .22s cubic-bezier(.22,.68,0,1.2) both; }\n  @keyframes nzndIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }\n\n  \/* ── Force left-align ── *\/\n  .nznd__panel h2, .nznd__panel h3, .nznd__panel p,\n  .nznd__panel li, .nznd__panel dt, .nznd__panel dd,\n  .nznd__panel strong, .nznd__panel span { text-align: left; }\n  .nznd__stat span { text-align: center; }\n\n  \/* ── Orange accent strip ── *\/\n  .nznd__strip { border-left: 3px solid #ff7a2f; background: #fff5ef; border-radius: 0 10px 10px 0; padding: 18px 20px; margin-bottom: 24px; }\n  .nznd__strip h2 { font-size: 18px; font-weight: 800; color: #101114; margin: 0 0 7px; line-height: 1.25; text-align: left; }\n  .nznd__strip p  { font-size: 14px; line-height: 1.65; color: #60646c; margin: 0; text-align: left; }\n\n  \/* ── Stat cards ── *\/\n  .nznd__stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 22px; }\n  .nznd__stat {\n    background: #f9fafb; border: 1px solid #e7e7e7; border-top: 3px solid transparent;\n    border-radius: 10px; padding: 14px 12px; text-align: center;\n    transition: border-top-color .18s, box-shadow .18s;\n  }\n  .nznd__stat:hover { border-top-color: #ff7a2f; box-shadow: 0 4px 12px rgba(255,122,47,.1); }\n  .nznd__stat-val { display: block; font-size: 19px; font-weight: 800; color: #101114; letter-spacing: -.02em; white-space: nowrap; margin-bottom: 4px; text-align: center; }\n  .nznd__stat-lbl { display: block; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: #60646c; text-align: center; }\n\n  \/* ── Feature pills ── *\/\n  .nznd__pills { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 0 0 22px; }\n  .nznd__pill { display: inline-flex; align-items: center; gap: 7px; background: #fff; border: 1px solid #e7e7e7; border-radius: 999px; padding: 6px 13px; font-size: 13px; font-weight: 500; color: #101114; box-shadow: 0 1px 3px rgba(0,0,0,.05); }\n  .nznd__dot { width: 7px; height: 7px; border-radius: 50%; background: #ff7a2f; flex-shrink: 0; display: inline-block; }\n  .nznd__dot--blue { background: #4a9af7; }\n\n  \/* ── Callout ── *\/\n  .nznd__callout { display: flex; align-items: flex-start; gap: 12px; border-radius: 10px; padding: 15px 18px; margin-bottom: 22px; }\n  .nznd__callout--orange { background: #fff5ef; border: 1px solid rgba(255,122,47,.3); }\n  .nznd__callout--blue   { background: #eef5ff; border: 1px solid rgba(74,154,247,.3); }\n  .nznd__callout svg { width: 17px; height: 17px; flex-shrink: 0; margin-top: 1px; }\n  .nznd__callout strong { display: block; font-size: 13px; font-weight: 700; color: #101114; margin-bottom: 4px; text-align: left; }\n  .nznd__callout p { font-size: 13px; line-height: 1.6; color: #60646c; margin: 0; text-align: left; }\n\n  \/* ── Eyebrow label ── *\/\n  .nznd__eyebrow { font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: #ff7a2f; margin: 0 0 16px; text-align: left; }\n  .nznd__body { font-size: 14.5px; line-height: 1.7; color: #60646c; margin: 0 0 22px; text-align: left; }\n\n  \/* ── Spec dl table ── *\/\n  .nznd__specs { border: 1px solid #e7e7e7; border-radius: 10px; overflow: hidden; margin-bottom: 22px; }\n  .nznd__spec-row { display: grid; grid-template-columns: minmax(170px, .85fr) 1.4fr; border-bottom: 1px solid #e7e7e7; }\n  .nznd__spec-row:last-child { border-bottom: none; }\n  .nznd__spec-row:nth-child(even) { background: #fafafa; }\n  .nznd__spec-row dt { padding: 12px 15px; font-size: 13.5px; font-weight: 500; color: #60646c; border-right: 1px solid #e7e7e7; text-align: left; }\n  .nznd__spec-row dd { padding: 12px 15px; font-size: 13.5px; font-weight: 700; color: #101114; text-align: left; }\n\n  \/* ── Wiring layout ── *\/\n  .nznd__wiring { display: grid; grid-template-columns: 200px 1fr; gap: 28px; margin-bottom: 22px; align-items: start; }\n\n  \/* ── Module drawing box ── *\/\n  .nznd__tobox {\n    background: #f9fafb; border: 1px solid #e7e7e7; border-radius: 12px;\n    padding: 18px 12px 12px; display: flex; flex-direction: column; align-items: center;\n  }\n  .nznd__tobox-lbl { font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: #60646c; margin-bottom: 10px; text-align: center; }\n  .nznd__tosvg { width: 100%; max-width: 160px; }\n  .nznd__tobox-sub { font-size: 10.5px; font-weight: 600; color: #60646c; margin-top: 8px; text-align: center; }\n  .nznd__tobox-sub span { color: #ff7a2f; }\n\n  \/* ── Step cards ── *\/\n  .nznd__steps { list-style: none; padding: 0; margin: 0; display: grid; gap: 9px; }\n  .nznd__step { display: grid; grid-template-columns: 34px 1fr; gap: 11px; align-items: start; background: #f9fafb; border: 1px solid #e7e7e7; border-radius: 10px; padding: 13px; }\n  .nznd__step-n { width: 34px; height: 34px; border-radius: 8px; background: #fff5ef; border: 1px solid rgba(255,122,47,.3); display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 800; color: #ff7a2f; flex-shrink: 0; }\n  .nznd__step strong { display: block; font-size: 13.5px; font-weight: 700; color: #101114; margin-bottom: 3px; text-align: left; }\n  .nznd__step p { font-size: 12.5px; line-height: 1.55; color: #60646c; margin: 0; text-align: left; }\n  .nznd__step code { font-size: 12px; font-family: monospace; background: #fff; border: 1px solid #e7e7e7; border-radius: 4px; padding: 1px 5px; color: #101114; }\n\n  \/* ── Use case grid ── *\/\n  .nznd__uses { display: grid; grid-template-columns: repeat(3, 1fr); gap: 11px; margin-bottom: 22px; }\n  .nznd__use { background: #f9fafb; border: 1px solid #e7e7e7; border-left: 3px solid #ff7a2f; border-radius: 0 9px 9px 0; padding: 14px; transition: background .15s, box-shadow .15s; }\n  .nznd__use:hover { background: #fff5ef; box-shadow: 0 2px 8px rgba(255,122,47,.1); }\n  .nznd__use strong { display: block; font-size: 13.5px; font-weight: 700; color: #101114; margin-bottom: 4px; text-align: left; }\n  .nznd__use p { font-size: 12.5px; line-height: 1.5; color: #60646c; margin: 0; text-align: left; }\n\n  \/* ── FAQ accordion ── *\/\n  .nznd__faq { display: grid; gap: 8px; }\n  .nznd__faq-item { border: 1px solid #e7e7e7; border-radius: 10px; overflow: hidden; background: #fff; }\n  .nznd__faq-q {\n    width: 100%; background: #f9fafb; border: none;\n    padding: 14px 17px;\n    display: flex; align-items: center; justify-content: space-between; gap: 10px;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n    font-size: 13.5px; font-weight: 700; color: #101114;\n    cursor: pointer; text-align: left; transition: background .15s, color .15s;\n  }\n  .nznd__faq-q:hover { background: #fff5ef; }\n  .nznd__faq-item.is-open .nznd__faq-q { background: #fff5ef; color: #ff7a2f; }\n  .nznd__faq-icon {\n    width: 20px; height: 20px; flex-shrink: 0;\n    border-radius: 50%; background: #e7e7e7;\n    display: flex; align-items: center; justify-content: center;\n    transition: background .15s, transform .25s cubic-bezier(.34,1.56,.64,1);\n  }\n  .nznd__faq-q:hover .nznd__faq-icon { background: #ffe0cc; }\n  .nznd__faq-item.is-open .nznd__faq-icon { background: #ff7a2f; transform: rotate(45deg); }\n  .nznd__faq-icon svg { width: 10px; height: 10px; stroke: #60646c; }\n  .nznd__faq-item.is-open .nznd__faq-icon svg { stroke: #fff; }\n  .nznd__faq-a {\n    display: block;\n    max-height: 0;\n    overflow: hidden;\n    padding: 0 17px;\n    font-size: 13.5px; line-height: 1.65; color: #60646c;\n    border-top: 1px solid transparent;\n    text-align: left;\n    transition: max-height .32s cubic-bezier(.4,0,.2,1), padding .24s ease, border-color .24s ease;\n  }\n  .nznd__faq-item.is-open .nznd__faq-a { max-height: 260px; padding: 14px 17px; border-top-color: #e7e7e7; }\n\n  \/* ── Responsive ── *\/\n  @media (max-width: 750px) {\n    .nznd__card  { padding: 22px 16px; min-height: 0; }\n    .nznd__stats { grid-template-columns: repeat(2, 1fr); }\n    .nznd__wiring { grid-template-columns: 1fr; }\n    .nznd__tobox { flex-direction: row; gap: 16px; align-items: center; padding: 14px; }\n    .nznd__tobox-lbl { display: none; }\n    .nznd__tosvg { max-width: 90px; }\n    .nznd__tobox-sub { margin-top: 0; text-align: left; }\n    .nznd__uses { grid-template-columns: 1fr 1fr; }\n    .nznd__spec-row { grid-template-columns: 1fr; }\n    .nznd__spec-row dt { border-right: none; border-bottom: 1px solid #e7e7e7; padding-bottom: 5px; }\n    .nznd__spec-row dd { padding-top: 5px; }\n    .nznd__tab { padding: 11px 12px; font-size: 12.5px; }\n  }\n  @media (max-width: 480px) {\n    .nznd__uses { grid-template-columns: 1fr; }\n    .nznd__tab  { padding: 10px 9px; font-size: 11.5px; }\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .nznd__panel { animation: none !important; }\n    .nznd__faq-a { transition: none !important; }\n    .nznd__faq-icon { transition: background .15s !important; }\n    .nznd * { transition-duration: .01ms !important; }\n  }\n\u003c\/style\u003e\n\n\u003carticle class=\"nznd\" itemscope itemtype=\"https:\/\/schema.org\/Product\"\u003e\n  \u003cmeta itemprop=\"name\" content=\"HC-SR04 Ultrasonic Distance Sensor Module\"\u003e\n  \u003cmeta itemprop=\"sku\" content=\"HCSR04\"\u003e\n  \u003cmeta itemprop=\"brand\" content=\"NZN Electronics\"\u003e\n\n  \u003cnav class=\"nznd__tabs\" role=\"tablist\" aria-label=\"Product sections\"\u003e\n    \u003cbutton class=\"nznd__tab is-active\" type=\"button\" data-tab=\"overview\" role=\"tab\" aria-selected=\"true\"\u003eOverview\u003c\/button\u003e\n    \u003cbutton class=\"nznd__tab\" type=\"button\" data-tab=\"specs\" role=\"tab\" aria-selected=\"false\"\u003eSpecifications\u003c\/button\u003e\n    \u003cbutton class=\"nznd__tab\" type=\"button\" data-tab=\"wiring\" role=\"tab\" aria-selected=\"false\"\u003eWiring Guide\u003c\/button\u003e\n    \u003cbutton class=\"nznd__tab\" type=\"button\" data-tab=\"uses\" role=\"tab\" aria-selected=\"false\"\u003eCommon Uses\u003c\/button\u003e\n    \u003cbutton class=\"nznd__tab\" type=\"button\" data-tab=\"faq\" role=\"tab\" aria-selected=\"false\"\u003eFAQs\u003c\/button\u003e\n  \u003c\/nav\u003e\n\n  \u003cdiv class=\"nznd__card\"\u003e\n\n    \u003c!-- ══════════════ OVERVIEW ══════════════ --\u003e\n    \u003csection class=\"nznd__panel is-active\" data-panel=\"overview\" role=\"tabpanel\"\u003e\n\n      \u003cdiv class=\"nznd__strip\"\u003e\n        \u003ch2 itemprop=\"name\"\u003eHC-SR04 — Ultrasonic Distance Sensor Module\u003c\/h2\u003e\n        \u003cp itemprop=\"description\"\u003eA popular 40 kHz ultrasonic ranging module capable of measuring distances from 2 cm to 450 cm with up to 3 mm precision. Sends a timed echo pulse and lets your microcontroller calculate distance using the speed of sound. Works directly with Arduino, ESP32, and Raspberry Pi GPIO pins with no extra components required.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nznd__stats\" role=\"list\" aria-label=\"Key specifications\"\u003e\n        \u003cdiv class=\"nznd__stat\" role=\"listitem\"\u003e\n          \u003cspan class=\"nznd__stat-val\"\u003e2–450cm\u003c\/span\u003e\n          \u003cspan class=\"nznd__stat-lbl\"\u003eDetection Range\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"nznd__stat\" role=\"listitem\"\u003e\n          \u003cspan class=\"nznd__stat-val\"\u003e3mm\u003c\/span\u003e\n          \u003cspan class=\"nznd__stat-lbl\"\u003ePrecision\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"nznd__stat\" role=\"listitem\"\u003e\n          \u003cspan class=\"nznd__stat-val\"\u003e40 kHz\u003c\/span\u003e\n          \u003cspan class=\"nznd__stat-lbl\"\u003eUltrasonic Freq.\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"nznd__stat\" role=\"listitem\"\u003e\n          \u003cspan class=\"nznd__stat-val\"\u003eDC 5V\u003c\/span\u003e\n          \u003cspan class=\"nznd__stat-lbl\"\u003eSupply Voltage\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cul class=\"nznd__pills\" aria-label=\"Key features\"\u003e\n        \u003cli class=\"nznd__pill\"\u003e\n\u003cspan class=\"nznd__dot\"\u003e\u003c\/span\u003e2 cm Blind-Zone Minimum\u003c\/li\u003e\n        \u003cli class=\"nznd__pill\"\u003e\n\u003cspan class=\"nznd__dot\"\u003e\u003c\/span\u003e450 cm Maximum Range\u003c\/li\u003e\n        \u003cli class=\"nznd__pill\"\u003e\n\u003cspan class=\"nznd__dot\"\u003e\u003c\/span\u003e±15° Sensing Angle\u003c\/li\u003e\n        \u003cli class=\"nznd__pill\"\u003e\n\u003cspan class=\"nznd__dot nznd__dot--blue\"\u003e\u003c\/span\u003eArduino Compatible\u003c\/li\u003e\n        \u003cli class=\"nznd__pill\"\u003e\n\u003cspan class=\"nznd__dot nznd__dot--blue\"\u003e\u003c\/span\u003eESP32 Compatible\u003c\/li\u003e\n        \u003cli class=\"nznd__pill\"\u003e\n\u003cspan class=\"nznd__dot nznd__dot--blue\"\u003e\u003c\/span\u003eRaspberry Pi Compatible\u003c\/li\u003e\n        \u003cli class=\"nznd__pill\"\u003e\n\u003cspan class=\"nznd__dot\"\u003e\u003c\/span\u003eOnly 2 Signal Pins\u003c\/li\u003e\n        \u003cli class=\"nznd__pill\"\u003e\n\u003cspan class=\"nznd__dot\"\u003e\u003c\/span\u003e7.5g Lightweight\u003c\/li\u003e\n      \u003c\/ul\u003e\n\n      \u003cdiv class=\"nznd__callout nznd__callout--orange\" role=\"note\"\u003e\n        \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"#ff7a2f\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cline x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\u003e\u003c\/line\u003e\u003cline x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\n        \u003cdiv\u003e\n          \u003cstrong\u003e5V logic — use a voltage divider on the ECHO pin for 3.3V boards\u003c\/strong\u003e\n          \u003cp\u003eThe HC-SR04 TRIG and ECHO pins operate at 5V logic. The TRIG pin is fine driven from 3.3V GPIO, but the ECHO pin outputs 5V which can damage ESP32 or Raspberry Pi inputs. Use a simple two-resistor voltage divider (1kΩ and 2kΩ) to drop ECHO to 3.3V before connecting to a 3.3V board.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n    \u003c\/section\u003e\n\n    \u003c!-- ══════════════ SPECIFICATIONS ══════════════ --\u003e\n    \u003csection class=\"nznd__panel\" data-panel=\"specs\" role=\"tabpanel\"\u003e\n\n      \u003cp class=\"nznd__eyebrow\"\u003eElectrical \u0026amp; Physical Specifications\u003c\/p\u003e\n      \u003cp class=\"nznd__body\"\u003eFull specifications for the HC-SR04 ultrasonic distance sensor module. All values at DC 5V supply unless stated.\u003c\/p\u003e\n\n      \u003cdl class=\"nznd__specs\" itemprop=\"additionalProperty\"\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003eModel Number\u003c\/dt\u003e\n\u003cdd\u003eHC-SR04 (HCSR04)\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003eWorking Voltage\u003c\/dt\u003e\n\u003cdd\u003eDC 5V\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003eQuiescent Current\u003c\/dt\u003e\n\u003cdd\u003eLess than 2 mA\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003eLevel Output (High)\u003c\/dt\u003e\n\u003cdd\u003e5V\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003eLevel Output (Low)\u003c\/dt\u003e\n\u003cdd\u003e0V\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003eDetection Range\u003c\/dt\u003e\n\u003cdd\u003e2 cm – 450 cm\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003ePrecision\u003c\/dt\u003e\n\u003cdd\u003eUp to 3 mm (0.3 cm)\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003eSensing Angle\u003c\/dt\u003e\n\u003cdd\u003eNot more than 15°\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003eUltrasonic Frequency\u003c\/dt\u003e\n\u003cdd\u003e40 kHz\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003eTrigger Input Signal\u003c\/dt\u003e\n\u003cdd\u003e10 µs TTL pulse minimum\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003eDistance Formula\u003c\/dt\u003e\n\u003cdd\u003eDistance = (Echo high time × 340 m\/s) ÷ 2\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003ePins\u003c\/dt\u003e\n\u003cdd\u003eVCC, TRIG, ECHO, GND\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003eWeight\u003c\/dt\u003e\n\u003cdd\u003e7.5 g\u003c\/dd\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__spec-row\"\u003e\n\u003cdt\u003eMCU Compatibility\u003c\/dt\u003e\n\u003cdd\u003eArduino, ESP32 (with divider on ECHO), Raspberry Pi\u003c\/dd\u003e\n\u003c\/div\u003e\n      \u003c\/dl\u003e\n\n      \u003cdiv class=\"nznd__callout nznd__callout--blue\" role=\"note\"\u003e\n        \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"#4a9af7\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cline x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"\u003e\u003c\/line\u003e\u003cline x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\n        \u003cdiv\u003e\n          \u003cstrong\u003eHow distance is calculated\u003c\/strong\u003e\n          \u003cp\u003eAfter the 10 µs trigger pulse, the module fires eight 40 kHz bursts and raises ECHO HIGH for the duration the sound takes to travel to the target and back. Divide the echo time in microseconds by 58 to get centimetres, or by 148 for inches.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n    \u003c\/section\u003e\n\n    \u003c!-- ══════════════ WIRING GUIDE ══════════════ --\u003e\n    \u003csection class=\"nznd__panel\" data-panel=\"wiring\" role=\"tabpanel\"\u003e\n\n      \u003cp class=\"nznd__eyebrow\"\u003ePinout \u0026amp; Wiring Instructions\u003c\/p\u003e\n      \u003cp class=\"nznd__body\"\u003eThe HC-SR04 has four pins in a single row: \u003cstrong\u003eVCC, TRIG, ECHO, GND\u003c\/strong\u003e — left to right when the two transducer cylinders face you.\u003c\/p\u003e\n\n      \u003cdiv class=\"nznd__wiring\"\u003e\n\n        \u003c!-- Module pin diagram --\u003e\n        \u003cdiv class=\"nznd__tobox\" aria-label=\"HC-SR04 pin diagram\"\u003e\n          \u003cp class=\"nznd__tobox-lbl\"\u003eHC-SR04 Pinout\u003c\/p\u003e\n\n          \u003csvg class=\"nznd__tosvg\" viewbox=\"0 0 160 220\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"HC-SR04 module front view showing VCC, TRIG, ECHO and GND pins\"\u003e\n            \u003cdefs\u003e\n              \u003clineargradient id=\"sr04-board\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"\u003e\n                \u003cstop offset=\"0%\" stop-color=\"#1f6b3a\"\u003e\u003c\/stop\u003e\n                \u003cstop offset=\"100%\" stop-color=\"#144d2b\"\u003e\u003c\/stop\u003e\n              \u003c\/lineargradient\u003e\n              \u003clineargradient id=\"sr04-pin\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\"\u003e\n                \u003cstop offset=\"0%\" stop-color=\"#888\"\u003e\u003c\/stop\u003e\n                \u003cstop offset=\"45%\" stop-color=\"#d0d0d0\"\u003e\u003c\/stop\u003e\n                \u003cstop offset=\"100%\" stop-color=\"#999\"\u003e\u003c\/stop\u003e\n              \u003c\/lineargradient\u003e\n            \u003c\/defs\u003e\n\n            \u003c!-- PCB body --\u003e\n            \u003crect x=\"10\" y=\"10\" width=\"140\" height=\"130\" rx=\"6\" fill=\"url(#sr04-board)\" stroke=\"#0d3d20\" stroke-width=\"1.5\"\u003e\u003c\/rect\u003e\n\n            \u003c!-- Left transducer (Tx) --\u003e\n            \u003cellipse cx=\"45\" cy=\"65\" rx=\"26\" ry=\"26\" fill=\"#111\" stroke=\"#333\" stroke-width=\"1.5\"\u003e\u003c\/ellipse\u003e\n            \u003cellipse cx=\"45\" cy=\"65\" rx=\"19\" ry=\"19\" fill=\"#1a1a1a\"\u003e\u003c\/ellipse\u003e\n            \u003cellipse cx=\"45\" cy=\"65\" rx=\"4\" ry=\"4\" fill=\"#444\"\u003e\u003c\/ellipse\u003e\n            \u003ctext x=\"45\" y=\"103\" text-anchor=\"middle\" fill=\"#5dd68a\" font-size=\"7\" font-family=\"'Inter',sans-serif\" font-weight=\"700\"\u003eTX\u003c\/text\u003e\n\n            \u003c!-- Right transducer (Rx) --\u003e\n            \u003cellipse cx=\"115\" cy=\"65\" rx=\"26\" ry=\"26\" fill=\"#111\" stroke=\"#333\" stroke-width=\"1.5\"\u003e\u003c\/ellipse\u003e\n            \u003cellipse cx=\"115\" cy=\"65\" rx=\"19\" ry=\"19\" fill=\"#1a1a1a\"\u003e\u003c\/ellipse\u003e\n            \u003cellipse cx=\"115\" cy=\"65\" rx=\"4\" ry=\"4\" fill=\"#444\"\u003e\u003c\/ellipse\u003e\n            \u003ctext x=\"115\" y=\"103\" text-anchor=\"middle\" fill=\"#5dd68a\" font-size=\"7\" font-family=\"'Inter',sans-serif\" font-weight=\"700\"\u003eRX\u003c\/text\u003e\n\n            \u003c!-- Pin labels on PCB --\u003e\n            \u003ctext x=\"22\" y=\"122\" text-anchor=\"middle\" fill=\"#5dd68a\" font-size=\"6.5\" font-family=\"'Inter',sans-serif\" font-weight=\"700\"\u003eVCC\u003c\/text\u003e\n            \u003ctext x=\"57\" y=\"122\" text-anchor=\"middle\" fill=\"#5dd68a\" font-size=\"6.5\" font-family=\"'Inter',sans-serif\" font-weight=\"700\"\u003eTRIG\u003c\/text\u003e\n            \u003ctext x=\"96\" y=\"122\" text-anchor=\"middle\" fill=\"#5dd68a\" font-size=\"6.5\" font-family=\"'Inter',sans-serif\" font-weight=\"700\"\u003eECHO\u003c\/text\u003e\n            \u003ctext x=\"134\" y=\"122\" text-anchor=\"middle\" fill=\"#5dd68a\" font-size=\"6.5\" font-family=\"'Inter',sans-serif\" font-weight=\"700\"\u003eGND\u003c\/text\u003e\n\n            \u003c!-- Pin headers --\u003e\n            \u003crect x=\"16\" y=\"128\" width=\"12\" height=\"8\" rx=\"2\" fill=\"#c8a415\"\u003e\u003c\/rect\u003e\n            \u003crect x=\"51\" y=\"128\" width=\"12\" height=\"8\" rx=\"2\" fill=\"#c8a415\"\u003e\u003c\/rect\u003e\n            \u003crect x=\"90\" y=\"128\" width=\"12\" height=\"8\" rx=\"2\" fill=\"#c8a415\"\u003e\u003c\/rect\u003e\n            \u003crect x=\"128\" y=\"128\" width=\"12\" height=\"8\" rx=\"2\" fill=\"#c8a415\"\u003e\u003c\/rect\u003e\n\n            \u003c!-- Pin legs --\u003e\n            \u003crect x=\"20\" y=\"136\" width=\"4\" height=\"50\" fill=\"url(#sr04-pin)\" rx=\"1\"\u003e\u003c\/rect\u003e\n            \u003crect x=\"55\" y=\"136\" width=\"4\" height=\"50\" fill=\"url(#sr04-pin)\" rx=\"1\"\u003e\u003c\/rect\u003e\n            \u003crect x=\"94\" y=\"136\" width=\"4\" height=\"50\" fill=\"url(#sr04-pin)\" rx=\"1\"\u003e\u003c\/rect\u003e\n            \u003crect x=\"132\" y=\"136\" width=\"4\" height=\"50\" fill=\"url(#sr04-pin)\" rx=\"1\"\u003e\u003c\/rect\u003e\n\n            \u003c!-- Pin circles --\u003e\n            \u003ccircle cx=\"22\" cy=\"197\" r=\"9\" fill=\"#ff7a2f\"\u003e\u003c\/circle\u003e\n            \u003ccircle cx=\"57\" cy=\"197\" r=\"9\" fill=\"#ff7a2f\"\u003e\u003c\/circle\u003e\n            \u003ccircle cx=\"96\" cy=\"197\" r=\"9\" fill=\"#ff7a2f\"\u003e\u003c\/circle\u003e\n            \u003ccircle cx=\"134\" cy=\"197\" r=\"9\" fill=\"#ff7a2f\"\u003e\u003c\/circle\u003e\n\n            \u003ctext x=\"22\" y=\"201\" text-anchor=\"middle\" fill=\"#fff\" font-size=\"7.5\" font-family=\"'Inter',sans-serif\" font-weight=\"800\"\u003eV\u003c\/text\u003e\n            \u003ctext x=\"57\" y=\"201\" text-anchor=\"middle\" fill=\"#fff\" font-size=\"7.5\" font-family=\"'Inter',sans-serif\" font-weight=\"800\"\u003eT\u003c\/text\u003e\n            \u003ctext x=\"96\" y=\"201\" text-anchor=\"middle\" fill=\"#fff\" font-size=\"7.5\" font-family=\"'Inter',sans-serif\" font-weight=\"800\"\u003eE\u003c\/text\u003e\n            \u003ctext x=\"134\" y=\"201\" text-anchor=\"middle\" fill=\"#fff\" font-size=\"7.5\" font-family=\"'Inter',sans-serif\" font-weight=\"800\"\u003eG\u003c\/text\u003e\n          \u003c\/svg\u003e\n\n          \u003cp class=\"nznd__tobox-sub\"\u003e\n            \u003cspan\u003eV\u003c\/span\u003eCC  ·  \u003cspan\u003eT\u003c\/span\u003eRIG  ·  \u003cspan\u003eE\u003c\/span\u003eCHO  ·  \u003cspan\u003eG\u003c\/span\u003eND\n          \u003c\/p\u003e\n        \u003c\/div\u003e\n\n        \u003c!-- Wiring steps --\u003e\n        \u003col class=\"nznd__steps\" aria-label=\"Arduino wiring steps\"\u003e\n          \u003cli class=\"nznd__step\"\u003e\n            \u003cdiv class=\"nznd__step-n\"\u003e1\u003c\/div\u003e\n            \u003cdiv\u003e\n\u003cstrong\u003eVCC → 5V\u003c\/strong\u003e\u003cp\u003eConnect VCC to the 5V pin of your Arduino. Do not use 3.3V — the module requires 5V to operate.\u003c\/p\u003e\n\u003c\/div\u003e\n          \u003c\/li\u003e\n          \u003cli class=\"nznd__step\"\u003e\n            \u003cdiv class=\"nznd__step-n\"\u003e2\u003c\/div\u003e\n            \u003cdiv\u003e\n\u003cstrong\u003eGND → GND\u003c\/strong\u003e\u003cp\u003eCommon ground with your Arduino or ESP32.\u003c\/p\u003e\n\u003c\/div\u003e\n          \u003c\/li\u003e\n          \u003cli class=\"nznd__step\"\u003e\n            \u003cdiv class=\"nznd__step-n\"\u003e3\u003c\/div\u003e\n            \u003cdiv\u003e\n\u003cstrong\u003eTRIG → Digital Pin (e.g. D9)\u003c\/strong\u003e\u003cp\u003eSend a 10 µs HIGH pulse to trigger a reading. 3.3V GPIO is sufficient to trigger the module.\u003c\/p\u003e\n\u003c\/div\u003e\n          \u003c\/li\u003e\n          \u003cli class=\"nznd__step\"\u003e\n            \u003cdiv class=\"nznd__step-n\"\u003e4\u003c\/div\u003e\n            \u003cdiv\u003e\n\u003cstrong\u003eECHO → Digital Pin (e.g. D10)\u003c\/strong\u003e\u003cp\u003eReads the pulse duration. \u003cstrong\u003eArduino:\u003c\/strong\u003e connect directly. \u003cstrong\u003eESP32 \/ RPi:\u003c\/strong\u003e use a 1kΩ + 2kΩ voltage divider to drop 5V to 3.3V before connecting.\u003c\/p\u003e\n\u003c\/div\u003e\n          \u003c\/li\u003e\n          \u003cli class=\"nznd__step\"\u003e\n            \u003cdiv class=\"nznd__step-n\"\u003e5\u003c\/div\u003e\n            \u003cdiv\u003e\n\u003cstrong\u003eCalculate distance\u003c\/strong\u003e\u003cp\u003eUse \u003ccode\u003epulseIn(ECHO, HIGH)\u003c\/code\u003e to measure µs. Divide by 58 for cm or 148 for inches. The NewPing library simplifies this.\u003c\/p\u003e\n\u003c\/div\u003e\n          \u003c\/li\u003e\n        \u003c\/ol\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nznd__callout nznd__callout--orange\" role=\"note\"\u003e\n        \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"#ff7a2f\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\u003cpolygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"\u003e\u003c\/polygon\u003e\u003cline x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\u003e\u003c\/line\u003e\u003cline x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\n        \u003cdiv\u003e\n          \u003cstrong\u003eMinimum 60 ms between readings\u003c\/strong\u003e\n          \u003cp\u003eWait at least 60 ms between trigger pulses to allow ultrasonic echoes to clear. Triggering too quickly causes false short-range readings from the previous cycle's echo.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n    \u003c\/section\u003e\n\n    \u003c!-- ══════════════ COMMON USES ══════════════ --\u003e\n    \u003csection class=\"nznd__panel\" data-panel=\"uses\" role=\"tabpanel\"\u003e\n\n      \u003cp class=\"nznd__eyebrow\"\u003eApplications \u0026amp; Use Cases\u003c\/p\u003e\n      \u003cp class=\"nznd__body\"\u003eThe HC-SR04 is one of the most widely used sensors in hobbyist and maker projects. Its low cost, simple two-wire interface, and 4.5 m range make it ideal for anything from obstacle avoidance to liquid level monitoring.\u003c\/p\u003e\n\n      \u003cdiv class=\"nznd__uses\"\u003e\n        \u003cdiv class=\"nznd__use\"\u003e\n\u003cstrong\u003eObstacle Avoidance Robots\u003c\/strong\u003e\u003cp\u003eMount on a servo for sweeping detection or fixed for forward collision avoidance on Arduino and ESP32 rovers.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__use\"\u003e\n\u003cstrong\u003eParking Sensor\u003c\/strong\u003e\u003cp\u003eDIY garage or vehicle parking aid — beeps when an object is detected within a set distance.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__use\"\u003e\n\u003cstrong\u003eLiquid Level Monitoring\u003c\/strong\u003e\u003cp\u003eMeasure water tank, sump, or container fill levels without contact with the liquid.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__use\"\u003e\n\u003cstrong\u003ePeople \/ Object Counter\u003c\/strong\u003e\u003cp\u003eDetect when someone passes through a doorway or breaks the beam between two points.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__use\"\u003e\n\u003cstrong\u003eHeight Measurement\u003c\/strong\u003e\u003cp\u003eNon-contact height gauging for conveyor systems, sorting machines, or interactive installations.\u003c\/p\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"nznd__use\"\u003e\n\u003cstrong\u003eHome Automation\u003c\/strong\u003e\u003cp\u003eTrigger lights, fans, or alarms based on detected presence or proximity with ESPHome or Home Assistant.\u003c\/p\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nznd__callout nznd__callout--blue\" role=\"note\"\u003e\n        \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"#4a9af7\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cline x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"\u003e\u003c\/line\u003e\u003cline x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\n        \u003cdiv\u003e\n          \u003cstrong\u003eESPHome integration\u003c\/strong\u003e\n          \u003cp\u003eThe HC-SR04 is natively supported in ESPHome with the \u003ccode\u003eultrasonic\u003c\/code\u003e sensor platform. Define TRIG and ECHO pins and get distance readings directly in Home Assistant with no extra code.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n    \u003c\/section\u003e\n\n    \u003c!-- ══════════════ FAQs ══════════════ --\u003e\n    \u003csection class=\"nznd__panel\" data-panel=\"faq\" role=\"tabpanel\"\u003e\n\n      \u003cp class=\"nznd__eyebrow\"\u003eFrequently Asked Questions\u003c\/p\u003e\n\n      \u003cdl class=\"nznd__faq\"\u003e\n\n        \u003cdiv class=\"nznd__faq-item\"\u003e\n          \u003cdt\u003e\u003cbutton class=\"nznd__faq-q\" type=\"button\" aria-expanded=\"false\"\u003e\n            Will the HC-SR04 work with an ESP32 or Raspberry Pi at 3.3V?\n            \u003cspan class=\"nznd__faq-icon\"\u003e\u003csvg viewbox=\"0 0 12 12\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\u003cline x1=\"6\" y1=\"2\" x2=\"6\" y2=\"10\"\u003e\u003c\/line\u003e\u003cline x1=\"2\" y1=\"6\" x2=\"10\" y2=\"6\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/span\u003e\n          \u003c\/button\u003e\u003c\/dt\u003e\n          \u003cdd class=\"nznd__faq-a\"\u003eThe module itself needs 5V on VCC to function. The TRIG pin can be driven from 3.3V GPIO. The ECHO pin outputs 5V however, which can damage 3.3V microcontrollers — use a 1kΩ\/2kΩ voltage divider or a logic level shifter on the ECHO line before connecting to an ESP32 or Raspberry Pi.\u003c\/dd\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nznd__faq-item\"\u003e\n          \u003cdt\u003e\u003cbutton class=\"nznd__faq-q\" type=\"button\" aria-expanded=\"false\"\u003e\n            What is the minimum detectable distance?\n            \u003cspan class=\"nznd__faq-icon\"\u003e\u003csvg viewbox=\"0 0 12 12\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\u003cline x1=\"6\" y1=\"2\" x2=\"6\" y2=\"10\"\u003e\u003c\/line\u003e\u003cline x1=\"2\" y1=\"6\" x2=\"10\" y2=\"6\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/span\u003e\n          \u003c\/button\u003e\u003c\/dt\u003e\n          \u003cdd class=\"nznd__faq-a\"\u003eThe blind zone starts at 2 cm. Objects closer than 2 cm may not be reliably detected. For very close-range sensing consider an IR proximity sensor instead.\u003c\/dd\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nznd__faq-item\"\u003e\n          \u003cdt\u003e\u003cbutton class=\"nznd__faq-q\" type=\"button\" aria-expanded=\"false\"\u003e\n            How do I calculate distance from the ECHO pulse?\n            \u003cspan class=\"nznd__faq-icon\"\u003e\u003csvg viewbox=\"0 0 12 12\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\u003cline x1=\"6\" y1=\"2\" x2=\"6\" y2=\"10\"\u003e\u003c\/line\u003e\u003cline x1=\"2\" y1=\"6\" x2=\"10\" y2=\"6\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/span\u003e\n          \u003c\/button\u003e\u003c\/dt\u003e\n          \u003cdd class=\"nznd__faq-a\"\u003eMeasure the ECHO HIGH duration in microseconds using \u003ccode\u003epulseIn(echoPin, HIGH)\u003c\/code\u003e. Divide by 58 to get centimetres, or by 148 for inches. This accounts for the round-trip travel of the sound pulse. The NewPing Arduino library handles all of this automatically.\u003c\/dd\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nznd__faq-item\"\u003e\n          \u003cdt\u003e\u003cbutton class=\"nznd__faq-q\" type=\"button\" aria-expanded=\"false\"\u003e\n            How often can I take readings?\n            \u003cspan class=\"nznd__faq-icon\"\u003e\u003csvg viewbox=\"0 0 12 12\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\u003cline x1=\"6\" y1=\"2\" x2=\"6\" y2=\"10\"\u003e\u003c\/line\u003e\u003cline x1=\"2\" y1=\"6\" x2=\"10\" y2=\"6\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/span\u003e\n          \u003c\/button\u003e\u003c\/dt\u003e\n          \u003cdd class=\"nznd__faq-a\"\u003eWait at least 60 ms between trigger pulses. Faster polling risks detecting the echo from the previous cycle, giving spuriously short readings. In practice 100 ms (10 readings per second) is a safe rate for most applications.\u003c\/dd\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nznd__faq-item\"\u003e\n          \u003cdt\u003e\u003cbutton class=\"nznd__faq-q\" type=\"button\" aria-expanded=\"false\"\u003e\n            Does it work with soft surfaces like foam or fabric?\n            \u003cspan class=\"nznd__faq-icon\"\u003e\u003csvg viewbox=\"0 0 12 12\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\u003cline x1=\"6\" y1=\"2\" x2=\"6\" y2=\"10\"\u003e\u003c\/line\u003e\u003cline x1=\"2\" y1=\"6\" x2=\"10\" y2=\"6\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/span\u003e\n          \u003c\/button\u003e\u003c\/dt\u003e\n          \u003cdd class=\"nznd__faq-a\"\u003eSoft or angled surfaces absorb or scatter ultrasonic energy, reducing effective range and accuracy. For best results aim at flat, hard surfaces such as walls, water, or solid objects. Angled surfaces should be within roughly 15° of perpendicular to the sensor face.\u003c\/dd\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nznd__faq-item\"\u003e\n          \u003cdt\u003e\u003cbutton class=\"nznd__faq-q\" type=\"button\" aria-expanded=\"false\"\u003e\n            Is there an Arduino library I can use?\n            \u003cspan class=\"nznd__faq-icon\"\u003e\u003csvg viewbox=\"0 0 12 12\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\u003cline x1=\"6\" y1=\"2\" x2=\"6\" y2=\"10\"\u003e\u003c\/line\u003e\u003cline x1=\"2\" y1=\"6\" x2=\"10\" y2=\"6\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/span\u003e\n          \u003c\/button\u003e\u003c\/dt\u003e\n          \u003cdd class=\"nznd__faq-a\"\u003eYes — the \u003cstrong\u003eNewPing\u003c\/strong\u003e library by Tim Eckel is the most popular choice. Install it via the Arduino Library Manager. It simplifies triggering, echo timing, and includes median filtering to reduce noise. For ESPHome users, the built-in \u003ccode\u003eultrasonic\u003c\/code\u003e platform works out of the box.\u003c\/dd\u003e\n        \u003c\/div\u003e\n\n      \u003c\/dl\u003e\n\n    \u003c\/section\u003e\n\n  \u003c\/div\u003e\n\u003c\/article\u003e\n\n\u003cscript\u003e\n(function () {\n  'use strict';\n  var w = document.currentScript\n    ? (document.currentScript.closest('.nznd') || document.querySelector('.nznd'))\n    : document.querySelector('.nznd');\n  if (!w) return;\n\n  w.addEventListener('click', function (e) {\n\n    \/* Tab switch *\/\n    var tab = e.target.closest('.nznd__tab');\n    if (tab) {\n      var target = tab.getAttribute('data-tab');\n      w.querySelectorAll('.nznd__tab').forEach(function (t) { t.classList.remove('is-active'); t.setAttribute('aria-selected','false'); });\n      w.querySelectorAll('.nznd__panel').forEach(function (p) { p.classList.remove('is-active'); });\n      tab.classList.add('is-active');\n      tab.setAttribute('aria-selected','true');\n      var panel = w.querySelector('[data-panel=\"' + target + '\"]');\n      if (panel) panel.classList.add('is-active');\n      return;\n    }\n\n    \/* FAQ accordion *\/\n    var btn = e.target.closest('.nznd__faq-q');\n    if (btn) {\n      var item = btn.closest('.nznd__faq-item');\n      var open = item.classList.contains('is-open');\n      w.querySelectorAll('.nznd__faq-item').forEach(function (x) {\n        x.classList.remove('is-open');\n        x.querySelector('.nznd__faq-q').setAttribute('aria-expanded','false');\n      });\n      if (!open) { item.classList.add('is-open'); btn.setAttribute('aria-expanded','true'); }\n    }\n\n  });\n}());\n\u003c\/script\u003e","brand":"NZN Electronics","offers":[{"title":"1 Pack","offer_id":42861955154016,"sku":"HCSR04-1PK","price":3.89,"currency_code":"NZD","in_stock":true},{"title":"3 Pack","offer_id":42861955186784,"sku":"HCSR04-3PK","price":7.99,"currency_code":"NZD","in_stock":true},{"title":"5 Pack","offer_id":42861955219552,"sku":"HCSR04-5PK","price":10.99,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/HC-SR-04-IR-Sensor-ProductHero.png?v=1781062116"}],"url":"https:\/\/www.nznelectronics.co.nz\/collections\/sensors.oembed","provider":"NZN Electronics","version":"1.0","type":"link"}