Documentation

ShillehTek DC 5V Ultrasonic Mist Maker Humidifier Module 108KHz USB | ShillehTek Product Manual
Documentation / ShillehTek DC 5V Ultrasonic Mist Maker Humidifier Module 108KHz USB | ShillehTek Product Manual

ShillehTek DC 5V Ultrasonic Mist Maker Humidifier Module 108KHz USB | ShillehTek Product Manual

manualshillehtek

Overview

This DC 5V Ultrasonic Mist Maker module turns water into a fine cool mist using a 108 kHz piezo atomizer disc. It's the heart of small humidifiers, plant misting systems, ambient mood lighting effects, fog machines for displays, and DIY foggers for terrariums. Just sit the atomizer in water, plug the module into 5V (USB or VCC pin), and it produces a continuous plume of mist.

The module has an on-board touch switch for standalone use, plus a PH2.0 connector for the atomizer disc. The control IC handles the 108 kHz drive automatically; there's no PWM or signal generation to do on a microcontroller. To control it from an Arduino, ESP32, Raspberry Pi, or Pico, switch the 5V supply through a transistor or relay — the module turns on when power is applied.

Compared to evaporative humidifiers, ultrasonic mist makers produce mist almost instantly, run on much lower power, and don't get hot. They do need clean water and good airflow above the disc to avoid hot spots and mineral build-up.

At a Glance

Operating Voltage
DC 5V
Operating Current
~300-400 mA
Drive Frequency
108 kHz
Mist Output
~30 mL/hour
Power Input
Micro USB or VCC pad
Atomizer Connector
PH2.0 (2-pin)

Specifications

Parameter Value
Operating Voltage DC 5V
Operating Current ~300-400 mA (peaks ~500 mA at startup)
Atomizer Drive Frequency 108 kHz
Mist Output Rate ~30 mL per hour (typical)
Power Input Micro USB or solder pad VCC/GND
Atomizer Connector PH2.0 2-pin (matches included disc)
On-board Control Tactile / touch switch (toggle)
Auto Shutoff When water is empty (atomizer impedance change)
Recommended Water Depth 15-50 mm above the atomizer
Operating Temperature 0 - 40 degC
Module Dimensions ~50 x 28 mm
Atomizer Disc Diameter 20 mm

Pinout Diagram

DC 5V 108 kHz ultrasonic mist maker humidifier module pinout diagram showing Micro USB power input, touch switch, capacitance, IC chip, resistance, 3-pin inductance, and PH2.0 terminal socket for the atomizer disc

Wiring Guide

Arduino - Switch with a Logic-Level MOSFET

The mist maker has no signal pin — it just runs whenever it has power. Use an N-channel logic-level MOSFET (e.g. IRLZ44N, AO3400) to switch the GND side of the module from a microcontroller pin.

Connection Goes To
Mist maker VCC 5V supply (+)
Mist maker GND MOSFET Drain
MOSFET Source Power supply GND (and Arduino GND)
MOSFET Gate Arduino D3 (with 100k pull-down to GND)
Warning: Do not power the mist maker from the Arduino's on-board 5V regulator if you're already powering the Arduino over USB — the inrush will reset the Arduino. Use a separate 5V supply (USB charger, 5V wall wart) with the grounds tied together.
Tip: Add a 100k resistor from Gate to GND so the MOSFET stays off while the Arduino is booting. Without this, the floating gate can flicker the misting on at startup.

ESP32 - Switch with a Logic-Level MOSFET

Same MOSFET trick as Arduino. The ESP32's 3.3V GPIO is enough to fully turn on a logic-level MOSFET like the AO3400 or IRLZ44N.

Connection Goes To
Mist maker VCC External 5V supply (+)
Mist maker GND MOSFET Drain
MOSFET Source Common GND
MOSFET Gate GPIO 5 (with 100k to GND)
Info: Tie the ESP32 GND to the external 5V supply GND. Without a common ground, the MOSFET won't switch reliably.

Raspberry Pi - Switch with a 5V Relay

A small 5V relay module is the simplest way for a Pi user. The Pi's GPIO drives the relay's IN pin, and the relay switches the 5V power to the mist maker.

Connection Pi / Relay
Relay VCC Pi 5V (Pin 2)
Relay GND Pi GND (Pin 6)
Relay IN GPIO 17 (Pin 11)
External 5V (+) Relay COM
Mist maker VCC Relay NO (normally open)
External 5V (-) Mist maker GND
Tip: Many cheap relay boards are active-LOW (IN = LOW turns the relay on). Confirm with your specific board, then write your code accordingly.

