Умный чайник wi-fi на базе Kitfort KT-601 своими руками, Yandex.Алиса, Ewelink
AVRobot 23 января 2021
На этапе расширения устройств в умном доме была принята попытка интегрировать домашний чайник в экосистему (как модно сейчас это называть) «умного» дома.
Было желание управлять голосом или кнопками на смартфоне включением (подразумевается кипячение) и подогревом чайника. Он оснащен подставкой, на которой располагаются кнопки управления температурой.
Фото основания чайника:

Что нам необходимо для интеграции помимо чайника:
Для любого электронного устройства необходимо надежное питание. Если оно требует энергии 24 часа в сутки, то лучшим её источником будет служить электрическая сеть 220В. Данный преобразователь может использоваться как блок питания для электроники, потребляющей небольшой ток, в том числе различных встраиваемых датчиков с рабочим напряжением 5В, модулей системы «умный дом» и т.д.
Данный модуль позволяет управлять нагрузкой, подключаемой через реле из любого места на земле через Интернет.

После «вскрытия» подставки для чайника видим, что внутри достаточно места для размещения модулей, которые будут отвечать за нажатие кнопок на плате. Кнопки используются механические, поэтому выходные контакты реле с Sonoff модулей мы будем подключать параллельно кнопкам на плате.


Защита изолентой в дальнейшем была переделана на термоусадочную трубку.
Первый модуль дистанционного управления нагрузкой был подключен параллельно кнопке кипячения (100°C), т.е. когда в приложении на смартфоне мы нажимаем кнопку включить, у нас включается чайник на кипячение. Повторное нажатие кнопки позволяет отключить кипячение чайника.
Я написал первый модуль не просто так, так как в последствии был установлен второй модуль, который отвечал за нажатие кнопки 70°C. Для нагрева воды в чайнике до температуры 70°C необходимо сначала нажать кнопку 70°C, а далее на кнопку кипячения, что у нас и было реализовано.
В итоге было реализовано две функции: кипячение и подогрев воды до 70°C. В целом мне этого хватает, и дальнейшее расширение функций не планируется. Но вы можете применить фантазию и в своих устройствах реализовать другие функции.
Далее покажу, как выглядит управление в приложении на смартфоне. Так как у нас устройства Sonoff, для них используется родное приложение eWeLink (доступно в Play Market и AppStore)
На скриншоте представлен общий список добавленных устройств в приложении, среди них есть две строки с подписью чайник. Можно включать/выключать нагрузку прямо с этой страницы, нажимая на кнопки справа:

Перейдя например в пункт «Чайник кипячение» мы можем включить его, не промахнувшись мимо большой кнопки:

Для кратковременного воспроизведения нажатой кнопки чайника в приложении eWelink у устройства мы настраиваем функцию включения на время. Минимальное время, на которое можно включить реле, — 0,5 секунд. Нам этого более чем достаточно.

Управлять с приложения eWelink конечно можно, особенно, если вы находитесь далеко от дома. Но если вы дома, и у вас установлены колонки Yandex с голосовым помощником Алиса (далее просто Алиса), то будем настраивать наш чайник на голосовое управление с помощью Алисы. Для этого переходим в устройства Алисы, добавляем другие устройства, выбираем производителя eWelink и синхронизируем устройства, привязанные в приложении eWelink с устройствами Алисы. Подробно описывать это не стану, примеров в интернете много, и они описаны достаточно широко.

Видим у нас два пункта Чайника.
Теперь мы можем управлять чайником голосом:

Вот некоторые примеры, когда удобно включать кипячение чайника голосом:
Например, вы на кухне занимаетесь готовкой, но ваши руки заняты, а вы захотели попить чай. Для этого вы можете сказать Алисе «Алиса. Включи чайник». Также, например, вы знаете, что вам осталось готовить еще минут 5, и потом вы освободитесь. Тогда вы можете сказать «Алиса. Включи чайник через 5 минут», и она включит вам его ровно через 5 минут. Выходя из ванны с желанием выпить чай, вы также говорите Алисе ключевые фразы, и она выполняет их для Вас.
Было немного сложнее с режимом подогрева, т.к. тут необходимо нажать две кнопки с небольшой паузой между нажатиями. Нажать две кнопки подряд нам позволит создание сценария, но Yandex не реализовал добавление пауз между командами. Выход был следующий: необходимо было создать сценарий, описанный ниже.
WiFi-чайник в домашних условиях, или как сделать обычный чайник по-настоящему умным

