Drucker Steuerung

Aus C3MAWiki
Wechseln zu: Navigation, Suche
Dies ist ein Projekt, an dem momentan aktiv gearbeitet wird. Wenn du Fragen hast oder mitarbeiten möchtest, wende dich an EmpirePhoenix.


Im wesentlichen handelt es sich hierbei um einen ESP8266-12 an dem mithilfe einer Matrixverkablung mehrere Taster befestigt sind.
Die platte verfügt über 5 WS2866 um den aktuellen Status auszugeben.


Octonet.jpg]

Möglich zustände sind:

Startup:
1XGrün blinkend: Versuch WLAN Verbindung aufzubauen
1XBlau leuchtend, und 1XGrün blinkend: Versuch Verbindung zur REST Schnittstelle des Druckers aufzunehmen

Dananch:
4XRot Hell Leuchtend: REST request wird derzeit ausgeführt. (Dieser Zustand sollte periodisch mindestens alle 3 Sekunden auftreten)

2X grün-rot & 2X grün bis rot -> die Unteren beiden LED's geben die echte Temperatur an grün ist hierbei kalt, rot schmerzhaft (220°C), die anderen beiden die Zieltemperatur
Die letzte LED ist hierbei entweder aus oder:
Die oberste LED blinkt Blau: Drucker ist beim abarbeiten von einem Print befehl


Der Drehschalter ist derzeit ohne Funktion und vorgesehen für evtl. zusätzliche Drucker zum umschalten.


Source: https://github.com/C3MA/octonet

Basis funktionsweise:

Per polling (um prellen zu verhindern) wird die Matrix abgefragt, dann wird je nach Button eine LuaTabelle zusammengebaut die Json ähnlich aufgebaut ist.
Diese wird mithilfe von cjson in json encodiert, und mithilfe von http.post an den Drucker geschickt.
Währenddessen ist ein globaler lock auf dem hauptloop des ESP, da mehrere concurrente requests nicht unterstützt werden. Es kann zusätzlich ein delay angegeben werden, um befehle in sync mit der hardware zu bekommen.
Dies hat den Zweck dass ein Dauerdrücken nicht dutzende Befehle in die queue schreiben soll, sondern ungefähr beim loslassen des Schalters auch der Drucker aufhören soll Befehle auszuführen.
Alle 2 Sekunden wird per Rest der aktuelle Druckerstatus ausgelesen, um festzustellen ob diese noch aktiv ist, und um das Display aktualisieren zu können.

HardwareSpecials:
PullDown widerstände werden von der Software emuliert, indem kurz vor abfragen der Matrix all pins einmal als Output auf low gezogen werden.
Da ein GPIO zuwenig vorhanden ist, sind die LED's am GPIO2 angelegt, an dem sich auch ein PIN der Matrix befindet. Dieses wird umgesetzt indem die Firmware den Pin ca 20mal die Sekunde umkonfiguriert.
Es kann vorkommen dass beim drücken eines zugehören Buttons kurze Gliches in der Anzeige auftregen. Dies ist unproblematisch.