Оглавление:

CocktailMaker: 22 шага
CocktailMaker: 22 шага

Видео: CocktailMaker: 22 шага

Видео: CocktailMaker: 22 шага
Видео: Приказ комиссара. Warhammer 40k 2024, Июль
Anonim
Коктейльмейкер
Коктейльмейкер

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

Запасы

По делу

- МДФ толщиной 6мм

- 2 x 374 мм / 462 мм

- 2 x 280 мм / 462 мм

- 2 x 174 мм / 250 мм

- 1 x 162 мм / 250 мм

- 1 x 150 мм / 250 мм

- 1 x 180 мм / 162 мм

- 1 x 180 мм / 362 мм

- 1 x 362 мм / 100 мм

- 1 x 374 мм / 292 мм

- МДФ толщиной 12мм

- 1 x 374 мм / 292 мм

- 2 петли

- винты

- клей для дерева

Для электроники

- 1 x ЖК-дисплей 16x2

- 1 8-канальная релейная плата 5 В

- 1 блок питания 12 В постоянного тока 100 Вт

- 1 х Raspberry Pi 3B +

- Дозирующий насос 8 x 12 В постоянного тока

- 1 модуль расширения ввода / вывода PCA8574p I2C

- 1 макетная плата

- 1 резистор 330 Ом

- 2 резистора 470 Ом

- 1 х распределительный штекер

- 1 инфракрасный датчик предотвращения препятствий

- 1 х ультразвуковой модуль

- 1 магнитный дверной выключатель

- медная проволока

Дополнительный

- 1 х малая воронка

- 1 гибкая крышка nutella

- Гибкая трубка 8 м толщиной 4 мм

- 3 прищепки

- белая краска

- 1 коктейль-шейкер

Напитки

- 1 бутылка джина

- 1 бутылка рома

- 1 бутылка водки

- 1 бутылка текилы

- 1 флакон трипл-сек

- 1 бутылка сока лайма

- 1 бутылка простого сиропа

- 1 бутылка колы

(по желанию)

- 8 одинаковых бутылок

Шаг 1: рисование отверстий

Рисование отверстий
Рисование отверстий

Начнем с измерения и рисования необходимых отверстий на дереве.

  • передняя панель (374 мм / 462 мм)

    • На 6,5 см сверху, в центре панели рисуем прямоугольник размером с наш жк-дисплей.
    • внизу, в центре панели, рисуем прямоугольник высотой 25см и шириной 15см для двери.
  • задняя панель отсека электроники (362мм / 100мм)

    нарисуйте 8 раз поверхность насосов на этой панели, чтобы все насосы поместились

  • верхняя панель камеры шейкера (180 мм / 162 мм)

    • нарисуйте круговой круг размером с конец воронки в центре панели
    • На расстоянии 3 см от края короткой стороны нарисуйте форму двух отверстий, необходимых для размещения ультразвукового модуля.
    • в правом переднем углу нарисуйте крошечное отверстие на расстоянии 1 см с обеих сторон. Через него прошли два протянутых провода.
  • правая боковая панель камеры шейкера (174 мм / 250 мм)

    На расстоянии 10 см от низа (короткая сторона) нарисуйте два отверстия, необходимые для размещения инфракрасного датчика (в центре)

Шаг 2: Распиловка / сверление отверстий

Распиловка / сверление отверстий
Распиловка / сверление отверстий
Распиловка / сверление отверстий
Распиловка / сверление отверстий

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

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

Шаг 3: приклеивание корпуса