Если вы читали мою предыдущую статью (Бегущая строка на Arduino), то наверняка уже знаете, что у нас в университете есть возможность делать аппаратные курсовые проекты. И я, вдохновлённый предыдущей своей работой, решил ещё раз попробовать сделать что-нибудь своими руками. Только теперь тема должна была быть посерьёзнее. Кстати, думать о том, что сделать, я начал ещё на зимних каникулах, то есть до начала семестра. Хотелось сделать что-нибудь интересное и полезное одновременно.
Поиск идеи
Однажды на паре по Основам защиты информации у нас была тема, связанная с интеллектуальной собственностью и патентами. Преподаватель дал нам задание оформить по всем требованиям патент на какое-нибудь устройство и в качестве примера привёл wifi чайник.
Сказал — и забыл. И все забыли, а у меня в голове эта тема осталась. И когда пришло время думать над тем, что делать в качестве курсового в следующем семестре, я вспомнил про этот чайник.
Первым делом решил посмотреть, что же уже сделано. И каково было моё удивление, когда я увидел, что в продаже есть только три модели чайников с поддержкой управления по WiFi, и то два их них принадлежать одной компании. Это были Smarter iKettle 1.0 и 2.0 и российский Polaris PWK 1792CGL.

Интересно, что обычные электрические чайники есть почти в каждом доме, а умных так мало. Сравнив функции, предлагаемые производителями iKettle и Polaris, я составил список самых необходимых. Вот, что получилось:
- включение/выключение со смартфона;
- установка любой температуры нагрева воды;
- возможность узнать текущую температуру;
- отслеживание текущего объёма воды в чайнике;
- предупреждение и защита от включения при малом объёме воды;
- установка времени автовключения;
- уведомление о готовности;
Вроде выглядит реально, пора приступать к делу.
Поиск необходимых компонентов
Так как сделать полностью новый чайник не представлялось возможным, то было решено модифицировать уже готовый обычный электрический. Как раз дома был бесхозный чайник со сломанным выключателем.
«Так, основа уже есть» — подумал я.
Теперь нужно было заняться поиском компонентов для аппаратной части. Так как уже был небольшой опыт работы с Ардуино, решил всё реализовывать на ней. Тем более что сама Ардуина и модули для неё стоят недорого.
Так как мне всю часть управления чайником надо было вставить внутрь чайника, то выбор пал на Arduino Nano. Она маленькая и у неё есть интерфейс для подключения кабеля, в отличии от Pro Mini, которую нужно прошивать через UART.

Главной составляющей wifi чайника является, конечно же, wifi модуль. Поискав в Интернете что-нибудь доступное и по чему много туториалов, напоролся на ESP8266. А именно на версию 01. Посмотрел, что стоит недорого (в районе 2$) и вроде много инструкций по подключению. Остановился на нём. Что касается самого модуля, то тут хорошо подходит фраза: дёшево и сердито. Но об этом чуть позже.

Для контроля температуры нужен был какой-нибудь водонепроницаемый термодатчик. Нашёл на алиэкспресс водонепроницаемый NTC термистор, который выдерживает температуру больше 100 градусов. Нашёл и пример работы с ним, так что и тут быстро определился.

Надо было решить, как же сделать включение чайника в заданный момент времени, можно, конечно, было сделать программные часы на Ардуино и при совпадении времени включать чайник, но это работало бы нестабильно, и произойди случайно сброс программы, всё собьётся. Поэтому здесь на помощь пришли часы реального времени. А именно DS1307. Они имеют независимое питание (от батарейки на 3 В), да и ещё на модуле, на котором я остановился, была микросхема памяти EEPROM на 32K bit, которую я использовал для сохранения времени включения.

Ах да, так как чайник теперь должен включаться программно, то ещё понадобилось 1-канальное реле.

