Arduino ตอน6 Serial interface ใน Arduino

29 Jun 2019,
Share: 
Cover image
Vacay banner

Serial เป็นรูปแบบการสื่อสารแบบ Asynchronous ชนิดหนึ่งที่ Arduino นํามาใช้ในการสื่อสารกับ Device อื่นๆ เช่น Computer, Arduino, Module Sensor ต่างๆ หรืออุปกรณ์อะไรก็ตามที่รองรับการส่งข้อมูลแบบ Serial สําหรับข้อมูลเพิ่มเติมของการสือสารแบบ Serial อ่านรายละเอียดเพิ่มเติมได้จากบนความนี้ครับ TTL UART RS232 คืออะไร

เพื่อง่ายต่อการทําความเข้าใจ ผมจะยกตัวอย่างการใช้งานอย่างง่ายๆ ดังนี้ ผมจะเชื่อมต่อ Arduino board เข้ากับ Computer เพื่อส่งข้อมูลไปมาระหว่าง Arduino board กับ Computer ผ่าน Serial port

Arduino ที่ผมเลือกมาเป็นตัวอย่างจะเป็นรุ่น UNO ซึ่งจะมีตําแหน่งของ Serial port (pin TX/RX) ตามรูปครับ

Image

โดยทั่วไป Arduino board ในแต่ละรุ่น นั้นจะมี Serial port มาให้อย่างน้อย 1 Port (pin TX/RX) และจะเป็นแบบ TTL (5V หรือ 3.3V)

โดยปกติเมื่อเราเชื่อมต่อ Arduino board เข้ากับ Computer เพื่อทําการ Upload program จะทําผ่าน Serial port อยู่แล้ว ดังนั้นเราจึงใช้ Port นี้ในการชื่อสารกับ Computer ได้เลย

มาดูตัวอย่าง Source code กันเลยครับ

void setup() {
  // initialize serial ports:
  Serial.begin(9600);
}

void loop() {
  // Check ว่ามีข้อมูลส่งมาที่ Serial หรือไม่
  if (Serial.available()) {
    // อ่านข้อมูลที่ถูกส่งมา 1 Byte แล้วเก็บไว้ใน incomingByte
    int incomingByte = Serial.read();

    // ส่งข้อมูล incomingByte ไปยัง Serial ซึ่งจะถูกส่งไปยัง Computer ผ่าน Serial port
    Serial.print("Byte from computer:"); // ส่งเป็นข้อความ "Byte from computer:"
    Serial.write(incomingByte); // ส่งเป็น incomingByte ไปยัง Serial
    Serial.write('\n'); // ส่ง Byte '\n' สําหรับขึ้นบรรทัดใหม่
  }
}

จากตัวอย่าง Source code มีรายละเอียดของคําสั่งต่างๆที่สําคัญดังนี้

Serial.begin(9600);

คือคําสั่ง initialize serial ports ว่าเราจะใช้ port ไหน (ใน Arduino board UNO จะมี Serial port เดียวคือ “Serial”) 9600 คือ speed (bps) ความเร็วในการส่งข้อมูล

Serial.available()

ใน Code จะวน loop Check ว่ามีข้อมูลส่งเข้ามาหรือไม่ โดยจะ Check ด้วยคําสั่ง Serial.available()

int incomingByte = Serial.read();

เมื่อมีข้อมูลเข้ามาจะอ่านข้อมูลนั้นเก็บไว้ในตัวแปร “incomingByte” โดยใช้คําสั่ง int incomingByte = Serial.read();

Serial.write(incomingByte);

เมื่ออ่านข้อมูลเก็บไว้ในตัวแปรเรียบร้อย ก็ทําการส่งข้อมูลต่อไปยัง Computer ด้วยคําสั่ง Serial.write(incomingByte);

เริ่มทดสอบโดยเชื่อมต่อ Arduino board เข้ากับ Computer

Image

นําตัวอย่าง Code ด้านบนไปเขียนใน Arduino IDE แล้ว Upload ลงบน Arduino board หนังจากนั้นทดสอบโดยเปิด Serial Monitor ของ Arduino IDE ขึ้นมา

Image

หน้าตาของ Serial Monitor จะเป็นประมาณนี้ครับ

Image

เมื่อทดสอบส่งข้อมูลจาก Computer ไปยัง Arduino board ในทันทีที่ Arduino board ได้รับข้อมูลจะส่งกลับมายัง Computer ทันที ตามที่เราได้เขียนโปรแกรมไว้

จะได้ประมาณนี้ครับ

Image

เรียบร้อยครับ สําหรับการใช้งาน Serial port ของ Arduino สามารถทําไปต่อยอดในงานอื่นๆได้เช่น เชื่อมต่อกับ Sensor หรือ module อื่นๆ ได้ตามความต้องการครับ

ก็ขอจบเนื้อหาไว้เท่านี้นะครับ แล้วเจอกันใหม่ในตอนต่อไปนะครับ :)

Suggestion blogs

Docker no space left on device error

สวัสดีครับ บทความนี้จะเป็นเรื่องเกี่ยวกับ Error ของ Docker ครับ คือ  "Docker no space left on device error" ซึ่งเกิดจาก Docker ไม่สามารถเขียนไฟล์ Docker.qcow2 ได้ เนื่องจาก ไฟล์ดังกล่าวมีขนาดใหญ่เกินไป

วิธีใช้ nano Command Text Editer

nano เป็นคําสั่งที่ใช้แก้ไข Text File คล้ายๆกับ notepad ใน Windows รูปแบบการใช้งานก็มีดังนี้nano [FILE]...[FILE]... คือ ชื่อของ Text file ที่ต้องการจะ แก้ไข(ถ้าไฟล์นั้นมีอยู่แล้ว จะเปิดไฟล์นั้นขึ้นมาแก้ไข แต่ถ้าไม่พบไฟล์ จะสร้างไฟล์ขึ้นมาใหม่)Imageคําสั่ง nano พื้นฐานบันทึกไฟล์ Cltr + Oการ Copy ข้อความทั้งบรรทัด Alt + ^การ Cut ข้อความทั้งบรรทัด Cltr + Kการ Paste บรรทัดที่ Copy มา Cltr + Uการค้นหาคำ Cltr + Wการค้นหาคำ Alt + Wการเลือกข้อความ Cltr + Shift + 6 แล้ว เลื่อน Cursor ไปซ้ายขวาจนได้เนื้อหาที่ต้อการการ Copy ข้อความที่เลือก Alt + Shift + 6การ Cut ข้อความที่เลือก Cltr + Kออกจากโปรแกรม Cltr + x

Flutter EP.4 Project structure file flutter

สวัสดีครับ ใน EP.3 เราได้เรียนรู้ Widget ใน Flutter กันไปแล้ว สําหรับเนื้อหาต่อไปในบทความนี้จะเป็นเรื่องโครงสร้างไฟล์ใน Flutter ว่ามีอะไรบ้าง แต่ละไฟล์คืออะไร เราจะได้มาเรียนรู้กันครับ


Copyright © 2019 - 2026 thiti.dev | v1.61.0 | Privacy policy | 

Build with ❤️ and Astro.

Github profile Linkedin profile Instagram X profile Nostr Youtube channel Telegram Email contact วงแหวนเว็บ