Introduction: DIY Bluetooth Water Warmer Powered by Arduino

About: Mechanical Engineering, majoring Mechatronic, Finished thesis about Snack Vending Machine's Build and Manufacturing, Passionate for Computer (Hardware/Software), Microcontroller Programming (Arduino-Raspberry)…

NOTE: This is just for testing, (UI using to controll 12v DC water heater (originally for use in-car - 12v lighter power socket).

I admit that some part used in this project are "not the best choice" for its purpose, but again this is just testing project. (i only use already avalaible parts, to show that its possible to control this Portable Water Heater via your smartphone).

The aim of this testing are "Making 12 Volt DC Mug Water Heater / Warmer to be controllable via Bluetooth from Android smartphones".

And i define "controllable" for this particular testing as an abillity to:

  • Manual controll

(Turn ON, Set heating power speed, Turn OFF, Showing its current water temp).

  • Automatic controll

(Set desire water temp, and adjust heating speed automatically to keep current water temp around the set temp). NOTE: i am not using PID lib, just IF ELSE (State Condition).

As you can see in final android UI screenshoots, there is 2 type UI for controlling this mug heater, the one with slider power means its manual controll, so we can controll heating power manually. The other one with % (percentage) level means automatic heating adjustment, keeping current water temp around set temp setting.

Step 1: Parts Used

  • Car Mug Heater, its for indoor use, originally powered by cigarete 12v power socket.
  • 12v 2A ac to dc power adaptor, i modified the end with cigarete female socket.
  • Kapton tape, i replace original tape (that attach heating cable to mug body) inside mug heater with this tape.
  • Arduino nano.
  • DS18B20 waterproof temp sensor.
  • HC-05 bluetooth module, to comunicate with smartphone.
  • L298 stepper motor drive module, H bridge.
  • Buzzer, to alert when (in manual mode) reach certain temp.

NOTES about parts used:

  • After some trial, maximum water temp after 50 minutes of "heating" is just about 50 degrees celcius. Maybe they should call this Mug Warmer.

Step 2: How the System Works

The picture kinda show how this works, basically we use smartphone to send (and receive) command to arduino nano, arduino then send pwm signal that will turn to DC output (by L298 dc motor module) to mug heater.

Since this is just testing project, i am not providing detailed connection between parts, but googling under a minute will certainly get a result about detailed connection regarding parts that i used.

Step 3: UI Creation

Again, i am using solution for UI creation. Remotexy give very flexible options and wide range of button/switch/slider. It also (now) support wifi and internet/IP, not just bluetooth. (actually from my understanding, bluetooth only working for android OS, with IOS you need wifi/internet).

In Manual Mode (screenshoot with vertical slider on the left), we actually set PWM for heater (or i should call it Warmer). It has 0-100% range that will translate to 0-255 for PWM. (255 means 100%, that means 12v DC will delivered).

This manual mode also have hardcoded warning temp at 50 degrees celcius. When temp of current water reach 50 celcius, AND slider power are not in 0 (zero) position, buzzer will warn constanlly, UNTIL slider position in 0 (zero) position. That (reaching 50 degrees celcius), would be hard job since this "Warmer" are very slow to increase water temp. My result show that it takes almost 1 hour to reach 45 degrees from 20-ish degrees celcius.

In Auto Mode (screenshoot without vertical slider), we set the desired temp and PWM will automatically adjusted to keep water temp as close with desired temp. I am using 5 level PWM for this auto mode, 100% PWM (255), 75% PWM (around 190), 50% PWM (128), 25% PWM (64), and 0% PWM (0).

There is no alert/alarm for this mode.

Step 4: Testing Result

So, the UI works, i can set manual mode or automatic mode.

After 60 minutes (1 Full Hour !) of "heating" or i should say "warming", water temperature only reach 50 degrees celcius. Without calculate scientific data, just using my feeling, i think thats very bad and inefficient.

But this is just for testing, so, its works.

There is many improvement that can be done for this project, including using "proper" and more powerfull DC Heater, using ESP-12 instead Arduino Nano will make this project more IoT-able, proper PID lib for automatic mode instead using State Con, and many more.