Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan

Komponenten und Zubehör

Komponente Anzahl
SparkFun Arduino Pro Mini 328 - 3,3V/8MHz 7
SparkFun Load Cell Amplifier - HX711 1
Leviton 47603-12B 4x12 Telefonverteilerplatine 1
Raspberry Pi 2 Model B 1
AC 100-120V / 200-220V auf 5V 6A 30W Schaltnetzteil 1
IR-Bewegungsmelder 1
10,6 cu. ft. Gefriertruhe (ca. 300 Liter) 1
Smart Weight Digitales Briefwaagen-Modul 5
Rii K12 Ultra Slim 2,4 GHz Tastatur 1
Raspberry Pi WiFi Dongle 1
Arduino DC 5V Relais-Modul 1
DHT11 Temperatur- & Feuchtigkeitssensor (4 Pins) 2
DHT22 Temperatursensor 3
HomeBrewStuff Edelstahl-Doppel-Zapfhahn-Tower 2
Bier-Tower-Kühler 1
0-30 PSI I2C Drucksensor (3,3V) ABPMANN030PG2A3 1

Benötigte Werkzeuge und Maschinen

Projektbeschreibung

Hinweis: Dieses Projekt fördert keineswegs den Konsum oder Missbrauch von Alkohol. Die Befüllung des Kegerators liegt vollständig in der Verantwortung des Nutzers.

Das Projekt entstand aus dem Wunsch, den Inhalt eines Kegerators besser zu verwalten. Ein Kegerator funktioniert nach dem Prinzip, Getränke kalt zu halten und sie mit einem bestimmten CO₂-Druck karbonisiert zu halten. Beim Zapfen hat man jedoch keine Ahnung, wie viel noch im Fass ist – peinlich, wenn beim Sonntagsspiel das Root Beer zur Hälfte ausgeht.

Ziele des Projekts:

  1. Konstante Getränketemperatur halten – nicht zu warm, nicht gefroren
  2. Optimale Karbonisierung (PSI) für besten Geschmack sicherstellen
  3. Füllstand jedes Fasses erfassen und visuell anzeigen – rechtzeitige Nachschub-Planung
  4. CO₂-Restmenge im Druckbehälter überwachen

Kernkomponenten und ihre Funktion:

  1. Gefriertruhe als Kühleinheit und Möbelrahmen
  2. Raspberry Pi 2 mit Windows 10 IoT Core als Zentraleinheit
  3. 5 Briefwaagen (Elektronik entfernt, mit HX711-Lastzellenverstärker und kleinem Arduino bestückt) zur Gewichtsmessung jedes Fasses und des CO₂-Tanks. Kommunikation mit Pi via I²C.
  4. 5 digitale Temperatursensoren: Boden der Truhe, Unterseite des Deckels, je einer in den Zapftürmen, einer außen für Umgebungstemperatur. An einem kleinen Arduino, Kommunikation via I²C zum Pi.
  5. Honeywell I²C-Drucksensor (0–30 PSI) an den CO₂-Leitungen – präzise Anzeige des Karbonisierungsdrucks (Einstellung vorerst manuell).
  6. 5V/6A Netzteil für Pi und adressierbaren LED-Strip.
  7. Relais in der Kompressor-Zuleitung – Pi schaltet Kompressor ein/aus zur Temperaturregelung.

Cloud-Konnektivität

Der Ultimate Kegerator enthält einen Webserver für Remote-Konfiguration per REST und Statusanzeige. Erreichbar unter https://slsys.homeip.net:9501.

Zusätzlich sendet er Vitaldaten an einen Windows Azure Event Hub. Standard-NuGet-Pakete funktionieren hier nicht; nutzen Sie die leicht implementierbare Bibliothek von Windows Embedded MVP Paolo Patierno: AzureSBLite.

Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan

Verarbeitung via Stream Analytics:

Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan

