Pull to refresh

Arduino в кофейном автомате

Developing for Arduino *
Немного абстрагируясь от простого заваривания чая, покажу пример одного своего проекта на Arduino. До этого у меня был опыт Hello World на этой платформе, ну и техническое образование в купе с АСУ.



И так. В неком сферическом вакууме есть кофейный автомат. Достаточно старая модель, но очень надёжная. Готовит растворимые кофейные напитки (ореховое, ванильное), разные вариации кофе+сливки+шоколад+сахар, растворимый чай. Автомат в виду своего возраста имеет достаточно мало функций для владельца, оставляя все свои силы только для покупателей. Автомат умеет:
— брать деньги;
— готовить выбранный напиток;
— выдавать сдачу;
— заботиться о себе (кипятить воду, поддерживать её уровень).

Конечно, как и любой автомат он умеет брать деньги и ничего не давать в замен. Это зависит от настроения, положения Луны на звёздном небе, ну и от скачков напряжения.

Меня, как владельца автомата, не устраивали его остальные функции, точнее их отсутствие. После первого месяца владения появились следующие желания:
— удаленное оповещение об остановке автомата;
— статистика продаж каждого напитка;
— функции бесплатных продаж «для своих»;
— функция автоматической промывки;
— фишки.

Начну по порядку.

Техническая часть этого решения


Arduino Nano (freeduino nano) + MAX232-адаптер + Serial GSM модем + оптроны + мелочевка
Модемом можно управлять обычными AT-командами через com-порт. В Arduino есть только один com-порт, который используется для программирования (завязан на USB-адаптер). Что бы процесс прошивки был удобным и без лишних движений — не будет трогать этот порт. Решение достаточно простое — Software Serial — это возможность создать порт на любых двух цифровых ногах ардуины. Вместе с переходником на микросхеме MAX232 получается полноценный порт, к которому можно подключать внешние устройства.
Вся схема собрана на макетной плате с обычной спайкой на обратной стороне. Технологии лазерного утюга ещё не применял, так как это первый проект и по ходу менялись назначения ног и выходов.



1. Удаленное оповещение об остановке автомата


Сам автомат умеет отслеживать некоторые нештатные ситуации (переполнение сливного бака, отсутствие чистой воды, замятие купюры, застревание монет в монетоприемнике). Одной из перечисленных причин достаточно, чтобы автомат полностью прекратил продажи и ушел в астрал (до решения этих проблем владельцем автомата).

Если к автомату подходить каждый день (за бесплатным кофе:), и проверять все возможные причины будущей остановки, то этого достаточно. Но мы же целим Arduino на это место!

Первая часть — Arduino должна считывать состояния статусных светодиодов автомата. По их значениям отправлять SMS на заданный номер с описанием возникшей проблемы. Помимо этого отправлять SMS о перезагрузке автомата (при пропадании электричества) — так, чтобы быть в курсе.

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

2. статистика продаж каждого напитка


В автомате 11 кнопок на каждый отдельный вариант напитка. Хочется знать какой напиток пользуется популярностью. Ну и сколько мы заработали за сутки :) Собственно последнее очень интересно для владельца автомата :) Не будем брать в расчет налоговую, поэтому учет ведем в простом Excel+формулы.

У каждой кнопки есть светодиодный индикатор. При приготовлении напитка этот индикатор горит в процессе приготовления. На все 11 индикаторов вешаем оптроны и заводим их на входы в Arduino. Помимо этого есть индикатор готовности напитка (пока он горит — напиток готовится и вынимать стаканчик не рекомендуется :). Использовались как аналоговые входы, так и цифровые (достаточно отслеживать появление питания на них). Конечно, можно усложнить схему (сдвиговые регистры), но это наш первый проект.

Как снимается статистика: в любое время звоним на автомат с ранее забитого в прошивку номера. При поступлении звонка, автомат сбрасывает вызов и в ответ присылает смс-ку с количеством продаж каждой кнопки. Длина сообщений дает возможность писать только в виде: 1=10,2=3,3=1..., да и для вбивки в историю продаж так удобней чем названиями напитков.

3. бесплатные продажи «для своих»


Автомат стоит в дружественном помещении и аренда не платится, зато в замен предоставляются бесплатные напитки. К сожалению, свободные ноги Ардуины кончились раньше этой идеи, и до конца её довести не удалось. Поэтому выдача производится вскрытием автомата ключом и нажатием на заветную кнопку бесплатной продажи (стандартная функция автомата — активируются все кнопки выбора напитка на одну попытку). Но есть отличная идея сделать выдачу напитков по абонементам и разовым талонам — через сканер штрих-кодов (обычная модель на com-порту). Хотя на Хабре была отличная статья — использовать в качестве считывателя мозги обычной оптической мышки. Один из этих вариантов попробую реализовать во второй версии Автомата.

Ещё одна идея — небольшая вариация снятия статистики — при поступлении звонка с определенного номера — включать бесплатную продажу. Но уже не в этой версии…

4. автоматическая промывка


Как и любая посуда — автомат требует внимания и периодической чистки (засохшее кофе с сахаром — ещё тот клей). К сожалению, появляться каждый день (и снимать деньги:) удается не всегда, пришлось заложить автоматическую функцию промывки. В автомате такая функция есть, однако запускается нажатием специальной кнопки на пульте. Поэтому мы подключились к пульту и через реле нажимаем кнопку когда надо. У меня стоит автоматическая промывка каждый вечер после сбора статистики. Раньше промывка стояла через час простоя после последней продажи, однако вода быстро кончалась и пришлось отказаться от такой частоты.

5. фишки


Хотелось добавить автомату интерактивности. Например, сигнал о готовности напитка. Пьезо-элемент из стартового набора Ардуинщика отлично подходит для этой идеи — сказано, сделано! Планирую добавить ещё подсветку окна выдачи напитка после готовности.

Первая версия готова!


Так как проект чисто любительский и для себя, выкладывать исходники не вижу смысла. Многие предлагали поставить производство на поток, но это лишь хобби — и отрываться от основной работы пока не намерен.

Уже сейчас готовлюсь ко второй версии автомата — а точнее к полной замене стандартных мозгов на Arduino+компьютер — как для больших функций, так и для удобства (онлайн статистика, мониторинг наличности, веб-камера, смс-оплата). Подобная реализация уже проведена на соседнем снековом автомате (чипсы-батончики-кола), буквально через пару дней опубликую описание и этого проекта.

Попутный вопрос читателям — хотели ли бы вы видеть интерактивный автомат, который после готовности напитка спросил бы у вас — «как вам кофе?» и по желанию выкладывал бы фото в фан-клуб вконтакт/facebook/twitter? Реализация простая — голосовое проигрывание звукового файла через компьютер, кнопка «ФОТО» на панели автомата и веб-камера.

и на десерт — ммм кофе


Tags:
Hubs:
Total votes 67: ↑65 and ↓2 +63
Views 10K
Comments Comments 41