mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Projekt Robomix - automatisierter Cocktailmixer - Wie programmiere ich eine GUI?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Mario G. (nonam)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Hallo an alle,

ich bin schon seit einiger Zeit am Testen verschiedener Möglichkeiten um 
ein Gerät zu basteln, welches vollautomatisch Cocktails mixen kann. 
Dabei habe ich versucht ein Konzept zu finden, welches von der Hardware 
recht einfach ist. Ziel war es auch das System so zu entwickeln, dass 
alle Komponenten die mit dem Medium in Berührung kommen leicht zu 
reinigen sind (Beispielsweise im Geschirrspüler) oder aber sehr billig 
und leicht austauschbar.
Ich hab bereits Versuche gemacht und das funktioniert alles soweit!!

Eckdaten zum Versuchsaufbau:

- Halterung für 8. Flaschen
- 8 Silikonstöpsel Lebensmittelecht mit
+++ Durchgangsborhung 4mm Ausgang für Flüssigkeit
+++ Sacklochbohrung 3mm für LED um die Flasche zu beleuchten
+++ Loch mit Nähmaschinennadel für Jeansstoff durch den Silikonstopfen 
für die Luftzufuhr mittels Medizinkanüle
- 8m Lebensmittelsilikonschlauch ID=4mm AD=6mm für Flüssigkeitstransport
- ca. 4m Pneumatikschlauch ID=2mm AD=4mm
- jede Menge medizinische Kanülen mit stumpfen Ende
- 8 Stk. Magnetventil DN=1mm mit Spule 12V DC und 3W
- Versuchselektronik inkl. LED für Beleuchtung (nur für Prototyp)
- Verschiedenste Verschraubungen und Tüllen um die Leitungen zu 
verbinden

Das Ganze funktioniert so, dass in die Flaschen ein präparierter Stöpsel 
gesteckt wird. Dann wird die Flasche auf den Kopf gestellt. Durch die 
4mm Bohrung fließt jetzt NICHTS heraus. Der Grund dafür einfach erklärt 
ist, dass Luft in die Flasche muss damit Flüssigkeit herauskommt. Die 
Oberflächenspannung der Flüssigkeit aber in der Regel groß genug ist um 
zu verhindern, dass durch die 4mm Bohrung Luft eintreten kann während 
die Flüssigkeit austritt (hoffentlich plausibel und verständlich 
erklärt). Das kleine Loch, welches ich mit der Nähmaschinennadel gemacht 
habe ist quasi Dicht, ähnlich wie bei dem Ventil eines Fußballes.
Jetzt wird die Flasche auf der Halterung platziert. Die Halterung hat an 
der Stelle wo die Flasche aufgesteckt wird eine Kanüle welche durch das 
Loch der Nähmaschinennadel in die Flasche geführt wird. An der Kanüle 
hängt der Pneumatikschlauch und wieder daran ist das Ventil 
angeschlossen. An der 4mm Bohrung des Stopfens ist der Silikonschlauch, 
welcher das Getränk zum Glas führt. Schaltet man nun das Ventil so kann 
Luft durch das Ventil - Pneumatikschlauch - Kanüle in die Flasche und 
dadurch die Flüssigkeit ins Glas freigegeben werden.
Die Menge wird durch die Zeit des Ventil bestimmt. Dies ist keine mega 
genaue Geschichte, für Cocktails aber allemal ausreichend.


JETZT KOMMT DIE GESCHICHTE WO ICH EURE HILFE BRAUCHE!!!

Ich bin in der Lage einen Mikrocontroller zu programmieren. Auch einen 
Webserver kann ich darauf laufen lassen und damit Ausgänge toggeln oder 
Werte darstellen lassen, ABER:

Die Software soll Datenbanken für Rezepte, User und eventuell 
"Veranstaltungen" haben. Es sollten verschiedene Einstellungen machbar 
sein, wie Alterskontrolle bei Usern. Limits von Getränken bei Usern, 
durch Anzahl der Getränke, Alkoholpegel gemessen mit Alkomat oder 
Einschränkung nach erschöpften Guthaben.
Die ganze Oberfläche soll optisch sauber Aussehen.
Welche Hardware dafür verwendet wird ist eher Zweitrangig. Ich verwende 
die Hardware bei welcher ich es schaffe die Oberfläche zu Programmieren. 
Natürlich wenn ich die Wahl hätte sollte die Hardware so günstig als 
möglich sein :)
Mir ist bewusst, dass das sehr viel Programmierarbeit ist. Es soll 
sukzessive ausgebaut werden.

