zurück zum Artikel

CoffeeGuard, die Kaffee-Tab-Waage

Ramon Hofer Kraner

Die Kaffee-Tab-Waage aus Make 3/22

(Bild: Ramon Hofer Kraner)

Wenn man den Kaffee am meisten braucht, sind die Pads alle: Dieser elektronische Kaffee-Wächter warnt rechtzeitig. Hier lesen Sie alles über die Software.

Das Zählen von Teilen über ihr Gewicht ist eine altbewährte Methode und wird auch in der Industrie rege benutzt, zum Beispiel beim Zählen von Schrauben, Unterlegscheiben oder ähnlichen Teilen. Die Herausforderung dabei besteht eigentlich einzig im Installieren einer genügend genauen Waage. Denn wenn die Genauigkeit nicht genügend fein ist, dann kann nicht zuverlässig gezählt werden. Logisch.

Die Waage im Artikel in der Make 3/22 [1] soll beim lebensbedrohlichen Unterschreiten der Mindestmenge an Kaffeepads per E-Mail oder über MQTT (Message Queuing Telemetry Transport) auf sich aufmerksam machen . Die Person(en), die für das Auffüllen verdonnertwurde(n), haben dann genügend Zeit zu handeln.

Die Bauanleitung haben Sie bereits im oben genannten Artikel gefunden. Hier geht es jetzt um die Software, die den lebenswichtigen Kaffee-Pad-Mindestbestand sichert: Die Waage ist so programmiert, dass sie in regelmässigen Abständen Nachrichten mit dem aktuellen Padbestand absetzt. Zusätzlich werden bei Unterschreiten eines kritischen Levels E-Mails gesendet. Werden dann wieder Pads aufgefüllt, wird ebenfalls eine E-Mail mit der Entwarnung versendet. Man will ja schliesslich nicht vergebens nachfüllen, wenn der Kollege oder die Kollegin dies schon erledigt hat.

Make 3/22

Die regelmässigen Nachrichen werden als MQTT-Messages versandt. Installiert man sich einen MQTT-Client auf dem Smartphone, kann man live mitverfolgen, wie der Kaffee langsam aber sicher zur Neige geht. Das mag vielleicht beim einen oder andern als Stress empfunden werden, dafür hat man immer im Blick, ob die Waage noch funktioniert.

Mehr von Make Mehr von Make [5]

Der ESP8266 in der Waage wird über die Arduino IDE programmiert. Falls Sie noch nie in diser Kombination gearbeitet haben, lesen Sie zunächst die Anleitung ESP-Boards mit der Arduino-IDE programmieren [6].

Zum Glück haben sich schon andere vor mir mit den knackigen Themen befasst und wir können einfach einige Libraries installieren, um folgende Funktionalitäten zu erhalten:

  1. HX711 [7]: Waage auslesen
  2. ESP_Mail_Client [8]: E-Mails versenden
  3. PubSubClient [9]: MQTT Message absetzen

Die Bibliotheken können über die Links heruntergeladen und über Sketch/Bibliotheken einbinden und .ZIP-Bibliothek installiert werden. Nach einem Neustart der Arduino-Umgebung sind unter Datei/Beispiele auch die neuen Libraries aufgeführt und der weiteren Nutzung sind keine Grenzen gesetzt.

Im Download-Paket von GitHub [10] finden Sie die Software für die Waage. Doch zunächst geht es darum, der Waage beizubringen, wie sie aus den gelesenen Werten eine korrekte Gewichtsangabe macht. Dazu müssen wir sie mit einem Referenz-Gewicht eichen. Das klingt komplizierter als es ist. Man kann dazu normale Münzen nehmen, denn deren Gewicht findet man im Internet. Man kann die Waage auch ohne Eichung betreiben. Dann entspricht ein Pad einfach einem Sensorwert.

Für die Eichung und Einrichtung habe ich das kleine Programm HX711_INIT (im GitHub-Download enthalten) geschrieben, das mit einigen Schritten durch die Einrichtung führt. Dies macht das Vorgehen einfacher und man kann auch gleich testen, ob zumindest die Bibliotheken und das Board richtig installiert wurden.

Schließen Sie nun die Waage an den PC mit der Arduino-IDE an. Laden Sie die Datei HX711_INIT.ino in die Arduino-IDE, stellen Sie das richtige Board und die Portnummer ein. Danach kompilieren Sie das Programm mit dem Hochladen-Pfeil. Sollten dabei Fehlermeldungen auftauchen, kontrollieren Sie die Bibliotheken, das eingestellte Board und die Portnummer.

Zur Anzeige dient der serielle Monitor (im Werkzeuge-Menü). Jetzt folgen die Tests und die Eichung. Das Programm gibt dazu jeweils Anweisungen, die Sie bitte befolgen, also zum Beispiel das Eichgewicht auflegen.