Что касается датчика уровня жидкости, то его пришлось делать вручную. Подробности ниже.
Из остального ещё понадобилось несколько резисторов разных номиналов, макетная плата для тестов, монтажная плата для собственно монтажа, проводки, паяльник с флюсом и припоем и львиная доля терпения.
Начало разработки
Так как проект представляет собой wifi чайник, то первым делом хотелось и надо было разобраться с модулем wifi. Как только пришла послыка, тут же распаковал и начал подключать.
Нашёл кучу примеров в Интернете. Всё как надо, стабилизатор напряжения на 3.3 В, делители напряжения для RX и TX. Собрал всё по примеру, подключаю – не полетело! В мониторе COM порта выводилась куча текста, как оказалось, происходил постоянный сброс модуля. На отправляемые АТ команды не реагирует. У автора статьи работает, у меня нет.
В чём же дело? Пробовал и другие схемы подключения искать, и так, и сяк, а модуль всё равно либо сбрасывается, либо ничего не выводит. А везде же написано красным шрифтом: «Не подавать на модуль 5 В, а то выйдет из строя». Так поиски решений иногда длились вечерами, уже думал покупать другой модуль, но решил проверить напряжение мультиметром.
Оказалось, что при подключении модуля к 3.3 В происходит падение напряжения ниже 3.2 В. Вроде бы, ну и ладно, падает и падает. Решил запитать от другого источника питания и оказалось, что модуль работает нормально при напряжении на нём выше 3.2 В, а ниже ему недостаточно и он постоянно сбрасывается.
В итоге, на свой страх и риск, подключил к 5 В и всё работало и работает до сих пор нормально.

С остальными компонентами таких проблем не было.
После того, как разобрался с wifi, надо было решить, что делать с датчиком уровня жидкости. Погуглив, нашёл статью, в которой автор делал датчик влажности почвы. При высыхании почвы сопротивление датчика увеличивается и напряжение на аналоговом порту Ардуино растёт. Отлавливая изменение напряжения, можно фиксировать появление жидкости. Для определения уровня жидкости в моём проекте вместо двух контактов использовалось 6. Один из них подключён к 5 В выходу, а остальные к аналоговым входам и через 10 кОм резисторы к GND.
Вот фото тестов.

Вот какой датчик уровня получился в результате.

Следующее, что тестировал, — это часы реального времени. Но с ними работа в принципе проста. Для установки времени и получения информации о нём я использовал исключительно примеры, которые идут в комплекте с библиотекой для работы с DS1307.
В результате, когда всё собрал на макетной плате, получился вот такая помесь проводов и модулей. Кстати, на этих фото пока стоит другой датчик температуры.

Приступаем к монтажу
Теперь всё это нужно было распаять на монтажной плате. Здесь комментировать особо нечего, поэтому только фото. Как видно, ещё добавилась кнопка, чтобы можно было включать чайник не только со смартфона, а ещё и обычным способом.

Далее необходимо всё расположить внутри чайника.

Для защиты всех внутренностей от перегрева была добавлена асбестовая вставка.

Правда, корпус пришлось немного приподнять с помощью дополнительной пластиковой вставки.

Теперь переходим к мобильной части.
Что касается приложения, то, так как оно разрабатывалось под ОС Android, то изначально планировалось использовать Android Studio. Но в целях изучения новых технологий было решено использовать готовую платформу для разработки программ в области Интернета вещей. В результате выбор пал на продукт компании Evothings – Evothings Studio.

Вот её основные достоинства:
— большое количество стандартных примеров по работе с различными модулями (Wifi, Bluetooth);
— разработка приложений с использованием JS, HTML, CSS, что позволяет писать один код, который будет одинаково работать на ОС Android и iOS, т.е. пропадает привязка только к одной платформе;
— простота тестирования приложения: на смартфон устанавливается приложение для предпросмотра своей разработки, а все тестовые сообщения и сообщения об ошибках выводятся в программе на компьютере;
— большое количество информации в Интернете о разработке с использованием JS, HTML, CSS;
В этой Evothings Studio был пример включения светодиода, передавая запрос на включение через ESP8266. Я решил взять этот пример за основу, как раз там было самое ценное для меня – связь с модулем WiFi через tcp socket. И аналогично тому, как передавался запрос на включение светодиода, сделал передачу запроса на обновление датчиков чайника, на установку времени включения, установку температуры и т.д.
Потом прикрутил уведомления о готовности и малом количестве воды, благо, что всё в наше время легко гуглится. В результате получилось такое вот приложение (приятная штука делать интерфейс приложения с помощью CSS):

