Робот-бармен своими руками — когда лень на корпоративе наливать коктейли вручную
Началось всё в начале декабря, когда меня пригласили на корпоратив в компанию, откуда уволился месяцем ранее. И так как в компании работают очень инициативные и неординарные люди, то и корпоратив придумали с достаточным количеством активностей и интересностей.
Среди обязательного условия было: наличие бара с коктейлями и барменом, который бы мог угощать гостей коктейлями.
Как ожидалось, желающих примерить на себе обязанность бармена не нашлось, и я взял на себя все это. Этой же ночью созрел ленивый план «Как бы за меня кто-то наливал коктейли», так как я человек из колхоза, и в моем понимании корпоратив — это когда ты употребляешь сам и на следующий день бывает стыдно :D
Движимый этой идеей, быстро прикинул в голове установку, которая могла бы из четырёх-шести подключённых к ней бутылок с ингредиентами дозировать их по заказу в заранее заданных пропорциях, чтобы оставалось только всё это добро украсить.
Но была проблема — у меня совсем нет опыта в разработке устройств на Arduino... Да и C/C++ я знаю только поверхностно, что-то стабильно работающее в короткий срок не смогу разработать.
Так как я неплохо знаю ECMAScript (JavaScript), решил погуглить на эту тему. Нашёл быстро то, что позволило бы мне быстро разработать эту разливайку — Espruino! Ещё немного погуглив, нашёл плату IskraJS, которая реализована в форм-факторе Arduino и совместима с ее шилдами. То что нужно!
Так как в голове уже были наброски устройства, я приступил к формированию заказа. Я предполагал, что мне для всего этого необходимо:
- Сам контроллер.
- Насос.
- Клапаны на каждую бутылку + продувку.
- Счетчик жидкости.
- Bluetooth-адаптер.
- Блок питания 12 В.
- Силиконовый шланг.
- Тройники для соединения клапанов, насоса и так далее.
- Сборку ключей для управления насосом и клапанами.
В одном магазине всего этого не нашлось, поэтому пришлось дробить заказ между двумя магазинами. К слову, в «Амперку» мне пришлось ездить ещё два раза, чтобы поменять бракованные устройства. Неприятно, конечно, но ребята всё без проблем заменили либо вернули деньги и отправили в «ЧипДип».
Ок! Всё есть, приступаем к сборке механической части по чертежам, которые есть в голове. Параллельно доехав до магазина, чтобы купить паяльник, мультиметр, соединительные провода и ещё пакет необходимой мелочевки. И в итоге получается что-то подобное:
Замечательно! Пытаемся установить среду разработки, подключиться к 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. Пробуем на тестовой команде — всё ок, бот работает! Наконец-то! Можно приступить непосредственно к программированию того, что будет готовить наши крутые коктейли!
Посоветовавшись с СЕО компании, решаем, что нужно готовить три коктейля: негрони, джин-тоник, кампари шприц. Чтобы в случае отсутствия спроса на коктейли можно было догнаться отдельно оставшимися ингредиентами!
Итого: для приготовления этих коктейлей нам необходимо: джин, кампари, красный вермут, тоник, шампанское.
В прошивку углубляться не буду, ведь там всё довольно просто. В одном объекте храним информацию о том, какой клапан за какой ингредиент отвечает. В другом — рецепт коктейлей.
И не забываем добавить отдельно «топпинги» для привередливых гостей :)
Добавляем боту команду, на которую он ответит списком коктейлей, которые может приготовить на основании подключённых к нему бутылок. Выглядит это примерно так:
В моём случае для отладки софта и железа я подключил везде воду и настроил производительность насоса таким образом, чтобы датчик количества жидкости отсчитывал её с очень большой точностью. Для этого пришлось сходить до «Ашана» и купить всякие мерные и безмерные стаканчики.
Но после того как натренировались на кошках, время взвалить на себя тяжёлое бремя тестировщика-дегустатора! Идём до «Ашана», покупаем те же самые ингредиенты, что планируются на мероприятии. Заодно покупаем будущий корпус для устройства — пластиковый пищевой контейнер!
Прототип устройства готов! Приступаем к тестам!
Я думаю, не стоит говорить, что на следующий день я был в совсем не работоспособном состоянии :D
Ну ладно, ведь за предыдущий вечер я успел всё оттестировать, внести поправки на газированные напитки (так как датчик не очень точно измерял вспененные жидкости). Также написал продувку системы после того, как коктейль готов, чтобы в ней не оставалось жидкости и она не испортила вкус следующего коктейля.
Две вспомогательных функции по промывке системы после использования устройства и прокачке системы в самом начале тоже были написаны уже в бессознательном состоянии :D И даже не пришлось рефакторить!
За день до корпоратива устройство приобрело вид настоящего MVP из го… и палок. Пришлось очередной раз сгонять в магазин за чем-то, что было похоже на ножки, — этим оказались деревянные шампуры.
В этом пластиковом контейнере компактно расположилась вся механическая часть.
А всю электронику решил облагородить и расположить снаружи, чтобы придать более интересный вид устройству.
Настал день корпоратива. Так как сейчас единственный возможный вариант настроить подключение к Wi-Fi — это прописать в прошивку SSID и пароль. Пришлось принести с собой ноутбук и залить обновленный код, и бот сразу же написал мне «Ready!».
Презентация устройства и демонстрация его работы прошли успешно! Устройство работало без ошибок и глюков весь долгий вечер.
Не могу сказать, что путь, пройденный во время разработки устройства проще, чем вручную разливать коктейли. Но ведь и смысл в другом — получить моральное удовлетворение и удивить гостей :) Надеюсь, это получилось!
Следующие устройства, которые планирую начать с нового года: полностью автоматическая пивоварня и кофе-машина, умеющая HomeKit и управляемая с помощью Siri.
Когда на Хабре стало так душно, что люди пошли на vc)))
пришёл сюда написать тот же самый комментарий)
"Но ведь и смысл в другом - получить моральное удовлетворение и удивить гостей"
Можно идти по пути Лукаса.
Картонную коробку обклеиваем фольгой. Вырезаем дырки. Водружаем на голову специальным образом выбранного сотрудника.
Всё, робот почти готов. Осталось залить 300 мл свежей прошивки.
А если заливать сразу в себя 300мл свежей прошивки, то совсем ничего не придется делать 😂
Прикольно, когда не скучно, позабавил коллег, развлекся сам, молодца!
И добавить функцию "random" :-)
Есть такая недокументированная функция 😂 но в таком случае нужно минимум бутылок 10. Иначе не будет нужного разнообразия
Если вызывать функцию на улице - ППС задокументирует.
Количеством каждого ингридиентов играть-тоже может интересно получиться
Охуенно!
У ребят, что делали нейробармена (есть на vc) всё покруче было.
Да, спасибо, нашел статью, почитаю вечером!
Ну вот и робот собутыльник готов. Скоро кожаные мешки совсем не нужны будут)
Как кто-то в FB выразился: "Теперь будут писать роботу-бармену в телеграм, а не своей бывшей" :D
Вы к интересной теме прикоснулись. Устройства розлива и дозаторы - отдельная промышленная дисциплина в упаковочной индустрии. Со своими секретными технологическими находками, особенно когда много пены или густая жидкость. Желаю успешного освоения пивного производства :)
Спасибо, буду постигать помаленьку) как раз следующие 2 устройства примерно в таком же направлении. В пивоварне безконтактно нужно измерять объем воды. И датчик расхода воды не подойдет. Остается либо по весу либо по давлению воды/сусла у дна с поправками на предположительную плотность... ик и уз способ измерения тоже отсек, так как сверху ничего не должно торчать.
Вооот, делом занят человек!
Поддерживаю!
Зачёт!!! MVP готов, можно приводить все это в надлежащий вид (корпус, дизайн) и продавать как кухонную бытовую технику типо всяких блендеров, тостеров (хотя тостер к этой штуке очень нужная вещь:-))).
На мой взгляд сразу нужно бить в два диаметрально противоположных сегмента: эконом (ценой где то в 3-4, ну может 5 тыс. простой вариант с мин. набором ингридиентов) и премиум (15-20 тыс. с ассортиментом коктейлей, дизайном, качественными материалами).
Есть еще один вариант - сдавать устройства на свадьбы/вечеринки. Для интереса поговорил с ведущими мероприятий, сказали что для некоторых людей можно за дорого предлагать на мероприятие. Типа «вау эффект» для гостей 😀
Почему бы и да! Только выглядеть она должна тоже как WOW- машина
Если бы автор был чуть-чуть по умнее сейчас бы готовил презентационную версию для CES, это неплохой дивайс для алеи стартапов, ну или катался бы по инвесторам между Сан-Хосе и Сан-Франциско. Зачем лучше написать статью на vc. Но идея неплохая, я думаю в след году можно будет купить на ali за 159 долл
Привет, пишу тебе из будущего, вон у нас чо уже есть.
😂 ахахаха
А вы не в курсе как там газированные напитки подключены? Не вижу на фото...
Помнится, Наоми Ву довольно давно выкладывала у себя на ютубе робота-бармена на ардуине. Только там реализация была без насосов - манипулятор со стаканом позиционировался под нужной бутылкой, находящейся в перевернутом состоянии, и нажимал этим же стаканом на клапан открытия. Дозировка удержанием клапана. Барная карта и выбор напитка через дисплей.
Наверное, газированные напитки тоже проблема так наливать... и с густыми жидкостями тоже не понятно.
Не должно быть с ними проблем. Газированные, если не трясти потом, давление в таре не поднимают и так же самотеком вытекут. А вот под густые, гуще сиропа, действительно придется переосмысливать клапан.
Верно, если температура жидкости не изменяется. Но наблюдаю выделение углекислоты, если достать бутылку шампанского из холодильника и поставить в бармена.
В таком случае, опустить клапан ниже, а в промежуток между горлом тары и клапаном вывести трубку наверх, заодно и булькать сам аппарат при наливании перестанет, струя будет ровнее))
Мне кажется для сиропов и тп, нужны отдельные краники и второй такой механизм...
Здорово.... Обязательно в несу в список "вещей, которые надо собрать до смерти".
Ссылки на авторов проекта, у которых брали технические идеи, будут? А главное, на авторов самой идеи?
Если вы хотите повторить данный проект, то советую посмотреть на Ютубе. AlexGyver недавно выпустил подобное видео. Наливатор - рассчитан на несколько рюмок, +в качестве корпуса - чемодан, то есть он ещё и переносной.
Не будет!) Ссылки на тех, кто придумал изобретать устройства? Если вы искали подобные проекты - поделитесь!
Недавно AlexGyver на Ютубе делал. Очень интересно, выше описал. И ещё много десятков других. Так что это не изобретение, а лишь проект.
Да, я посмотрел это видео. Этот проект и тот, на который вы дали "ссылку", делают совершенно разные вещи) Это как автобус и трактор. Вроде бы обе машины, но совершенно разные машины :D
Вроде бы никто и не говорил, что это изобретение))) В статье описано как на коленке это устройство придумывалось, дорабатывалось и тестировалось :D Какие проблемы встречались. И возможно кто-то возьмет и усовершенствует это. Добавит дисплей, заменит датчик расхода жидкости на датчик веса, реализует промывку трассы водой, когда в следующем коктейле нет ингредиента, остатки которого присутствуют в трассе.
Отличная тема для бизнеса!
Почти как в фильме "Пассажиры" 2016 года !
Жизнь иногда "догоняет" фантастику!
Надо помочь разработчику заработать на этом роботе денег !
Кто со мной - пишите в личку!
Некоторое время назад сам задумался о подобном проекте, показалось интересным в том числе и с коммерческой точки зрения.
С интересом обнаружил подобный проект двухлетней давности на кикстартере.
https://www.kickstarter.com/projects/barobot/barobot-a-cocktail-mixing-robot. Создатели смогли собрать чуть больше 20 т.дол. при запрашиваемых 120000, то есть денег никаких не получили. Но проект запустили сами и вроде аппарат даже продавался какое-то время. https://barobot.com/
Сейчас на сайте ничего нет. Что случилось, почему не выстрелило и другие нюансы обнаружить не смог. Какие версии?
Возьмите esp32 и не городите огород из контроллеров. Там Вам и JS будет работать и WiFi c блюпупом всё в одной мощной и недорогой железяке.
Да вот сейчас уже в курсе 😂 это мой первый опыт был. Пока колхозил это - многое почитал)