Nextion Display für die PureBox

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

  1.  +5V
  2.  GND
  3.  TxD
  4.  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

RS232 Seriell-zu-TTL-Konverter-Modul
RS232 Seriell-zu-TTL-Konverter-Modul

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.

purebox Nextion Display
purebox Nextion Display an TTL
TTL der Pure Box Nahaufnahme
TTL der Pure Box Nahaufnahme

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 );  
?>