Automatic Smart Coffee Maker With Arduino and Bluetooth

by Gyula Ősi in Circuits > Arduino

12225 Views, 121 Favorites, 0 Comments

Automatic Smart Coffee Maker With Arduino and Bluetooth

ezgif.com-gif-maker(18).gif
IMG_1492.JPG
TestMode4.jpg
IMG_1516.JPG
Image6.jpg
IMG_1418.JPG
IMG_1351.JPG

Smart automatic Coffee Maker with Graph, can be controlled
via Bluetooth... or just load fresh water, and the system will start automatically!

Every each parts are handmade and all of the functions are my own ideas.

I also coded a function called "Test Mode", so the controller can be
used as a multipurpose temperature meter with external temperature sensor.

How to start

  • Autostart: in standby mode the system cyclically measures the temperature in the background. Loading fresh water causes temperature drop, and the system will start. This function can be enabled / disabled by sending "auto" from Smartphone, and the setting will be stored in the EEPROM memory.
  • Press button: to start / interrupt coffee making, or exit Test Mode.
  • Send "start" message from your smartphone, or "stop".

Supplies

Developed on Arduino Nano / Uno, uses ST7920 display,
HC-05 Bluetooth adapter, Dallas DS18B20 temperature sensor, relay to control the heater coil, button with leds, buzzer and a CD4017BE decade counter drives the LED bar.

Video

Smart Coffee Maker with Bluetooth and Smartphone control - Arduino Project with Tutorial

Show all working ways, how its made, how it looks like...

One Time Analysis During Coffee Making

BeFunky-collage2.jpg

After 60 seconds from start the MCU compares the stored initial and the current temperature values in order to draw conclusions based only on temperature and elapsed time, which can be:

  • "You forgot the water." - (temperature went too high)
  • "Coffee for Two." - (less water - more tempr elevation)
  • "Coffee for Six." - (more water - less tempr elevation)
  • "Heating Coil error!" - (no significant tempr elevation)

In addition the Sensor Error detection works continuously as long as the coffee machine is switched on.

As can be seen on the picture, six dose of water required more time to reach the same temperature which the small dose reached much sooner.
Starting without water results very high temperature, however the flat line indicates unchanged temperature thus a heater coil error.

Changing Measurement Unit

BeFunky-collage2.jpg

The measurement unit can be changed by sending "c" or "f" from the Smartphone, even during a coffee making procedure, and it leaves no mark on the graph.

Stored initial and previous temperature values will be converted by a program function call I coded - used for statistics and analysis. This setting is also stored in the EEPROM memory.

Dynamic Screen Elements

ezgif.com-gif-maker(15).gif
IMG_1514.JPG

These six small animated images above shows what I coded.

If the screen is full, the graph starts to roll to the left.
Depends on the measured value some screen element can be in its way. To keep avoid collision, their places are dynamic.

Test Mode

BeFunky-collage (1).jpg
TestMode4.jpg

By the time I created all of these, the idea came up, why not use the graph for other purposes?

So I coded the Test Mode; just attach an external temperature sensor and
the system can be used as a multipurpose temperature meter with graph.

In this working way the extreme values of the graph are -20°C (-4°F) and +128°C (+262°F).
Sending numbers from the Smartphone between 1 and 999999 will be accepted as measurement interval in seconds, so the width of the graph is between 128 seconds and 11.57 days.

Bluetooth Communication

2021_06_24_20.40.53.jpg

Accepts commands and sends reports, detects if a smartphone connects or disconnects. The full command set can be seen on the screenshot.

Sent messages are blue and the response / report messages are green sent by the coffee maker.

My favourite Android App is the "Serial Bluetooth Terminal" created by Kai Morich:

https://play.google.com/store/apps/details?id=de.k...

Led Control

ezgif.com-gif-maker(16).gif

A CD4027BE decade counter drives the LED bar, receives CLK from the MCU at every temperature messurement, and increases the position. If a new coffee making procedure or the Test Mode starts, the Atmega 328P sends an RST signal to set the default position.

The button has a bicolor LED with only two pins, so my simple and funny solution can be seen in the code, how to control it.

  • Solid Green: standby or the coffee is ready, the coil is off
  • Solid Red: coffee making in progress, the heater coil is on
  • Red / Green in turn: Test Mode
  • Flashing Red: error occurred, that can be
    -Sensor error,
    -Heater Coil error, or
    -You forgot the water, so the coffee making procedure was interrupted by the system

Creating the Arduino Controller

Coffee Maker - Gyula Ősi.JPG
IMG_1283.JPG
IMG_1332.JPG
IMG_1323.JPG
IMG_1250.JPG
IMG_1239.JPG
IMG_1241.JPG
IMG_1242.JPG
IMG_1258.JPG
IMG_1310.JPG
IMG_1256.JPG
IMG_1317.JPG
IMG_1318.JPG
IMG_1245.JPG
IMG_1246.JPG
IMG_1169.JPG
IMG_1163.JPG
IMG_1233.JPG
IMG_1338.JPG

It needs a bit creativity, all photos explains itselfs, gives you very good ideas and guidance. I divided the system into functional modules.

Refurbish an Old Coffee Maker

IMG_1149.JPG
IMG_1203.JPG
IMG_1199.JPG
IMG_1200.JPG
IMG_1205.JPG
IMG_1213.JPG
IMG_1208.JPG
IMG_1210.JPG
IMG_20210516_190035901.jpg
IMG_1197.JPG
IMG_1235.JPG
IMG_1288.JPG
IMG_1344.JPG
IMG_1351.JPG
IMG_1492.JPG
IMG_1537.JPG
IMG_1516.JPG

My project is based on an old, well used coffe maker from the 90's - full of rust, every seal was defective, leaking water... it was also a challenging part of the project how to fix all of these problems.

The Program Code