VBLUno - Tutorial hướng dẫn lập trình Arduino IDE cho bo mạch VBLUno

Mô tả dự án: 

Đây là chuỗi các bài tutorial giới thiệu và hướng dẫn mọi người phát triển ứng dụng trên Arduino IDE cho bo mạch VBLUno của VNG. Đặc biệt là các hướng dẫn và demo về Bluetooth Low Energy. Hôm nay chúng ta sẽ cùng nhau xem cách lập trình cho VBLUno để nói hello world với thế giới từ VBLUNO.

Giới thiệu bo mạch VBLUno

Nội dung trình bày

  • Giới thiệu bo mạch VBLUno của VNG IoTLab;
  • Hướng dẫn cài đặt Arduino IDE cho VBLUno;
  • Ví dụ Hello World.

Bo mạch VBLUno để làm gì?

VBLUno (VNGIoTLab BLE Uno) là mô đun Bluetooth Low Energy (BLE) được thiết kế mở rộng theo pinout tương thích chuẩn Arduino Uno, được tạo ra với mục đích giúp cho các lập trình viên dễ dàng tiếp cận công nghệ BLE và nguồn tài nguyên vô tận của Arduino cho việc phát triển các sản phẩm ứng dụng trong Internet of Things (IoT).

Điểm nhấn của bo mạch VBLUno là mô đun BLE được các kỹ sư của VNGIoTLab tự nghiên cứu và thiết kế. Đây cũng là mô đun đã và đang được sử dụng trong nhiều sản phẩm thương mại của VNG như CSM Router, Gateway,…. Mô đun BLE sử dụng chip nRF51822 của hãng Nordic Semiconductor, với nhân ARM Cortex-M0 32bit hỗ trợ chuẩn giao tiếp Bluetooth Smart (BLE). Bên cạnh các chuẩn truyền thông như 6LoWPAN, Zigbee, …, BLE được xem là chuẩn truyền thông cực kỳ phù hợp dành cho IoT, với các ứng dụng truyền thông khoảng cách gần và đặc biệt là độ tiêu thụ năng lượng cực kỳ thấp, thân thiện với môi trường sống. Ví dụ như các hệ thống tòa nhà thông minh, vườn thông minh, cửa hàng thông minh, quản lý trẻ em, …

Với tinh thần chia sẻ và mong muốn cộng đồng IoT Việt Nam có thể tiếp cận công nghệ BLE một cách dễ dàng nhất, VBLUno được công bố dưới dạng mã nguồn mở,  từ sơ đồ phần cứng, các mã nguồn chương trình ví dụ, mã nguồn bootloader, mã nguồn công cụ upload, tài liệu hướng dẫn… Các bạn có thể dễ dàng tham khảo cũng như tùy biến.

Bằng việc sử dụng Arduino IDE và bo mạch VBLUno, các bạn có thể dễ dàng tiếp cận và xây dựng các ứng dụng IoT với công nghệ BLE, tiến tới làm chủ việc thiết kế các thiết bị đầu cuối trong hệ thống IoT.

Hình ảnh thực tế bo mạch VBLUno và pinout

Hình 1: Hình ảnh thực tế và pinout của bo mạch VBLUno

Thông số cơ bản của bo mạch VBLUno

CPU

Nordic nRF51822, nhân ARM Cortex-M0 32-bit

Truyền thông không dây 2.4GHz

Hỗ trợ giao tiếp Bluetooth Low Energy hay còn gọi là Bluetooth Smart:

  • 4dBm to -20dBm output power in 4dBm steps
  • 30dBm output power in whisper mode
  • 96dBm RX sensitivity at 250kbs
  • 90dBm RX sensitivity at 1Mbps
  • 85dBm RX sensitivity at 2Mbps
  • 2 Mbps, 1 Mbps and 250kbs supported data rates
  • Excellent co-existence performance

Xung nhịp hệ thống

16MHz