Die Anlage selbst stellt für mich keine Herausforderung dar. Bei diesem 
Projekt geht es mir um das erlernen und aneignen gewisser 
Programmierskills.

Vielleicht habt ihr Tipps/Anregungen wie ihr die Software realisieren 
würdet.


Sollten Fragen auftreten zur Anlage selbst werde ich natürlich Versuchen 
euch so gut es geht weiter zu Helfen :)

schöne Grüße
nonam

: Verschoben durch Moderator
Autor: Borislav B. (boris_b)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Wie wäre es denn mit einer Web-Tech-Lösung?

Z.B. ein Raspberry Pi Zero W (günstig!) als HW Platform.
Darauf ein nginx Webserver und Datenbank nach Wahl. Das Backend kannst 
du dann einer Sprache deiner Wahl schreiben (Node.js, Python, ASP .NET 
Core, etc.). Für das Frontend (GUI) kannst du dann HTML5, CSS und 
JavaScript benutzen.

So kann jeder mit seinem Smartphone per WLAN auf das System zugreifen. 
Alternativ kannst du auch ein Tablet irgendwo platzieren.


PS: Bei unserer Cocktailmaschine haben wir das auch so gelöst, hat super 
funktioniert. Wir konnten sogar eine Alexa damit koppeln (Bestellung per 
Sprache, yay!).

: Bearbeitet durch User
Autor: Stefanus F. (Firma: Äppel) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt da vier Ansätze, die hier immer wieder empfohlen werden:

1) Benutze ein Display mit integriertem Grafik-Controller. Dem kannst du 
seriell befehle schicken wie "Zeichne hier einen roten kreis", "Schreibe 
dort dex Text xyz hin", usw.

2) Benutze ein Punkt-Matrix Display und programmiere dir einen Wolf. Mit 
den üblichen Arduino/AVR Mikrocontrollern kommst du wegen Speicher- und 
Performance Mangel schnell an grenzen. Nutze lieber etwas mit einigen 
zig kB RAM und über 50MHz, dann wird die Arbeit viel entspannter.

3) Benutze einen ESP8266, welcher das Bedienfeld als Webseite erzeugt. 
Diese zeigst du dann auf einem Tablet oder Smartphone an.

4) Benutze einen Raspberry Pi mit oder ohne Web Browser, um das 
Bedienfeld auf einem HDMI Bildschirm anzuzeigen. Für die nicht-web 
Variante würde ich Dir dazu Qt (https://www.qt.io/) empfehlen.

Autor: Mario G. (nonam)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

danke für die Hinweiße.

Bin schon vor euren Nachrichten über die Lösung mit dem Raspberry Pi 
Zero gestoßen. Nach euren Empfehlungen hab ich mich mal etwas in das 
Thema eingelesen.

Ich komme aus dem Mechatronik-Bereich und kann dementsprechend mit 
Programmiersprachen wie C, C++, VHDL usw. umgehen. Auch das 
Programmieren verschiedenster SPS ist kein Problem. Um die ganze Sache 
mit Webservern zu starten muss ich erst die Programmiersprache kennen 
lernen. Ich hab auch schon einige Projekte gefunden.
Aber habt ihr vielleicht einen Tipp wie/wo ich den einen guten Guide 
finde der schon in die Richtung meines Projektes geht?

Autor: Stefanus F. (Firma: Äppel) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Um die ganze Sache mit Webservern zu starten muss ich erst die
> Programmiersprache kennen lernen.

Und HTML/CSS/Javascript lernen oder schon können.

> Aber habt ihr vielleicht einen Tipp wie/wo ich den einen guten Guide
> finde der schon in die Richtung meines Projektes geht?

Schränke die Auswahl mal etwas weiter ein, sonst bekommst du zu viele 
Empfehlungen. Du könntest damit anfangen, eine der 4 von mir genannten 
Ansätze zu wählen.

Autor: Der Andere (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Immer wieder kurz vor dem 1. Mai.
Entweder wird an einer Druckbetankung gebastelt, oder auch an einem 
möglichst elektrisch fahrbaren Bollerwagen mit maximaler 
Kreisch-Soundanlage

Autor: Mario G. (nonam)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefanus F. schrieb:
>> Um die ganze Sache mit Webservern zu starten muss ich erst die
>> Programmiersprache kennen lernen.
>
> Und HTML/CSS/Javascript lernen oder schon können.
>

HTML/CSS/Javascript muss erst noch gelernt werden.

>> Aber habt ihr vielleicht einen Tipp wie/wo ich den einen guten Guide
>> finde der schon in die Richtung meines Projektes geht?
>
> Schränke die Auswahl mal etwas weiter ein, sonst bekommst du zu viele
> Empfehlungen. Du könntest damit anfangen, eine der 4 von mir genannten
> Ansätze zu wählen.

Verwenden werde ich einen Raspberry Pi Zero mit HDMI Display. Die 
eingabe erfolgt aber nicht über Touchscreen, sondern über 
berührungsempfindliche Oberflächen am Gehäuse/Bildschirmrahmen. Der 
Aufbau ähnelt dem eines Bankomaten, nur eben mit Coktails anstelle von 
Bargeld :)


Bin weiterhin auch für neue Lösungsvorschläge offen. Andere Lösungswege 
würden mich brennend interessieren :D

Autor: Eric B. (beric)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Andere schrieb:
> Immer wieder kurz vor dem 1. Mai.
> Entweder wird an einer Druckbetankung gebastelt, oder auch an einem
> möglichst elektrisch fahrbaren Bollerwagen mit maximaler
> Kreisch-Soundanlage

Warum entweder/oder? Ich will einen autonom fahrenden elektrischen 
Bollerwagen mit WLAN-fähigem Druckbetankungsanlage! :-P

Autor: Dieter F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eric B. schrieb:
> Ich will einen autonom fahrenden elektrischen
> Bollerwagen

Als Ziel bitte eingeben:

 8.2397608 Grad Länge
50.0782184 Grad Breite

:-)

