Processing Bài 2: Giao tiếp thông qua Serial và điều khiển led bằng chuột.

Ở bài đầu về Processing, các bạn đã thấy được việc máy tính nhận được tín hiệu của arduino. Vậy làm sao máy tính có thể làm được? Giao tiếp giữa máy tính và Arduino là giao thức UART (qua Serial). Hôm nay chúng ta cùng nhau tìm hiểu về nó nhé !


UART và Giao tiếp Serial

Bất cứ máy tính hay vi điều khiển (không chỉ có Arduino) đều giao tiếp với nhau thông qua UART. Khi bạn kết nối arduino với máy tính bằng dây USB lúc đó bạn có thể bật Serial Motion lên để có thể gửi cũng như nhận từ Arduino. Vậy có phải UART chỉ truyền qua USB? Không phải đâu, UART chỉ là một phương thức giao tiếp giữa 2 thiết bị, còn cách truyền UART có rất nhiều cách như dây cáp, các loại sóng…

Chúng ta có thể sử dụng 2 Arduino để giao tiếp với nhau bằng 3 chân GND, TX và RX. Thế thì Arduino giao tiếp với máy tính thì sao? Ở mức sử dụng dây dẫn, các bạn sẽ chia làm 2 dạng:

  • Nếu ban sử dụng các arduino đã có chip hoặc module đã builtin sẵn việc sử dụng chuyển đổi UART TO SERIAL như Arduino UNO R3, Mega… thì các bạn chỉ việc cắm dây vào cổng USB.
  • Với những Arduino Promini không có Builtin sẵn thì các bạn phải chuẩn bị một mạch UART TO SERIAL riêng và dùng 3 sợi (có thể 4 sợi thêm VCC cấp nguồn cho Arduino) để giao tiếp với máy tính

Các bạn đã từng sử dụng Serial để Debug rồi thì đó là do Arduino truyền tín hiệu qua máy tính. Trong trường hợp này, các nội dung truyền sẽ được lưu trong output buffer của arduino truyền qua máy tính và lưu input buffer. Máy tính sẽ đọc các dữ liệu đó và quy ra Serial Command. Tương đương thì Arduino cũng có thể được truyền ngược lại theo phương thức ấy theo mô hình sau:

Về phần Serial Command thì mình sẽ hướng dẫn các bạn trong bài kế tiếp, bài này chúng ta sẽ tiếp tục với 2 vấn đề: Làm sao để biết có bao nhiêu kết nối Serial hiện có? Và điều khiển đèn LED bằng chuột máy tính. Chúng ta sẽ sử dụng gửi nhận tín hiệu đơn giản nên không cần dùng đến Serial Command

Làm sao để biết bao nhiêu kết nối Serial hiện có?

Nếu như bạn có kiến thức java thì câu hỏi trên không phải là vấn đề lớn. Nhưng đối với Processing, thì mọi thứ rất dễ để giải quyết câu hỏi trên

Chỉ cần chạy đoạn code sau trong Processing thì sẽ hiển thị cho bạn các Serial hiện kết nối.

 

Như các bạn có thể thấy ở màn hình Serial phía dưới xuất ra “COM1 COM11” có 2 cổng COM đang được kết nối. Kết quả trả về có thể sẽ có dạng danh sách các cổng COM hay cổng /dev/tty,...

Vậy khi các bạn tìm hiểu tới đây, các bạn đã có thể hiểu được lý do vì sao Bài 1 ta không thể chạy khi đang mở Serial Monitor. ể sử dụng được cổng Serial, chương trình phải có quyền đọc nội dung trong cổng đó. Nhưng Processing hay Arduino đều cần phải mở cổng trước thì mới thao tác tiếp được. Nghĩa là nếu không mở cổng được (vì cổng đã được mở) thì Processing hay Arudino sẽ báo lỗi: Cổng Serial đang bận!

Điều khiển LED bằng chuột bằng Processing

Bài 1 chúng ta đã có thể truyền thông tin từ Arduino đến máy tính, vậy ở bài này chúng ta hãy thử truyền ngược lại xem sao !

Chuẩn bị

Tương tự như bài 1

Phần mềm: Arduino IDE, Processing

Phần cứng: Arduino Board (Board như Arduino UNO R3, Mega 2560 đều được) hoặc các bạn có thể lắp mạch điều khiển LED.

Ở đây mình sử dụng Arduino UNO R3 với mạch LED để các bạn có thể nhìn rõ hơn. Các bạn có thể sử dụng LED_BUILTIN trực tiếp từ Arduino (Ví dụ Chân 13 của Arduino Uno)

Lập trình

Code Arduino:

Code Processing:

Tại sao trong mã nguồn của Processing ta lại phải kiểm tra “mousePressed”? Nếu không có nó thì sao ? Các bạn có thể thử nghiệm coi chuyện gì sẽ xảy ra nhé! Các bạn sử dụng Arduino Uno quan sát kỹ đèn TX RX khi thử nghiệm là sẽ hiểu thôi :D

Kết quả

Nguồn: Arduino.vn

Chúc các bạn thành công!!!

Có thể bạn quan tâm ???