{"title":"Arduino Modules","description":"\u003ch2\u003eArduino Modules for Every Project\u003c\/h2\u003e\u003cp\u003eExplore our range of Arduino-compatible modules designed for makers, hobbyists, and engineers. Whether you're building your first prototype or a complex embedded system, we stock the components you need to bring your ideas to life.\u003c\/p\u003e\u003ch3\u003eWhat You'll Find\u003c\/h3\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eSensor Modules\u003c\/strong\u003e – Temperature, humidity, motion, ultrasonic, and more\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCommunication Modules\u003c\/strong\u003e – Bluetooth, Wi-Fi, RF, and NFC\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDisplay Modules\u003c\/strong\u003e – OLED, LCD, and TFT screens\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMotor \u0026amp; Driver Modules\u003c\/strong\u003e – Stepper, servo, and DC motor controllers\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePower Modules\u003c\/strong\u003e – Voltage regulators, battery management, and charging circuits\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRelay \u0026amp; Switch Modules\u003c\/strong\u003e – Control high-voltage devices safely\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eAll modules are sourced for compatibility with Arduino Uno, Nano, Mega, and other popular boards. Fast shipping across New Zealand.\u003c\/p\u003e","products":[{"product_id":"sc8002b-audio-module","title":"Keyestudio SC8002B Audio Amplifier Module","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\"\u003eCompact mono audio output module built around the SC8002B Class AB amplifier IC. Includes an onboard speaker and adjustable volume potentiometer — ready to add tones, alerts, and sound feedback to any 3.3V or 5V microcontroller project with just three wires.\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\u003eKeyestudio SC8002B\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eAmplifier IC\u003c\/td\u003e\n\u003ctd\u003eSC8002B (Mono, Class AB)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eOperating Voltage\u003c\/td\u003e\n\u003ctd\u003e3.3V – 5V DC\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eSignal Gain\u003c\/td\u003e\n\u003ctd\u003e~8.5×\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eInterface\u003c\/td\u003e\n\u003ctd\u003e3-pin header (S \/ V \/ G)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eVolume Control\u003c\/td\u003e\n\u003ctd\u003eAdjustable potentiometer\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eSpeaker Impedance\u003c\/td\u003e\n\u003ctd\u003e8Ω (±15%)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eRated Power\u003c\/td\u003e\n\u003ctd\u003e0.1W (max 0.15W)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eFrequency Range\u003c\/td\u003e\n\u003ctd\u003e800 – 4000 Hz\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eResonant Frequency\u003c\/td\u003e\n\u003ctd\u003e1500 Hz (±20%)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eSound Output\u003c\/td\u003e\n\u003ctd\u003e≥80 dB @ 0.1W, 10cm, 1.5kHz\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eOperating Temperature\u003c\/td\u003e\n\u003ctd\u003e−20°C to +60°C\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eWeight\u003c\/td\u003e\n\u003ctd\u003e3g\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003c\/table\u003e\n  \u003chr class=\"divider\"\u003e\n  \u003cp class=\"section-title\"\u003eWiring\u003c\/p\u003e\n  \u003ctable class=\"specs-table\"\u003e\n    \u003ctr\u003e\n\u003ctd\u003eS — Signal\u003c\/td\u003e\n\u003ctd\u003ePWM signal input from microcontroller (e.g. Arduino tone() pin)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eV — VCC\u003c\/td\u003e\n\u003ctd\u003e3.3V or 5V power supply positive\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eG — GND\u003c\/td\u003e\n\u003ctd\u003ePower supply ground\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003c\/table\u003e\n  \u003cdiv class=\"setup-box\"\u003eConnect S to any PWM-capable digital pin on your Arduino and call \u003cstrong\u003etone(pin, frequency)\u003c\/strong\u003e to produce sound. Always set the onboard potentiometer to minimum volume before powering on — increase gradually once running. The signal input expects a PWM square wave, not a raw HIGH\/LOW or analog audio line.\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\u003eKeyestudio SC8002B Audio Amplifier Module (speaker pre-installed)\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\"\u003eTones and melodies via Arduino's tone() function\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eAudible alerts for sensor triggers and alarm systems\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eSound feedback in robotics and interactive projects\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eSimple audio output when paired with a DFPlayer Mini\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eInteractive learning kits and STEM education builds\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eButton click sounds, error beeps and status chimes\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 work with a Raspberry Pi or other 3.3V boards?\u003c\/div\u003e\n    \u003cdiv class=\"faq-a\"\u003eYes — the module operates on 3.3V to 5V and is compatible with any microcontroller that can output a PWM signal, including Raspberry Pi, ESP32, and STM32 boards.\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"faq-item\"\u003e\n    \u003cdiv class=\"faq-q\"\u003eCan I play music or voice audio through it?\u003c\/div\u003e\n    \u003cdiv class=\"faq-a\"\u003eThis module handles amplification only and is optimised for PWM square wave input. For MP3 or WAV playback, pair it with an audio source module such as a DFPlayer Mini.\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"faq-item\"\u003e\n    \u003cdiv class=\"faq-q\"\u003eThe sound is distorted — what should I check?\u003c\/div\u003e\n    \u003cdiv class=\"faq-a\"\u003eTurn the potentiometer down before powering on and increase gradually. Feeding a full-strength signal into the speaker without care can cause distortion or damage the speaker cone.\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003chr class=\"divider\"\u003e\n  \u003cp class=\"note\"\u003e\u003cstrong\u003ePlease note:\u003c\/strong\u003e Signal input expects a PWM square wave — not a raw digital HIGH\/LOW or analog audio line. A basic datasheet is available at nznelectronics.co.nz\u003c\/p\u003e\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"Default Title","offer_id":42644996587616,"sku":"MOD-SC8002B-AMP","price":10.25,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/Keyestudio-Pin-Straighton.png?v=1778273430"},{"product_id":"mg90s-servo","title":"MG90S Metal Gear Micro Servo – 180° \/ 360°, Arduino, ESP32 \u0026 RC Compatible","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}\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:\"\\2713\";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:\"\\203A\";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 MG90S is a metal gear micro servo, a tougher, longer-lasting upgrade over the plastic-gear SG90. It delivers around 1.8kg·cm of torque and runs straight off an Arduino, ESP32 or RC receiver. Pick \u003cstrong\u003e180°\u003c\/strong\u003e for precise positional control, or \u003cstrong\u003e360°\u003c\/strong\u003e for continuous rotation (selected above).\u003c\/p\u003e\n\u003cbr\u003e\n\u003cul class=\"nznpd__checks\"\u003e\n\u003cli\u003eMetal gears for durability and torque\u003c\/li\u003e\n\u003cli\u003eAround 1.8kg·cm torque (more at 6V)\u003c\/li\u003e\n\u003cli\u003eLightweight ~13.4g body\u003c\/li\u003e\n\u003cli\u003eRuns on 4.8–6V\u003c\/li\u003e\n\u003cli\u003eStandard 3-wire PWM control\u003c\/li\u003e\n\u003cli\u003eChoose 180° positional or 360° continuous\u003c\/li\u003e\n\u003cli\u003eServo horns and screws included\u003c\/li\u003e\n\u003cli\u003eWorks with Arduino, ESP32 and RC receivers\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\u003eType\u003c\/span\u003e\u003cstrong\u003eMetal gear micro servo\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eTorque\u003c\/span\u003e\u003cstrong\u003e~1.8kg·cm at 4.8V, ~2.2kg·cm at 6V\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eOperating voltage\u003c\/span\u003e\u003cstrong\u003e4.8–6V\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eSpeed\u003c\/span\u003e\u003cstrong\u003e~0.1s \/ 60°\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eRotation\u003c\/span\u003e\u003cstrong\u003e180° positional or 360° continuous (by variant)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eControl\u003c\/span\u003e\u003cstrong\u003ePWM, 3-wire (signal \/ V+ \/ GND)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eConnector\u003c\/span\u003e\u003cstrong\u003eStandard 3-pin (JR \/ Futaba)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eGears\u003c\/span\u003e\u003cstrong\u003eMetal\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eWeight\u003c\/span\u003e\u003cstrong\u003e~13.4g\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eWire length\u003c\/span\u003e\u003cstrong\u003e~25cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eDimensions\u003c\/span\u003e\u003cstrong\u003e~22.8 × 12.2 × 28.5mm\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\u003eMG90S micro servo (180° or 360° as selected)\u003c\/strong\u003e\n\u003cp\u003eIncludes a set of servo horns\/arms and mounting screws.\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\"\u003eRobot joints, grippers and arms\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eRC steering, throttle and control surfaces\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003ePan-tilt camera and sensor mounts\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eAnimatronics and moving props\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eContinuous-rotation wheels and drives (360°)\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eArduino and ESP32 learning projects\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\u003eConnect power\u003c\/strong\u003e\u003cp\u003eBrown wire to GND, red wire to a 4.8–6V supply.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eConnect signal\u003c\/strong\u003e\u003cp\u003eOrange wire to any PWM-capable pin on your Arduino or ESP32.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eUse the Servo library\u003c\/strong\u003e\u003cp\u003eOn Arduino, attach the pin and use write() for an angle, or writeMicroseconds() for fine control.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003e360° note\u003c\/strong\u003e\u003cp\u003eOn the continuous version the signal sets speed and direction rather than a fixed angle.\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\u003eWhat's the difference between 180° and 360°?\u003c\/summary\u003e\n\u003cp\u003e180° is a standard positional servo for precise angles (arms, steering, pan-tilt). 360° is continuous rotation, where the signal controls speed and direction instead of a set angle, ideal for wheels and continuous motion.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eCan I power it from the Arduino 5V pin?\u003c\/summary\u003e\n\u003cp\u003eFor a single light-load servo, yes. For multiple servos or anything under load, use a separate 4.8–6V supply with a common ground to avoid voltage dips that reset your board.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eHow is it better than an SG90?\u003c\/summary\u003e\n\u003cp\u003eThe MG90S uses metal gears instead of plastic, so it handles more torque and lasts longer under repeated or loaded use, while keeping the same compact size and mounting.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eAre servo horns included?\u003c\/summary\u003e\n\u003cp\u003eYes. Each servo comes with a set of horns\/arms and mounting screws.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eWhat voltage does it run on?\u003c\/summary\u003e\n\u003cp\u003e4.8 to 6V. Torque and speed are a little higher at 6V than at 4.8V.\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 For multiple or loaded servos, power them from a separate 4.8–6V supply with a common ground to your controller. Every servo is checked before it ships from our Te Awamutu stock.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"180 Degrees \/ 1 Pack","offer_id":42666174414944,"sku":"SRV-MG90S-180","price":5.99,"currency_code":"NZD","in_stock":true},{"title":"360 Degrees \/ 1 Pack","offer_id":42666174447712,"sku":"SRV-MG90S-360","price":9.99,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/MG90s_Product_Hero.png?v=1778971601"},{"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":"28byj-48-stepper-motor-kit","title":"28BYJ-48 Stepper Motor + ULN2003 Driver Board Kit — 5V","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 28BYJ-48 is a 5V geared stepper motor that pairs with the ULN2003A driver board. It has a 64:1 gear ratio, giving you 2048 steps per revolution — fine enough positioning for clocks, dials, camera sliders and small automation projects. The driver board connects directly to four GPIO pins and handles the current, so no additional components are needed.\u003c\/p\u003e\n\u003cbr\u003e\n\u003cul class=\"nznpd__checks\"\u003e\n\u003cli\u003e28BYJ-48 5V stepper motor included\u003c\/li\u003e\n\u003cli\u003eULN2003A driver board with screw terminal included\u003c\/li\u003e\n\u003cli\u003e64:1 gear ratio, 2048 steps\/revolution in full-step mode\u003c\/li\u003e\n\u003cli\u003e4-wire unipolar drive via driver board\u003c\/li\u003e\n\u003cli\u003eWorks directly with Arduino and ESP32 (3.3V logic compatible)\u003c\/li\u003e\n\u003cli\u003ePower via separate 5V supply or USB 5V rail\u003c\/li\u003e\n\u003cli\u003eLow noise, good holding torque for its size\u003c\/li\u003e\n\u003cli\u003eWidely supported by stepper libraries\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\u003eMotor model\u003c\/span\u003e\u003cstrong\u003e28BYJ-48\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eDriver\u003c\/span\u003e\u003cstrong\u003eULN2003A board\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eSupply voltage\u003c\/span\u003e\u003cstrong\u003e5V DC\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003ePhase resistance\u003c\/span\u003e\u003cstrong\u003e~50Ω per phase\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eGear ratio\u003c\/span\u003e\u003cstrong\u003e64:1 (approx)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eSteps per revolution\u003c\/span\u003e\u003cstrong\u003e2048 (full step, through gearbox)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eStep angle (output shaft)\u003c\/span\u003e\u003cstrong\u003e~0.18° (full step)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eConnector\u003c\/span\u003e\u003cstrong\u003e5-pin JST-XH to driver board\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eDriver logic voltage\u003c\/span\u003e\u003cstrong\u003e3.3V–5V (Arduino and ESP32 compatible)\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\u003e28BYJ-48 stepper motor + ULN2003A driver board\u003c\/strong\u003e\u003cp\u003eMotor connects to driver board via the 5-pin JST-XH cable. Four dupont pins from the driver board connect to GPIO.\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\"\u003eClock hands and minute-by-minute dial movements\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eCamera and telescope pan\/tilt rigs\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003e3D printer bed levelling probes\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eAutomated valve and damper control\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eRobotic arm and gripper projects\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eLearning stepper motor control concepts\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\u003eConnect motor to driver board\u003c\/strong\u003e\u003cp\u003ePlug the 5-pin JST-XH connector from the motor into the driver board — it only fits one way.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eWire the driver board\u003c\/strong\u003e\u003cp\u003eConnect IN1, IN2, IN3, IN4 to four digital pins on your Arduino or ESP32. Connect the driver board's 5V and GND to 5V power (not directly from Arduino 3.3V pin — the motor needs more current).\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eInstall the Stepper library\u003c\/strong\u003e\u003cp\u003eArduino IDE has a built-in Stepper library. Alternatively, install \u003cstrong\u003eAccelStepper\u003c\/strong\u003e by Mike McCauley from Library Manager for smoother control.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eUse the correct step count\u003c\/strong\u003e\u003cp\u003eSet steps per revolution to \u003cstrong\u003e2048\u003c\/strong\u003e for full-step mode (the most common). For half-step mode use 4096.\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\u003eCan I run this from the Arduino 5V pin?\u003c\/summary\u003e\n\u003cp\u003eTechnically yes for light loads, but not recommended. The motor draws more current than the Arduino's USB-to-serial chip can safely supply. Use a separate 5V source (USB wall adapter or 5V bench supply) and share GND with the Arduino.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eIs it compatible with ESP32 (3.3V logic)?\u003c\/summary\u003e\n\u003cp\u003eYes. The ULN2003A driver board accepts 3.3V logic-level signals, so ESP32 GPIO pins drive it directly. Keep the motor's 5V supply separate from the ESP32's 3.3V rail.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eHow precise is it?\u003c\/summary\u003e\n\u003cp\u003e2048 steps per revolution gives about 0.18° per step. This is good for clock hands, pointer dials and camera rigs. It's not suited for high-speed or high-torque applications.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eDoes the motor hold its position when powered?\u003c\/summary\u003e\n\u003cp\u003eYes — when the coils remain energised the motor holds its position. You can de-energise it (by setting all outputs low) to save power, but it will then freewheel.\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 Power the motor from a separate 5V supply, not from the Arduino's onboard regulator. Share GND between the motor supply and the microcontroller. Buying 3 or more unlocks a lower per-unit price — see the quantity discounts above.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"Default Title","offer_id":42868336984160,"sku":"MOD-28BYJ48-ULN2003-KIT-1","price":7.49,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/28BYJ_Product_Hero.png?v=1778930183"},{"product_id":"voltage-detection-module-voltage-sensor-for-arduino-electronic-building-blocks","title":"DC 0–25V Voltage Detection Module — Arduino \u0026 Microcontroller Sensor","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:0.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%; }\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 .wire-row { display:flex; align-items:center; gap:12px; padding:9px 12px; background:#f7f7f7; border-radius:4px; margin-bottom:6px; font-family:'DM Sans',sans-serif; font-size:13.5px; }\n  .nzn-desc .wire-dot { width:12px; height:12px; border-radius:50%; flex-shrink:0; }\n  .nzn-desc .wire-label { font-weight:700; color:#1a1a1a; min-width:55px; }\n  .nzn-desc .faq-item { margin-bottom:12px; padding:12px 14px; background:#f7f7f7; border-radius:4px; font-family:'DM Sans',sans-serif; }\n  .nzn-desc .faq-q { font-weight:700; color:#1a1a1a; margin-bottom:5px; font-size:13.5px; }\n  .nzn-desc .faq-a { color:#555; font-size:13.5px; line-height:1.6; }\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 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\"\u003eCompact DC voltage detection module that safely measures 0–25V DC through a standard Arduino or microcontroller analog input. Uses a precision 30kΩ\/7.5kΩ resistive divider to scale voltage down 5:1 — letting you monitor battery packs, solar panels, and power supplies without risk to your board. Screw terminals for secure wiring.\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\u003eBrand\u003c\/td\u003e\n\u003ctd\u003eMH-Electronic\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eInput Voltage Range\u003c\/td\u003e\n\u003ctd\u003eDC 0 – 25V\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eDetection Range\u003c\/td\u003e\n\u003ctd\u003e0.02445V – 25V\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eDivider Ratio\u003c\/td\u003e\n\u003ctd\u003e5:1 (30kΩ + 7.5kΩ)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eMax Input — 5V System\u003c\/td\u003e\n\u003ctd\u003e25V\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eMax Input — 3.3V System\u003c\/td\u003e\n\u003ctd\u003e16.5V\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eADC Resolution\u003c\/td\u003e\n\u003ctd\u003e10-bit (analog resolution 0.00489V)\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003ePCB Size\u003c\/td\u003e\n\u003ctd\u003e25 × 13mm\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eMounting Hole\u003c\/td\u003e\n\u003ctd\u003e3.0mm\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003c\/table\u003e\n  \u003chr class=\"divider\"\u003e\n  \u003cp class=\"section-title\"\u003eWiring Reference\u003c\/p\u003e\n  \u003cdiv class=\"wire-row\"\u003e\n\u003cspan class=\"wire-dot\" style=\"background:#c0392b;\"\u003e\u003c\/span\u003e\u003cspan class=\"wire-label\"\u003eVCC (screw)\u003c\/span\u003e\u003cspan\u003ePositive of the voltage source being measured\u003c\/span\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"wire-row\"\u003e\n\u003cspan class=\"wire-dot\" style=\"background:#222;\"\u003e\u003c\/span\u003e\u003cspan class=\"wire-label\"\u003eGND (screw)\u003c\/span\u003e\u003cspan\u003eNegative \/ ground of the voltage source being measured\u003c\/span\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"wire-row\"\u003e\n\u003cspan class=\"wire-dot\" style=\"background:#e67e22;\"\u003e\u003c\/span\u003e\u003cspan class=\"wire-label\"\u003eS (header)\u003c\/span\u003e\u003cspan\u003eSignal output → connect to any analog input pin (e.g. A0) on your MCU\u003c\/span\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"wire-row\"\u003e\n\u003cspan class=\"wire-dot\" style=\"background:#e07e2c;\"\u003e\u003c\/span\u003e\u003cspan class=\"wire-label\"\u003e+ (header)\u003c\/span\u003e\u003cspan\u003eMCU power → connect to 5V or 3.3V on your microcontroller\u003c\/span\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"wire-row\" style=\"margin-bottom:32px;\"\u003e\n\u003cspan class=\"wire-dot\" style=\"background:#555;\"\u003e\u003c\/span\u003e\u003cspan class=\"wire-label\"\u003e– (header)\u003c\/span\u003e\u003cspan\u003eMCU ground → connect to GND on your microcontroller\u003c\/span\u003e\n\u003c\/div\u003e\n  \u003chr class=\"divider\"\u003e\n  \u003cp class=\"section-title\"\u003eGetting Started\u003c\/p\u003e\n  \u003ctable class=\"specs-table\"\u003e\n    \u003ctr\u003e\n\u003ctd\u003eArduino IDE\u003c\/td\u003e\n\u003ctd\u003eNo library needed — use \u003ccode\u003eanalogRead(A0)\u003c\/code\u003e and apply the 5:1 scale factor in your sketch\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eFormula\u003c\/td\u003e\n\u003ctd\u003eVoltage = (analogRead \/ 1023.0) × Vref × 5.0 — where Vref is 5.0V or 3.3V depending on your board\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003eESPHome\u003c\/td\u003e\n\u003ctd\u003eUse \u003ccode\u003eplatform: adc\u003c\/code\u003e with \u003ccode\u003efilters: multiply: 5.0\u003c\/code\u003e to scale the reading\u003c\/td\u003e\n\u003c\/tr\u003e\n    \u003ctr\u003e\n\u003ctd\u003e3.3V systems\u003c\/td\u003e\n\u003ctd\u003eChange max input to 16.5V — adjust your formula accordingly\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\"\u003eBattery voltage monitoring — LiPo, Li-ion, lead-acid \u0026amp; NiMH packs\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eSolar panel \u0026amp; renewable energy output measurement\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eUnder\/over-voltage fault detection in circuits\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eDC power supply testing \u0026amp; data logging\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eDIY voltmeter with OLED or LCD display\u003c\/div\u003e\n    \u003cdiv class=\"use-item\"\u003eMotor \u0026amp; actuator voltage monitoring in robotics\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003chr class=\"divider\"\u003e\n  \u003cp class=\"section-title\"\u003eFrequently Asked Questions\u003c\/p\u003e\n  \u003cdiv class=\"faq-item\"\u003e\n    \u003cdiv class=\"faq-q\"\u003eCan this measure AC voltage?\u003c\/div\u003e\n    \u003cdiv class=\"faq-a\"\u003eNo — DC only. The resistive divider cannot safely or accurately measure AC. For AC measurement you need a dedicated AC voltage sensor module.\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"faq-item\"\u003e\n    \u003cdiv class=\"faq-q\"\u003eCan I measure negative voltages?\u003c\/div\u003e\n    \u003cdiv class=\"faq-a\"\u003eNo — the module is designed for positive DC voltages only. Applying a negative voltage to the input will damage the module and potentially your microcontroller.\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"faq-item\"\u003e\n    \u003cdiv class=\"faq-q\"\u003eWhat's the difference between the screw terminals and the header pins?\u003c\/div\u003e\n    \u003cdiv class=\"faq-a\"\u003eThe two screw terminals (VCC and GND) connect to the voltage source you're measuring. The three header pins (+, –, S) connect to your microcontroller — power, ground, and the analog signal output pin.\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003chr class=\"divider\"\u003e\n  \u003cp class=\"note\"\u003e\u003cstrong\u003ePlease note:\u003c\/strong\u003e Do not exceed 25V input on 5V systems or 16.5V on 3.3V systems. Measures DC only. The \"+\" header pin connects to MCU power — not to the voltage source. No display or microcontroller included.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"Default Title","offer_id":42724740661344,"sku":"MH-VD25-MOD","price":1.39,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/Front-Hero-Cover-1pc_3c5e123e-ba69-4aa0-bd0e-db540febfe21.png?v=1777318750"},{"product_id":"usb-a-to-usb-c-cable-1m-data-charging-for-arduino-esp32-dev-boards","title":"USB-A to USB-C Cable 1m – Data \u0026 Charging","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\"\u003eA no-fuss 1m USB-A to USB-C cable for charging and data. It handles programming dev boards, charging devices and general bench use. USB-C is reversible so there's no wrong way to plug it in.\u003c\/p\u003e\n\u003cbr\u003e\n\u003cul class=\"nznpd__checks\"\u003e\n\u003cli\u003eUSB 2.0 Type-A to Type-C, 1m\u003c\/li\u003e\n\u003cli\u003eCharging and data — up to 480Mbps\u003c\/li\u003e\n\u003cli\u003eReversible USB-C plug\u003c\/li\u003e\n\u003cli\u003eWorks with ESP32, Arduino Nano, Raspberry Pi and phones\u003c\/li\u003e\n\u003cli\u003eFits any standard USB-A port or wall charger\u003c\/li\u003e\n\u003cli\u003eFlexible PVC jacket for bench and workshop use\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\u003eStandard\u003c\/span\u003e\u003cstrong\u003eUSB 2.0\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eConnectors\u003c\/span\u003e\u003cstrong\u003eUSB Type-A male to USB Type-C male\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eLength\u003c\/span\u003e\u003cstrong\u003e1m\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eData speed\u003c\/span\u003e\u003cstrong\u003eUp to 480Mbps\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eMax current\u003c\/span\u003e\u003cstrong\u003eUp to 3A (charger dependent)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eUSB-C plug\u003c\/span\u003e\u003cstrong\u003eReversible\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\u003eUSB-A to USB-C cable, 1m\u003c\/strong\u003e\u003cp\u003eReady to use straight out of the pack.\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\"\u003eProgramming and powering ESP32 and ESP32-C3 dev boards\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eProgramming Arduino Nano SuperMini boards\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eCharging phones, earbuds and tablets\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eRaspberry Pi 4 and 5 power\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eDesktop and workshop charging stations\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eGeneral USB-A to USB-C data transfer\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\u003eUsing it\u003c\/h3\u003e\n\u003col class=\"nznpd__steps\"\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003ePlug in USB-C\u003c\/strong\u003e\u003cp\u003eEither orientation — no wrong side on the USB-C end.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eConnect USB-A\u003c\/strong\u003e\u003cp\u003eInto your computer, wall charger, hub or power bank.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eProgramming boards\u003c\/strong\u003e\u003cp\u003eThe board will appear as a COM port in your IDE once connected. Select it under Tools → Port in Arduino IDE.\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\u003eWill this do fast charging?\u003c\/summary\u003e\n\u003cp\u003eIt supports up to 3A at 5V (15W). True fast charging needs USB-C to USB-C with a compatible charger. For dev boards and standard USB-A ports, 3A is more than enough.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eIs it good for programming microcontrollers?\u003c\/summary\u003e\n\u003cp\u003eYes — USB 2.0 data is all you need for serial programming of ESP32, Arduino and similar boards.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eMy board isn't being detected — what's wrong?\u003c\/summary\u003e\n\u003cp\u003eFirst try a different USB port. If still not detected, the board may need a driver (CH340 or CP210x). This cable is data-capable, so the cable itself is not the problem.\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 Some laptop USB-A ports limit current to 500mA. If a board resets or disconnects under load, try a powered USB hub or a wall charger instead.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"Default Title","offer_id":42733421559904,"sku":"CBL-USBA-USBC-1M","price":2.99,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/USB_Data_Cable_Hero.png?v=1778664755"},{"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":"tower-pro-sg90-9g-micro-servo-motor-arduino-rc-nz","title":"Tower Pro SG90 Micro Servo 9g | Arduino RC Robotics STEM","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  }\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  }\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    min-height: 544px;\n    animation: nznTabFade .18s ease both;\n  }\n\n  @keyframes nznTabFade {\n    from { opacity: 0; transform: translateY(6px); }\n    to { opacity: 1; transform: translateY(0); }\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  }\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-grid {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 16px;\n  }\n\n  .nzn-desc .nzn-include-box {\n    display: flex;\n    align-items: flex-start;\n    gap: 16px;\n    padding: 20px;\n    border: 1px solid #e7e7e7;\n    border-radius: 18px;\n    background: #fafafa;\n    min-height: 132px;\n  }\n\n  .nzn-desc .nzn-include-qty {\n    width: 50px;\n    height: 50px;\n    min-width: 50px;\n    border-radius: 999px;\n    background: #fff5ef;\n    border: 1px solid rgba(255,122,47,.22);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-weight: 900;\n    color: #ff7a2f;\n    font-size: 15px;\n  }\n\n  .nzn-desc .nzn-include-info {\n    text-align: left;\n  }\n\n  .nzn-desc .nzn-include-info strong {\n    display: block;\n    font-size: 15px;\n    line-height: 1.3;\n    color: #101114;\n    margin-bottom: 6px;\n  }\n\n  .nzn-desc .nzn-include-info p {\n    margin: 0;\n    font-size: 13px;\n    line-height: 1.55;\n    color: #666;\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: auto;\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 .nzn-tabs {\n      display: grid;\n      grid-template-columns: repeat(3, 1fr);\n      gap: 0;\n      border-bottom: 0;\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-card {\n      padding: 24px 16px;\n      min-height: unset;\n    }\n\n    .nzn-desc .nzn-panel.is-active {\n      min-height: 520px;\n    }\n\n    .nzn-desc .nzn-overview {\n      grid-template-columns: 1fr;\n      gap: 26px;\n    }\n\n    .nzn-desc .nzn-uses,\n    .nzn-desc .nzn-included-grid {\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\u003c\/style\u003e\n\n\u003cdiv class=\"nzn-desc\"\u003e\n\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\n\u003cdiv class=\"nzn-panel is-active\" data-panel=\"overview\"\u003e\n\n\u003cdiv class=\"nzn-panel-content\"\u003e\n\n\u003cdiv class=\"nzn-overview\"\u003e\n\n\u003cdiv class=\"nzn-overview-copy\"\u003e\n\u003cp\u003eThe Tower Pro SG90 is a compact and lightweight 9g micro servo designed for Arduino, Raspberry Pi, robotics, RC vehicles, STEM projects, and motion control applications. Choose between the \u003cstrong\u003e180° positional\u003c\/strong\u003e version for precise angle control, or the \u003cstrong\u003e360° continuous rotation\u003c\/strong\u003e version for driving wheels and non-stop motion. Select your version using the Rotation Angle selector above.\u003c\/p\u003e\n\n\u003cul class=\"nzn-checks\"\u003e\n\u003cli\u003eLightweight 9g micro servo design\u003c\/li\u003e\n\u003cli\u003e180° positional or 360° continuous rotation (select variant)\u003c\/li\u003e\n\u003cli\u003eCompatible with Arduino Servo library\u003c\/li\u003e\n\u003cli\u003eStandard 3-wire PWM control interface\u003c\/li\u003e\n\u003cli\u003eIncludes multiple servo horn attachments\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"nzn-started\"\u003e\n\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 red to 5V and brown 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 signal wire\u003c\/strong\u003e\n\u003cp\u003eConnect the orange signal wire to a PWM pin.\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 Servo library\u003c\/strong\u003e\n\u003cp\u003eUse the built-in Arduino Servo 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\u003eControl movement\u003c\/strong\u003e\n\u003cp\u003e180°: servo.write(angle) sets position. 360°: servo.write() controls speed and direction (90 = stop).\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cdiv style=\"background:#fff5ef;border-left:4px solid #ff7a2f;border-radius:12px;padding:16px 18px;margin-top:18px;font-size:13.5px;line-height:1.6;color:#40566c;text-align:left;\"\u003e\n\u003cstrong style=\"color:#101114;\"\u003eWhich version do I need?\u003c\/strong\u003e\u003cbr\u003e\n\u003cstrong\u003e180° (positional):\u003c\/strong\u003e holds a commanded angle, ideal for steering, robot arms and pan\/tilt rigs.\u003cbr\u003e\n\u003cstrong\u003e360° (continuous):\u003c\/strong\u003e spins continuously with speed and direction control (no fixed angle), ideal for driving wheels, conveyors and turntables.\n\u003c\/div\u003e\n\n\u003cdiv class=\"nzn-note\"\u003e\n\u003cstrong\u003ePlease note:\u003c\/strong\u003e For best reliability, power the SG90 from a dedicated 5V supply rather than directly from the Arduino 5V pin under heavy load.\n\u003cbr\u003e\u003cbr\u003e\nEvery servo is manually tested before dispatch to ensure proper operation. 180° units are checked with full-range sweeps and rapid-response cycles to verify smooth movement and positioning accuracy. 360° continuous units are tested for smooth forward and reverse rotation and a clean neutral stop.\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cdiv class=\"nzn-panel\" data-panel=\"specifications\"\u003e\n\u003cdiv class=\"nzn-panel-content\"\u003e\n\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\u003eTower Pro SG90\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eServo Type\u003c\/span\u003e\u003cstrong\u003e9g Micro Servo\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eGear Type\u003c\/span\u003e\u003cstrong\u003ePlastic\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eOperating Voltage\u003c\/span\u003e\u003cstrong\u003e4.8V – 6V DC\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eControl Signal\u003c\/span\u003e\u003cstrong\u003ePWM\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eRotation Range\u003c\/span\u003e\u003cstrong\u003e180° positional (180° variant) \/ 360° continuous (360° variant)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eSpeed\u003c\/span\u003e\u003cstrong\u003e0.12 sec\/60° @ 4.8V (180°) \/ ~110 RPM @ 4.8V (360°)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eTorque\u003c\/span\u003e\u003cstrong\u003e1.6kg\/cm @ 4.8V (180°) \/ ~1.3kg\/cm @ 4.8V (360°)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eConnector\u003c\/span\u003e\u003cstrong\u003e3-pin Futaba\/JR style\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eWire Length\u003c\/span\u003e\u003cstrong\u003e~25cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eDimensions\u003c\/span\u003e\u003cstrong\u003e22.2 × 11.8 × 31mm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eWeight\u003c\/span\u003e\u003cstrong\u003e9g\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\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\n\u003ch3 class=\"nzn-section-title\"\u003eGetting Started\u003c\/h3\u003e\n\n\u003cdiv class=\"nzn-included-grid\"\u003e\n\n\u003cdiv class=\"nzn-include-box\"\u003e\n\u003cdiv class=\"nzn-include-qty\"\u003e1\u003c\/div\u003e\n\u003cdiv class=\"nzn-include-info\"\u003e\n\u003cstrong\u003eConnect the servo\u003c\/strong\u003e\n\u003cp\u003eBrown = GND, Red = 5V, Orange = signal\/PWM.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"nzn-include-box\"\u003e\n\u003cdiv class=\"nzn-include-qty\"\u003e2\u003c\/div\u003e\n\u003cdiv class=\"nzn-include-info\"\u003e\n\u003cstrong\u003eChoose a PWM pin\u003c\/strong\u003e\n\u003cp\u003eConnect the orange signal wire to a PWM-capable pin such as D9.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"nzn-include-box\"\u003e\n\u003cdiv class=\"nzn-include-qty\"\u003e3\u003c\/div\u003e\n\u003cdiv class=\"nzn-include-info\"\u003e\n\u003cstrong\u003eUpload example code\u003c\/strong\u003e\n\u003cp\u003eUse the Arduino IDE Servo example.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"nzn-include-box\"\u003e\n\u003cdiv class=\"nzn-include-qty\"\u003e4\u003c\/div\u003e\n\u003cdiv class=\"nzn-include-info\"\u003e\n\u003cstrong\u003eTest movement\u003c\/strong\u003e\n\u003cp\u003e180°: rotates smoothly between positions. 360°: spins continuously, stopping near a mid value.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\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\n\u003ch3 class=\"nzn-section-title\"\u003eWhat's Included\u003c\/h3\u003e\n\n\u003cdiv class=\"nzn-included-grid\"\u003e\n\n\u003cdiv class=\"nzn-include-box\"\u003e\n\u003cdiv class=\"nzn-include-qty\"\u003e1×\u003c\/div\u003e\n\u003cdiv class=\"nzn-include-info\"\u003e\n\u003cstrong\u003eSG90 Servo Motor\u003c\/strong\u003e\n\u003cp\u003eMain Tower Pro SG90 servo unit (per servo, 180° or 360° as selected).\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"nzn-include-box\"\u003e\n\u003cdiv class=\"nzn-include-qty\"\u003e1×\u003c\/div\u003e\n\u003cdiv class=\"nzn-include-info\"\u003e\n\u003cstrong\u003eServo Horn Set\u003c\/strong\u003e\n\u003cp\u003eMultiple horn styles included.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\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\n\u003ch3 class=\"nzn-section-title\"\u003eCommon Uses\u003c\/h3\u003e\n\n\u003cdiv class=\"nzn-uses\"\u003e\n\u003cdiv class=\"nzn-use\"\u003eArduino robotics projects\u003c\/div\u003e\n\u003cdiv class=\"nzn-use\"\u003eRC steering systems (180°)\u003c\/div\u003e\n\u003cdiv class=\"nzn-use\"\u003ePan\/tilt camera systems (180°)\u003c\/div\u003e\n\u003cdiv class=\"nzn-use\"\u003eRobot arms and claws (180°)\u003c\/div\u003e\n\u003cdiv class=\"nzn-use\"\u003eDrive wheels and rovers (360°)\u003c\/div\u003e\n\u003cdiv class=\"nzn-use\"\u003eConveyors and turntables (360°)\u003c\/div\u003e\n\u003c\/div\u003e\n\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\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\u003eCan I use this with Arduino?\u003c\/strong\u003e\n\u003cp\u003eYes, the SG90 works perfectly with Arduino using the Servo library.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"nzn-faq-item\"\u003e\n\u003cstrong\u003eWhat's the difference between the 180° and 360° versions?\u003c\/strong\u003e\n\u003cp\u003eThe 180° version is a positional servo that holds a commanded angle. The 360° version is a continuous rotation servo that spins continuously, giving you control over speed and direction rather than a fixed position. Pick the one that suits your project using the Rotation Angle selector.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"nzn-faq-item\"\u003e\n\u003cstrong\u003eCan I power it directly from Arduino?\u003c\/strong\u003e\n\u003cp\u003eYes for light testing, but a dedicated 5V supply is recommended.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\ndocument.querySelectorAll('.nzn-desc .nzn-tab').forEach(function(tab) {\n  tab.addEventListener('click', function() {\n\n    var wrap = tab.closest('.nzn-desc');\n    var target = tab.getAttribute('data-tab');\n\n    wrap.querySelectorAll('.nzn-tab').forEach(function(t) {\n      t.classList.remove('is-active');\n    });\n\n    wrap.querySelectorAll('.nzn-panel').forEach(function(panel) {\n      panel.classList.remove('is-active');\n    });\n\n    tab.classList.add('is-active');\n\n    var panel = wrap.querySelector('[data-panel=\"' + target + '\"]');\n\n    if (panel) {\n      panel.classList.add('is-active');\n    }\n\n  });\n});\n\u003c\/script\u003e","brand":"Tower Pro","offers":[{"title":"180 Degrees \/ 1 Pack","offer_id":42755664380000,"sku":"SRV-SG90-9G-1","price":2.99,"currency_code":"NZD","in_stock":true},{"title":"180 Degrees \/ 3 Pack","offer_id":42755664412768,"sku":"SRV-SG90-9G-2","price":7.99,"currency_code":"NZD","in_stock":true},{"title":"180 Degrees \/ 5 Pack","offer_id":42755664445536,"sku":"SRV-SG90-9G-3","price":11.99,"currency_code":"NZD","in_stock":true},{"title":"360 Degrees \/ 1 Pack","offer_id":42783975932000,"sku":"SRV-SG90-9G-360-1","price":4.99,"currency_code":"NZD","in_stock":true},{"title":"360 Degrees \/ 3 Pack","offer_id":42783975964768,"sku":"SRV-SG90-9G-360-3","price":13.49,"currency_code":"NZD","in_stock":true},{"title":"360 Degrees \/ 5 Pack","offer_id":42783975997536,"sku":"SRV-SG90-9G-360-5","price":19.99,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/SG90_PRODUCT_HERO_154226f4-d674-4e35-9165-b9aa169e626a.png?v=1778973908"},{"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":"rainbow-dupont-jumper-wire-kit-20cm","title":"40pc Dupont Jumper Wires (20cm)","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\"\u003ePre-crimped Dupont jumper wires with 2.54mm connectors on both ends, 20cm long, in a pack of 40. Use them to link dev boards to sensors, modules and breadboards without soldering. Choose Female-Female, Male-Female or Male-Male to match your setup.\u003c\/p\u003e\n\u003cbr\u003e\n\u003cul class=\"nznpd__checks\"\u003e\n\u003cli\u003e40 wires per pack — F-F, M-F or M-M available\u003c\/li\u003e\n\u003cli\u003e20cm length — long enough for most bench setups\u003c\/li\u003e\n\u003cli\u003e2.54mm pitch Dupont connectors\u003c\/li\u003e\n\u003cli\u003ePre-crimped and housing-installed — ready to use\u003c\/li\u003e\n\u003cli\u003e26 AWG stranded copper wire, flexible\u003c\/li\u003e\n\u003cli\u003e10 colours (4 wires each) for easy signal identification\u003c\/li\u003e\n\u003cli\u003eCompatible with Arduino, ESP32, Raspberry Pi header pins\u003c\/li\u003e\n\u003cli\u003eFits breadboard tie points and 0.1″ pin headers\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\u003eQuantity\u003c\/span\u003e\u003cstrong\u003e40 wires per pack\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eLength\u003c\/span\u003e\u003cstrong\u003e20cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eConnector pitch\u003c\/span\u003e\u003cstrong\u003e2.54mm (0.1 inch)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eWire gauge\u003c\/span\u003e\u003cstrong\u003e26 AWG stranded copper\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eColours\u003c\/span\u003e\u003cstrong\u003e10 colours, 4 wires each\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eTypes available\u003c\/span\u003e\u003cstrong\u003eFemale-Female, Male-Female, Male-Male\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\"\u003e40×\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cstrong\u003eDupont jumper wires, 20cm (type as selected above)\u003c\/strong\u003e\u003cp\u003e10 colours, 4 of each. Ready to use — no crimping or assembly needed.\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\"\u003eLinking Arduino and ESP32 boards to sensors and modules\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eBreadboard prototyping and circuit layout\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eRaspberry Pi GPIO experiments\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eConnecting I2C and SPI modules (OLED, BME280, etc.)\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eColour-coded power, GND and signal organisation\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eEducational kits and classroom projects\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\u003eWhich type do I need?\u003c\/h3\u003e\n\u003col class=\"nznpd__steps\"\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eFemale-Female (F-F)\u003c\/strong\u003e\u003cp\u003eConnects two male pin headers together — e.g. Arduino header to sensor module, or sensor to breadboard row.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eMale-Female (M-F)\u003c\/strong\u003e\u003cp\u003eOne end plugs into a female socket (like a breadboard row), the other end has a pin that goes into a pin header. The most versatile type for mixed setups.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eMale-Male (M-M)\u003c\/strong\u003e\u003cp\u003eBoth ends are pins — plug into breadboard holes or female sockets. Used between two breadboards or into female pin headers.\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\u003eWhich type should I buy if I'm not sure?\u003c\/summary\u003e\n\u003cp\u003eFemale-Female is the most commonly needed type for connecting Arduino or ESP32 boards (which have male pin headers) to sensor modules (which also have male headers). Buy a set of each if you're building a general kit.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eWill these fit standard 2.54mm headers?\u003c\/summary\u003e\n\u003cp\u003eYes. 2.54mm is the standard pitch for Arduino headers, ESP32 dev boards, Raspberry Pi GPIO, and most sensor\/module boards. These fit all of them.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"nznpd__faq\"\u003e\n\u003csummary\u003eCan I separate individual wires from the strip?\u003c\/summary\u003e\n\u003cp\u003eYes. The wires peel apart easily — just separate them at the housing end. You can use individual wires or keep groups together for tidy cable runs.\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 All three types are in stock. Order multiples of the same type to save per-unit cost. Colour coding: Red is usually 5V, Orange is 3.3V, Black\/Brown is GND — not universal but it's the common convention.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"Female to female","offer_id":42747039416416,"sku":"JW-DUP-20CM-FF-40PK","price":4.49,"currency_code":"NZD","in_stock":true},{"title":"Male to female","offer_id":42747039449184,"sku":"JW-DUP-20CM-MF-40PK","price":4.69,"currency_code":"NZD","in_stock":true},{"title":"Male to male","offer_id":42747039481952,"sku":"JW-DUP-20CM-MM-40PK","price":4.69,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/DuPont_Wires_M_to_F.jpg?v=1778666824"},{"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":"k851264-rgb-led-module","title":"K851264 5050 RGB LED Module – Common Cathode, Arduino \u0026 ESP32","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: \"\\2713\"; 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-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-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-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\u003eCompact 5050 RGB LED on a 22mm round board with current-limiting resistors already built in. Connect ground and three PWM pins, then blend red, green and blue to produce any colour and brightness. No external resistors needed, which makes it a clean drop-in for Arduino, ESP32 and Raspberry Pi projects.\u003c\/p\u003e\n\n            \u003cul class=\"nzn-checks\"\u003e\n              \u003cli\u003e5050 surface-mount RGB LED (R, G, B in one package)\u003c\/li\u003e\n              \u003cli\u003eCommon cathode (shared ground)\u003c\/li\u003e\n              \u003cli\u003eOnboard current-limiting resistors, no extras needed\u003c\/li\u003e\n              \u003cli\u003eRuns on 3.3V and 5V logic\u003c\/li\u003e\n              \u003cli\u003e2.54mm male header pins, breadboard friendly\u003c\/li\u003e\n              \u003cli\u003e22mm round PCB with two mounting holes\u003c\/li\u003e\n              \u003cli\u003eFull PWM colour and brightness control\u003c\/li\u003e\n            \u003c\/ul\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-started\"\u003e\n            \u003ch3\u003eWiring at a Glance\u003c\/h3\u003e\n\n            \u003cdiv class=\"nzn-step\"\u003e\n              \u003cspan\u003e1\u003c\/span\u003e\n              \u003cdiv\u003e\n                \u003cstrong\u003eConnect ground\u003c\/strong\u003e\n                \u003cp\u003eWire the GND pin to any ground pin on your board.\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 colour pins\u003c\/strong\u003e\n                \u003cp\u003eConnect R, B and G to three PWM-capable pins. Follow the board labels, the order reads GND, R, B, G.\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 up PWM\u003c\/strong\u003e\n                \u003cp\u003eUse analogWrite on Arduino or ledcWrite on ESP32 for each colour pin.\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\u003eMix your colour\u003c\/strong\u003e\n                \u003cp\u003eVary each channel from 0 to 255 to blend any colour and brightness.\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\u003eGood to know:\u003c\/strong\u003e The header order on this board is GND, R, B, G (the B and G pins are swapped from a plain RGB sequence), so always wire to the silkscreen labels.\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\u003eK851264 LED RGB\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eLED Type\u003c\/span\u003e\u003cstrong\u003e5050 SMD RGB LED\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eConfiguration\u003c\/span\u003e\u003cstrong\u003eCommon Cathode (shared GND)\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eOperating Voltage\u003c\/span\u003e\u003cstrong\u003e3.3V to 5V\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eControl Method\u003c\/span\u003e\u003cstrong\u003ePWM, one channel per colour\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eOnboard Resistors\u003c\/span\u003e\u003cstrong\u003eYes, current-limiting (no extras needed)\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003ePin Order\u003c\/span\u003e\u003cstrong\u003eGND, R, B, G\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003ePin Pitch\u003c\/span\u003e\u003cstrong\u003e2.54mm male header\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eBoard Diameter\u003c\/span\u003e\u003cstrong\u003e22mm\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003ePCB Thickness\u003c\/span\u003e\u003cstrong\u003e1.6mm\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eOverall Height (with pins)\u003c\/span\u003e\u003cstrong\u003e38mm\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eMounting Holes\u003c\/span\u003e\u003cstrong\u003e2 x 4mm (suit M2.5 screws)\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eCompatibility\u003c\/span\u003e\u003cstrong\u003eArduino, ESP32, ESP8266, Raspberry Pi\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n\u003cstrong\u003eGood to know:\u003c\/strong\u003e This is a standard RGB LED driven over three PWM lines, not an addressable WS2812B type. One module gives you one full-colour LED.\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\u003c\/h3\u003e\n\n        \u003cdiv class=\"nzn-specs\"\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eGND\u003c\/span\u003e\u003cstrong\u003eMicrocontroller ground (0V)\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eR\u003c\/span\u003e\u003cstrong\u003eRed channel, PWM-capable pin\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eB\u003c\/span\u003e\u003cstrong\u003eBlue channel, PWM-capable pin\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv\u003e\n\u003cspan\u003eG\u003c\/span\u003e\u003cstrong\u003eGreen channel, PWM-capable pin\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"nzn-wiring-box\"\u003e\n          As a common cathode module, all three colours share the GND pin. Driving a colour pin HIGH turns that colour on, and a PWM signal sets its brightness. Mixing the three channels gives you the full colour range. Note the header reads GND, R, B, G from left to right (B and G are swapped versus a plain RGB order), so wire by the printed labels rather than position. On an Arduino Uno, GND goes to a GND pin and R, B, G connect to PWM pins such as 9, 10 and 11.\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n\u003cstrong\u003eGood to know:\u003c\/strong\u003e The onboard resistors handle current limiting, so the colour pins connect directly to your microcontroller within the 3.3V to 5V range.\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\u003eK851264 5050 RGB LED Module\u003c\/strong\u003e\n            \u003cp\u003eRound breakout board with a 5050 RGB LED, onboard resistors and a 4-pin male header (GND, R, B, G).\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n\u003cstrong\u003eGood to know:\u003c\/strong\u003e Jumper wires and a microcontroller are not included. Any 3.3V or 5V board with three PWM outputs will drive this module.\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\"\u003eFull-colour status and indicator lights\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eArduino and ESP32 colour-mixing and PWM learning projects\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eMood lighting and ambient effects\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eRGB feedback for sensors, alarms and notifications\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eRobotics and wearable accent lighting\u003c\/div\u003e\n          \u003cdiv class=\"nzn-use\"\u003eBreadboard prototyping and STEM teaching\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n\u003cstrong\u003eGood to know:\u003c\/strong\u003e Because brightness is set per channel with PWM, you can fade and pulse colours as well as switch between them.\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\u003eDo I need to add resistors?\u003c\/strong\u003e\n            \u003cp\u003eNo. Current-limiting resistors are built into the board, so the colour pins connect straight to your microcontroller pins (kept within 3.3V to 5V).\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-faq-item\"\u003e\n            \u003cstrong\u003eIs it common cathode or common anode?\u003c\/strong\u003e\n            \u003cp\u003eCommon cathode. GND is the shared pin, and each colour turns on when its pin is driven HIGH. Use PWM on each colour pin to set brightness and mix colours.\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-faq-item\"\u003e\n            \u003cstrong\u003eWhich pins do I use on an Arduino?\u003c\/strong\u003e\n            \u003cp\u003eConnect GND to a GND pin, then R, B and G to any three PWM-capable pins (such as 9, 10 and 11 on an Uno). Follow the board labels, since the order is GND, R, B, G.\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"nzn-faq-item\"\u003e\n            \u003cstrong\u003eDoes it work with 3.3V boards like the ESP32?\u003c\/strong\u003e\n            \u003cp\u003eYes. It runs on 3.3V to 5V, so it works directly with the ESP32, ESP8266 and Raspberry Pi as well as 5V Arduino boards.\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"nzn-note\"\u003e\n\u003cstrong\u003eGood to know:\u003c\/strong\u003e For a single project you only need one module. For multi-LED effects, add more modules on separate PWM pins.\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":"Default Title","offer_id":42782769217632,"sku":"LED-K851264-RGB","price":4.99,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/K851264LEDRGBLit.png?v=1780348905"},{"product_id":"0-96-oled-display-module-128x64-i2c-ssd1306-arduino-compatible","title":"0.96\" OLED Display Module 128x64 I2C SSD1306 - Arduino Compatible","description":"\u003cdiv style=\"font-family:'DM Sans',-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;color:#1f2328;line-height:1.6;max-width:840px;\"\u003e\n\n\u003cp style=\"font-size:16px;margin:0 0 14px;\"\u003eAdd a crisp, self-illuminated display to your next project. This 0.96 inch OLED module packs 128x64 individually lit pixels into a tiny 27 x 27 mm board, driven by the well supported SSD1306 controller over I2C. Because each pixel makes its own light there is no backlight, which means deep blacks, high contrast and a wide viewing angle, even in a dark room.\u003c\/p\u003e\n\n\u003cp style=\"font-size:16px;margin:0 0 18px;\"\u003eIt runs happily on 3.3V or 5V, talks I2C over just two data lines, and works out of the box with Arduino, ESP32, ESP8266, Raspberry Pi and most other microcontrollers. Stocked and dispatched right here in New Zealand, so you are not waiting weeks on an overseas parcel or dealing with customs.\u003c\/p\u003e\n\n\u003ch3 style=\"color:#e07e2c;font-size:18px;font-weight:700;margin:24px 0 10px;border-bottom:2px solid #f3e2d2;padding-bottom:5px;\"\u003eKey features\u003c\/h3\u003e\n\u003cul style=\"margin:0 0 8px;padding-left:20px;font-size:15px;\"\u003e\n\u003cli style=\"margin-bottom:5px;\"\u003e128 x 64 pixel monochrome OLED, 0.96 inch diagonal\u003c\/li\u003e\n\u003cli style=\"margin-bottom:5px;\"\u003eSSD1306 driver IC, I2C interface (only 2 data pins needed)\u003c\/li\u003e\n\u003cli style=\"margin-bottom:5px;\"\u003eWide 3.3V to 5V operating range, no level shifting required\u003c\/li\u003e\n\u003cli style=\"margin-bottom:5px;\"\u003eNo backlight, very high contrast and a viewing angle over 160 degrees\u003c\/li\u003e\n\u003cli style=\"margin-bottom:5px;\"\u003eUltra low power, around 0.08W with the full screen lit\u003c\/li\u003e\n\u003cli style=\"margin-bottom:5px;\"\u003eCompact 27 x 27 x 4 mm board with 4 clearly labelled pins\u003c\/li\u003e\n\u003cli style=\"margin-bottom:0;\"\u003eWorks with the U8g2 and Adafruit SSD1306 libraries\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3 style=\"color:#e07e2c;font-size:18px;font-weight:700;margin:24px 0 10px;border-bottom:2px solid #f3e2d2;padding-bottom:5px;\"\u003eSpecifications\u003c\/h3\u003e\n\u003ctable style=\"border-collapse:collapse;width:100%;font-size:14px;margin-bottom:8px;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth style=\"border:1px solid #e7e7e7;padding:8px 10px;text-align:left;background:#faf3ec;width:40%;\"\u003eDriver IC\u003c\/th\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003eSSD1306\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth style=\"border:1px solid #e7e7e7;padding:8px 10px;text-align:left;background:#faf3ec;\"\u003eResolution\u003c\/th\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003e128 x 64 pixels\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth style=\"border:1px solid #e7e7e7;padding:8px 10px;text-align:left;background:#faf3ec;\"\u003eScreen size\u003c\/th\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003e0.96 inch diagonal\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth style=\"border:1px solid #e7e7e7;padding:8px 10px;text-align:left;background:#faf3ec;\"\u003eInterface\u003c\/th\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003eI2C (IIC), 4 pin\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth style=\"border:1px solid #e7e7e7;padding:8px 10px;text-align:left;background:#faf3ec;\"\u003eDefault I2C address\u003c\/th\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003e0x3C\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth style=\"border:1px solid #e7e7e7;padding:8px 10px;text-align:left;background:#faf3ec;\"\u003eOperating voltage\u003c\/th\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003e3.3V to 5V DC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth style=\"border:1px solid #e7e7e7;padding:8px 10px;text-align:left;background:#faf3ec;\"\u003eViewing angle\u003c\/th\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003eGreater than 160 degrees\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth style=\"border:1px solid #e7e7e7;padding:8px 10px;text-align:left;background:#faf3ec;\"\u003eWorking temperature\u003c\/th\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003e-30C to 70C\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth style=\"border:1px solid #e7e7e7;padding:8px 10px;text-align:left;background:#faf3ec;\"\u003eModule size\u003c\/th\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003e27 x 27 x 4 mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth style=\"border:1px solid #e7e7e7;padding:8px 10px;text-align:left;background:#faf3ec;\"\u003eCompatibility\u003c\/th\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003eArduino, ESP32, ESP8266, Raspberry Pi, STM32, and more\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\u003ch3 style=\"color:#e07e2c;font-size:18px;font-weight:700;margin:24px 0 10px;border-bottom:2px solid #f3e2d2;padding-bottom:5px;\"\u003eColour options\u003c\/h3\u003e\n\u003cp style=\"font-size:15px;margin:0 0 6px;\"\u003e\u003cstrong\u003eWhite:\u003c\/strong\u003e the whole screen lights white on a black background. The all rounder, great for text, menus and graphics.\u003c\/p\u003e\n\u003cp style=\"font-size:15px;margin:0 0 8px;\"\u003e\u003cstrong\u003eYellow\/Blue:\u003c\/strong\u003e the top strip of the screen lights yellow and the rest lights blue. This split is fixed by the panel itself, not controlled in software, so it suits layouts with a yellow title bar above blue body text.\u003c\/p\u003e\n\n\u003ch3 style=\"color:#e07e2c;font-size:18px;font-weight:700;margin:24px 0 10px;border-bottom:2px solid #f3e2d2;padding-bottom:5px;\"\u003eWiring to an Arduino UNO or Nano\u003c\/h3\u003e\n\u003ctable style=\"border-collapse:collapse;width:100%;font-size:14px;margin-bottom:8px;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth style=\"border:1px solid #e7e7e7;padding:8px 10px;text-align:left;background:#faf3ec;width:50%;\"\u003eOLED pin\u003c\/th\u003e\n\u003cth style=\"border:1px solid #e7e7e7;padding:8px 10px;text-align:left;background:#faf3ec;\"\u003eArduino pin\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003eVCC\u003c\/td\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003e5V\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003eGND\u003c\/td\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003eGND\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003eSCL\u003c\/td\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003eA5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003eSDA\u003c\/td\u003e\n\u003ctd style=\"border:1px solid #e7e7e7;padding:8px 10px;\"\u003eA4\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"font-size:14px;color:#555;margin:0 0 8px;\"\u003eOn an Arduino Mega use pin 21 for SCL and pin 20 for SDA.\u003c\/p\u003e\n\n\u003ch3 style=\"color:#e07e2c;font-size:18px;font-weight:700;margin:24px 0 10px;border-bottom:2px solid #f3e2d2;padding-bottom:5px;\"\u003eGetting started\u003c\/h3\u003e\n\u003cp style=\"font-size:15px;margin:0 0 8px;\"\u003eInstall the U8g2 library (by olikraus) or the Adafruit SSD1306 and Adafruit GFX libraries through the Arduino Library Manager, wire it up as above, and load one of the example sketches. The default I2C address is 0x3C, which the library examples already expect.\u003c\/p\u003e\n\n\u003ch3 style=\"color:#e07e2c;font-size:18px;font-weight:700;margin:24px 0 10px;border-bottom:2px solid #f3e2d2;padding-bottom:5px;\"\u003eFAQ\u003c\/h3\u003e\n\u003cp style=\"font-size:15px;margin:0 0 6px;\"\u003e\u003cstrong\u003eCan I change the colours in code?\u003c\/strong\u003e No. The colour layout is built into the panel. White shows white pixels, and Yellow\/Blue always has a yellow top strip with a blue lower section.\u003c\/p\u003e\n\u003cp style=\"font-size:15px;margin:0 0 6px;\"\u003e\u003cstrong\u003eWill it run on a 3.3V board like an ESP32?\u003c\/strong\u003e Yes, it works on anything from 3.3V to 5V.\u003c\/p\u003e\n\u003cp style=\"font-size:15px;margin:0 0 6px;\"\u003e\u003cstrong\u003eHow many pins does it use?\u003c\/strong\u003e Two data pins (SDA and SCL) plus power and ground, four wires total.\u003c\/p\u003e\n\u003cp style=\"font-size:15px;margin:0 0 8px;\"\u003e\u003cstrong\u003eThe screen is blank, what now?\u003c\/strong\u003e Most blank screens come down to the I2C address. If 0x3C does not work, run an I2C scanner sketch to confirm, then update the address in your code.\u003c\/p\u003e\n\n\u003cp style=\"font-size:15px;margin:18px 0 0;padding:12px 14px;background:#fbf2e8;border-left:4px solid #e07e2c;border-radius:4px;\"\u003e\u003cstrong\u003eLocal NZ stock, fast dispatch.\u003c\/strong\u003e Held in stock and shipped from New Zealand, with local support if you get stuck on a project. No long overseas waits and no customs surprises.\u003c\/p\u003e\n\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"White \/ 1 Pack","offer_id":42796615237728,"sku":"OLED096-W-1","price":7.9,"currency_code":"NZD","in_stock":true},{"title":"White \/ 3 Pack","offer_id":42796615270496,"sku":"OLED096-W-3","price":21.9,"currency_code":"NZD","in_stock":true},{"title":"White \/ 5 Pack","offer_id":42796615303264,"sku":"OLED096-W-5","price":34.9,"currency_code":"NZD","in_stock":true},{"title":"Yellow\/Blue \/ 1 Pack","offer_id":42796615336032,"sku":"OLED096-YB-1","price":7.9,"currency_code":"NZD","in_stock":true},{"title":"Yellow\/Blue \/ 3 Pack","offer_id":42796615368800,"sku":"OLED096-YB-3","price":21.9,"currency_code":"NZD","in_stock":true},{"title":"Yellow\/Blue \/ 5 Pack","offer_id":42796615401568,"sku":"OLED096-YB-5","price":34.9,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/TZT-0.96-inch-OLED-Product-Hero-YB.png?v=1780559562"},{"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"},{"product_id":"ds1307-tiny-rtc-i2c-real-time-clock-module-at24c32-eeprom-arduino","title":"DS1307 Tiny RTC I2C Real-Time Clock Module – AT24C32 EEPROM (Arduino)","description":"\u003cstyle\u003e.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} .nznpd,.nznpd *{box-sizing:border-box} .nznpd p{margin:0;color:var(--mut);font-size:15px;line-height:1.65} .nznpd strong{color:var(--ink)} .nznpd__intro{font-size:16px;color:var(--ink);font-weight:500;line-height:1.6;max-width:none} .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} .nznpd__checks li{display:flex;gap:11px;align-items:flex-start;font-size:15px;color:var(--ink);line-height:1.45} .nznpd__checks li::before{content:\"\\2713\";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} .nznpd__qs{background:linear-gradient(170deg,#FFF9F3,#FFF1E6);border:2px solid #FCE0C6;border-radius:16px;padding:22px} .nznpd__qs h3{margin:0 0 16px;font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--od)} .nznpd__steps{list-style:none;counter-reset:s;padding:0;margin:0;display:grid;gap:14px} .nznpd__steps li{display:grid;grid-template-columns:27px 1fr;gap:12px} .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} .nznpd__steps strong{display:block;font-size:14px} .nznpd__steps p{font-size:13px;margin-top:2px;line-height:1.45} .nznpd__block{margin-top:36px;padding-top:30px;border-top:1px solid var(--line)} .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} .nznpd__h::before{content:\"\";flex:0 0 auto;width:20px;height:3px;border-radius:2px;background:var(--o)} .nznpd__specs{border:2px solid var(--line);border-radius:12px;overflow:hidden} .nznpd__spec{display:grid;grid-template-columns:minmax(150px,.7fr) 1fr;gap:18px;padding:12px 16px;font-size:14px} .nznpd__spec:nth-child(odd){background:var(--soft)} .nznpd__spec span{color:var(--mut)} .nznpd__spec strong{font-weight:700} .nznpd__included{display:flex;gap:16px;align-items:center;border:2px solid var(--line);border-radius:16px;background:var(--soft);padding:18px 20px} .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} .nznpd__included strong{display:block;font-size:15px;margin-bottom:3px} .nznpd__uses{display:grid;grid-template-columns:repeat(2,1fr);gap:10px} .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} .nznpd__faqs{display:grid;gap:10px} .nznpd__faq{border:2px solid var(--line);border-radius:12px;background:#fff;padding:0 16px;transition:border-color .18s ease} .nznpd__faq[open]{border-color:#FCE0C6} .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} .nznpd__faq summary::-webkit-details-marker{display:none} .nznpd__faq summary::after{content:\"\\203A\";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} .nznpd__faq[open] summary::after{transform:rotate(-90deg)} .nznpd__faq p{padding:0 0 16px;font-size:14px} .nznpd__faq[open] p{animation:nznpdReveal .24s ease} @keyframes nznpdReveal{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}} .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} @media (prefers-reduced-motion:reduce){.nznpd__faq summary::after{transition:none}.nznpd__faq[open] p{animation:none}} @media (max-width:749px){.nznpd__checks{grid-template-columns:1fr}.nznpd__uses{grid-template-columns:1fr}.nznpd__spec{grid-template-columns:1fr;gap:2px}}\u003c\/style\u003e\u003cdiv class=\"nznpd\"\u003e\n\u003cdiv class=\"nznpd__lead\"\u003e\n\u003cp class=\"nznpd__intro\"\u003eAdd accurate timekeeping to any project. The \u003cstrong\u003eDS1307 Tiny RTC\u003c\/strong\u003e module keeps real time — seconds through to year, with automatic leap-year handling — over a simple \u003cstrong\u003eI2C\u003c\/strong\u003e connection, and keeps ticking on its backup battery when main power is off. It also packs an onboard \u003cstrong\u003eAT24C32 EEPROM\u003c\/strong\u003e (4 KB) for non-volatile storage, plus a programmable square-wave output. Works with Arduino, ESP32, Raspberry Pi, PIC and most microcontrollers. Backup battery not included.\u003c\/p\u003e\n\u003cbr\u003e\u003cul class=\"nznpd__checks\"\u003e\n\u003cli\u003eDS1307 real-time clock over I2C\u003c\/li\u003e\n\u003cli\u003eOnboard AT24C32 32 Kbit (4 KB) EEPROM\u003c\/li\u003e\n\u003cli\u003eBattery-backed — keeps time when powered off\u003c\/li\u003e\n\u003cli\u003eProgrammable square-wave (SQ) output\u003c\/li\u003e\n\u003cli\u003e32.768 kHz crystal for accurate timekeeping\u003c\/li\u003e\n\u003cli\u003eWorks with Arduino, ESP32, Pi \u0026amp; PIC\u003c\/li\u003e\n\u003cli\u003eFootprint for an optional DS18B20 sensor\u003c\/li\u003e\n\u003cli\u003e5V operation, I2C clock address 0x68\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003csection class=\"nznpd__block\"\u003e\u003ch3 class=\"nznpd__h\"\u003eSpecifications\u003c\/h3\u003e\n\u003cbr\u003e\u003cdiv class=\"nznpd__specs\"\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eRTC chip\u003c\/span\u003e\u003cstrong\u003eDS1307 (I2C, address 0x68)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eEEPROM\u003c\/span\u003e\u003cstrong\u003eAT24C32, 32 Kbit \/ 4 KB (I2C, 0x50)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eInterface\u003c\/span\u003e\u003cstrong\u003eI2C (SCL, SDA)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eOperating voltage\u003c\/span\u003e\u003cstrong\u003e5V\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eCrystal\u003c\/span\u003e\u003cstrong\u003e32.768 kHz\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eBackup battery\u003c\/span\u003e\u003cstrong\u003eLIR2032 rechargeable (not included)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eOutput\u003c\/span\u003e\u003cstrong\u003eProgrammable square wave (SQ)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eExtras\u003c\/span\u003e\u003cstrong\u003eOnboard charge circuit · DS18B20 footprint\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eHeader pins\u003c\/span\u003e\u003cstrong\u003eSQ, DS, SCL, SDA, VCC, GND, BAT\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eDimensions\u003c\/span\u003e\u003cstrong\u003eapprox. 27 × 28 mm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003csection class=\"nznpd__block\"\u003e\u003ch3 class=\"nznpd__h\"\u003eWhat's in the box\u003c\/h3\u003e\n\u003cbr\u003e\u003cdiv class=\"nznpd__included\"\u003e\n\u003cdiv class=\"nznpd__qty\"\u003e1×\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cstrong\u003eDS1307 Tiny RTC module\u003c\/strong\u003e\u003cp\u003eBackup battery (LIR2032) not included — see the note below on battery type.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003csection class=\"nznpd__block\"\u003e\u003ch3 class=\"nznpd__h\"\u003eGreat for\u003c\/h3\u003e\n\u003cbr\u003e\u003cdiv class=\"nznpd__uses\"\u003e\n\u003cdiv class=\"nznpd__use\"\u003eData loggers with timestamps\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eClocks, timers \u0026amp; alarms\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eScheduling lights, relays \u0026amp; automation\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eArduino \/ ESP32 \/ Raspberry Pi projects\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eStoring settings in the onboard EEPROM\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eLearning I2C and RTC basics\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003csection class=\"nznpd__block\"\u003e\u003cdiv class=\"nznpd__qs\"\u003e\n\u003ch3\u003eGetting started\u003c\/h3\u003e\n\u003col class=\"nznpd__steps\"\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eWire it up\u003c\/strong\u003e\u003cp\u003eVCC→5V, GND→GND, SDA→SDA, SCL→SCL on your board.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eFit a battery\u003c\/strong\u003e\u003cp\u003eInsert a charged LIR2032 (rechargeable) so it keeps time when the power is off.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eAdd a library\u003c\/strong\u003e\u003cp\u003eUse an RTClib (DS1307) library in the Arduino IDE.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eSet the time\u003c\/strong\u003e\u003cp\u003eRun the set-time example once — it'll then keep time on its own.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003csection class=\"nznpd__block\"\u003e\u003ch3 class=\"nznpd__h\"\u003eCommon questions\u003c\/h3\u003e\n\u003cbr\u003e\u003cdiv class=\"nznpd__faqs\"\u003e\n\u003cdetails class=\"nznpd__faq\" open\u003e\u003csummary\u003eIs the battery included?\u003c\/summary\u003e\u003cp\u003eNo. The module takes a rechargeable LIR2032 coin cell (not included). The board has a built-in charging circuit to keep it topped up while powered.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails class=\"nznpd__faq\"\u003e\u003csummary\u003eCan I use a normal CR2032 instead?\u003c\/summary\u003e\u003cp\u003eThe Tiny RTC is designed for a rechargeable LIR2032 and will try to charge whatever is fitted. If you want to use a non-rechargeable CR2032, disable the onboard charging circuit first (remove the charging resistor\/diode near the SQ pin) to avoid overcharging it. For most users a LIR2032 is the easy answer.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails class=\"nznpd__faq\"\u003e\u003csummary\u003eDoes it work at 3.3V?\u003c\/summary\u003e\u003cp\u003eThe I2C lines work fine at 3.3V, but the onboard battery charging needs 5V. Power the module from 5V for normal use.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails class=\"nznpd__faq\"\u003e\u003csummary\u003eWhat is the EEPROM for?\u003c\/summary\u003e\u003cp\u003eThe onboard AT24C32 gives you 4 KB of non-volatile storage (I2C address 0x50) for settings, logs or calibration — completely separate from the clock.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails class=\"nznpd__faq\"\u003e\u003csummary\u003eWhich library should I use?\u003c\/summary\u003e\u003cp\u003eAdafruit RTClib (or similar) with the DS1307 class. Set the time once via the example sketch and it keeps running on the backup battery.\u003c\/p\u003e\u003c\/details\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003cp class=\"nznpd__note\"\u003e\u003cstrong\u003eGood to know:\u003c\/strong\u003e takes a rechargeable LIR2032 (not included) — not a throwaway CR2032 unless you disable the charger. Every order is checked before it ships from our Te Awamutu stock.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"Default Title","offer_id":42882511143008,"sku":"MOD-DS1307","price":3.49,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/DS1307ProductHero.png?v=1781746504"},{"product_id":"ds3231-mini-rtc-module","title":"DS3231 Mini High-Precision RTC Module – I2C, Arduino \u0026 Raspberry Pi","description":"\u003cstyle\u003e.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} .nznpd,.nznpd *{box-sizing:border-box} .nznpd p{margin:0;color:var(--mut);font-size:15px;line-height:1.65} .nznpd strong{color:var(--ink)} .nznpd__intro{font-size:16px;color:var(--ink);font-weight:500;line-height:1.6;max-width:none} .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} .nznpd__checks li{display:flex;gap:11px;align-items:flex-start;font-size:15px;color:var(--ink);line-height:1.45} .nznpd__checks li::before{content:\"\\2713\";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} .nznpd__qs{background:linear-gradient(170deg,#FFF9F3,#FFF1E6);border:2px solid #FCE0C6;border-radius:16px;padding:22px} .nznpd__qs h3{margin:0 0 16px;font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--od)} .nznpd__steps{list-style:none;counter-reset:s;padding:0;margin:0;display:grid;gap:14px} .nznpd__steps li{display:grid;grid-template-columns:27px 1fr;gap:12px} .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} .nznpd__steps strong{display:block;font-size:14px} .nznpd__steps p{font-size:13px;margin-top:2px;line-height:1.45} .nznpd__block{margin-top:36px;padding-top:30px;border-top:1px solid var(--line)} .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} .nznpd__h::before{content:\"\";flex:0 0 auto;width:20px;height:3px;border-radius:2px;background:var(--o)} .nznpd__specs{border:2px solid var(--line);border-radius:12px;overflow:hidden} .nznpd__spec{display:grid;grid-template-columns:minmax(150px,.7fr) 1fr;gap:18px;padding:12px 16px;font-size:14px} .nznpd__spec:nth-child(odd){background:var(--soft)} .nznpd__spec span{color:var(--mut)} .nznpd__spec strong{font-weight:700} .nznpd__included{display:flex;gap:16px;align-items:center;border:2px solid var(--line);border-radius:16px;background:var(--soft);padding:18px 20px} .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} .nznpd__included strong{display:block;font-size:15px;margin-bottom:3px} .nznpd__uses{display:grid;grid-template-columns:repeat(2,1fr);gap:10px} .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} .nznpd__faqs{display:grid;gap:10px} .nznpd__faq{border:2px solid var(--line);border-radius:12px;background:#fff;padding:0 16px;transition:border-color .18s ease} .nznpd__faq[open]{border-color:#FCE0C6} .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} .nznpd__faq summary::-webkit-details-marker{display:none} .nznpd__faq summary::after{content:\"\\203A\";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} .nznpd__faq[open] summary::after{transform:rotate(-90deg)} .nznpd__faq p{padding:0 0 16px;font-size:14px} .nznpd__faq[open] p{animation:nznpdReveal .24s ease} @keyframes nznpdReveal{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}} .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} @media (prefers-reduced-motion:reduce){.nznpd__faq summary::after{transition:none}.nznpd__faq[open] p{animation:none}} @media (max-width:749px){.nznpd__checks{grid-template-columns:1fr}.nznpd__uses{grid-template-columns:1fr}.nznpd__spec{grid-template-columns:1fr;gap:2px}}\u003c\/style\u003e\u003cdiv class=\"nznpd\"\u003e\n\u003cdiv class=\"nznpd__lead\"\u003e\n\u003cp class=\"nznpd__intro\"\u003eHigh-precision timekeeping in a tiny footprint. This \u003cstrong\u003emini DS3231\u003c\/strong\u003e module puts a temperature-compensated \u003cstrong\u003eDS3231SN\u003c\/strong\u003e real-time clock on an ultra-compact board — just \u003cstrong\u003e~2.7 g\u003c\/strong\u003e — that plugs straight onto a \u003cstrong\u003eRaspberry Pi\u003c\/strong\u003e's I2C header, and works just as well with Arduino, ESP32 or any I2C microcontroller via jumper wires. It holds time to about \u003cstrong\u003e±0.4 seconds a day\u003c\/strong\u003e (±5 ppm across −40 to +85°C) — a couple of minutes a year, versus the minutes-per-week drift of a DS1307. Built-in temperature sensor, two calendar alarms and a 3.3–5.5V supply. Backup battery not included.\u003c\/p\u003e\n\u003cbr\u003e\u003cul class=\"nznpd__checks\"\u003e\n\u003cli\u003eDS3231SN RTC, temperature-compensated\u003c\/li\u003e\n\u003cli\u003eAccurate to ±5 ppm — about ±0.4 s a day\u003c\/li\u003e\n\u003cli\u003eFar steadier timekeeping than a DS1307\u003c\/li\u003e\n\u003cli\u003eBuilt-in digital temperature sensor (±3°C)\u003c\/li\u003e\n\u003cli\u003eTwo programmable calendar alarms\u003c\/li\u003e\n\u003cli\u003e1 Hz \u0026amp; 32.768 kHz outputs\u003c\/li\u003e\n\u003cli\u003e3.3–5.5V supply, low power\u003c\/li\u003e\n\u003cli\u003eUltra-compact (~2.7 g), plugs onto Raspberry Pi\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003csection class=\"nznpd__block\"\u003e\u003ch3 class=\"nznpd__h\"\u003eSpecifications\u003c\/h3\u003e\n\u003cbr\u003e\u003cdiv class=\"nznpd__specs\"\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eRTC chip\u003c\/span\u003e\u003cstrong\u003eDS3231SN (16-pin SO, 300 mil)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eTiming accuracy\u003c\/span\u003e\u003cstrong\u003e±5 ppm (−40 to +85°C), ±0.432 s\/day\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eTemperature sensor\u003c\/span\u003e\u003cstrong\u003eDigital, ±3°C\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eCalendar\u003c\/span\u003e\u003cstrong\u003eSec\/min\/hr\/day\/date\/month\/year, leap-year to 2100\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eAlarms\u003c\/span\u003e\u003cstrong\u003e2 programmable calendar alarms\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eOutputs\u003c\/span\u003e\u003cstrong\u003e1 Hz \u0026amp; 32.768 kHz\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eExtras\u003c\/span\u003e\u003cstrong\u003eReset output, button de-bounce input\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eInterface\u003c\/span\u003e\u003cstrong\u003eI²C, Fast-mode up to 400 kHz (addr 0x68)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eOperating voltage\u003c\/span\u003e\u003cstrong\u003e3.3V – 5.5V\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eOperating temperature\u003c\/span\u003e\u003cstrong\u003e−40°C to +85°C\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eBackup battery\u003c\/span\u003e\u003cstrong\u003eLIR2032 rechargeable (not included)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003ePinout\u003c\/span\u003e\u003cstrong\u003e+ (VCC), D (SDA), C (SCL), NC, − (GND)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nznpd__spec\"\u003e\n\u003cspan\u003eSize \/ weight\u003c\/span\u003e\u003cstrong\u003eapprox. 22 × 18 mm · ~2.7 g\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003csection class=\"nznpd__block\"\u003e\u003ch3 class=\"nznpd__h\"\u003eWhat's in the box\u003c\/h3\u003e\n\u003cbr\u003e\u003cdiv class=\"nznpd__included\"\u003e\n\u003cdiv class=\"nznpd__qty\"\u003e1×\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cstrong\u003eMini DS3231SN high-precision RTC module\u003c\/strong\u003e\u003cp\u003eBackup battery (rechargeable LIR2032) not included — see the FAQ on battery type.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003csection class=\"nznpd__block\"\u003e\u003ch3 class=\"nznpd__h\"\u003eGreat for\u003c\/h3\u003e\n\u003cbr\u003e\u003cdiv class=\"nznpd__uses\"\u003e\n\u003cdiv class=\"nznpd__use\"\u003eRaspberry Pi timekeeping (no network needed)\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eAccurate clocks \u0026amp; alarm projects\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eData loggers with reliable timestamps\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eScheduling relays, lights \u0026amp; automation\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eCompact builds where space is tight\u003c\/div\u003e\n\u003cdiv class=\"nznpd__use\"\u003eUpgrading a DS1307 where accuracy matters\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003csection class=\"nznpd__block\"\u003e\u003cdiv class=\"nznpd__qs\"\u003e\n\u003ch3\u003eGetting started\u003c\/h3\u003e\n\u003col class=\"nznpd__steps\"\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eConnect it\u003c\/strong\u003e\u003cp\u003eOn a Pi, push it onto the first GPIO header pins so + D C NC − line up. On any MCU, wire +→3.3–5V, D→SDA, C→SCL, −→GND.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eFit a coin cell\u003c\/strong\u003e\u003cp\u003eInsert a rechargeable LIR2032 so it keeps time when the power is off.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eEnable \/ add a library\u003c\/strong\u003e\u003cp\u003eOn Pi, enable I2C and the DS3231 overlay; on Arduino, use RTClib (DS3231).\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cdiv\u003e\n\u003cstrong\u003eSet the time\u003c\/strong\u003e\u003cp\u003eSet it once — it then keeps accurate time on its own.\u003c\/p\u003e\n\u003c\/div\u003e\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003csection class=\"nznpd__block\"\u003e\u003ch3 class=\"nznpd__h\"\u003eCommon questions\u003c\/h3\u003e\n\u003cbr\u003e\u003cdiv class=\"nznpd__faqs\"\u003e\n\u003cdetails class=\"nznpd__faq\" open\u003e\u003csummary\u003eHow accurate is it versus a DS1307?\u003c\/summary\u003e\u003cp\u003eFar steadier. The DS3231SN's temperature-compensated crystal holds time to about ±0.4 seconds a day (±5 ppm) — a couple of minutes a year — where a DS1307 can drift minutes per week. If timekeeping matters, this is the one to use.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails class=\"nznpd__faq\"\u003e\u003csummary\u003eDoes it only work with Raspberry Pi?\u003c\/summary\u003e\u003cp\u003eNo — it's labelled \"for Pi\" because it plugs neatly onto the Pi's I2C header, but it's a standard I2C device. Wire + D C − to VCC \/ SDA \/ SCL \/ GND and it works with Arduino, ESP32 or any microcontroller (3.3–5.5V).\u003c\/p\u003e\u003c\/details\u003e\u003cdetails class=\"nznpd__faq\"\u003e\u003csummary\u003eWhat do the pins mean?\u003c\/summary\u003e\u003cp\u003e+ = VCC (3.3–5.5V), D = SDA (data), C = SCL (clock), NC = not connected, − = GND.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails class=\"nznpd__faq\"\u003e\u003csummary\u003eDoes it have onboard EEPROM?\u003c\/summary\u003e\u003cp\u003eNo — this compact version is RTC-only (no AT24C32 EEPROM, unlike the larger ZS-042 board). If you need extra storage, add a separate EEPROM or use your microcontroller's memory.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails class=\"nznpd__faq\"\u003e\u003csummary\u003eIs the battery included?\u003c\/summary\u003e\u003cp\u003eNo. It takes a rechargeable LIR2032 coin cell (not included); the board has a charging circuit to keep it topped up while powered.\u003c\/p\u003e\u003c\/details\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003cp class=\"nznpd__note\"\u003e\u003cstrong\u003eGood to know:\u003c\/strong\u003e ultra-compact DS3231SN RTC (RTC-only, no EEPROM), takes a rechargeable LIR2032 backup cell (not included). Every order is checked before it ships from our Te Awamutu stock.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"NZN Electronics","offers":[{"title":"Default Title","offer_id":42882594734176,"sku":"MOD-DS3231","price":5.99,"currency_code":"NZD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0664\/6127\/0112\/files\/DS3231SNProductHero.png?v=1781748090"}],"url":"https:\/\/www.nznelectronics.co.nz\/collections\/arduino-modules.oembed","provider":"NZN Electronics","version":"1.0","type":"link"}