Рубрика развивается при поддержке HP logo

Робот-бармен своими руками — когда лень на корпоративе наливать коктейли вручную

Началось всё в начале декабря, когда меня пригласили на корпоратив в компанию, откуда уволился месяцем ранее. И так как в компании работают очень инициативные и неординарные люди, то и корпоратив придумали с достаточным количеством активностей и интересностей.

Среди обязательного условия было: наличие бара с коктейлями и барменом, который бы мог угощать гостей коктейлями.

Как ожидалось, желающих примерить на себе обязанность бармена не нашлось, и я взял на себя все это. Этой же ночью созрел ленивый план «Как бы за меня кто-то наливал коктейли», так как я человек из колхоза, и в моем понимании корпоратив — это когда ты употребляешь сам и на следующий день бывает стыдно :D

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

Но была проблема — у меня совсем нет опыта в разработке устройств на Arduino... Да и C/C++ я знаю только поверхностно, что-то стабильно работающее в короткий срок не смогу разработать.

Так как я неплохо знаю ECMAScript (JavaScript), решил погуглить на эту тему. Нашёл быстро то, что позволило бы мне быстро разработать эту разливайку — Espruino! Ещё немного погуглив, нашёл плату IskraJS, которая реализована в форм-факторе Arduino и совместима с ее шилдами. То что нужно!

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

В одном магазине всего этого не нашлось, поэтому пришлось дробить заказ между двумя магазинами. К слову, в «Амперку» мне пришлось ездить ещё два раза, чтобы поменять бракованные устройства. Неприятно, конечно, но ребята всё без проблем заменили либо вернули деньги и отправили в «ЧипДип».

Часть заказа​

Ок! Всё есть, приступаем к сборке механической части по чертежам, которые есть в голове. Параллельно доехав до магазина, чтобы купить паяльник, мультиметр, соединительные провода и ещё пакет необходимой мелочевки. И в итоге получается что-то подобное:

​Собрал «на коленке»

Замечательно! Пытаемся установить среду разработки, подключиться к Iskra JS и подёргать клапанами и насосом. Но! Ноутбук не видит устройство… Сначала думаем, что мертвый USB-кабель, пытаемся подключить ещё через два провода, которые остались от Android-телефонов. Не работает…

Следующая мысль: USB-хаб, который в power bank чем-то не устраивает какую-то из сторон (Macbook, Iskra JS). Не проблема! Идём в ближайший re: Store, прихватив с собой контроллер, провода, ноутбук. Покупаем переходник, там же пробуем все это на глазах удивленных покупателей — не видит… Возвращаем его обратно!

Совсем уже ошалев от происходящего, ведь зная, что Iskra JS точно рабочая, поднимаемся на четвёртый этаж ТЦ и покупаем самый бюджетный ноутбук на Windows. Добираемся до дома, подключаем, и о счастье — окна спиликали и сказали, что найдено устройство, но оно не верно работает. Достаём бубен и танцуем вокруг с попытками накатить другой драйвер. Но каменный цветок так и не выходит.

Открываем пиво, и в этот момент приходит гениальная мысль: «А возможно, все три моих USB-кабеля мертвые, ведь я не уверен в них, так как не пользуюсь ими?!». Доходим до ближайшего магазина с ширпотребом и покупаем USB-провод. Бежим домой через пивной магазин, чтобы пополнить запасы. Подключаем Iskra JS к Macbook и — о чудо! — всё работает! Так как пиво уже открыто и в холодильнике есть ещё, забываем про зря купленный ноутбук :D

Пишем несколько десятков строк кода, чтобы контроллер принимал команды по Bluetooth и отправлял туда же логи, чтобы проверить работу насоса, клапанов и, самое главное, счётчика жидкости, так как основное, что необходимо, — правильно дозировать жидкости!

Проверяем всё это, и выясняется два неприятных факта:

  • Датчик жидкости считает больше, чем на самом деле через него прошло.
  • Bluetooth-соединение отваливается после включения насоса.

Делаю предположение, что датчик жидкости считает неверно из-за того, что насос создаёт слишком большое давление, на которое не рассчитан датчик. А синезуб отваливается из-за помех, которые исходят от насоса в момент включения.

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

