Yun Serial Terminal

Yun Serial Terminal è uno sketch che ti permette l’accesso alla console dell’Arduino Yùn facilitandoti molte attività di gestione e configurazione.

Yun Serial Terminal port

Innanzitutto ringrazio Costantino di WeMake per avermi fatto scoprire questa opportunità ed ovviamente gli autori: Massimo Banzi e Christian Maglie come potrai leggere nei commenti in testa allo sketch.

Cosa puoi fare con la console della Yun Serial Terminal ?

Avere a disposizione una console su un sistema Linux ti permette di configurare il sistema ancora prima dell’effettiva configurazione di rete, ma non solo, ecco alcune operazioni possibili:

  • controllare cosa accade durante la fase il boot della Yùn
  • modificare la password di root se te la sei dimenticata
  • configurare la rete se hai configurato una WLAN non corretta o differente ( il caso per cui l’ho usata ieri )

da console, inoltre, non dovrai resettare la Yùn quando compi queste operazioni.

In generale avere a disposizione il Yun Serial Terminal è uno strumento a tua disposizione utile in tutti quei momenti in cui non sono disponibili altri strumenti di connessione alla tua yun.

 

Yun Serial Terminal console

ma andiamo con ordine:

Passo 1 – Sketch Yun Serial Terminal

Tra gli esempi che trovi nel tuo IDE c’è lo YunSerialTerminal sketch:

Yun Serial Terminal sketch load

che ti è stato dato dagli sviluppatori Arduino come i molti sketch e librerie che ti permettono di eseguire cose complesse in modo semplice.

Lo sketch è abbastanza semplice:

/*
  Arduino Yún USB-to-Serial

 Allows you to use the Yún's 32U4 processor as a
 serial terminal for the Linux side on the Yún.

 Upload this to an Arduino Yún via serial (not WiFi) then open
 the serial monitor at 115200 to see the boot process of Linux.
 You can also use the serial monitor as a basic command line
 interface for Linux using this sketch.

 From the serial monitor the following commands can be issued:

 '~' followed by '0' -> Set the UART speed to 57600 baud
 '~' followed by '1' -> Set the UART speed to 115200 baud
 '~' followed by '2' -> Set the UART speed to 250000 baud
 '~' followed by '3' -> Set the UART speed to 500000 baud
 '~' followed by '~' -> Sends the bridge's shutdown command to
                        obtain the console.

 The circuit:
 * Arduino Yún

 created March 2013
 by Massimo Banzi
 modified by Cristian Maglie

 This example code is in the public domain.

 http://arduino.cc/en/Tutorial/YunSerialTerminal

 */


long linuxBaud = 250000;

void setup() {
  Serial.begin(115200);      // open serial connection via USB-Serial
  Serial1.begin(linuxBaud);  // open serial connection to Linux
}

boolean commandMode = false;

void loop() {
  // copy from USB-CDC to UART
  int c = Serial.read();              // read from USB-CDC
  if (c != -1) {                      // got anything?
    if (commandMode == false) {       // if we aren't in command mode...
      if (c == '~') {                 //    Tilde '~' key pressed?
        commandMode = true;           //       enter in command mode
      } else {
        Serial1.write(c);             //    otherwise write char to UART
      }
    } else {                          // if we are in command mode...
      if (c == '0') {                 //     '0' key pressed?
        Serial1.begin(57600);         //        set speed to 57600
        Serial.println("Speed set to 57600");
      } else if (c == '1') {          //     '1' key pressed?
        Serial1.begin(115200);        //        set speed to 115200
        Serial.println("Speed set to 115200");
      } else if (c == '2') {          //     '2' key pressed?
        Serial1.begin(250000);        //        set speed to 250000
        Serial.println("Speed set to 250000");
      } else if (c == '3') {          //     '3' key pressed?
        Serial1.begin(500000);        //        set speed to 500000
        Serial.println("Speed set to 500000");
      } else if (c == '~') {          //     '~` key pressed?
                                      //        send "bridge shutdown" command
        Serial1.write((uint8_t *)"\xff\0\0\x05XXXXX\x7f\xf9", 11);
        Serial.println("Sending bridge's shutdown command");
      } else {                        //     any other key pressed?
        Serial1.write('~');           //        write '~' to UART
        Serial1.write(c);             //        write char to UART
      }
      commandMode = false;            //     in all cases exit from command mode
    }
  }

  // copy from UART to USB-CDC
  c = Serial1.read();                 // read from UART
  if (c != -1) {                      // got anything?
    Serial.write(c);                  //    write to USB-CDC
  }
}