Autor: Der Andere (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieter F. schrieb:
> Als Ziel bitte eingeben:
>
>  8.2397608 Grad Länge
> 50.0782184 Grad Breite
>
> :-)

Ich sehe dich auf Google Streetview gar nicht?

Autor: Stefanus F. (Firma: Äppel) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für den Raspberry Pi mit "herkömmlicher" Bildschirmanzeige empfehle ich 
Dir immer noch Qt (https://www.qt.io/). Aber es gibt auch viele andere 
empfehlenswerte Frameworks zum Schreiben der GUI. Mit irgend einer muss 
man halt anfangen.

Dazu gibt es einen Wiki Artikel: https://wiki.qt.io/RaspberryPi

: Bearbeitet durch User
Autor: Dieter F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Andere schrieb:
> Ich sehe dich auf Google Streetview gar nicht?

Merkwürdig ... woran das wohl liegt?

Autor: Nikolaus S. (Firma: Golden Delicious Computers) (hns)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefanus F. schrieb:
> Es gibt da vier Ansätze, die hier immer wieder empfohlen werden:
>
> 1) Benutze ein Display mit integriertem Grafik-Controller. Dem kannst du
> seriell befehle schicken wie "Zeichne hier einen roten kreis", "Schreibe
> dort dex Text xyz hin", usw.
>
> 2) Benutze ein Punkt-Matrix Display und programmiere dir einen Wolf. Mit
> den üblichen Arduino/AVR Mikrocontrollern kommst du wegen Speicher- und
> Performance Mangel schnell an grenzen. Nutze lieber etwas mit einigen
> zig kB RAM und über 50MHz, dann wird die Arbeit viel entspannter.
>
> 3) Benutze einen ESP8266, welcher das Bedienfeld als Webseite erzeugt.
> Diese zeigst du dann auf einem Tablet oder Smartphone an.
>
> 4) Benutze einen Raspberry Pi mit oder ohne Web Browser, um das
> Bedienfeld auf einem HDMI Bildschirm anzuzeigen. Für die nicht-web
> Variante würde ich Dir dazu Qt (https://www.qt.io/) empfehlen.

5) Nimm ein Android-Tablet für 100€. Wenn es kaputt geht, das nächste...
Und schicke einfache Steuerbefehle per Bluetooth.

Für Android ist es am einfachsten Leute zu finden, die damit schon mal 
gearbeitet haben. Forumsempfehlung: https://android-developers.de/

: Bearbeitet durch User
Autor: Stefanus F. (Firma: Äppel) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 5) Nimm ein Android-Tablet ... Und schicke einfache Steuerbefehle per Bluetooth.

Ja sehr gut.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.