Tiêu thụ năng lượng thấp
Ultra low power consumption
6.3mA - TX at -4dBm (3V using on-chip DC-DC)
8.0mA - TX at 0dBm (3V using on-chip DC-DC)
11.8mA – TX at +4dBm (3V using on-chip DC-DC)
9.7mA – RX (3V using on-chip DC-DC)
13mA – RX at 1Mbps (No DC-DC)
10.5mA – TX at 0dBm (No DC-DC)
0.6µA – SYSTEM-OFF, no RAM retention
1.2µA - SYSTEM-OFF, 8KB RAM retention
2.6µA - SYSTEM-ON, All peripherals in idle mode
Digital I/O
21 kênh;
Điện áp cực đại: +3.6V
ADC
6 kênh;
Độ phân giải: 10bit
Điện áp hoạt động: 0 ÷ +3.3V
Timer
3 bộ Timer 16bit với chế độ counter
UART
01 bộ
SPI
01 bộ
I2C
02 bộ
PWM
Tối đa 3 kênh tại cùng thời điểm;
Chế độ 8bit, 16bit;
Cấu hình PWM trên các kênh GPIO.
Ngắt ngoài
Cấu hình trên các kênh GPIO.
Nạp chương trình
- Sử dụng tiện ích để nạp trực tiếp từ Arduino IDE (Cổng USB to UART)
- Sử dụng mô đun CMSIS-DAP nạp qua chuẩn SWD
Nguồn cung cấp
+5V ÷ +12V
Pinout
Thiết kế phù hợp pinout của Arduino Uno Rev3

Cài đặt môi trường làm việc

Các bo mạch Arduino phổ biến sử dụng chip vi điều khiển AVR. Nếu thiết kế  theo các mạch Arduino có sẵn, có thể dễ dàng sử dụng Arduino IDE để lập trình. Bo mạch VBLUno không sử dụng các thiết kế có sẵn từ arduino.cc nên cần cài đặt bổ sung các package hỗ trợ. VNGIoTLab đã tham khảo và nghiên cứu phát triển package hỗ trợ Arduino IDE cho VBLUno.

Các bước thực hiện

Bước 1. Cài đặt trình điều khiển cho chip CP210x – USB to UART

Bước 2. Cài đặt Arduino IDE

Chú ý

Nếu bạn đang sử dụng hệ điều hành Linux, cần chạy Arduino IDE với quyền root. Điều này giúp Arduino IDE có thể mở cổng nối tiếp (UART) để nạp firmware cho mạch VBLUno.

  • Mở Terminal (Ctrl + Alt + T)
  • Chuyển đến thư mục đã cài đặt Arduino bằng cách sử dụng lệnh “cd”. Ví dụ cd /home/mrABC/arduino-1.6.10
  • Mở Arduino IDE với lệnh sudo: sudo ./aduino

Bước 3. Cài đặt gói dữ liệu giúp lập trình Arduino IDE trên mạch VBLUno

  • Chắc chắn Arduino IDE không được mở trong quá trình cài đặt offline.
  • Tải bản cài đặt phù hợp với hệ điều hành:
  • Giải nén và chạy file cài đặt (Có thể phải chờ một vài phút để trình cài đặt tìm thư mục lưu thông tin về các packages của Arduino IDE)
    • Windows: Setup_VBLUno_Windows.exe
    • Linux: sudo ./Setup_VBLUno_Linux?? (??=32 hoặc 64). Chú ý phải sử dụng lệnh sudo
    • Bạn chờ đến khi chương trình thông báo “The installation was successful” là quá trình cài đặt đã hoàn thành.

Hình 2: Quá trình cài đặt gói dữ liệu hỗ trợ

  • Quá trình cài đặt thành công, bạn khởi động Arduino IDE, board mạch VBLUno được tự động lựa chọn.

Hình 3: Kết quả sau khi cài đặt

Phiên bản hiện tại là 1.0.2 (15/8/2016). Thường xuyên theo dõi trang Github https://github.com/VNGIoTLab/Arduino_VBLUno_nRF51822 để cập nhật phiên bản mới nhất.

Như vậy, chúng ta đã cài đặt xong môi trường làm việc cho bo mạch VBLUno trên Arduino IDE. Phần tiếp theo sẽ trình bày ví dụ Hello World để kiểm tra bo mạch VBLUno của chúng ta.

Ví dụ Hello World

Khi học một ngôn ngữ lập trình mới, thông thường chương trình đầu tiên chúng ta thực hiện là Hello World example. Mục đích để giúp lập trình viên nắm được cấu trúc cơ bản của một chương trình, cách sử dụng IDE và trình biên dịch, và đặc biệt là tạo hứng thú cho lập trình viên theo kiểu “Đầu xuôi đuôi lọt”.

Với VBLUno cũng vậy, các bạn cũng nên bắt đầu bằng việc thực hiện một ví dụ Hello World, đó chính là ví dụ điều khiển nhấp nháy Led đơn.

Các bước thực hiện

1. Kết nối mạch VBLUno với PC thông qua cổng USB trên mạch.

  • Chuyển cầu nối trên jump J7 về vị trí cho phép nạp firmware qua cổng USB bằng bootloader (vị trí 1-2, gần phía Jack nguồn màu đen).
  • Bạn chuyển cầu nối sang vị trí 1-2, trong hình cấu nối đang ở vị trí 2-3.