Geplante Stream-Analytics-Regeln:

  1. Alarm bei zu hoher/niedriger Temperatur
  2. Alarm bei niedrigem CO₂-Stand
  3. Leckage-Erkennung durch graduellen Gewichtsverlust am CO₂-Tank

Baufortschritt – Bilder

Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan
Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan
Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan
Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan
Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan
Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan
Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan
Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan
Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan
Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan
Ultimativer DIY-Kegerator: Komplettanleitung mit Komponenten & Bauplan

– twb

Quellcode (Vorschau – C#)

Vorschau des Codes vor vollständiger Veröffentlichung auf GitHub. Für Early Access oder Mitwirkung kontaktieren Sie den Autor.

Keg-Klasse (Fass-Verwaltung)

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; } }

        // ... Properties (QtyRemaining, InstallDate, PercentFull, PercentFullDisplay, PercentFullHeight, KegIndex)
        // ... Entered Properties (IsEmpty, GlassSizeOz, BornDate, ContainerWeightLb, ContentsWeight, FullContentsWeightLb, ContentsName)

        public void Save() {
            // Speichert alle Einstellungen in Windows.Storage.ApplicationData
        }

        public void Load() {
            // Lädt alle Einstellungen
        }

        public async void SaveFullWeight() {
            FullContentsWeightLb = await Scale.GetAverageWeight();
            Save();
        }

        public RelayCommand SaveFullWeightCommand { get { return new RelayCommand(() => SaveFullWeight()); } }
    }
}

Scale-Klasse (Waagen-Ansteuerung via I²C)

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; }

        private void WriteValue(byte address, int value) { /* I²C Write */ }

        public async Task Init(String i2cDeviceId, TimeSpan updateInterval) { /* I²C Initialisierung */ }

        private int GetRaw() { /* Rohwert von HX711 lesen */ }

        public override void Refresh() { /* Gewicht berechnen, Status aktualisieren */ }

        const int CALIBRATION_COUNT = 10;

        public async void StoreOffset() { /* Nullpunkt (Tara) speichern */ }
        public async void Calibrate() { /* Kalibrierung mit bekanntem Gewicht */ }
        public async Task GetAverageWeight(int pointCount = 5) { /* Mittelwertbildung */ }

        // ... Properties & Commands (ZeroCommand, CalibrationCommand)
    }
}

Kegerator-Klasse (Hauptsteuerung)

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 {
        // Singleton-Instanz, Initialisierung aller Sensoren, Skalen, Kegs, CO2-Tank, Drucksensor, LED-Manager, REST-Server, EventHub-Client
        // Timer-basiertes Refresh aller Geräte alle 250ms
        // Webserver auf Port 9500, REST-API für Zero/Kalibrierung der Waagen
    }
}

Schaltplan

High-Level-Systemkomponentendiagramm (siehe Originalprojekt für detaillierte Verdrahtung)

Herstellungsprozess

  1. KI-gestütztes Hindernisvermeidungssystem mit Arduino und Ultraschallsensoren
  2. Interaktives Gyroskop-LED-Display mit NeoPixel-Ring & Arduino
  3. DIY Arduino USB Gaming Controller – Bauen Sie Ihren eigenen High-Performance Gamepad
  4. DIY Wolken-Kostüm: LED-Streifen, Arduino Nano & SparkFun Teile
  5. Industrieroboter für Materialtransport – Linienfolger mit RFID & Ultraschall
  6. Pixie: DIY NeoPixel-Armbanduhr mit Arduino Pro Mini – Schick & Selbstgebaut
  7. Smarte Arduino-Trinkflasche: Echtzeit-Überwachung & Trinkerinnerung
  8. DIY Schattentheater mit Arduino 101 & adressierbarem LED-Strip (Blynk-Steuerung)
  9. Tragbares Überwachungs-Roboter-System mit Raspberry Pi & Android-App
  10. Spitzen-Draht-EDM-Maschinen: Präzisionsschneidlösungen aus Taiwan