Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Ультимативный DIY Кегератор: полное руководство по компонентам и сборке

Компоненты и материалы

Компонент Количество
Arduino Pro Mini 328 — 3.3V/8MHz (SparkFun) 7
Усилитель тензодатчика HX711 (SparkFun) 1
Распределительная плата Leviton 47603-12B 4x12 1
Raspberry Pi 2 Model B 1
Блок питания AC 100-220V → 5V 6A 30W 1
Датчик движения IR 1
Морозильная камера 10.6 куб. фут (coffre) 1
Цифровые почтовые весы Smart Weight 5
Клавиатура Rii K12 Ultra Slim 2.4 GHz 1
WiFi-адаптер для Raspberry Pi 1
Модуль реле 5V (Arduino) 1
Датчик температуры/влажности DHT11 (4 пина) 2
Датчик температуры DHT22 3
Два стойки для крана из нержавейки (HomeBrewStuff) 2
Охладитель башни для крана 1
Датчик давления I2C 0-30 PSI (3.3V) ABPMANN030PG2A3 1

Необходимые инструменты

О проекте

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

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

Цели проекта:

  1. Поддерживать постоянную температуру напитков, предотвращать перегрев или замерзание
  2. Обеспечивать оптимальный уровень карбонатизации для лучшего вкуса
  3. Отслеживать количество напитка в каждом кеге и давать наглядную обратную связь
  4. Контролировать остаток CO₂ в баллоне для карбонатизации

Основные электронные компоненты и их назначение:

  1. Морозильная камера (coffre) — используется как охлаждающий блок и рама для создания мебели
  2. Raspberry Pi 2 на Windows 10 IoT Core — «мозг» системы
  3. Почтовые весы (5 шт.) — измеряют вес каждого кега и баллона CO₂. Электроника весов заменена на усилитель тензодатчика HX711 и мини-Arduino. Обмен с Raspberry Pi по I2C
  4. 5 цифровых датчиков температуры — на дне камеры, на нижней стороне крышки, в каждой башне крана (2 шт.) и снаружи для ambiente. Подключены к отдельному Arduino, обмен по I2C
  5. Датчик давления Honeywell — на воздушных линиях карбонатизации. Регулировка PSI пока ручная, но датчик даёт точное показание давления
  6. Блок питания 5V 6A — питание Raspberry Pi 2, запас мощности для адресной LED-ленты
  7. Реле в разрыве питания компрессора — позволяет включать/выключать компрессор для управления температурой

Облачная связь

Ultimate Kegerator содержит веб-сервер для удалённой настройки через REST-сервисы и простого просмотра статуса. Доступен по адресу: https://slsys.homeip.net:9501.

Кроме того, устройство отправляет телеметрию в Windows Azure Event Hub. Стандартный NuGet-пакет для Event Hub не подойдёт, нужна легкая библиотека от Windows Embedded MVP Paolo Patierno: AzureSBLite.

Ультимативный DIY Кегератор: полное руководство по компонентам и сборке
Ультимативный DIY Кегератор: полное руководство по компонентам и сборке

Планы для Stream Analytics:

  1. Мониторинг и уведомления при выходе температуры за норму
  2. Уведомления при низком уровне CO₂
  3. Обнаружение утечки CO₂ (постепенное снижение веса баллона)

Фотографии сборки

Ультимативный DIY Кегератор: полное руководство по компонентам и сборке
Ультимативный DIY Кегератор: полное руководство по компонентам и сборке
Ультимативный DIY Кегератор: полное руководство по компонентам и сборке
Ультимативный DIY Кегератор: полное руководство по компонентам и сборке
Ультимативный DIY Кегератор: полное руководство по компонентам и сборке
Ультимативный DIY Кегератор: полное руководство по компонентам и сборке
Ультимативный DIY Кегератор: полное руководство по компонентам и сборке
Ультимативный DIY Кегератор: полное руководство по компонентам и сборке
Ультимативный DIY Кегератор: полное руководство по компонентам и сборке
Ультимативный DIY Кегератор: полное руководство по компонентам и сборке
Ультимативный DIY Кегератор: полное руководство по компонентам и сборке

Код (C# — превью перед публикацией на GitHub)

Класс Keg

using LagoVista.Common.Commanding;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.UI.Xaml;

namespace LagoVista.IoT.Common.Kegerator.Models {
    public class Keg : DeviceBase {
        int _idx;
        TimeSpan _updateInterval;
        private Scales.Scale _scale;
        
        public Keg(int idx, Scales.Scale scale, TimeSpan updateInterval) {
            _idx = idx;
            _updateInterval = updateInterval;
            _scale = scale;
        }
        
        public override TimeSpan UpdateInterval { get { return _updateInterval; } }
        
        public override void Refresh() {
            LastUpdated = DateTime.Now;
            LagoVista.Common.PlatformSupport.Services.DispatcherServices.Invoke(() => {
                ContentsWeight = Scale.Weight - ContainerWeightLb;
                if (FullContentsWeightLb > 0)
                    PercentFull = Convert.ToInt32((ContentsWeight / (FullContentsWeightLb - ContainerWeightLb)) * 100);
                else
                    PercentFull = 0;
                PercentFull = Math.Min(PercentFull, 100);
                if (GlassSizeOz > 0)
                    QtyRemaining = Convert.ToInt32((ContentsWeight * 16) / GlassSizeOz);
                else
                    QtyRemaining = 0;
                RaisePropertyChanged("PercentFullHeight");
                RaisePropertyChanged("PercentFullDisplay");
            });
        }
        
        public Scales.Scale Scale { get { return _scale; } }
        
        // ... свойства, методы Save/Load, команды ...
    }
}

Класс Scale

using LagoVista.Common.Commanding;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Devices.I2c;

namespace LagoVista.IoT.Common.Kegerator.Scales {
    public class Scale : DeviceBase {
        Windows.Devices.I2c.I2cDevice _scaleI2CChannel;
        int _countOffset;
        double? _calibrationFactor = null;
        private TimeSpan _updateInterval;
        byte _address;
        
        public Scale(byte address) { _address = address; }
        
        // ... методы инициализации I2C, чтения веса, калибровки, обнуления ...
    }
}

Класс Kegerator (главный контроллер)

using LagoVista.Common.Commanding;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using Windows.Devices.Enumeration;
using Windows.Devices.I2c;

namespace LagoVista.IoT.Common.Kegerator {
    public class Kegerator : INotifyPropertyChanged {
        // ... синглтон, инициализация всех устройств (температура, весы, давление, CO2, кеги),
        // таймер обновления, веб-сервер REST, отправка в Azure Event Hub ...
    }
}

Схемы

Высокоуровневая диаграмма компонентов системы

Производственный процесс

  1. Система избегания препятствий с ИИ (Q-learning) на Arduino и ультразвуковых датчиках
  2. Интерактивный гироскопический LED-дисплей на NeoPixel Ring и Arduino
  3. DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
  4. DIY-костюм «Облако»: LED-лента, Arduino Nano и детали SparkFun
  5. Промышленный робот-линейный следователь для транспортировки материалов
  6. Pixie: DIY-наручные часы на Arduino Pro Mini и NeoPixel — стильный светодиодный тахометр времени
  7. Умная бутылка для воды на Arduino: мониторинг и напоминания в реальном времени
  8. DIY Теневой театр на Arduino и адресной LED-ленте: световое шоу к праздникам
  9. Переносная система видеонаблюдения: робот с камерой на Raspberry Pi и Arduino
  10. Лучшие станки с проволочной ЭРО: решения точной резки из Тайваня