Der kleine Pflanzengiesser für Pflanzen bis 10kg

Gespeichert von artbody am Fr., 16.11.2018 - 07:28

Der kleine Pflanzengiesser für Pflanzen bis 10kg,

ist nun als Prototyp fertig. Das Gehäuse wurde mit meinem MyCubic 3D Drucker gedruckt. MyCubic deshalb, weil vom Orginal fast nur noch der Rahmen orginal ist.

Ein STM32L031 sorgt für die nötige Sparsamkeit im Stromverbrauch.

Eine Finite State Machine regelt den Programablauf

Der SourceCode ist auf meinem GitHub account unter https://github.com/artbody/pflamiku_3 einsehbar

pflamiku aus dem 3D Drucker

 

Auch die Finite State Machine zur Steuerung

ist inzwischen mit dem  FW profil framework https://github.com/pnp-software/fwprofile so gut wie fertig gestellt.

mainFsm.svg

Hier die zugehörige State Machine welche als C Program, mit "function pointer"  ausgeführt, im STM32L031 Mikrokontroller am arbeiten ist und damit sämtliche Funktionen steuert.

ES_waterProg.svg

ES_runHX712.svg

 

 Zuvor hatte ich mit einer propriätären 30 Tage Testversion einer hier nicht weiter genannten Software gearbeitet. Aber da mich das Ergebnis nicht wirklich begeistert hatte, habe ich mit FW Profile welche unter der Mozilla Public Licence v2 veröffentlicht ist, sehr gute Erfahrungen gemacht. Man kann die State Machine zwar nicht so schön simulieren, aber dafür habe ich die Möglichkeit mit #include ... und extern  FsmIFace* piface; extern void HX712_run(void); .. sehr flexible zu programmieren. Im Online Editor von FW profil kann man sogar direkt im Diagram Funktionen declarieren und Sourcecode eingeben. Dies macht FWprofil ganz klar zum Favoriten.

Dies ging mit der 30 TageProVersion der Testsoftware nicht wirklich, obwohl mit einer DeepC integration geworben wurde. Meistens blieb das Program hängen und nach ca 20 Restarts pro Stunde, ging mir das so gewaltig gegen den Geist, dass ich mich Stunden mit Alternativen beschäftigte, welche ja auch gefunden wurde.

Das pinzipielle Problem scheint hier nicht so sehr die grafische Seite zu sein, denn dazu findet man so manches. ABER für Mikrokontroller und C als Programmiersprache, da wird es äußerst dünn. Wahrscheinlich deshalb, weil die eine Seite Hardcore, von Hand "Spagetticode" erzeugt, Die andere Seite aber mit absoluten HightechIDE's (unbezahlbar) arbeitet. Dazwischen gibt es zwar so manche Lösung, aber diese ist meist schlecht oder gar nicht in die Entwicklungsumgebung zum Microcontroller integrierbar, zumindest nicht ohne Abstriche an anderen Stellen. Hier z.B. STMCubeMX zur configuration des Chips.

Nun aber zum Kern der Sache

Wieso eine State Machine ?

Die Erklärung ist einfach, man erhält einen klar strukturierten Code und zwar von Anfang bis Ende. Zuerst arbeit man die Logik des zu erstelleneden Programmes als Diagram aus. Sollte noch etwas fehlen oder ergänzt werden, so kann dies relativ einfach umgesetzt werden. Selbst im späteren Verlauf sind Änderungen ohne großen Aufwand einfügbar. Ein Kunde, welcher von Programmiersprachen keine Ahnung hat, erkennt über die grafische Darstellung trotz allem den logischen Programablauf. Er kann sich somit ein Bild der Sache machen.

Als Entwickler von Hard und Software, baut man sich selbst ein Gerüst, an dem man sich wesentlich schneller zum Ziel arbeiten kann, als wenn man, jeden einzelnen Teil, klassisch von Hand erstellt.