L’API Web Serial fournit aux sites Web un moyen de lire et d’Ă©crire sur des pĂ©riphĂ©riques sĂ©rie. Ces appareils peuvent ĂȘtre connectĂ©s via un port sĂ©rie, ou ĂȘtre des appareils USB ou Bluetooth qui Ă©mulent un port sĂ©rie.

Ici nous allons Ă©tudier un cas trĂšs simple d’un Arduino Nano envoyant un message Ă  une page Web.

Programme pour l’Arduino

C’est un petit programme qui tourne sur toutes les versions d’Arduino disposant d’un port sĂ©rie. Il envoie toutes les secondes la phrase « Hello World ». Il faut utiliser l’IDE d’Arduino pour Ă©crire et tĂ©lĂ©charger le programme. Ce n’est pas dĂ©crit ici, vu que sur le web, il existe de nombreux tutoriels.

/*
  Serial Print
*/

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  Serial.println("Hello");
  delay(300);
  Serial.println("World");
  delay(300);
  Serial.println("");
  delay(300);        // delay 300 ms
}

Programme pour la page Web

A l’aide d’un Ă©diteur de texte comme Notepad++, il faut Ă©crire une page web « WebSerial.html ». Elle peut ĂȘtre sauvĂ©e dans un dossier local. Un serveur web n’est pas nĂ©cessaire. On lance la page dans un navigateur moderne comme « Chrome ».

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta name = "author" content = "André Buhart F1ATB">

	<title>Web Serial Api</title>
<script>	
	var port;
	var lineBuffer = '';
	async function getReader() {
		var port = await navigator.serial.requestPort({});
		await port.open({ baudRate: 9600 });
		const appendStream = new WritableStream({
		  write(chunk) {
			lineBuffer += chunk;
			var lines = lineBuffer.split('\n');				
			while (lines.length > 1) {
			   var message=lines.shift();
			   console.log(message);
			   document.getElementById("info").innerHTML=message;
			}
			lineBuffer = lines.pop();
		  }
		});
		port.readable
		  .pipeThrough(new TextDecoderStream())
		  .pipeTo(appendStream);	
	}
	function listSerial(){
	if (port) {
		  port.close();
		  port = undefined;
		}
		else {
		  console.log("Look for Serial Port")
		  getReader();
		}
	}
</script>
</head>
<body>
<button onclick="listSerial();">Connect</button>
<div id="info"></div>
</body>
</html>

La clĂ© de cette application en Javascript est la fonction asynchrone « async function getReader () » qui permet de lister les pĂ©riphĂ©riques sĂ©rie et de se connecter Ă  9600 bauds. À l’ouverture de la page, appuyez sur « Connect » pour afficher la liste des pĂ©riphĂ©riques visibles par votre PC et sĂ©lectionnez celui correspondant Ă  l’Arduino. En cas de souci, dĂ©connectez et reconnectez l’Arduino. Le message s’affiche sur la page web et la console du navigateur que l’on peut ouvrir par Maj-Ctrl-I.

À prĂ©sent, libre Ă  vous de dĂ©velopper une application Ă  base d’Arduino. Une page web, mĂȘme en local, peut fournir une bonne interface de commande pour piloter un projet. Bien sĂ»r, il est possible d’envoyer des commandes vers l’Arduino. Il faut se rĂ©fĂ©rer Ă  la documentation en ligne autour du « Web Serial API ».

Laisser un commentaire