Gửi nhận dữ liệu tới Arduino

Blog không chuyên về lập trình nhúng, tuy nhiên nhiều bạn hỏi nên mình viết bài này. Gửi nhận dữ liệu tới Arduino dùng để điều khiển phần cứng khác với dữ liệu gửi từ máy tính. Ví dụ bạn lập trình được phát hiện chuyển động, nếu đó là người thì tự động mở cửa chẳng hạn.

Bài viết này hướng dẫn ở mức cơ bản và tiện dụng nhất cho người mới làm quen. Các vấn đề xảy ra khi lập trình mình cũng đã giải quyết hết trong source code.

Chuẩn bị

– Board Arduino, cáp kết nối
– Visual Studio 2015 trở lên

Cài driver cho board Arduino, với các board khác nhau (UNO, Nano,…) cần tìm driver cho phù hợp.

Mục tiêu

Chúng ta sẽ gửi 1 chuỗi ký tự đến Arduino kiểu kết nối Serial, trong phần quản lý thiết bị sẽ hiện ra các cổng COM. Trong máy mình đang kết nối tới board Arduino Uno qua cổng COM18.
devmgmt

Khi board Arduino nhận được đầy đủ chuỗi ký tự thì sẽ trả ngược về máy tính chuỗi đã nhận. Để biết được kết thúc chuỗi mình dùng ký tự xuống dòng \n để đánh dấu hết chuỗi. Để biết được Arduino đã gửi lên mình kèm theo chuỗi “Arduino got: ” phía trước.

Trong trường hợp máy bạn đang kết nối nhiều board thì bạn phải chỉ rõ COM số mấy. Nhưng đa số sẽ chỉ kết nối 1 board, do đó mình có viết hàm tự động kết nối. Hàm tự động kết nối đọc được các loại board Arduino và Vietduino.

Giải thích source code

Bạn cần upload source Arduino lên board, sau đó chạy chương trình C# là có thể test thử. Code để truyền nhận dữ liệu Arduino và các vấn đề liên quan viết trong TGMTarduino.cs. File này có tác dụng:
– Tự động lựa chọn port của board Arduino để kết nối
– Phát hiện board bị mất kết nối
– Có callback để trả về dữ liệu nhận được từ board

Do việc lập trình đa luồng sẽ có chút phức tạp với những bạn mới làm quen nên mình đã code sẵn. Chỉ cần bắt chước làm theo tương ứng source code là được.

Giao diện chương trình:
communication_form

Bonus

Bạn có thể upload source code Arduino lên board rồi dùng chương trình tool Serial Monitor để test. Tool có sẵn đi kèm với IDE lập trình, ấn Ctrl + Shift + M hoặc menu: Tool -> Serial Monitor để mở.

Khi cửa sổ hiện lên các bạn chọn End line là New line như trong hình, sau đó nhập ký tự rồi ấn Send. Kết quả nhận được sẽ hiện ra ở ô bên dưới.
comport_monitor

Download

GitHub: https://github.com/thigiacmaytinh/Arduino_communication

Leave a Reply