Lập trình IoT với Windows 10, Arduino và Visual Studio 2015

IoT đang trở thành trào lưu phát triển ứng dụng ngày nay, đặc biệt sau khi Windows 10 ra mắt và hỗ trợ lập trình viên phát triển ứng dụng IoT trên nền tảng Windows IoT Core, đã mở ra thêm nhiều cơ hội phát triển hơn cho IoT.

Trong bài viết này mình sẽ đi vào chi tiết việc phát triển một ứng dụng IoT thực tế đó là điều khiển bo mạch Arduino từ một ứng dụng Universal Windows Platform trên laptop thông qua cổng kết nối USB. Các công cụ sử dụng trong bài viết này:

  1. Bo mạch Arduino Uno

IoT_win10_arduino_tools_00 IoT_win10_arduino_tools_01

  1. Visual Studio 2015 chạy trên nền tảng Windows 10
  2. Arduino IDE phiên bản mới nhất
  3. Dây kết nối USB giữa bo mạch Arduino với máy tính và 1 chiếc đèn LED

IoT_win10_arduino_tools_02

IoT_win10_arduino_tools_03

Tạo project với Visual Studio 2015

Bạn tiến hành mở Visual Studio 2015 lên và tạo mới 1 Blank App (Universal Windows)

IoT_win10_arduino_00

Tiếp theo, bạn hãy clone Windows Remote Arduino GitHub repository về máy tính của mình, hoặc tải về file .zip và giải nén vào 1 thư mục trên máy tính của mình.

Trong Solution Explorer, bạn click phải vào solution vừa tạo và chọn Add -> Existing Project.

IoT_win10_arduino_01

Bạn tiến hành thêm lần lượt 3 project là Microsoft.Maker.Firmata, Microsoft.Maker.RemoteWiringMicrososoft.Maker.Serial nằm trong thư mục Microsoft.Maker.win10 vào.

IoT_win10_arduino_02

IoT_win10_arduino_03

Kết quả sau khi thêm 3 project

IoT_win10_arduino_04

Kế tiếp, bạn tiến hành trỏ tham chiếu đến 3 project trên cho ứng dụng Universal Windows mà bạn đã tạo bằng cách click phải vào mục References -> Add Reference…

IoT_win10_arduino_05

Một của sổ mới hiện lên, trong mục Projects -> Solution, bạn đánh dấu vào 3 ô tương ứng với 3 project cần trỏ tham chiếu đến.

IoT_win10_arduino_06

IoT_win10_arduino_07

Tiếp theo bạn thực hiện Rebuild lại Universal Windows project và thêm vào dòng sau trong thẻ <Capabilities> trong tập tin Package.appxmanifest để thêm vào tính năng kết nối qua cổng USB cho ứng dụng. Nếu double click vào tập tin này thì sẽ không tìm thấy được ô để chọn bật tính năng này lên, mà phải mở code để thêm vào bằng tay.

IoT_win10_arduino_09

IoT_win10_arduino_08

Cài đặt thiết bị

Bo mạch Arduino cần được chạy trên Firmata để giao tiếp với ứng dụng thông qua cổng USB, Bluetooth hay Wifi (trong bài viết này là qua cổng USB).

Windows Remote Library sử dụng Firmata protocol, mà trong Arduino được thực thi với StandardFirmata đã được đóng gói sẵn khi bạn cài đặt phần mềm Arduino. Bạn tiến hành tải StandardFirmata sketch vào bo mạch Arduino theo các bước sau:

  • Kết nối bo mạch Arduino với máy tính bằng cáp USB

IoT_win10_arduino_tools_04

  • Mở Arduino IDE đã cài đặt lên
  • Chọn mẫu bo mạch Arduino tương ứng với bo mạch bạn đang sử dụng, trong trường hợp này là Arduino/Genuino Uno.

IoT_win10_arduino_11

  • Chọn cổng kết nối đến bo mạch tương ứng

IoT_win10_arduino_12

  • Trong Arduino IDE, từ thanh menu bạn chọn Files -> Examples -> Firmata -> StandardFirmata để mở code cho StandardFirmata lên

IoT_win10_arduino_10

  • Nhấn nút “Upload” để tiến hành tải chương trình vào bo mạch Arduino

IoT_win10_arduino_13

IoT_win10_arduino_14

Bây giờ bo mạch Arduino của bạn sẽ chạy StandardFirmata suốt cho đến khi nào bạn tải một bản sketch mới vào bo mạch. Bây giờ bạn có thể ngắt kết nối bo mạch với máy tính nếu bạn muốn.

Phát triển ứng dụng

Chúng ta sẽ sử dụng Windows Remote Library để thực hiện việc bật – tắt đèn LED trên bo mạch Arduino.

Trong Universal Windows project mà bạn đã tạo, bạn mở tập tin code-behind MainPage.xaml.cs lên, chúng ta sẽ tiến hành tạo kết nối đến bo mạch bằng cách thêm vào các dòng code sau:

IoT_win10_arduino_18

Lưu ý với bạn, trong hàm UsbSerial mình khải báo 2 tham số là VID và PID chính là các Id của cổng kết nối máy tính với Arduino. Bạn có thể tìm thấy thông tin này để điền vào cho chính xác bằng cách mở Control Panel trong Windows lên và chọn mục Device Manager.

IoT_win10_arduino_15

Trong cửa số của Device Manager, bạn chọn mục Ports (COM & LPT) -> Arduino Uno (COM4) và nhấn double click để hiển thị thông tin của cổng này.

IoT_win10_arduino_16

Cửa sổ thông tin hiện lên, bạn chuyển qua tab Details, trong mục Property bạn chọn Hardware Ids và khi đó các giá trị VID và PID sẽ hiện ra bên dưới trong phần Value.

IoT_win10_arduino_17

Tiếp theo ta sẽ gọi callback function đến ConnectionEstablished event để thiết lập kết nối đến cổng USB.

IoT_win10_arduino_19

Bạn mở file MainPage.xaml để tiến hành thiết kế giao diện cho ứng dụng. Để đơn giản, chúng ta sẽ tạo ra 2 nút, 1 nút để bật và 1 nút để tắt đèn LED.

IoT_win10_arduino_20

Bây giờ chúng ta sẽ viết các hàm để thực hiện việc bật – tắt đèn LED khi người dùng nhấn vào nút On (để bật) và Off (để tắt). Và vị trí đèn LED được đặt ở pin thứ 13 trên bo mạch (1 chân cắm vào pin số 13, 1 chân cắm vào GND).

IoT_win10_arduino_21

Ctrl + F5 để build và deploy ứng dụng vào máy tính của bạn đề bắt đầu chạy chương trình.

IoT_win10_arduino_22

Và kết quả chạy thực tế ứng dụng điều khiển bật tắt đèn LED trên bo mạch Arduino từ máy tính.

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s