ARDUINO e WEB

WEB SERIAL API permette di collegare ARDUINO con un COMPUTER, tramite una porta seriale USB.

E’ possibile inviare dati da COMPUTER verso ARDUINO e da ARDUINO verso COMPUTER; tutto questo grazie a javascript e, in particolare, a WEB SERIAL API. In questo brevissimo articolo, riporto un esempio. Ecco il codice per ARDUINO, che contiene istruzioni per comunicare attraverso una porta seriale (Serial.Begin, Serial.println, Serial.read) e il codice html e javascript con le istruzioni WEB SERIAL API.

*** PAGINA HTML per controllare ARDUINO ***

<html>
<head>
<meta charset = "UTF-8">  
  <style>
   body{
 background-color: #cce6ff;
}
header{
 text-align: center;
 height: 100px;
 padding-top: 1px;
 background-color: #3399ff;
 color: #FFFFFF;
 font-size: x-large;
}
h3{
 margin-top: 2px;
 text-align: center;
 background-color: #80bfff;
}
form{
 width: 45%;
 display: inline-block;
 margin: 20px;
}
footer{
 margin-top: 3%;
 text-align: center;
}
  </style>
<script>

// var uint8array = new TextEncoder().encode("someString");

// var string = new TextDecoder().decode(uint8array);

var valori;

var uint8array;

var stringa;

var port;

var reader;

var writer;

var encoder;

function inizializza() {

valori = "cavoli miei";

document.all.valoriletti.value = "";

                       }

function cancella() {

document.all.valoriletti.value = "";

                    }

async function selezionaeapriportaascolta() {

// Prompt user to select any serial port.

 port = await navigator.serial.requestPort();

// Wait for the serial port to open.

 await port.open({ baudRate: 9600 });

// Listen to data coming from the serial device.

reader = port.readable.getReader();

while (true) {

  const { value, done } = await reader.read();

  if (done) {

    // Allow the serial port to be closed later.

    reader.releaseLock();
    break;
            }

  // value is a Uint8Array.

  stringa = new TextDecoder().decode(value);

  valori = stringa;

  document.all.valoriletti.value = document.all.valoriletti.value + valori;

            }

                        }

async function scrivileggiseriale(comando) {

// Prompt user to select any serial port.

// port = await navigator.serial.requestPort();

// Wait for the serial port to open.

// await port.open({ baudRate: 9600 });

 alert("Stai per inviare il comando");

encoder = new TextEncoder();
writer = port.writable.getWriter();
await writer.write(encoder.encode(comando));
writer.releaseLock();



                             }


// async function chiudiporta() {

// await port.close();                         

//                              }

</script>

</head>
<body onload="inizializza();" >
<header>
<h1>ARDUINO - Porta USB - Lettura - Scrittura</h1>
</header>

<textarea id = "valoriletti" rows = "20" cols = "20"></textarea>
<br>
<br>
<input type="text" id = "comando0" name = "comando0" /><br><br>
<br>
<button onclick="selezionaeapriportaascolta();" > Leggi seriale </button><br><br>
<input type="button" value="Invia il comando (scrittura/lettura)" onclick="scrivileggiseriale(document.all.comando0.value);" />
<br><br>
<input type="button" value="Cancella messaggi" onclick="cancella();" />
<footer>
<h1>ARDUINO - Leggo e Scrivo sulla "seriale"</h1>
</footer>

</body>
</html>


************************************

*** Sketch per ARDUINO *************

char dato = 'z';

void setup()
{
  
  pinMode(5,OUTPUT);
  Serial.begin(9600);
  
}

void loop()
{

dato = Serial.read();

if (dato == 'A') {digitalWrite(5,HIGH);};
if (dato == 'S') {digitalWrite(5,LOW);};

Serial.println(" Ho ricevuto ==> " + String(dato));

Serial.println("Prova di trasmissione, ogni 500 millisecondi...");

delay(500);
  
}

***********************************************


Per altre informazioni su WEB SERIAL API consiglio di cercare su internet. In questo articolo ho voluto semplicemente riportare un esempio pratico.

Andrea Paolini (Amministratore del Blog).