Richtung bestimmen: Als erstes muss sicher gestellt werden, ob die Wägezelle richtig herum eingebaut wurde. Dazu muss der Sensorwert abgefragt werden. Dieser kann je nach Montagerichtung der Zelle und Anschluss der Litzen bei Belastung positiv oder negativ ausschlagen. Mein Beispielprogramm verwendet positive Werte, daher sollte die Wäägezelle umgedreht werden, falls ein negativer Wert angezeigt wird.

Basisgewicht bestimmen: Alles was auf die Waage kommt, aber nicht gemessen werden soll (z.B. die Holzwanne, ein Teller oder Untersatz), muss nun vom Sensorwert abgezogen werden. Diesen Wert nenne ich Basisgewicht und er kann im Code des eigentlichen Waage-Programms (Zeile 73) eingetragen werden.

Basisgewicht überprüfen: Hier wird nun das zuvor ermittelte Gewicht vom Sensorwert subtrahiert. Daher sollte der angezeigte Wert ungefähr Null sein. Dann sollten Sie das Basisgewicht notieren.

Umrechnungsfaktor bestimmen: Dieser Schritt ist nicht nötig, falls man keine realistischen Gewichtsangaben braucht. Mein Code nutzt dies aber. Dazu muss ein Eichgewicht (ein Gegenstand mit aufs Gramm genau bekanntem Gewicht) auf die Waage gelegt werden. Angezeigt wird nun der Sensorwert minus dem Basisgewicht. Dieser Wert entspricht dem Eichgewicht und wir wissen somit, wieviel Gramm wie vielen Sensorwerten entsprechen. Dementsprechend kann nun ein Umrechnungsfaktor bestimmt werden:

Umrechnungsfaktor = (Sensorwert – Basisgewicht) / Eichgewicht

Dieser Wert kann ebenfalls im Code des Waagen-Programms (Zeile 74) eingegeben werden, daher bitte notieren.

Umrechnungsfaktor überprüfen: Hier können Sie den ermittelten Wert noch einmal checken.

Damit können Sie nun das Waagen-Programm CoffeeGuard_ESP8266.ino in die Arduino-IDE laden und konfigurieren. In die Zeilen 49 bis 74 tragen Sie nun Ihre WLAN- und E-Mail-Daten sowie die zuvor ermittelten Werte ein.

Hier müssen Sie Ihre WLAN-, E-Mail- und MQTT-Daten eintragen.

MQTT (Message Queuing Telemetry Transport) ist ein sehr leichtfüssiges IOT Protokoll für eingeschränkte Netzwerke mit geringer Bandbreite, also perfekt für die Übermittlung von kleinen Sensorwerten geeignet. MQTT funktioniert nach dem Subscribe- und Publish-Prinzip, d.h. man kann Nachrichten an einen sogenannten Broker (im Prinzip ein Server) senden (publishen) und dieser verteilt die Nachricht an alle Clients, die den entsprechenden Topic (Kanal) abonniert haben.

Es gibt einige kostenlose Broker im Netz, die man für MQTT-Experimente brauchen kann. Ich habe hier Mosquitto genommen. Dieser funktioniert wunderbar und ist sehr einfach einzurichten, da man keinen Benutzernamen und Passwort braucht. Lediglich die URL test.mosquitto.org und ein selber gewähltes Topic (z.B. Küche/Kaffeepads) reichen, um damit Nachrichten zu versenden. Der Preis dafür ist, dass die ganze Welt nachschauen kann, wie viel Kaffee im Büro so konsumiert wird. Wem das zu persönlich ist, wählt einen Broker wie Hivemq, wo man sich registrieren kann.

Will man die MQTT-Nachrichten empfangen, geht das über einen MQTT-Client. Davon gibt es einige auch als App fürs Smartphone. Ich habe bei mir die Android App MQTT Dashboard installiert. Hier lassen sich ein Broker wie Mosquitto einrichten und Topics abonnieren. Nun erhalte ich in regelmässigen Abständen Informationen vom CoffeeGuard. ()


URL dieses Artikels:
https://www.heise.de/-7101685

Links in diesem Artikel:
[1] https://www.heise.de/select/make/2022/3/2205311170134682868
[2] https://shop.heise.de/make-03-2022/Print?wt_mc=intern.shop.shop.ma_2203.dos.textlink.textlink
[3] https://www.heise.de/select/make/2022/3
[4] https://www.mykiosk.com/suche/23141/make-
[5] https://www.heise.de/make/
[6] https://www.heise.de/make/artikel/ESP-Boards-mit-der-Arduino-IDE-programmieren-4130861.html
[7] https://github.com/bogde/HX711/archive/refs/heads/master.zip
[8] https://github.com/mobizt/ESP-Mail-Client/archive/refs/heads/master.zip
[9] https://github.com/knolleary/pubsubclient/archive/refs/heads/master.zip
[10] https://github.com/WingIdeeLab/CoffeeGuard