Решение второй — отказаться от Bluetooth в пользу Wi-Fi и управлять устройством через Telegram-бота. Преимущество налицо! Не нужно писать программу для телефона, а всё необходимое Telegram уже предоставляет.

Едем в магазин и покупаем ещё два шилда:

Возвращаемся, подключаем Wi-Fi — не работает! Танцы с бубном — не работает! Едем в магазин, возвращаем деньги, покупаем в другом месте — работает!

И тут же понимаем, что рассадник зла и террористов Telegram заблокирован в РФ, а в библиотеке, которую планировал использовать для быстрого поднятия бота, нет возможности указать адрес прокси.

Ну ничего не поделать — форкаем библиотеку, дописываем возможность использовать домен, отличный от api.telegram.org. Поднимаем на DigitalOcean самую дешёвую VPS и настраиваем там на nginx реверс-прокси для api.telegram.org. Пробуем на тестовой команде — всё ок, бот работает! Наконец-то! Можно приступить непосредственно к программированию того, что будет готовить наши крутые коктейли!

Посоветовавшись с СЕО компании, решаем, что нужно готовить три коктейля: негрони, джин-тоник, кампари шприц. Чтобы в случае отсутствия спроса на коктейли можно было догнаться отдельно оставшимися ингредиентами!

Итого: для приготовления этих коктейлей нам необходимо: джин, кампари, красный вермут, тоник, шампанское.

В прошивку углубляться не буду, ведь там всё довольно просто. В одном объекте храним информацию о том, какой клапан за какой ингредиент отвечает. В другом — рецепт коктейлей.

const bottles = { 'gin': 4, 'vermouth rosson': 3, 'campari': 2, 'tonic': 1, 'prosecco': 0 }; const cocktails = { 'negroni': [ { name: 'vermouth rosson', volume: 30 }, { name: 'campari', volume: 30 }, { name: 'gin', volume: 30 } ], 'gin_tonik': [ { name: 'gin', volume: 50 }, { name: 'tonic', volume: 150 } ], 'campari_spritz': [ { name: 'campari', volume: 60 }, { name: 'prosecco', volume: 60 }, { name: 'tonic', volume: 100 } ], 'gin': [ { name: 'gin', volume: 50 }, ], 'tonic': [ { name: 'tonic', volume: 100 }, ], 'prosecco': [ { name: 'prosecco', volume: 100 }, ] };

И не забываем добавить отдельно «топпинги» для привередливых гостей :)

Добавляем боту команду, на которую он ответит списком коктейлей, которые может приготовить на основании подключённых к нему бутылок. Выглядит это примерно так:

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

Но после того как натренировались на кошках, время взвалить на себя тяжёлое бремя тестировщика-дегустатора! Идём до «Ашана», покупаем те же самые ингредиенты, что планируются на мероприятии. Заодно покупаем будущий корпус для устройства — пластиковый пищевой контейнер!

Прототип устройства готов! Приступаем к тестам!

Первые запуски устройства

Я думаю, не стоит говорить, что на следующий день я был в совсем не работоспособном состоянии :D

Ну ладно, ведь за предыдущий вечер я успел всё оттестировать, внести поправки на газированные напитки (так как датчик не очень точно измерял вспененные жидкости). Также написал продувку системы после того, как коктейль готов, чтобы в ней не оставалось жидкости и она не испортила вкус следующего коктейля.

Две вспомогательных функции по промывке системы после использования устройства и прокачке системы в самом начале тоже были написаны уже в бессознательном состоянии :D И даже не пришлось рефакторить!

За день до корпоратива устройство приобрело вид настоящего MVP из го… и палок. Пришлось очередной раз сгонять в магазин за чем-то, что было похоже на ножки, — этим оказались деревянные шампуры.

В этом пластиковом контейнере компактно расположилась вся механическая часть.

А всю электронику решил облагородить и расположить снаружи, чтобы придать более интересный вид устройству.