Краткое описание взаимодействия смартфона и чайника
Общение между серверной и клиентской частью осуществляется с помощью модуля WiFi. При включении модуля управления чайником, модуль WiFi начинает раздавать сеть под названием artKettle. Это делается с помощью AT команд на серверной части. Так, например, чтобы перевести модуль в режим точки доступа, ему необходимо отправить команду AT+CWMODE=2. Далее с помощью подобных команд необходимо назначить параметры сети, разрешить подключение нескольких устройств и получить ip адрес самого wifi.
Со стороны клиента подключение происходит через определённый порт и по ip адресу модуля wifi с использованием chrome.tcp.socket.
После подключения клиента к серверу можно управлять чайником со смартфона. Рассмотрим пример включения чайника.
При нажатии на кнопку включения в приложении artKettle происходит вызов соответствующей функции включения app.kettleOn(). Внутри этой функции происходит передача двух строк на серверную часть:
app.sendString('H'); app.sendString('U');
Далее идёт работа уже на стороне Ардуино. После прихода первой строки с символом ‘H’ выполняется следующая часть кода:
if(message.indexOf("H") >= 0 && waterDetected())
Сначала идёт проверка, есть ли в чайнике вода с помощью вызова метода waterDetected(). Рассмотрим вариант, когда вода в чайнике присутствует.
На пин управления реле подаётся низкий уровень напряжения, что соответствует его включению, т.е. цепь питания замыкается:
digitalWrite(POWER_PIN, LOW);
Затем идёт установка флага того, что чайник включён, и вывод в монитор последовательного порта сообщения о включении.
После этого вызывается функция, передающая ответное сообщение клиентской стороне о том, что всё включение прошло успешно:
sendCIPData(0, "ON");
На клиентской стороне после проверки пришедшего сообщения производится установка кнопки включения в состояние On:
if (buf.substr(0, 2) == "ON")
После этого идёт обработка текстового сообщения с символом ‘U’, отправленного со стороны клиента на сервер. Здесь аналогичным включению образом происходит обновление информации о текущей температуре и объёме жидкости в чайнике.
Таким образом организована двухсторонняя связь клиента и сервера, так что любой из них знает о состоянии другого в любой момент времени.
Заключение
В результате курсового проекта была разработана модификация для обычного электрического чайника, позволяющая управлять им со смартфона по wifi. Теперь этот чайник вполне можно отнести к представителям Интернета вещей. Все функции удалось реализовать полностью, так что теперь этот чайник имеет следующие возможности:
— включение/выключение со смартфона;
— установка любой температуры нагрева воды;
— возможность узнать текущую температуру;
— отслеживание текущего объёма воды в чайнике;
— предупреждение и защита от включения при малом объёме воды;
— установка времени автовключения;
— уведомление о готовности;
Достоинствами реализованного проекта является доступность элементной базы, потому как всё необходимое можно найти в магазинах радиоэлектронных компонентов, расширяемость проекта. Так как в чайнике установлены все необходимые датчики, то его можно дорабатывать программно и сделать не хуже, чем аналоги. Учитывая многофункциональность используемого модуля wifi, можно подключить его к сети Интернет и организовать управление чайником, находясь в любой точке мира, а с использование онлайн сервиса обработки SMS сообщений можно организовать включение по SMS. Т.е. проект ещё очень расширяем, возможности для этого есть, но они не были реализованы, так как не входили в цели разрабатываемого проекта.
Конечно же есть и недостатки проекта. Первый из них – это нестабильная работа модуля Wifi. Модуль иногда просто так теряет сеть, начинает сбрасывать настройки или просто не обрабатывает пришедшие сигналы. Причём это популярные проблемы у пользователей данного модуля. Второй недостаток – это отсутствие механического выключения чайника. Выключение реализовано программно, при достижении температуры кипения происходит разрыв цепи с помощью реле. Если вдруг в программе произойдёт сбой, то чайник может не отключиться. Третий недостаток – проблема отслеживания температуры нагрева. Так, например, если чайник отключить при температуре 60 градусов, то нагревательный тен продолжит отдавать тепло, и через некоторое время температура воды уже будет около 70 градусов. Но это исправляется путём внесения корректировок в программу.
- Умный дом
- Интернет вещей
- DIY или Сделай сам
Чайники в Умном доме Яндекса
Здесь представлен список устройств для Умного Дома Яндекса из различных интернет-магазинов. Список основан на личном опыте пользователей, а также участников сообщества УДЯ, и не является официальной рекомендацией Яндекса.
Если вы присматриваетесь к устройству, которого здесь нет — задайте вопрос в нашем телеграм-комьюнити. Если наоборот – у вас уже есть устройство, отсутствующее в списке, и оно работает с Алисой – обязательно расскажите о нём сообществу, вам скажут большое спасибо!
Если какая-то из ссылок перестала работать – также сразу сообщайте в телеграм-чат по умным устройствам Яндекса или напрямую редактору этой страницы или модераторам вики (@arkrusinov).
Яндекс осуществляет поддержку не только собственных, но и сторонних устройства через навыки брендов-производителей и/или систем умного дома. Полноценная работа УДЯ официально поддержана только через приложения Яндекс и отдельное приложение Дом с Алисой.
Обратите внимание: Яндекс предоставляет только API управления умным домом через Алису, а что именно и как смогут выполнять устройства — зависит только от производителя!
Формат описания в таблице прост: название, ссылка на магазин(ы), проверенный способ подключения, и затем – нюансы подключения, обзоры, предупреждения, отзывы реальных покупателей.
Что может умный чайник
Наверное, нет более стабильно обсуждаемой темы в чате, как очередной цикл про умные чайники ))
Какой купить, на что обратить внимание? Будет ли чайник работать в УДЯ, какие голосовые команды доступны? Можно ли установить температуру нагрева, можно ли узнать текущую? Нужен ли шлюз (хаб) для работы этого чайника? И что вообще они умеют?
Постараемся ответить на эти вопросы.
Начнём с того, что каждое из умных устройств работает на каком-то из протоколов. Самые распространенные для данного сегмента устройств — Wi-Fi и Bluetooth.
Чайники с Bluetooth
Если ваш чайник работает по протоколу Bluetooth, то такому чайнику необходимо дополнительное устройство. Классический пример — чайники Redmond, которые без специального гейтвея (тот же хаб, но красиво назван) они не будут управляться Алисой.
Обратите внимание! Продавцы очень часто умалчивают о том,что вам придётся докупать к нему хаб.
Как добавить устройство Redmond в Умный дом Яндекса, смотрите на странице «Подключение устройств Redmond».
Предупреждение о технике Redmond
С этим брендом, если вам понравились его устройства, готовьтесь к сложностям. Был этап периодических сбоев в облаке, затем компания отказалась от услуг разработчиков приложения Ready4Sky, в итоге возможность регистрации стала зависеть от даты выпуска устройства, затем новые устройства перестали регистрироваться, а Redmond выпустил для новых устройств своё приложение.
С августа 2023 года навык 4sky вообще снят с публикации самим разработчиком.
Если Вы уже купили такой чайник, у вас есть несколько вариантов:
- Докупить гейтвей;
- Использовать программный гейтвей (для этого понадобится устройство с Buetooth и Wi-Fi на борту одновременно — это может быть старый ненужный смартфон, планшет или даже телевизионная приставка; конечно, с этого момента это устройство должно быть всегда и беспрерывно включено и активно). Пример описан по ссылке выше.
- Если вы знаете, что такое MQTT и ESP32 — то можете легко обойтись не только без гейтвея, но и в принципе без облака Redmond (которое, как ни крути, периодически всё же падает). Смотрите инструкцию «MQTT-шлюз для Redmond своими руками».
Вне зависимости от способа подключения, чайники Redmond можно включить и выключить, задать им температуру воды с шагом 5 градусов (от 35 до 90), включить подсветку, режим поддержания температуры. Также можно использовать отложенные команды и попросить Алису включить чайник в заданное время («Алиса, включи чайник в 7 утра»).
Важно! Если Вы задали команду, но затем по какой-то причине (налить воды итд), сняли чайник с подставки, она уже не сработает! Также чайники Redmond не отслеживают отсутствие воды, и включатся даже "сухими". Имейте в виду, что это небезопасно.
Кроме Редмонда, чайники с управлением по Bluetooth выпускают Xiaomi и viomi. Этим чайникам шлюз не нужен, но они все равно не управляются дистанционно вне дома, и увы, их нельзя добавить в Умный дом Яндекса. В них отсутствует возможность вскипятить воду дистанционно; но через фирменное приложение mi Home можно отследить текущую температуру, включить режим поддержания температуры.
Чайники с Wi-Fi
Если ваш чайник работает по протоколу Wi-Fi, ему не нужны дополнительные устройства для дистанционного управления. Например, чайники брендов Polaris, Hiper и т.д. Сначала их нужно добавить в приложения производителей, затем оба аккаунта (приложения производителя и Яндекс) синхронизируются в приложении Яндекс.
Как правило, у этого типа доступны кипячение, установка нужной температуры согласно выбранному рецепту чая, режим подогрева воды и, конечно, включение по сценарию (например, в заданное время суток). Некоторые из них могут определять и наличие воды. Внимательно читайте описание товара перед покупкой, сравнивайте описания у продавца и у производителя, чтобы не столкнуться с неприятным сюрпризом после покупки.
Глупый чайник, как умный
Если вы не хотите покупать умный чайник, но у вас завалялась умная Wi-Fi розетка, из «глупого» чайника вполне можно сделать частично умный:
- Добавляем розетку в приложение Яндекс;
- Даём ей имя «Чайник»
- Включаем чайник в розетку;
- Заливаем воду и переводим выключатель чайника в положение «Включено».
Теперь по команде "включи чайник" умная розетка подаст питание, вода вскипит и затем чайник отключится через свой выключатель. Не забывайте всегда заливать воду!
Если вам кажутся неудобными или опасными способы управления умными чайниками (включая риск включения без воды) — всегда есть возможность выбрать хороший термостат и всегда иметь воду нужной температуры без зависимостей от шлюзов и Интернета.
Устройство не найдено
Часто встречается такая ситуация: кто-то купил чайник, принес домой, включил в розетку, подключил, но Алиса отвечает, — «Устройство не найдено, проверьте настройки умного дома». Возникает паника в чате.
Такой ответ может означать, что для работы вашего чайника нужен специальный шлюз (хаб), либо устройство вообще не работает с УДЯ.
Если в официальной справке производителя (начните с неё) или у продавца уточнить информацию не удалось, попробуйте узнать в нашем телеграм-комьюнити. Но всё же самое лучшее и главное правило — читайте о товаре ДО, а не после покупки!
Таблица поддерживаемых чайников
Для чайников и остальных устройств Polaris и Redmond существуют страницы: "Подключение устройств Polaris IQ Home" и "Подключение устройств Redmond", там ведутся свои специализированные списки.
| Где купить | Способ подключения, оценка устройства |
|---|---|
| Чайники | |
| HIPER IoT Kettle ST1 WiFi | |
| Hiper Яндекс.Маркет |
Способ подключения: HIPER IoT. Устройство еще не тестировалось с УДЯ. |
| HIPER IoT Kettle GX1 WiFi | |
| Hiper Яндекс.Маркет |
Способ подключения: HIPER IoT. Оценка: 4/5. Подключается к УДЯ без дополнительного хаба. Среднее качество сборки: неравномерная подсветка, дешевый пластик, пищит при кипячении или подогреве. Команды в УДЯ: Вскипятить/Подогреть и т.п.; Увеличить/Уменьшить/Установить температуру. |
| Xiaomi Mijia Smart Kettle Bluetooth YM-K1501 | |
| Яндекс.Маркет | Не поддерживается УДЯ. |
| Xiaomi Mijia WiFi Multi-Function Pot MYSH0E1ACM | |
| Яндекс.Маркет | Не поддерживается УДЯ. |
| Polaris PWK 1725CGLD WIFI IQ Home | |
| Яндекс.Маркет Aliexpress |
Способ подключения: POLARIS IQHome. Оценка: 5/5. Удержание температуры сбрасывается при снятии с базы. Команды в УДЯ: Включить/Выключить; Прибавь/Убавь/Установи температуру; Поддерживай/Не поддерживай температуру; Включи предыдущий режим (работа с режимами); статус чайника; Какая температура в чайнике. |
| Polaris PWK 1775CGLD WIFI IQ Home | |
| Яндекс.Маркет Aliexpress |
Способ подключения: POLARIS IQHome. Оценка: 5/5. Пользователи жалуются на негромкий писк базы в режиме ожидания, а также надоедливое сопровождение любого действия звуковым сигналом (без возможности отключения). Команды в УДЯ: Включить/Выключить; Прибавь/Убавь/Установи температуру; Поддерживай/Не поддерживай температуру; Включи предыдущий режим (работа с режимами); статус чайника; Какая температура в чайнике. |
| Polaris PWK 1712CGLD WIFI IQ Home | |
| Яндекс.Маркет | Способ подключения: POLARIS IQHome. Оценка: 5/5. Команды в УДЯ: Включить/Выключить; Прибавь/Убавь/Установи температуру; Поддерживай/Не поддерживай температуру; Включи предыдущий режим (работа с режимами); статус чайника; Какая температура в чайнике. |
Умный чайник

