
Hallo allerseits! Ich arbeite für ein Unternehmen, das Geräte zur Überwachung von Ölplattformen, Bergbaubetrieben, Dieselaggregaten und anderen langweiligen Dingen entwickelt. Aber diesmal haben wir etwas anderes automatisiert. Treffen Sie sich also: "Cook 3000" - der Apparat zum Ausgeben von Cookies an die besten Mitarbeiter.
Das Gerät ist eine Konstruktion aus PVC und einigen Teilen:
Eine Spirale mit einem Antrieb (dient zur Lieferung von Waren), einem Bildschirm, einem Münzprüfer und dem Gehirn der gesamten Struktur - Wiren Board 6-Controller.



Bildschirm
Als Bildschirm für
WB6 verwende ich das Nextion-Bildschirmmodul (NEXTION ENHANCED NX4832K035).

Das Modul ist mit einem AVR-Prozessor ausgestattet. Verfügt über ein 3,5-Zoll-TFT-Display mit einer Auflösung von 480 * 320, 32 MB internem Speicher, 1024-Byte-EEPROM und 8192-Byte-RAM.
Dieses Gerät speichert und zeigt Grafiken an, animiert Oberflächenelemente und verarbeitet Klicks. Über UART werden nur Ereigniscodes an die Steuerung übertragen, wodurch Schnittstellen unterschiedlicher Komplexität einfach konfiguriert werden können.
Um die erforderlichen Einstellungen und Grafiken in das Bildschirmmodul zu laden, wird ein visueller Editor der Nextion Editor-Schnittstellen bereitgestellt. Sie können es auf der offiziellen itead-Website herunterladen.

Beim Erstellen eines neuen Projekts müssen Sie das Modell, die Bildschirmposition und die Zeichenkodierung angeben. Wählen Sie für die korrekte Anzeige des kyrillischen Alphabets iso-8859-5.

Links befindet sich eine Symbolleiste. Hier finden Sie die wichtigsten Elemente zum Erstellen einer Schnittstelle.

Klicken wir auf die Schaltfläche. Im Bearbeitungsfeld wird eine bedingte Schaltfläche angezeigt. Dehnen Sie es, bearbeiten Sie den Text und den Titel. Um Text anzuzeigen, müssen Sie eine Schriftart hinzufügen. Wir werden das Font Creator-Tool auf der Registerkarte Tools verwenden. In das Feld "Ereignis" müssen Sie den Code schreiben, der auf den Ereignissen abgespielt wird.
Wenn Sie beispielsweise "Drucktaste \ r" in die Registerkarte "Ereignis drücken" schreiben, wird das Gerät beim Klicken auf die Schaltfläche an UART gesendet: Taste gedrückt und das Zeilenvorschubzeichen.

Beschreibung und Beispiele für Codes finden Sie in der Dokumentation zum Bildschirm. Zum Debuggen können Sie die Debug-Funktion verwenden. In diesem Fenster können Sie alle Firmware-Funktionen testen, bevor Sie den Bildschirm selbst ausfüllen.

Wenn alles in Ordnung ist, können Sie das Display über den USB / UART-Adapter an den Computer anschließen und die Firmware durch Klicken auf die Schaltfläche „Upload“ eingeben.

Aber wie können wir uns jetzt mit WB6 anfreunden?
Sie können den Bildschirm entweder über denselben USB \ UART-Adapter an einen der USB-Anschlüsse des Controllers oder direkt an einen der Erweiterungssteckplätze auf der Controller-Karte anschließen.
Wir interessieren uns für die Pins TX, RX, 5V und GND.