Настал день корпоратива. Так как сейчас единственный возможный вариант настроить подключение к Wi-Fi — это прописать в прошивку SSID и пароль. Пришлось принести с собой ноутбук и залить обновленный код, и бот сразу же написал мне «Ready!».

Презентация устройства и демонстрация его работы прошли успешно! Устройство работало без ошибок и глюков весь долгий вечер.

Не могу сказать, что путь, пройденный во время разработки устройства проще, чем вручную разливать коктейли. Но ведь и смысл в другом — получить моральное удовлетворение и удивить гостей :) Надеюсь, это получилось!

Следующие устройства, которые планирую начать с нового года: полностью автоматическая пивоварня и кофе-машина, умеющая HomeKit и управляемая с помощью Siri.

{ "author_name": "Евгений Кузнецов", "author_type": "self", "tags": [], "comments": 40, "likes": 60, "favorites": 63, "is_advertisement": false, "subsite_label": "tech", "id": 98955, "is_wide": false, "is_ugc": true, "date": "Wed, 25 Dec 2019 00:07:34 +0300", "is_special": false }
0
40 комментариев
Популярные
По порядку
Написать комментарий...
19

Когда на Хабре стало так душно, что люди пошли на vc)))

Ответить
4

пришёл сюда написать тот же самый комментарий)

Ответить
9

"Но ведь и смысл в другом - получить моральное удовлетворение и удивить гостей"

Можно идти по пути Лукаса. 

Картонную коробку обклеиваем фольгой. Вырезаем дырки. Водружаем на голову специальным образом выбранного сотрудника.

Всё, робот почти готов. Осталось залить 300 мл свежей прошивки.

Ответить
4

А если заливать сразу в себя 300мл свежей прошивки, то совсем ничего не придется делать 😂

Ответить
1

Прикольно, когда не скучно, позабавил коллег, развлекся сам, молодца!

Ответить
4

И добавить функцию "random" :-) 

Ответить
1

Есть такая недокументированная функция 😂 но в таком случае нужно минимум бутылок 10. Иначе не будет нужного разнообразия

Ответить
1

Если вызывать функцию на улице - ППС задокументирует.

Ответить
0

Количеством каждого ингридиентов играть-тоже может интересно получиться

Ответить
4

Охуенно! 

Ответить
2

Ну вот и робот собутыльник готов. Скоро кожаные мешки совсем не нужны будут)

Ответить
0

Как кто-то в FB выразился: "Теперь будут писать роботу-бармену в телеграм, а не своей бывшей" :D

Ответить
1

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

Ответить
0

Спасибо, буду постигать помаленьку) как раз следующие 2 устройства примерно в таком же направлении. В пивоварне безконтактно нужно измерять объем воды. И датчик расхода воды не подойдет. Остается либо по весу либо по давлению воды/сусла у дна с поправками на предположительную плотность... ик и уз способ измерения тоже отсек, так как сверху ничего не должно торчать.

Ответить
1

Вооот, делом занят человек!

Поддерживаю!

Ответить
0

Зачёт!!! MVP готов, можно приводить все это в надлежащий вид (корпус, дизайн) и продавать как кухонную бытовую технику типо всяких блендеров, тостеров (хотя тостер к этой штуке очень нужная вещь:-))). 

На мой взгляд сразу нужно бить в два диаметрально противоположных сегмента: эконом (ценой где то в 3-4, ну может 5 тыс. простой вариант с мин. набором ингридиентов) и премиум (15-20 тыс. с ассортиментом коктейлей, дизайном, качественными материалами). 

Ответить
2

Есть еще один вариант - сдавать устройства на свадьбы/вечеринки. Для интереса поговорил с ведущими мероприятий, сказали что для некоторых людей можно за дорого предлагать на мероприятие. Типа «вау эффект» для гостей 😀

Ответить
1

Почему бы и да! Только выглядеть она должна тоже как WOW- машина

Ответить
0

Если бы автор был чуть-чуть по умнее сейчас бы готовил презентационную версию для CES, это неплохой дивайс для алеи стартапов, ну или катался бы по инвесторам между Сан-Хосе и Сан-Франциско. Зачем лучше написать статью на vc.  Но идея неплохая, я думаю в след году можно будет купить на ali за 159 долл