Для приготовления чая важно заваривать его водой с правильной температурой. Следить за выбранной температурой умеют умные чайники. Если такого под рукой нет, можно обойтись обычным электрочайником прокачав его до уровня SMART. В этой статье рассказывается как это сделать. Погнали!
Видеообзор
Что это?
Устройство подключается в разрыв цепи питания чайника. Герметичный термометр измеряет температуру воды. Когда она нагреется до заданного уровня, контроллер подаст звуковой сигнал и отключит питание переключив реле. Если температура опять опустится ниже заданной, реле снова включится. Таким образом устройство будет поддерживать температуру воды внутри чайника. Показания термометра выводятся на дисплей, боковые кнопки которого служат для установки необходимой температуры.
Что понадобится?
Провод с вилкой
Провод с розеткой
Исходный код
Установи библиотеку для работы с TroykaOLED дисплеем и две библиотеки для работы с датчиком температуры — OneWire и DallasTemperature
Прошейте плату Искра Нео кодом программы:
// подключим необходимые библиотеки #include #include #include // Укажем к каким пинам подключены элементы устройства #define ONE_WIRE_BUS 1 #define BUZZER_PIN 9 #define RELAY_PIN 8 #define LED_BUTTON_PIN 13 #define BUTTON_PIN A0 #define PLUS_PIN 6 #define MINUS_PIN 7 // создадим массив для хранения мелодии int notes[] = { 700, 800, 1200 }; // настроим библиотеку 1-Wire для связи с датчиком OneWire oneWire(ONE_WIRE_BUS); // создадим объект для работы с библиотекой DallasTemperature DallasTemperature sensors(&oneWire); // создадим объект для работы с дисплеем и передадим его адрес TroykaOLED myOLED(0x3C); // Создадим переменные для хранения значений температуры int Temp= 0; int newTemp; int setTemp= 65; // Создадим переменные для хранения времени long DisplayPreviousMillis = 0; long previousMillis = 0; int interval = 3000; // Переменные для хранения состояний работы устройства bool displayState = 0; bool warmState = 0; bool ledState = 0; int buttonLedState = 0; void setup() { // Инициализируем работу датчика температуры sensors.begin(); // Инициализируем работу дисплея myOLED.begin(); // Сконфигурируем назначение пинов pinMode(PLUS_PIN, INPUT_PULLUP); pinMode(MINUS_PIN, INPUT_PULLUP); pinMode(LED_BUTTON_PIN, OUTPUT); pinMode(BUZZER_PIN, OUTPUT); pinMode(RELAY_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); // Выведем статичную информацию на дисплей myOLED.setFont(fontRus12x10); myOLED.invertText(); myOLED.setCursor(0, 0); myOLED.print("Темпера"); myOLED.setCursor(83, 0); myOLED.print("т"); myOLED.setCursor(94, 0); myOLED.print("у"); myOLED.setCursor(104, 0); myOLED.print("ра"); myOLED.invertText(0); myOLED.setFont(fontRus12x10); myOLED.setCursor(77, 32); myOLED.print("o"); myOLED.drawRect(6, 46, 24, 48, 1); myOLED.drawRect(103, 46, 121, 48, 1); myOLED.drawRect(111, 38, 113, 56, 1); myOLED.drawCircle(15, 47, 15); myOLED.drawCircle(112, 47, 15); myOLED.drawCircle(15, 47, 14); myOLED.drawCircle(112, 47, 14); Temp = sensors.getTempCByIndex(0); } void loop() { // Запрашиваем данные с датчика температуры sensors.requestTemperatures(); newTemp = sensors.getTempCByIndex(0); // Считываем нажатия кнопок и устанавливаем режим работы if(!digitalRead(BUTTON_PIN) && warmState == 0){ warmState = 1; buttonLedState = 1; } if(!digitalRead(BUTTON_PIN) && (buttonLedState == 2)){ buttonLedState = 0; warmState = 0; digitalWrite(13, LOW); } // Определяем режим работы светодиодной индикации if(buttonLedState == 1){ ledBlink(); } if(buttonLedState == 2){ digitalWrite(LED_BUTTON_PIN, HIGH); } if(buttonLedState == 0){ digitalWrite(LED_BUTTON_PIN, LOW); } // Если включен режим нагрева if(warmState == 1){ // Если температура ниже заданой включаем реле if((Temp+1) setTemp){ digitalWrite (RELAY_PIN, HIGH); } // Если температура выше или равна - выключаем реле if(Temp >= setTemp){ digitalWrite (RELAY_PIN, LOW); // Проигрываем мелодию if(buttonLedState == 1){ for(int thisSensor = 0; thisSensor 3; thisSensor++) { tone(BUZZER_PIN, notes[thisSensor], 500); delay(500); } // Устанавливаем режим индикации работы устройства buttonLedState = 2; } } } else{ digitalWrite (RELAY_PIN, LOW); } // Считываем нажатия кнопок и увеличиваем или уменьшаем значение установленой температуры if(!digitalRead(MINUS_PIN)){ displayState = 1; DisplayPreviousMillis = millis(); setTemp = setTemp - 1; delay(20); // Выводим прямоугольную заплатку стирающую предыдущее значение myOLED.drawRect(31, 36, 78, 60, 1, BLACK); } if(!digitalRead(PLUS_PIN)){ displayState = 1; DisplayPreviousMillis = millis(); setTemp = setTemp + 1; delay(20); // Выводим прямоугольную заплатку стирающую предыдущее значение myOLED.drawRect(31, 36, 78, 60, 1, BLACK); } // Если время после нажатия кнопок установки температуры больше 3-х секунд — переключаемся на отображение текущей температуры if(millis() - DisplayPreviousMillis > interval && displayState == 1){ // Выводим прямоугольную заплатку стирающую предыдущее значение myOLED.drawRect(31, 36, 78, 60, 1, BLACK); displayState = 0; } // Проверяем изменилась ли температура if(Temp != newTemp){ // Выводим прямоугольную заплатку стирающую предыдущее значение myOLED.drawRect(31, 36, 78, 60, 1, BLACK); // Присваиваем новое значение температуры Temp = newTemp; } // Выбираем шрифт отображения и выводим значение температур на дисплей myOLED.setFont(bigNumbers); if(displayState){ view(setTemp); }else{ view(Temp); } } // Создадим функцию для отображения температур на дисплее void view (int a){ if(a > 99){ myOLED.setCursor(35, 35); }else{ myOLED.setCursor(49, 35); } myOLED.print(a); } // Создадим функцию мигания подсветки кнопки void ledBlink (){ if(millis() - previousMillis > 500){ previousMillis = millis(); if (ledState == LOW){ ledState = HIGH; } else{ ledState = LOW; } digitalWrite(LED_BUTTON_PIN, ledState); } }
Как собрать?

