Die Pure Box bekommt ein Display
In diesem Bericht wird gezeigt, wie man an einer PureBox ein Nextion Display anschließt. Die PureBox hat vom Werk aus keine Möglichkeit ein Display anzusteuern. Der Server wird normalerweise über ein Web Terminal konfiguriert, beobachtet oder gesteuert. Da die Plattform jedoch über die Fähigkeit verfügt, eigene Scripte über Events oder zeitgesteuert ablaufen zu lassen, ist es intelligent ideas gelungen, einen Aufbau zu entwickeln, der den Anschluß eines Displays zuläßt.
Das Nextion Display
Das Besondere an dem Display der Firma Itead ist, dass es nur vier Kabel zum Anschluß braucht. Anders als herkömmliche Displays, hat das Nextion eine eigene GPU sowie Grafik Treiber und Touch Prozeduren auf einer Platine hinter dem Display. Die GUI wird über eine Software auf das Display gespielt und funktioniert beim Einschalten sofort als eigenständiges HMI. Das Nextion Display kommuniziert über eine TTL serielle Schnittstelle. Damit sendet das Display Befehle an TTL Geräte oder empfängt Befehle. Empfangene Befehle führen dann im Display eine vom Entwickler programmiert Funktion aus.
In der Praxis sieht das so aus, dass der Entwickler ein GUI Objekt mit dem Namen t0 in dem Display erstellt hat. Mit dem empfangenen Befehl, der einer festgelegten Syntax zu Grunde liegt, kann dieses GUI Objekt beeinflußt werden. In dem Beispiel steht das GUI Objekt t0 für eine Text Box und der Befehl zum Ändern des Textes ist dann t0.text=“Hallo“.
Anschlüsse
- +5V
- GND
- TxD
- Rxd
In dem folgendem Video ist eine Weboberfläche auf die PureBox gespielt worden. Sie spricht die serielle Schnittstelle an. Über ein Konvertermodul von seriell RS232 auf seriell TTL wird dann der auf der Website eingegebene Befehl zum Display gesendet.
Das Konvertermodul unten im Bild. Wie schon in einem unserer Berichte verwendet. z.B. Pure Box und Arduino
Inhalte über die SQL Datenbank der Pure Box darstellen
In dem nächsten Beispiel erfolgt das Ändern des Displays über ein zeitgesteuertes Script. Alle 5sec. ließt das Script die vom Entwickler erstellte Datenbank der Pure Box aus und aktualisiert das Display. Das Ändern der SQL Datenbank wird hier über eine kleine .net Anwendung ausgeführt.
Das Nextion Display direkt auf die Platine
Es ist auch möglich das Nextion Display direkt auf die PureBox Platine anzuschließen. Hierzu muß allerdings das Gehäuse geöffnet werden. Es ist zu beachten, das die Garantie der Box hier dann verfällt.
Der Code für das zeitgesteuerte Script
<?php function getvaluefromsql() { $servername = "localhost"; $username = "admin"; $password = "ii2017"; $dbname = "userdb"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection for debug /*if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); }*/ global $sqlvalue_int, $sqlvalue_string; $sql = "SELECT sqlvalue_int, sqlvalue_string FROM display"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { $sqlvalue_int = $row["sqlvalue_int"]; $sqlvalue_string = $row["sqlvalue_string"]; } } else { $sqlvalue_int = 0; $sqlvalue_string = "empty"; } $conn->close(); } getvaluefromsql(); //echo $sqlvalue_int; // for debug //echo $sqlvalue_string; // for debug /* Nextion use the simplest of serial configurations: N81 None Parity, 8 data bits, 1 Stop Bit. No error checking, no flow control, no compression, no RTS/CTS */ $fd = dio_open( '/dev/ttyS1', O_RDWR | O_NONBLOCK ); dio_tcsetattr( $fd, array( 'baud' => 9600, 'bits' => 8, 'stop' => 1, 'parity' => 0, 'flow_control' => 0, 'is_canonical' => 0 ) ); dio_write( $fd, 'n0.val=' . $sqlvalue_int); //Write integer value to the Nextion Display dio_write($fd,"\xff"); // write 0xff to /dev/ttyS1 dio_write($fd,"\xff"); dio_write($fd,"\xff"); flush (); dio_write( $fd, 't0.txt="' . $sqlvalue_string . '"' ); //Write string value to the Nextion Display dio_write($fd,"\xff"); // write 0xff to /dev/ttyS1 dio_write($fd,"\xff"); dio_write($fd,"\xff"); flush (); dio_close( $fd ); ?>