Ответить
2

Привет, пишу тебе из будущего, вон у нас чо уже есть.

Ответить
0

А вы не в курсе как там газированные напитки подключены? Не вижу на фото...

Ответить
0

Помнится, Наоми Ву довольно давно выкладывала у себя на ютубе робота-бармена на ардуине. Только там реализация была без насосов - манипулятор со стаканом позиционировался под нужной бутылкой, находящейся в перевернутом состоянии, и нажимал этим же стаканом на клапан открытия. Дозировка удержанием клапана. Барная карта и выбор напитка через дисплей.

Ответить
0

Наверное, газированные напитки тоже проблема так наливать... и с густыми жидкостями тоже не понятно.

Ответить
1

Не должно быть с ними проблем. Газированные, если не трясти потом, давление в таре не поднимают и так же самотеком вытекут. А вот под густые, гуще сиропа, действительно придется переосмысливать клапан.

Ответить
1

Верно, если температура жидкости не изменяется. Но наблюдаю выделение углекислоты, если достать бутылку шампанского из холодильника и поставить в бармена.

Ответить
0

В таком случае, опустить клапан ниже, а в промежуток между горлом тары и клапаном вывести трубку наверх, заодно и булькать сам аппарат при наливании перестанет, струя будет ровнее))

Ответить
0

Мне кажется для сиропов и тп, нужны отдельные краники и второй такой механизм...

Ответить
0

Здорово.... Обязательно в несу в список "вещей, которые надо собрать до смерти".

Ответить
0

Ссылки на авторов проекта, у которых брали технические идеи, будут? А главное, на авторов самой идеи?

Ответить
0

Если вы хотите повторить данный проект, то советую посмотреть на Ютубе. AlexGyver недавно выпустил подобное видео. Наливатор - рассчитан на несколько рюмок, +в качестве корпуса - чемодан, то есть он ещё и переносной.

Ответить
0

Не будет!) Ссылки на тех, кто придумал изобретать устройства? Если вы искали подобные проекты - поделитесь!

Ответить
0

Недавно AlexGyver на Ютубе делал. Очень интересно, выше описал. И ещё много десятков других. Так что это не изобретение, а лишь проект.

Ответить
0

Да, я посмотрел это видео. Этот проект и тот, на который вы дали "ссылку", делают совершенно разные вещи) Это как автобус и трактор. Вроде бы обе машины, но совершенно разные машины :D

Вроде бы никто и не говорил, что это изобретение))) В статье описано как на коленке это устройство придумывалось, дорабатывалось и тестировалось :D Какие проблемы встречались. И возможно кто-то возьмет и усовершенствует это. Добавит дисплей, заменит датчик расхода жидкости на датчик веса, реализует промывку трассы водой, когда в следующем коктейле нет ингредиента, остатки которого присутствуют в трассе.

Ответить
0

Отличная тема для бизнеса!

Почти как в фильме "Пассажиры" 2016 года !
Жизнь иногда "догоняет" фантастику!
Надо помочь разработчику заработать на этом роботе денег !
Кто со мной - пишите в личку!

Ответить
0

Некоторое время назад сам задумался о подобном проекте, показалось интересным в том числе и с коммерческой точки зрения.

С интересом обнаружил подобный проект двухлетней давности на кикстартере.
https://www.kickstarter.com/projects/barobot/barobot-a-cocktail-mixing-robot. Создатели смогли собрать чуть больше 20 т.дол. при запрашиваемых 120000, то есть денег никаких не получили. Но проект запустили сами и вроде аппарат даже продавался какое-то время. https://barobot.com/
Сейчас на сайте ничего нет. Что случилось, почему не выстрелило и другие нюансы обнаружить не смог. Какие версии?

Ответить
0

Возьмите esp32 и не городите огород из контроллеров. Там Вам и JS будет работать и WiFi c блюпупом всё в одной мощной и недорогой железяке.

Ответить
–1

Да вот сейчас уже в курсе 😂 это мой первый опыт был. Пока колхозил это - многое почитал)

Ответить

Комментарии

null