Приклеивание корпуса
Приклеивание корпуса
  • Для внешнего

    • Начните с приклеивания задней панели (самой большой) к нижней панели (толстой) под углом 90 градусов.
    • Добавьте стороны (2 x 280 мм / 462 мм).
    • Пока оставим переднюю и верхнюю часть открытыми.
  • для внутри

    • Начнем с изготовления камеры шейкера.

      • приклейте две стороны (2 x 174 мм / 250 мм) к задней панели (162 мм / 250 мм)
      • добавьте верхнюю панель (180 мм / 162 мм) с двумя отверстиями для ультразвукового модуля, обращенными к задней панели. Эта панель должна полностью закрывать стороны всех трех панелей.
  • для отсека электроники

    приклейте панель двигателя к нижней панели (362 мм / 180 мм)

  • приклейте камеру шейкера к центру передней части машины (оставьте 6 мм для передней панели.
  • приклейте отсек электроники в верхней части машины, на расстоянии 6 мм от передней части. Моторная панель должна быть обращена к задней панели.

Шаг 4: Схема

Схема
Схема
Схема
Схема

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

Шаг 5: Пайка насосов

Пайка насосов
Пайка насосов

Убедитесь, что все заземления подключены. Таким образом, мы можем легко подключить их к заземлению источника питания.

Шаг 6: Подключение релейной платы к насосам

Подключение релейной платы к насосам
Подключение релейной платы к насосам
  • Подключите все COM на релейной плате, чтобы мы могли легко подключить их к 12 В источника питания.
  • Подключите каждый НО на релейной плате к другому насосу (+).

Шаг 7: Добавьте блок питания и Raspberry Pi

Добавьте блок питания и Raspberry Pi
Добавьте блок питания и Raspberry Pi

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

  • подключите релейную плату вот так

    • 5V к контакту 5V на Raspberry Pi
    • GND к GND на Raspberry Pi
    • каждый IN к контакту GPIO на Raspberry Pi
  • соедините серию контактов GND насосов с 0 В источника питания, а серию COM на релейной плате с 12 В источника питания.
  • Теперь, если вы запустите простой скрипт, который активирует все подключенные контакты GPIO, вы можете проверить свою пайку и исправить любые ошибки, прежде чем в отсеке появится много проводов. Все насосы должны запуститься

Шаг 8: Добавьте инфракрасный датчик

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

    • подключите VDD к 3.3V на Raspberry Pi
    • подключите GND к GND на Raspberry Pi
    • поместите небольшой кусок картона между приемником и передатчиком
    • поместите шейкер примерно в 5 см от датчика
    • возьмите отвертку и поверните триммер вверху, пока не погаснет светодиод OUT.
    • протестируйте, переместите шейкер вперед и назад и посмотрите, реагирует ли датчик на движения. (светодиод OUT должен загореться и погаснуть).
    • при необходимости повторить.
  • вставьте приемник и передатчик через проделанные ранее отверстия.
  • подключите вывод OUT к выводу GPIO на Raspberry Pi.

Шаг 9: Подключите ультразвуковой модуль

Подключите ультразвуковой модуль
Подключите ультразвуковой модуль
Подключите ультразвуковой модуль
Подключите ультразвуковой модуль
  • вставьте модуль в отверстия в верхней части камеры шейкера, которые мы сделали ранее.
  • подключите VCC к пяти вольтам на Raspberry Pi.
  • подключите триггер к контакту GPIO
  • сделайте делитель напряжения между GND и эхом (как показано на картинке)
  • подключите GDN к GND raspberry pi.
  • подключите эхо к контакту GPIO

Если вы не понимаете, что я имею в виду под делителем напряжения, взгляните еще раз на схемы. он обеспечивает снижение эхо-сигнала 5 В до 3,3 В.

Шаг 10: Установите дверь

Установить дверь
Установить дверь
Установить дверь
Установить дверь
  • Используйте маленькие винты, чтобы прикрепить петли к двери и к передней панели.
  • отверстие размером с палец, чтобы было легче открыть дверь.

Шаг 11: Установите дверной выключатель

Установите дверной выключатель
Установите дверной выключатель
Установить дверной выключатель
Установить дверной выключатель

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

Шаг 12: сделайте держатель для пробирок

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

Шаг 13: вставьте воронку

Вставьте воронку
Вставьте воронку
  • поместите воронку в последнее отверстие в верхней панели камеры шейкера.
  • поместите держатель для пробирок в воронку и закрепите прищепками.

Шаг 14: прикрепите трубки к насосу

Присоедините трубки к насосу
Присоедините трубки к насосу

присоедините другую сторону трубок к дозирующей стороне насосов.

Шаг 15: вырезание трубок для бутылок

Трубки для резки бутылок
Трубки для резки бутылок
Трубки для резки бутылок
Трубки для резки бутылок
Трубки для резки бутылок
Трубки для резки бутылок
Трубки для резки бутылок
Трубки для резки бутылок

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

Шаг 16: Добавьте распределительный штекер

Добавить распределительный штекер
Добавить распределительный штекер
Добавить распределительный штекер
Добавить распределительный штекер
  • отрежьте штекер разъема
  • просверлите отверстие сбоку отсека электроники
  • проденьте кабель в отверстие
  • снова вставьте штекер разъема

Шаг 17: Подключите ЖК-дисплей

Подключите ЖК
Подключите ЖК
  • подключите ЖК-дисплей, как показано на схемах
  • используйте расширитель ввода-вывода I2C, потому что контактов GPIO не хватит
  • это единственный раз, когда нам нужен небольшой макет

Шаг 18: приклейте переднюю панель

Теперь, когда ЖК-дисплей (наш последний компонент) подключен, мы можем приклеить переднюю панель к нашей машине.

Шаг 19: Покраска

Рисование
Рисование
Рисование
Рисование
Рисование
Рисование
Рисование
Рисование

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

Шаг 20: заполните машину

Наполните машину
Наполните машину

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

Шаг 21: Создайте базу данных

Создать базу данных
Создать базу данных
Создать базу данных
Создать базу данных

подключитесь к raspberry pi и создайте базу данных.

СОЗДАТЬ БАЗУ ДАННЫХ, ЕСЛИ НЕ СУЩЕСТВУЕТ `cocktailmaker` / *! 40100 НАБОР СИМВОЛОВ ПО УМОЛЧАНИЮ utf8 * /; ИСПОЛЬЗУЙТЕ` cocktailmaker`; - Дамп MySQL 10.13 Distrib 5.7.17, для Win64 (x86_64) - - Хост: 127.0.0.1 База данных: cocktailmaker - --------------------- --------------------------------- - Версия сервера 5.7.20-log

/ *! 40101 SET @OLD_CHARACTER_SET_CLIENT = @@ CHARACTER_SET_CLIENT * /;

/ *! 40101 SET @OLD_CHARACTER_SET_RESULTS = @@ CHARACTER_SET_RESULTS * /; / *! 40101 SET @OLD_COLLATION_CONNECTION = @@ COLLATION_CONNECTION * /; / *! 40101 УСТАНОВИТЬ ИМЕНА utf8 * /; / *! 40103 SET @OLD_TIME_ZONE = @@ TIME_ZONE * /; / *! 40103 SET TIME_ZONE = '+ 00:00' * /; / *! 40014 SET @OLD_UNIQUE_CHECKS = @@ UNIQUE_CHECKS, UNIQUE_CHECKS = 0 * /; / *! 40014 SET @OLD_FOREIGN_KEY_CHECKS = @@ FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS = 0 * /; / *! 40101 SET @OLD_SQL_MODE = @@ SQL_MODE, SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO' * /; / *! 40111 SET @OLD_SQL_NOTES = @@ SQL_NOTES, SQL_NOTES = 0 * /;

--

- Структура стола для стола `cocktaillogboek` -

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ `cocktaillogboek`;

/ *! 40101 SET @saved_cs_client = @@ character_set_client * /; / *! 40101 SET character_set_client = utf8 * /; СОЗДАТЬ ТАБЛИЦУ `cocktaillogboek` (` id_cocktail_log` int (11) NOT NULL AUTO_INCREMENT, `aantal` tinyint (4) DEFAULT NULL,` datum` datetime DEFAULT CURRENT_TIMESTAMP, `cocktail_id` int (11) NOT NULL, PRIMARY KEY (` id_log`, `cocktail_id`), KEY` fk_Cocktaillogboek_Cocktails1_idx` (`cocktail_id`), CONSTRAINT` fk_Cocktaillogboek_Cocktails1` FOREIGN KEY (`cocktail_id`) ССЫЛКИ` cocktails ENGO` (`id_cocktail NOTION`) ВКЛ. 5 ДИАГРАММА ПО УМОЛЧАНИЮ = utf8; / *! 40101 SET character_set_client = @saved_cs_client * /;

--

- Дамп данных для таблицы `cocktaillogboek` -

ЗАПИСАТЬ ТАБЛИЦЫ `cocktaillogboek`;

/ *! 40000 ALTER TABLE `cocktaillogboek` ОТКЛЮЧИТЕ КЛЮЧИ * /; ВСТАВИТЬ `cocktaillogboek` ЗНАЧЕНИЯ (1, 1, '2019-05-31 18:06:24', 1), (2, 1, '2019-05-31 18:06:24', 2), (3, 2, '2019-05-31 18:06:24', 1), (4, 2, '2019-05-31 18:06:24', 2); / *! 40000 ALTER TABLE `cocktaillogboek` ENABLE KEYS * /; РАЗБЛОКИРОВАТЬ ТАБЛИЦЫ;

--

- Структура стола для стола `коктейли` -

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ «коктейли»;

/ *! 40101 SET @saved_cs_client = @@ character_set_client * /; / *! 40101 SET character_set_client = utf8 * /; СОЗДАТЬ ТАБЛИЦУ `cocktails` (` id_cocktail` int (11) NOT NULL AUTO_INCREMENT, `naam_cocktail` tinytext,` code_cocktail` varchar (45) DEFAULT NULL, `inhoud_cocktail` float DEFAULT NULL, PRIMARY KEY (` id_cocktail` KEY), code_cocktail_UNIQUE` (`code_cocktail`)) ENGINE = InnoDB AUTO_INCREMENT = 3 DEFAULT CHARSET = utf8; / *! 40101 SET character_set_client = @saved_cs_client * /;

--

- Дамп данных для стола `коктейли` -

ЗАМОК СТОЛОВ `коктейли` НАПИСАТЬ;

/ *! 40000 ALTER TABLE `cocktails` DISABLE KEYS * /; ВСТАВИТЬ ЦЕННОСТИ «коктейлей» (1, «чай со льдом Лонг-Айленд», «1q3n2q3n3q3n4q3n5q3x6q3n8q2», 20), (2, «текила санрайз», «2q5x7q5x9q3», 13); / *! 40000 ALTER TABLE `cocktails` ENABLE KEYS * /; РАЗБЛОКИРОВАТЬ ТАБЛИЦЫ;

--

- Структура стола для стола `dranken` -

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ `dranken`;

/ *! 40101 SET @saved_cs_client = @@ character_set_client * /; / *! 40101 SET character_set_client = utf8 * /; СОЗДАТЬ ТАБЛИЦУ `dranken` (` id_drank` int (11) NOT NULL AUTO_INCREMENT, `naam_drank` tinytext,` tijd_per_centiliter` float DEFAULT NULL, `inhoud_drank` float DEFAULT NULL,` pomp_drank` tinyint (4) DEFAULT NULL, `pomp_drank` tinyint (4) id_drank`)) ДВИГАТЕЛЬ = InnoDB AUTO_INCREMENT = 12 СИМВОЛЫ ПО УМОЛЧАНИЮ = utf8; / *! 40101 SET character_set_client = @saved_cs_client * /;

--

- Выгрузка данных для таблицы `dranken` -

ЗАМОК СТОЛОВ `Dranken` WRITE;

/ *! 40000 ALTER TABLE `dranken` ОТКЛЮЧИТЬ КЛЮЧИ * /; ВСТАВИТЬ В ЦЕННОСТИ `dranken` (1, 'джин', 20, 70, 1), (2, 'текила', 20, 70, 2), (3, 'водка', 20, 70, 3), (4, 'трипл сек', 20, 70, 4), (5, 'ром', 20, 70, 5), (6, 'виски', 20, 70, NULL), (7, 'кола', 15, 100, 6), (8, 'sinaasappelsap', 25, 100, 7), (9, 'limoensap', 20, 100, 8), (10, 'grenadine', 30, 100, 9), (11, suikersiroop, 30, 100, 10); / *! 40000 ALTER TABLE `dranken` ENABLE KEYS * /; РАЗБЛОКИРОВАТЬ ТАБЛИЦЫ;

--

- Структура таблицы для таблицы `dranken_cocktails` -

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ `dranken_cocktails`;

/ *! 40101 SET @saved_cs_client = @@ character_set_client * /; / *! 40101 SET character_set_client = utf8 * /; СОЗДАТЬ ТАБЛИЦУ `dranken_cocktails` (` Dranken_id_drank` int (11) NOT NULL, `Cocktail_id_cocktail` int (11) NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (` Dranken_id_drank`, `Cocktail_id_cocktail`), KEY` fk_Docktail_d_cocktail` (`` коктейль_для``) fk_Dranken_has_Cocktail_Dranken1_idx` (`Dranken_id_drank`), скованность` fk_Dranken_has_Cocktail_Cocktail1` FOREIGN KEY (`Cocktail_id_cocktail`) ЛИТЕРАТУРА` cocktails` (`id_cocktail`) ON DELETE NO ACTION ON UPDATE NO ACTION, скованность` fk_Dranken_has_Cocktail_Dranken1` FOREIGN KEY (`Dranken_id_drank`) ЛИТЕРАТУРЫ` dranken` (`id_drank`) ПРИ УДАЛЕНИИ НЕТ ДЕЙСТВИЙ ПРИ ОБНОВЛЕНИИ НЕТ ДЕЙСТВИЙ) ENGINE = InnoDB DEFAULT CHARSET = utf8; / *! 40101 SET character_set_client = @saved_cs_client * /;

--

- Выгрузка данных для таблицы `dranken_cocktails` -

ЗАПИСАТЬ ТАБЛИЦЫ `dranken_cocktails`;

/ *! 40000 ALTER TABLE `dranken_cocktails` ОТКЛЮЧИТЬ КЛЮЧИ * /; / *! 40000 ALTER TABLE `dranken_cocktails` ENABLE KEYS * /; РАЗБЛОКИРОВАТЬ ТАБЛИЦЫ;

--

- Структура стола для стола `softs` -

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ `softs`;

/ *! 40101 SET @saved_cs_client = @@ character_set_client * /; / *! 40101 SET character_set_client = utf8 * /; СОЗДАТЬ ТАБЛИЦУ `softs` (` bruisend_drank` tinyint (4) ПО УМОЛЧАНИЮ NULL, `drank_id` int (11) NOT NULL, KEY` fk_Softs_Dranken1_idx` (`drank_id`), CONSTRAINT` fk_Softs_Dranken1` FOREIGN KEY `(` id_drank`) ПРИ УДАЛЕНИИ НЕТ ДЕЙСТВИЙ ПРИ ОБНОВЛЕНИИ НЕТ ДЕЙСТВИЙ) ENGINE = InnoDB DEFAULT CHARSET = utf8; / *! 40101 SET character_set_client = @saved_cs_client * /;

--

- Выгрузка данных для таблицы `softs` -

БЛОКИРОВКА ТАБЛИЦ `soft` WRITE;

/ *! 40000 ALTER TABLE `softs` ОТКЛЮЧИТЕ КЛЮЧИ * /; ВСТАВИТЬ В 'softts' ЗНАЧЕНИЯ (1, 7), (0, 8), (0, 9), (0, 10), (0, 11); / *! 40000 ALTER TABLE `softs` ENABLE KEYS * /; РАЗБЛОКИРОВАТЬ ТАБЛИЦЫ;

--

- Структура таблицы для стола `духи` -

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ `spirits`;

/ *! 40101 SET @saved_cs_client = @@ character_set_client * /; / *! 40101 SET character_set_client = utf8 * /; СОЗДАТЬ ТАБЛИЦУ `spirits` (`cohol_percentage_drank` tinytext,` soort_drank` tinytext, `drank_id` int (11) NOT NULL, KEY` fk_Spirits_Dranken_idx` (`drank_id`), CONSTRAINT` fk_Spirits` FOREFRENCES `dranken`) `(` id_drank`) ПРИ УДАЛЕНИИ НЕТ ДЕЙСТВИЙ ПРИ ОБНОВЛЕНИИ НЕТ ДЕЙСТВИЙ) ENGINE = InnoDB DEFAULT CHARSET = utf8; / *! 40101 SET character_set_client = @saved_cs_client * /;

--

- Выгрузка данных для таблицы `spirits` -

ЗАПИСАТЬ ТАБЛИЦЫ `духи`;

/ *! 40000 ALTER TABLE `spirits` ОТКЛЮЧИТЕ КЛЮЧИ * /; ВСТАВИТЬ В `spirits` ЗНАЧЕНИЯ ('40', 'джин', 1), ('35', 'текила', 2), ('37,5', 'водка', 3), ('40', 'трипл сек ', 4), ('37,5', 'ром', 5), ('37,5 ',' виски ', 6); / *! 40000 ALTER TABLE `spirits` ENABLE KEYS * /; РАЗБЛОКИРОВАТЬ ТАБЛИЦЫ;

--

- Дамп событий для базы данных «коктейльщик» -

--

- Дамп подпрограмм для базы данных 'cocktailmaker' - / *! 40103 SET TIME_ZONE = @ OLD_TIME_ZONE * /;

/ *! 40101 SET SQL_MODE = @ OLD_SQL_MODE * /;

/ *! 40014 SET FOREIGN_KEY_CHECKS = @ OLD_FOREIGN_KEY_CHECKS * /; / *! 40014 SET UNIQUE_CHECKS = @ OLD_UNIQUE_CHECKS * /; / *! 40101 SET CHARACTER_SET_CLIENT = @ OLD_CHARACTER_SET_CLIENT * /; / *! 40101 SET CHARACTER_SET_RESULTS = @ OLD_CHARACTER_SET_RESULTS * /; / *! 40101 SET COLLATION_CONNECTION = @ OLD_COLLATION_CONNECTION * /; / *! 40111 SET SQL_NOTES = @ OLD_SQL_NOTES * /;

- Дамп завершен 2019-06-03 14:56:53

Шаг 22: написание кода

Написание кода
Написание кода

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

Вот ссылка на код.

Рекомендуемые: