iOtomates Wash by Geerho Tech LLC Hardware Guide
How to connect coin-operated washers and dryers to iOtomates Wash so customers can pay by scanning a QR code. Your machines keep accepting coins as before.
Safety first. The iOtomates Wash controller connects only to the machine's low-voltage coin signal. Anything that touches the 220 V supply (fitting current sensors at the breaker panel) must be done by a licensed electrician. Unplug the machine before opening it, and check your machine's warranty first.
How it works
- A customer scans the machine's QR code in the iOtomates Wash app and pays.
- iOtomates Wash tells the controller to add a credit. The controller clicks a relay wired across the coin acceptor's signal wire, once per coin, so the machine sees coins. The machine's light in iOtomates Wash turns white (paid, press Start).
- The customer presses Start on the machine, or taps Start wash / Start dry in iOtomates Wash after confirming the laundry is in and the door is closed. iOtomates Wash never starts a machine by itself. A current sensor on the machine's power line notices the motor running and the controller reports started (light blue).
- When the machine has been stopped for 3 minutes, the controller reports completed (light green) and the customer gets a "laundry is done" notification.
Start from the app. When the customer taps Start in iOtomates Wash, the controller gets a START command. It presses the machine's Start button through an optional second relay wired across that button (set START_PINS in the firmware), or, for machines that start as soon as coins go in, it holds the coins until START (tick "These machines start as soon as coins go in" before downloading the controller file). Without either, START is ignored and the customer presses Start on the machine. Controller files downloaded before October 18, 2026 need downloading again.
One controller box runs up to 4 machines. A laundromat with 6 washers and 6 dryers needs 3 boxes.
What to buy
Easiest: a board you only plug in (recommended)
Waveshare ESP32-S3-Relay-6CH: 6 relays, a USB-C port on the board for loading the firmware (one ordinary USB-C cable, no adapter, no soldering), a DIN-rail case, and 7–36 V DC power. One box runs 4 machines (relays 1–4). In iOtomates Wash HQ's controller file it's board type 2. About US$42 on Amazon (₱2,000–2,800 locally); add a USB-C data cable if you don't have one.
Option A: bare relay boards (need soldering)
The boards below have no USB port: their programming holes come unsoldered and they need a separate USB-to-TTL adapter. Choose them only if you (or a technician) can solder.
| Part | How many | Approx. price (PH) |
|---|---|---|
| ESP32 4-channel relay board, 7–30 V DC input (e.g. LILYGO T-Relay, or an "ESP32-WROOM 4CH relay module") | 1 per 4 machines | ₱700–1,500 |
| 12 V DC 1 A power adapter (or a 12/24 V DIN-rail supply) | 1 per box | ₱200–350 |
| AC current switch, split-core, adjustable trip (0.2–30 A), dry-contact output | 1 per machine | ₱500–1,200 |
| IP54 junction box, cable glands, 2-core 0.5 mm² signal cable, ferrules | 1 set per box | ₱400–800 |
Option B: build it yourself
| Part | How many | Approx. price (PH) |
|---|---|---|
| ESP32 DevKit V1 (ESP32-WROOM-32) | 1 per box | ₱250–450 |
| 4-channel 5 V relay module, optocoupler-isolated | 1 per 4 machines | ₱150–300 |
| DC-DC buck converter 12 V → 5 V 2 A (or a 5 V 2 A USB supply) | 1 per box | ₱80–200 |
| AC current switch (as above), or SCT-013-030 clamp + comparator module | 1 per machine | ₱300–1,200 |
| Enclosure, terminal blocks, jumper wires | 1 set per box | ₱300–600 |
Prices are rough guides from local online shops (Lazada, Shopee) in October 2026.
How to connect one machine
Coin acceptor ──┬── COIN signal ──► machine control board
│
Relay NO ──────┘ relay contact in parallel with the coin acceptor's output
Relay COM ───────────── GND of the coin circuit
Relay IN ◄──────────── ESP32 pin (one per machine)
Current switch, clamped on the machine's LIVE wire at its breaker (electrician)
output contact ──────── ESP32 input pin and GND
- Find the coin acceptor's signal wire (often white, labelled COIN) and its ground. Set the acceptor to pulse output (most are by default).
- Count how many coins one cycle costs on the machine (e.g. six ₱10 coins). That's the pulses number you enter when you download the controller file.
- Connect the relay's NO and COM across COIN and GND, in parallel with the acceptor. The relay is a dry contact, so the controller never shares power with the machine.
- Have an electrician clamp a current switch around each machine's live wire (one wire only, not the whole cable) and set it to close when the motor runs. Wire its contact to the controller's input for that machine.
- Mount the box away from water, steam and dryer heat.
Pins: the firmware has two board settings at the top (KLEAN_BOARD). 1 (the default since 2026-10-22) is the common "ESP32 Relay x4" board that takes AC 90-250 V or DC 7-30 V: relays on 32, 33, 25, 26, current switch inputs on 16, 17, 18, 19, status light on 23. It has no USB port: power it from its 12 V adapter, connect only GND, TX→RX and RX→TX from a USB-to-TTL adapter (not the adapter's 5V or 3V3: the board's makers warn against it), hold IO0 and tap EN to start uploading, then tap EN to run. 0 is the LILYGO T-Relay: relays on 21, 19, 18, 5; current switch inputs on 32, 33, 25, 26. For any other board, change the pins at the top of the firmware.
Software
- On a computer, open iOtomates Wash HQ, choose the location, and set the machines with controllers to Real.
- Hardware → Download controller file. Enter the coins per cycle. The file (
klean_config.h) holds each machine's secret key: keep it private, and delete it after flashing. Downloading again issues new keys, so every box at that location must be flashed again. - Install the Arduino IDE 2, add the esp32 boards package (Espressif) and the ArduinoJson library.
- Open
klean-hub.ino, putklean_config.hnext to it, enter your Wi-Fi name and password in the file, setKLEAN_BOX_NUMBER(1 for the first box, 2 for the second…), connect the board by USB, and click Upload. - Power the box. Within a minute the machines turn green in iOtomates Wash HQ and the app.
NFC tap stickers (optional)
Next to each machine's QR sticker you can add an NFC sticker, so customers just tap their phone on it.
- Buy: NTAG213 (or NTAG215/216) NFC stickers, round 25–30 mm, about ₱15–30 each. On a metal machine use anti-metal (on-metal) NFC stickers, or the tag won't read through the steel.
- Write: in the iOtomates Wash app, Business → Setup → Branches → the branch → the machine's menu → Write NFC sticker (Android: NFC) → Write and lock. Hold the blank sticker against the phone; it gets the same link as the machine's QR and is locked, so nobody can rewrite it to point somewhere else (locking is permanent; use Write without locking (test) for trying things out).
- Place: right beside the QR, at a comfortable height. Optional: a small "Tap or scan to pay" label.
- Customers: iPhone (XS or newer) and most Android phones read it by just touching the sticker with the phone unlocked; iOtomates Wash opens on that machine. iPhone users can also tap Tap NFC sticker on the Scan screen.
iOtomates Wash Scale (optional)
A laundry scale that sends each settled weight to iOtomates Wash. Customers tap Use the iOtomates Wash Scale in Start laundry instead of typing the kilos.
- Buy: a platform (bench) scale of 30–60 kg with a standard 4-wire load cell, certified for trade (in the Philippines it must be tested and sealed by your city or municipal treasurer's weights and measures office, renewed every 6 months), an HX711 load-cell amplifier board (₱80–150), an ESP32 DevKit V1 (₱250–450) and a 5 V USB supply. Total for the electronics: about ₱500–800.
- Connect: load cell red/black/white/green → HX711 E+/E−/A−/A+ (check your cell's colour code). HX711 VCC → ESP32 3V3, GND → GND, DT → GPIO 16, SCK → GPIO 4. Keep it dry; mount the board under the platform.
- Set up: in the iOtomates Wash app, Business → Setup → Branches → the branch → + Add an iOtomates Wash Scale. Copy the Controller ID and Secret (shown once) into
firmware/klean-scale/klean-scale.inowith your Wi-Fi details, upload it with the Arduino IDE (library "HX711" by Bogdan Necula), then calibrate: empty the scale, typetin the Serial Monitor; put a known weight on it (a 5 kg bag of rice) and typec 5000; copy the printed factor into the file and upload again. - Check: put something on it. Within about 2 seconds of the number settling, the branch's iOtomates Wash Scale card in the app shows the weight. In Start laundry, Use the iOtomates Wash Scale fills it in.
- Rules: one weight is sent per load; nothing more is sent until the scale is emptied. Each weighing can be used once, within 2 minutes. Attendants use it at the counter too (Work → Intake → Use the iOtomates Wash Scale). Business → Require the scale stops typed weights in Start laundry and at the counter.
Test before opening
Scan each machine's QR in the iOtomates Wash app and pay. You should hear one relay click per coin and see the light turn white; press Start (on the machine, or Start wash in the app) and it turns blue. Nothing should start before that. If a light is red:
| Red reason | Check |
|---|---|
| Controller offline (no heartbeat) | Wi-Fi name/password, power, signal strength at the machine |
| Controller did not confirm credit | Relay wiring, box number, the machine's controller ID in the file |
| Fault | Look at the machine; clear the error in the app (Work → machine → Clear) |
Good to know
- Coins still work. A coin-paid cycle isn't shown in iOtomates Wash (the light stays green while the machine runs).
- Internet down: with a controller file downloaded since October 24, 2026 (it has Bluetooth keys) and the current firmware, customers on mobile data still pay in the app and their phone sends the credit to the box over Bluetooth; the box reports it when Wi-Fi is back. Older files: QR payments stop until the internet is back. Coins always work.
- Firmware with Bluetooth needs the partition scheme "No FS 4MB (2MB APP x2)" (Tools → Partition Scheme), or:
arduino-cli compile --fqbn esp32:esp32:esp32:PartitionScheme=no_fs firmware/klean-hub. - Controllers check iOtomates Wash's security certificate, so a box with the wrong date or a blocked network won't connect.