Windows 10 IoT Core: Deploy app lên Raspberry Pi

Trong bài trước Windows 10 IoT Core trên Raspberry Pi: Hướng dẫn Setup mình đã hướng dẫn các bạn cài đặt thành công Windows 10 IoT lên Raspberry Pi. Trong bài này chúng ta sẽ cùng nhau Deploy 1 ứng dụng đơn giản lên nó nhé.

Chúng ta sẽ tạo 1 ứng dụng đơn giản điều khiển đèn LED trên Raspberry Pi thông qua Windows 10 IoT Core và Visual Studio.

Windows 10 IoT Core: Deploy app lên Raspberry Pi

1. Load app vào Visual Studio

Các bạn lên trang GitHub của Windows 10 IoT Core và download repository các projects mẫu chính chủ Microsoft về tại đây. Trong file bạn tải về sẽ có nhiều projects mãu cho các bạn tham khảo nhưng trong bài này chúng ta chỉ tạm quan tâm tới ứng dụng Blinky. Các bạn giải nén và di chuyển tới mục samples-developBlinky, các bạn copy toàn bộ các file của project trong thư mục CS (là ngôn ngữ C#) vào 1 thư mục khác, vào thư mục mới vừa copy được và mở dự án đó lên bằng cách click chuột vào file solution Blinky.sln.

Lưu ý: Các hàm API GPIO là các hàm sử dụng chân pin mở rộng của Raspberry Pi nên chỉ chạy được trên Windows 10 IoT Core, vậy nên project này sẽ không thể chạy được trên máy tính của các bạn.

2.Gắn đèn LED vào Raspberry Pi

Yêu cầu:

  • 1 bóng đèn LED(màu nào tùy bạn)
  • 1 điện trở 220 Ohm
  • breadboard và dây nối

RP2_Pinout

Cách gắn:

  1. Gắn chân ngắn của LED vào chân GPIO 5(pin 29) trên Pi.
  2. Gắn chân dài của LED vào 1 đầu điện trở.
  3. Gắn đầu còn lại của điện trở vào 1 chân nguồn 3.3V của Raspberry Pi.
  4. Các bạn lưu ý các đầu pin đèn LED cần phải đúng thứ tự. Cách đầu dây như thế này gọi là Active Low

breadboard_assembled_rpi2_kit

3.Deploy ứng dụng Blinky của bạn

  1. Với project Blinky đã được mở trong Visual Studio, các bạn chọn kiến trúc ARM trong thanh chọn.

cs-remote-machine-debugging

  1. Tiếp theo, các bạn chọn thanh xổ xuống của Local Machine và chọn thành Remote Machine.
  2. Lúc này Visual Studio sẽ hiện bảng kết nối tới các thiết bị ở xa Remote Connections. Các bạn có thể nhập hostname của Raspberry Pi của mình tại đây hoặc nhập trực tiếp địa chỉ IP của Pi, sau đó các bạn chọn Universal ở phần Windows Authentication và bấm Select. cs-debug-project-properties
  3. Sau khi mọi thứ đã được setup xong, bạn đã có thể bấm F5 từ Visual Studio để deploy app từ Visual Studio lên Raspberry Pi đã được kết nối chung network.

deploy

  • Sau khi chạy xong, ứng dụng sẽ chạy lên với giao diện như sau.
  • Xin chúc mừng, bạn đã hoàn thành deploy 1 ứng dụng Universal điều khiển các chân GPIO lên Raspberry Pi.

4.Tìm hiểu về code C# của Blinky

Code Timer bấm giờ

Khá là đơn giản.

public MainPage()
{
    // ...

    timer = new DispatcherTimer();
    timer.Interval = TimeSpan.FromMilliseconds(500);
    timer.Tick += Timer_Tick;
    InitGPIO();
    if (pin != null)
    {
        timer.Start();
    }

    // ...
}

private void Timer_Tick(object sender, object e)
{
    if (pinValue == GpioPinValue.High)
    {
        pinValue = GpioPinValue.Low;
        pin.Write(pinValue);
        LED.Fill = redBrush;
    }
    else
    {
        pinValue = GpioPinValue.High;
        pin.Write(pinValue);
        LED.Fill = grayBrush;
    }
}

Code điều khiển chân pin GPIO

Để điều khiển các chân GPIO thì đầu tiên các bạn phải khai báo và khởi tạo nó qua thư viện Windows.Devices.Gpio

using Windows.Devices.Gpio;

private void InitGPIO()
{
    var gpio = GpioController.GetDefault();

    // Show an error if there is no GPIO controller
    if (gpio == null)
    {
        pin = null;
        GpioStatus.Text = "There is no GPIO controller on this device.";
        return;
    }

    pin = gpio.OpenPin(LED_PIN);
    pinValue = GpioPinValue.High;
    pin.Write(pinValue);
    pin.SetDriveMode(GpioPinDriveMode.Output);

    GpioStatus.Text = "GPIO pin initialized correctly.";

}

Giải thích 1 chút xíu nhé:

  • Đầu tiên chúng ta sử dụng GpioController.GetDefault() để lấy bộ điều khiển GPIO.
  • Nếu thiết bị sử dụng không có chân GPIO thì hàm này sẽ trả về giá trị Null
  • Sau đó chúng ta thử gọi chân pin qua hàm GpioController.OpenPin() qua giá trị LED_PIN
  • Mặc định chúng ta sẽ tắt tín hiệu chân pin (giá trị High) mặc định qua hàm GpioPin.Write()
  • Sau đó chúng ta cũng sẽ cài đặt chân pin chạy ở chế độ Output để điều khiển tín hiệu đèn qua hàm GpioPin.SetDriveMode()

Thay đổi trạng thái đèn LED qua chân pin GPIO

Đơn giản để bật đèn LED thì bạn chỉ cần set giá trị Low thông qua câu lệnh pin.Write(GpioPinValue.Low);

và để tắt nó đi thì đon giản chỉ cần set giá trị thành High pin.Write(GpioPinValue.High);

Các bạn lưu ý rằng do cách đấu chân pin đèn LED ở trên nên ta cần phải set giá trị Low để có dòng điện chạy qua đèn LED.


Vậy là qua bài này các bạn đã biết cách sử dụng chân pin GPIO trên Windows 10 IoT Core, viết 1 app Universal và deploy nó lên Raspberry Pi của bạn qua mạng không dây. Hi vọng các bạn có thể tiếp tục vọc vạch và học thêm được nhiều điều bổ ích trên Rasberrypi.vn.