Для начала возьмем Искру Нео прошитую исходным кодом и поставим на неё AC/DC Shield.

Теперь подключим к клеммникам шилда провода питания и провод ведущий к чайнику. Кроме того установи перемычку на пин 8.

Установим два комплекта контактных колодок Arduino и наденем сверху слот шилд.

Соберем корпус для получившегося бутерброда. Для этого идеально подойдет Slot Box XL.

Добавим OLED-дисплей, зуммер, кнопку со светодиодом, модуль подтяжки и светодиод «Пиранья».

Прикрутим датчик температуры к клеммникам модуля подтяжки.

Теперь подключим чайник в розетку устройства, опустим датчик внутрь чайника и воткнем вилку устройства в сеть 220.
Установи кнопками на дисплее нужную температуру и запусти нагрев и поддержание температуры нажатием на Troyka-кнопку. Чайник нагреет воду и будет её поддерживать в пределах 2-х градусов. Когда поддерживать температуру больше не нужно — повторно нажми на Troyka-кнопку.
Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Noncommercial-Share Alike 4.0 International
Производные работы должны содержать ссылку на http://wiki.amperka.ru, как на первоисточник, непосредственно перед содержимым работы.
Вики работает на суперском движке DokuWiki.
projects/smart_kettler.txt · Последние изменения: 2020/03/16 15:29 — anatoly
Инструменты страницы
- Показать исходный текст
- История страницы
- Ссылки сюда
- Наверх