tuttavia ci sono alcune operazioni, riportate anche nei commenti, che devi fare per farlo funzionare in modo corretto con il monitor seriale, iniziamo dalla linea 35: definisci una variabile linuxBaud in cui impostare il baudRate di comunicazione tra la Serial1 e Linux;

chiarito ogni dubbio passa alle linee 38-39: in ciascuna linea imposti la velocità di comunicazione tra Computer/Yùn e Yùn/Linux;

linea 42: imposta la variabile commandMode a false;

linea 46: leggi sulla Serial usando il metodo read(), ricorda che la Serial è connessa al convertitore USB-Serial e quindi al tuo computer;

linee 47-48: se leggi un valore differente da -1 vuol dire che ti è arrivato un carattere ed esegui il test sulla variabile commandMode per decidere se ti trovi modalità di invio comandi o terminale;

linee 49-53: se NON sei in modalità comando puoi uscire da questa condizione inviando il carattere “~” sul terminale seriale del tuo IDE, in caso contrario tutto cià che scrivi sulla Serial verrà riscritto sulla Serial1;

linee 54-78: se sei in modalità comando puoi definire come Yun Serial Terminal deve comunicare con il tuo Monitor seriale, ossia la velocità che devono tenere nella comunicazione, secondo la tabella che trovi anche nei commenti dello sketch:

'~' followed by '0' -> Set the UART speed to 57600 baud
 '~' followed by '1' -> Set the UART speed to 115200 baud
 '~' followed by '2' -> Set the UART speed to 250000 baud
 '~' followed by '3' -> Set the UART speed to 500000 baud
 '~' followed by '~' -> Sends the bridge's shutdown command to
                        obtain the console.

in cui come vedi inviando il comando ‘1’ imposti ad esempio la velocità di comunicazione a 115200 tra il monitor seriale e la yùn, che è anche la velocità definita di default alla linea 38. Nota che alla linea 76, dopo aver ricevuto un comando, il valore di commandMode viene riportato a false;

linea 82: per ogni ciclo di loop e dopo aver eseguito le linee sopra leggi la risposta dalla Serial1, quella in comunicazione con Linux;

linee 83-86: riscrivi sul monitor seriale i valori letti con la linea 82.

Come vedi lo sketch è semplice nella comprensione in quanto il lavoro di sviluppo da parte del Team di sviluppo arduino è stato impareggiabile.

Esegui l’Upload dello sketch e inizia a usare il tuo Yun Serial Terminal.

Passo 2 – Connessione su Monitor Seriale

Nel dettaglio ci sono alcuni passi da fare quando apri il Yun Serial Monitor al serial monitor dell’IDE, il primo è impostare la velocità di comunicazione a 115200, come vedi in fonso alla figura, ed A capo a “NL”, quindi inviare il tuo primo 1 e premere invio, il risultato è il seguente:

Yun Serial Terminal open

a questo punto sei sulla console del tuo LININO ( come leggi anche nella schermata sopra ) Yùn e puoi inviargli tutti i comandi linux supportati. Ad esempio se non sai che indirizzo Web è stato assegnato alla Yùn in fase di connessone alla rete dal DHCP puoi digitare “ifconfig”:

Yun Serial Terminal ifconfig

Ora sei in grado di gestire la tua Yùn in qualsiasi condizione !!!

Cortesemente, prima di inserire i commenti leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/informatica/yun-serial-terminal.html

2 comments

    • Andrea Marinoni on 7 marzo 2016 at 20:46
    • Reply

    C’È una guida piu approfondita per tutto quello che,si può fate con yun serial terminal? Compreso il reboot a livello avanzato?

    1. Ciao Andrea,
      non sono a conoscenza di tutto lo scibile presente nel Web, io mi sono limitato a questo articolo in quanto una volta avuto accesso al terminale seriale i comandi sono quelli linux open-wrt

Lascia un commento

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.