Raspberry Pi Pico - Switch with a Logic-Level MOSFET

The Pico's 3.3V GPIO can drive a logic-level MOSFET. Use an external 5V supply (USB charger or VBUS from the Pico's USB) to feed the mist maker.

Connection Goes To
Mist maker VCC Pico VBUS (5V from USB)
Mist maker GND MOSFET Drain
MOSFET Source Pico GND
MOSFET Gate GP15 (with 100k to GND)

Code Examples

Arduino - Mist for 5 Seconds Every Minute

mist_arduino.ino
// DC 5V Mist Maker - cycle on/off via a MOSFET on D3
// 5 seconds on, 55 seconds off (a "puff" every minute)

const int mistPin = 3;

void setup() {
  pinMode(mistPin, OUTPUT);
  digitalWrite(mistPin, LOW);
}

void loop() {
  digitalWrite(mistPin, HIGH);   // turn the mist maker on
  delay(5000);
  digitalWrite(mistPin, LOW);    // turn it off
  delay(55000);
}

ESP32 - Web-Controlled Mist Toggle

mist_esp32_web.ino
// ESP32 - Toggle the mist maker from a tiny web page
// Wire MOSFET gate to GPIO 5

#include <WiFi.h>
#include <WebServer.h>

const char* ssid     = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
const int   mistPin  = 5;
bool        misting  = false;

WebServer server(80);

String page() {
  String s = "<html><body><h1>Mist Maker</h1>";
  s += "<p>Status: " + String(misting ? "ON" : "OFF") + "</p>";
  s += "<a href=\"/on\">[ON]</a> <a href=\"/off\">[OFF]</a>";
  s += "</body></html>";
  return s;
}

void setup() {
  Serial.begin(115200);
  pinMode(mistPin, OUTPUT);
  digitalWrite(mistPin, LOW);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) { delay(300); Serial.print("."); }
  Serial.println(WiFi.localIP());

  server.on("/", []() { server.send(200, "text/html", page()); });
  server.on("/on",  []() { misting = true;  digitalWrite(mistPin, HIGH); server.send(200, "text/html", page()); });
  server.on("/off", []() { misting = false; digitalWrite(mistPin, LOW);  server.send(200, "text/html", page()); });
  server.begin();
}

void loop() { server.handleClient(); }

Raspberry Pi (Python + Relay)

mist_rpi.py
#!/usr/bin/env python3
# Toggle the mist maker through a 5V relay on GPIO 17 (Pi)
# Many relay modules are active-LOW: LOW = ON, HIGH = OFF

import RPi.GPIO as GPIO
import time

RELAY = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(RELAY, GPIO.OUT, initial=GPIO.HIGH)   # start OFF

try:
    while True:
        GPIO.output(RELAY, GPIO.LOW)   # mist ON
        time.sleep(5)
        GPIO.output(RELAY, GPIO.HIGH)  # mist OFF
        time.sleep(55)
except KeyboardInterrupt:
    GPIO.cleanup()

Frequently Asked Questions

Why does the mist stop after a few seconds?
Two common causes: (1) the water level is too low — the atomizer needs at least about 15 mm of water above it, and (2) the supply voltage sags below 5V under load. Use a clean 5V supply rated for at least 1 A and check the water level.
Can I run this on USB power from my computer?
Yes, but the inrush current can be enough to make some computer USB ports drop the device. A dedicated USB charger or a powered USB hub gives the most reliable operation.
Do I have to use distilled water?
It's strongly recommended. Tap water leaves mineral deposits on the atomizer disc that reduce mist output and shorten its life. If you can't use distilled, clean the disc gently with vinegar every couple of weeks.
Can I add essential oils or scents?
No — oils, perfumes, and fragrances will damage the piezo disc's coating and clog the holes. If you want scents, use a separate diffuser. The mist maker is for water only.
Why is the disc clicking but no mist comes out?
Either the water is too shallow above the disc, the disc surface has mineral build-up, or the disc is upside down. Confirm the disc is sitting horizontally with its silver/white side facing up and the water covering it by 15 mm or more.
Can I PWM the mist maker to control intensity?
Not on the supply line — the on-board oscillator needs a stable 5V to start up cleanly. Pulsing the supply at low frequencies (e.g. 1 second on, 1 second off) is the typical way to "throttle" mist output.
Does the module turn off automatically when the water runs out?
Yes — most modules detect the impedance change when the disc runs dry and stop driving it, which prevents the disc from overheating. It's still good practice to add water-level detection in your project for fully unattended operation.