image

  • Sau đó ấn nút Reset. Lúc này quan sát thấy sáng cả 2 led trên mạch.

2. Chọn board và cổng serial để nạp

  • Chọn VBLUno nRF51822 board từ menu của Arduino IDE:
    • Menu > Tools > Board > VBLUno nRF51822 (V1.0 32KB)
  • Chọn cổng nối tiếp tương ứng của VBLUno:
    • Menu > Tools > Port > [tên cổng nối tiếp của VBLUno]

3. Ví dụ nháy led (Blink)

Bạn hãy copy và paste đoạn mã nguồn này vào Arduino IDE

/*************************************************************************
Arduino IDE with VBLUno kit
Tutorial 1 - Hello World Example
Ví dụ nhấp nháy led trên mạch VBLUno với chu kỳ 2s
***************************************************************************/

// the setup function runs once when you press reset or power the board
void setup() {
  // Khởi tạo chân LED là chân OUTPUT (trên VBLUno có sẵn 1 Led)
  pinMode(LED, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED, HIGH);   		// Bật sáng Led 
  delay(1000);              			// Chờ 1 giây
  digitalWrite(LED, LOW);    		// Tắt led
  delay(1000);              			// Chờ 1 giây
}
  • Sử dụng chức năng upload (Menu => Sketch => Upload) để biên dịch chương trình và nạp firmware xuống mạch VBLUno.
  • Nếu biên dịch và nạp thành công, bạn sẽ nhận được thông báo “Device programmed”

Hình 4: Ví dụ hello world đã được biên dịch và nạp thành công

4. Chạy application

Sau khi nạp, chuyển cầu nối trên jump J7 về vị trí cho phép chạy Application (vị trí 2-3, gần phía cổng USB). Bạn quan sát LED chỉ thị trên mạch VBLUno, lúc này nó sẽ nhấp nháy theo chu kỳ 2s. Chúc mừng bạn đã thực hiện xong ví dụ đầu tiên với Arduino IDE cho bo mạch VBLUno.

Đi xa hơn

Có thể thấy, chúng ta có thể thực hiện được các ví dụ cơ bản của Arduino IDE trên bo mạch VBLUno. Trong bài viết tiếp theo, chúng tôi sẽ trình bày những ví dụ cơ bản với giao tiếp BLE, thế mạnh của VBLUno.

Chân thành cảm ơn bạn đã đọc tài liệu này. Mong nhận được ý kiến đóng góp của các bạn. 

lên
16 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Giới thiệu bo mạch VBLUno51 của VNG

Sau một thời gian giới thiệu bo mạch phát triển VBLUno đến cộng đồng, VBLUno đã giúp mọi người tiếp cận nhanh chóng với công nghệ Bluetooth Low Energy phục vụ phát triển ứng dụng Internet of Things.

Bên cạnh các ưu điểm trên, VBLUno phiên bản đầu tiên vẫn tồn tại khuyết điểm như: không tích hợp một interface cho phép nạp và gỡ lỗi một cách dễ dàng. Với phiên bản đầu tiên, để nạp/gỡ lỗi dễ dàng, người dùng cần sử dụng thêm mô đun CMSIS-DAP, điều này gây trở ngại không nhỏ cho người dùng.

Với tinh thần lắng nghe từ cộng đồng, chúng tôi đã nâng cấp mạch VBLUno lên phiên bản 2.0 với tên gọi là VBLUno51, bản chất là tích hợp mô đun CMSIS-DAP (DAPLink) lên mạch VBLUno và một số cải tiến quan trọng khác liên quan đến nguồn và ngoại vi. Như vậy, việc nạp chương trình cho mạch VBLUno51 sẽ dễ dàng hơn nhiều, bạn có thể xem mục Bắt đầu thôi! để biết cách nạp chương trình cho VBLUno51.

lên
32 thành viên đã đánh giá bài viết này hữu ích.

VBLUno kit- Tự làm một thiết bị Beacons với VBLUno

Như mọi người đã biết, công nghệ Beacons ngày càng được ứng dụng rộng rãi trong công nghiệp, giải trí, an ninh, thương mại,...  Có thể xem Beacons là "ngọn hải đăng" chứa những thông tin tối thiểu, phát ra môi trường dựa trên công nghệ BLE, giúp truyền tải những thông tin đến các thiết bị khác. Với VBLUno, việc thử nghiệm một thiết bị beacons trở nên dễ dàng hơn bao giờ hết.

lên
6 thành viên đã đánh giá bài viết này hữu ích.