X

Kurs ESP - Serial/UART

Zasada działania UART opiera się na szeregowym wysłaniu ciągu bitów, które następnie składane są w informację. Transmisja rozpoczyna się od bitu startu. Zawsze jest to  bit będący logicznym zerem. Następnie, zależnie od konfiguracji, następuje po sobie 7, 8 lub 9  bitów danych, które są wysyłaną informacją. Transmisje zakańcza bit stopu. To  bit  będący logiczną jedynką, mówi o końcu transmisji. [1]

UART umożliwia komunikację z monitorem portu szeregowego, poprzez wbudowany lub  zewnętrzy konwerter USB-UART. 
W ESP występują dedykowane zestawy pinów, służące do komunikacji UART. Przez UART może odbywać się programowanie chipu lub komunikacja między urządzeniami.

Działanie UART opiera się o dwie linie:

•    TX - służy do wysyłania danych,

•    RX - służy do odbierania danych.

Urządzenia komunikujące się muszą pracować w tej samej częstotliwości, najczęściej 9600 lub 115200 b/s.


Można wyróżnić Dwa rodzaje komunikacji.

Pierwszy sposób

Pierwszy przypadek, to debugowanie z wykorzystaniem UART. Użytkownik wysyła komunikat z poziomu monitora portu szeregowego do mikrokontrolera sterującego serwomechanizmem.

Schemat ESP UART sm1

Urządzenie sprawdza poprawność danych, po czym wykonuje i potwierdza wykonanie zadania.

Kod programu ESP8266

#include <Servo.h>

Servo myservo;
int pos = 0;

String odebraneDane = ""; //Pusty ciąg odebranych danych
 
void setup() {
  Serial.begin(9600); //Uruchomienie komunikacji
  myservo.attach(4);
}
 
void loop() {
  if(Serial.available() > 0) { //Czy Arduino odebrało dane
    odebraneDane = Serial.readStringUntil('\n'); 
    pos = odebraneDane.toInt();
    if(pos>=0 && pos<=180)
    {
      Serial.print("ustawiono: ");
      Serial.println(pos);   
      myservo.write(pos);
    }
    else{
       Serial.println("Zła wartość. Podaj od 0 do 180");  
    }   
  }
}

Schemat podłączenia

Schemat ESP UART ESP8266 Serial

Drugi sposób

Sposób oparto na wzajemnej komunikacji dwóch układów wykorzystujących UART. Urządzenia wysyłają wiadomości za pomocą serial portu.

Schemat podłączenia Arduino Nano + ESP8266 + Serwomechanizm

Schemat ESP UART Servo

Kod programu Adruino Nano

Arduino Nano odpowiada za wysyłanie komunikatów sterujących. Komunikaty wysyłane są za pomocą komendy Serial.println(pos).

int pos = 0;

void setup() {
  Serial.begin(9600);
}
 
void loop() {
 for (pos = 0; pos <= 180; pos += 1) { 
    Serial.println(pos);             
    delay(20);                       
  }
  for (pos = 180; pos >= 0; pos -= 1) {
    Serial.println(pos);              
    delay(20);                      
  }
}

Kod programu ESP8266

ESP8266 Odpowiada za sterowanie serwo mechanizmem. Nasłuchuje czy dane są do niego wysyłane za pomocą warunku if(Serial.available() > 0). Jeśli otrzymał komunikat od Arduino wykona odczyt lini za pomocą funkcji Serial.readStringUntil('\n'). 

#include <Servo.h>

Servo myservo;
int pos = 0;

String odebraneDane = ""; //Pusty ciąg odebranych danych
 
void setup() {
  Serial.begin(9600); //Uruchomienie komunikacji
  myservo.attach(4);
}
 
void loop() {
  if(Serial.available() > 0) { //Czy Arduino odebrało dane
    odebraneDane = Serial.readStringUntil('\n'); 
    pos = odebraneDane.toInt();
    if(pos>=0 && pos<=180)
    {
      Serial.print("ustawiono: ");
      Serial.println(pos);   
      myservo.write(pos);
    }
    else{
       Serial.println("Zła wartość. Podaj od 0 do 180");  
    }   
  }
}

[1]    https://forbot.pl/blog/kurs-arduino-uart-komunikacja-z-komputerem-pc-zmienne-id3836