Nach dem Anschließen des Bildschirms an die Steuerung erhalten wir Ereignisdaten direkt an die serielle Schnittstelle.
Um auf diese Ereignisse irgendwie zu reagieren, schreiben wir ein kleines Skript, das alle Daten zu den Ereignissen an das MQTT-Thema sendet. Erstellen Sie zunächst eine Datei im Stammordner des Controllers und nennen Sie sie serial.sh
Wenn Sie alles richtig gemacht haben, sehen Sie nach dem Ausführen des Skripts beim Klicken auf die Schaltfläche in der Weboberfläche des Controllers ein Thema mit den Daten, die das Bildschirmmodul sendet.
Auf den Wiren Board-Controllern wird ein Regelsystem bereitgestellt -
wb-Regeln . Regeln werden über eine Weboberfläche erstellt und in einer einfachen Javascript-ähnlichen Sprache geschrieben.
Gehen Sie in der WB6-Weboberfläche zur Registerkarte "Skripte" und erstellen Sie ein neues Skript, indem Sie auf die Schaltfläche "Neu ..." klicken und es "screen_button.js" oder etwas anderes nennen. Als nächstes schreiben wir eine Regel: Beim Ändern des Bildschirms / Rohthemas (an ihn senden wir Daten vom Bildschirm) werden bestimmte Aktionen ausgeführt. In diesem Fall wird beim Klicken auf den Bildschirm die Meldung "Taste gedrückt" im Debug-Fenster der Weboberfläche angezeigt:
screen_button.js defineVirtualDevice("screen", {
Großartig. Um Klicks auf dem Bildschirm zu verarbeiten, haben wir es herausgefunden. Lassen Sie uns nun darüber sprechen, wie wir den Bildschirm mit WB6 steuern. Ändern Sie beispielsweise den Schaltflächentext. Der Bildschirm akzeptiert UART-Befehle. Eine Liste und Beschreibung der Befehle finden Sie in der Dokumentation zum Bildschirm.
Um das Ende des Befehls zu bestimmen, wartet der Bildschirm auf drei Sonderzeichen (\ xff \ xff \ xff). So vereinfachen Sie die Aufgabe in Zukunft: Erstellen Sie ein Skript im Stammordner bash. Nennen wir es text.sh:
Um den Schaltflächentext zu ändern, müssen wir nur das Skript mit den folgenden Argumenten aufrufen:
bash /mnt/data/root/text.sh -a b0 -b 'Some Text'
Dabei ist b0 der Name der Schaltfläche auf dem Bildschirm und Some Text der gewünschte Text.
Ein Beispiel für die Verwendung der WB6-Regelengine:
var txt1 = "some text"; runShellCommand("bash /mnt/data/root/text.sh -a b0 -b '" + txt1+ "'");
Ebenso können Sie die aktuell angezeigte Seite auf dem Bildschirm, den Text für verschiedene Elemente, Variablen und andere Parameter ändern. Ich werde hier nicht alle Funktionen des Bildschirmmoduls malen. Die oben bereits geschriebenen Informationen reichen für unser Projekt völlig aus.
Münzprüfer
Als Münzprüfer verwende ich die chinesische Version, die auf den Weiten von Aliexpress für 400 Rubel zu finden ist.
Mit der Verbindung ist alles einfach. +12 V und ein Impulsausgang zum Anschluss an das Dry Contact-Erweiterungsmodul
WBE2-DI-DR-3 . Um die Münze zu bestimmen, müssen wir nur die Impulse zählen. Erstellen Sie dazu ein neues Skript in der Regelengine:
money.js var timeout_ms = 1 * 200; var timer_id = null; var timerTime = Date.now(); var timerLast = 0; var countMoney = 0; defineRule("money", { whenChanged: "wb-gpio/MOD1_IN2", then: function(newValue, devName, cellName) { if (newValue) { timerLast = Date.now() if ((timerLast - timerTime) >= 500) {
Ziemlich einfache Regel. Vielleicht nicht die genaueste.
Bitrix24
Nun, wahrscheinlich das interessanteste. Versuchen wir herauszufinden, wie der Ausdruck "Gut gemacht" übersetzt werden kann. Nimm einen Keks aus einem Regal. “ Unser Unternehmen nutzt das Bitrix24-System als CRM. Die Idee ist, dass der Mitarbeiter für jede erledigte Aufgabe (Aufgabe) in der Bitrix einige elektronische Punkte erhält. Dieselben Punkte können als Währung für unser Gerät verwendet werden. Lassen Sie uns herausfinden, wie Sie eine Verbindung zu Bitrix24 herstellen und den Erfolg der Mitarbeiter überwachen können.

Wir werden bitrix24-python-sdk als Basis verwenden.
Installieren Sie das SDK mit dem Befehl auf dem Controller
pip install bitrix24-python-sdk
Erstellen Sie als Nächstes ein Python-Skript im Stammordner und nennen Sie es bitrix.py:
Dieses Skript fordert alle abgeschlossenen Aufgaben einer bestimmten Benutzerliste an, berücksichtigt sie und sendet die Nummer an Themen in mqtt. Als nächstes können wir nur den erhaltenen Betrag mit den vorherigen Werten vergleichen. Wenn die neuen Daten größer sind, fügen Sie dem Mitarbeiter Punkte für die geleistete Arbeit hinzu.
Bluetooth
Zum Scannen von BLE-Geräten verwende ich Bluez. Das Programm ist bereits auf dem Controller installiert. Geben Sie zum Scannen von Geräten einfach einige Befehle in die Konsole ein:
hciconfig hci0 up hcitool lescan
Dies reicht uns jedoch nicht aus. Es ist ratsam, den Signalpegel zu sehen. Installieren Sie dazu das zusätzliche Dienstprogramm hcidump:
apt-get install bluez-hcidump
Und ergänzen Sie unser Team:
hciconfig hci0 up hcitool lescan --duplicates | hcidump -a | grep -E 'bdaddr|RSSI'
Am Ausgang erhalten wir MAC-Adressen und RSSI-Bluetooth-Geräte in der Nähe.

Diese beiden Zeilen können wunderschön in ein Bash-Skript eingeschlossen und die Ausgabe an MQTT gesendet werden.
Der zweite
Weg ist aioblescan script
Es erfordert Python 3, vorzugsweise 3.5. Der Vorteil dieses Skripts besteht darin, dass Sie bestimmte MAC-Adressen überwachen können und nicht alle Smartwatches und Smartphones, die am Fenster vorbeigehen. Die Skriptausgabe wird auch an MQTT umgeleitet, um die Arbeit mit der Regelengine zu vereinfachen.

Jetzt wissen wir, wie man mit WB6 über das Bildschirmmodul interagiert. Wir können Münzen zählen, den Erfolg von Mitarbeitern in Bitrix überwachen, Geräte scannen und deren Signalpegel. Es bleibt, dies auf einem Haufen zu sammeln und eine Art Logik vorzuschreiben. Ich werde nicht alle Skripte für dieses Projekt malen. Alles wird über den Link gemeinfrei verfügbar sein. Vielleicht findet einer von Ihnen eine nützlichere und klügere Anwendung dafür.
Gehäuse
Der Körper besteht aus 10 mm geschäumtem PVC. Solcher Kunststoff wird in Platten verkauft. Mäßig weich. Sie können mit einer Bügelsäge oder mit einem normalen Schreibmesser auf einem Lineal schneiden.

Als Befestigungselement wurden ein Kindersatz aus Metallteilen „Konstruktor“ und kurze selbstschneidende Schrauben verwendet. In diesem Kit wurde fast alles benötigt, um den Koffer zusammenzubauen.

Fahren
Die Spirale und das Laufwerk wurden im Online-Shop B \ U App gekauft. Teile für Verkaufsautomaten. Angetrieben von einem 24V Netzteil. Der Anschluss erfolgt über das Relais des Erweiterungsmoduls
WBE2-DO-R6C-1 .

Funktionell
Funktionell ähnlich wie ein normaler Verkaufsautomat. Gibt Cookies für Geld aus und nicht nur.

Wenn das Gerät gestartet wird, wird auf dem Bildschirm ein Begrüßungsbildschirm mit einem Logo angezeigt. Anschließend wird zum Hauptbildschirm gewechselt, auf dem wir entweder Cookies kaufen oder ein Spiel spielen können.
Das Spiel für den Benutzer ist kostenlos, aber Sie können einen kleinen Motivationspreis festlegen. Die Regeln sind einfach. Dem Spieler wird angeboten, drei einfache Probleme zu lösen. Wenn er drei richtige Antworten gibt, erhält er einen Preis in Form von Cookies. Vielleicht ist dies alles, was Sie über diesen Artikel wissen müssen. Kehren wir zum Hauptmenü zurück und klicken Sie auf "Cookies kaufen".
Als nächstes werden Sie vom System aufgefordert, eine Zahlungsmethode auszuwählen. Bei Auswahl der Zahlungsmethode "Für Geld" erscheint auf dem Bildschirm ein Fenster mit dem Preis und dem gezahlten Betrag, der sich erhöht, wenn Sie Geld auf den Münzprüfer einzahlen.
Sobald der Betrag ausreicht, um einen Kauf zu tätigen, schließt das Gerät dieses Fenster automatisch und gibt die Ware aus.
Wie ich bereits sagte, wird jedoch auch eine andere Währung bereitgestellt - dies sind Punkte, die für den Erfolg der Mitarbeiter im Bitrix24-System erhalten wurden. Wenn ein Mitarbeiter eine ihm zugewiesene Aufgabe schließt, werden ihm Punkte gutgeschrieben. Für besonders gute Ergebnisse können dem Chef auch Punkte verliehen werden.




Um die Punkte auszuzahlen, muss der Mitarbeiter den Punkt "Für Punkte kaufen" auswählen. Anschließend versucht das Gerät festzustellen, wer davor steht. Zu diesem Zweck scannt er die Bluetooth-Geräte um sich herum. Wenn er die MAC-Adresse des Geräts des Mitarbeiters sieht und in die Datenbank eingibt und der Signalpegel stark genug ist, um anzunehmen, dass er in der Nähe steht, werden die Daten zum Kontostatus des Mitarbeiters auf dem Bildschirm angezeigt Name und Angebot, Cookies mit Punkten zu bezahlen.
Wenn das System kein einzelnes bekanntes Gerät ermitteln konnte, gibt es eine Warnung aus und bietet an, Ihren Namen aus der Liste auszuwählen und dann Ihren PIN-Code einzugeben.
Bei korrekter Eingabe öffnet sich das gleiche Fenster mit Daten zum Status des Benutzerkontos und den Kosten des Produkts. Wenn ein Kauf bestätigt wird, wird die erforderliche Anzahl von Punkten vom Benutzerkonto abgebucht und das Gerät gibt die Ware aus.
Das ist alles Dieses Projekt wurde ausschließlich zu Bildungszwecken erstellt, um zu zeigen, dass die Anwendungen des Wiren Board-Controllers nur durch Vorstellungskraft begrenzt sind. Alle Dateien und Skripte finden Sie unter dem
Link .