Lập trình ứng dụng nhúng với thư viện EMBD của Go

Ứng dụng nhúng với thư viện EMBD của Golang

Khi phát triển các ứng dụng nhúng (embedded application), tôi thường sử dụng C, C++ hoặc Python là chủ yếu. C và C++ có hiệu suất xử lý cao nhưng tốn nhiều thời gian để viết các chương trình mẫu và phát triển những ứng dụng có logic phức tạp. Đó là chưa nói đến việc phải xây dựng lại hoặc thay đổi mã nguồn khi muốn sử dụng ứng dụng trên một hệ thống phần cứng khác.

Mặt khác, Python tiện lợi để phát triển ứng dụng hơn vì nó là ngôn ngữ đa nền tảng. Nhưng Python có một khuyết điểm là hiệu suất xử lý không được tốt cho lắm. Vì vậy, tôi đã đi tìm một ngôn ngữ có thể đáp ứng được lợi thế của chúng về tốc độ và thời gian phát triển.

Gần đây, tôi phát hiện ra Go, một ngôn ngữ lập trình được phát triển tại Google vào năm 2007 bởi Robert Griesemer, Rob Pike, và Ken Thompson. Nó là ngôn ngữ kiểu tĩnh (statically typed language) với cú pháp lấy cảm hứng từ C, thêm garbage collection, type safety, những kiểu dữ liệu được định nghĩa sẵn và một thư viện chuẩn khổng lồ.

Go cung cấp cú pháp và một môi trường để xây dựng một ứng dụng nhanh và thú vị như ngôn ngữ kịch bản (scripting language). Ngoài ra, do Go là một ngôn ngữ biên dịch nên hiệu suất xử lý của nó cũng rất tốt. Nghe có vẻ thích đúng không? Nó có mọi thứ tôi cần nên tôi quyết định dùng nó để xây dựng thử một ứng dụng nhúng.

Bỏ chút thời gian tìm kiếm, tôi phát hiện thư viện EMBD. EMBD là thư viện cung cấp các lớp phần cứng trừu tượng (hardware abstraction layer) để phát triển các ứng dụng nhúng cho Go. EMBD hỗ trợ nền tảng của Raspberry PiBeagleBone Black. Hơn thế nữa, ứng dụng có thể chạy trên các nền tảng được hỗ trợ mà không cần phải thay đổi mã nguồn.

Trong bài này, bạn sẽ học được cách sử dụng EMBD với Go thông qua hai ví dụ đơn giản.

Chuẩn bị

Cài đặt Go

Bạn vào trang download của Go để tải bản cài đặt phù hợp với hệ điều hành của mình về. Nếu bạn sử dụng Windows hay Mac OS X thì phiên bản cài đặt của 2 hệ điều hành này đã cấu hình sẵn mọi thứ cho bạn. Nếu bạn sử dụng Linux thì có thể đọc hướng dẫn cài đặt Go.

Tiếp theo là thiết lập GOPATH:

  • Windows: thêm GOPATH=[đường dẫn đến workspace của bạn] vào Environment Variables.
  • Mac OS X, Linux: thêm dòng export GOPATH=[đường dẫn đến workspace của bạn] vào ~/.profile hoặc /etc/profile

Bạn có thể tham khảo thêm cách Go cấu trúc thư mục khi phát triển ứng dụng Go.

Cài đặt EMBD

Chạy lệnh sau ở terminal:

Sử dụng thư viện EMBD để xây dựng ứng dụng nhúng

Ví dụ 1 – Làm đèn led của Raspberry Pi nhấp nháy

Bước 1: Tạo tập tin embd_buildin_light.go đặt trong thư mục src với nội dung như sau:

Bước 2: Biên dịch ứng dụng cho Rasberry Pi (hệ điều hành Linux, kiến trúc arm):

Bước 3: Chép tập tin embd_buildin_light vừa được biên dịch vào Raspberry Pi

Bước 4: Chạy ứng dụng với quyền root

Bạn cần quyền root để chạy lệnh này để cho phép EMBD truy xuất đến các phần cứng của hệ thống.

Kết quả:

Bonus: Thay đổi một chút đoạn code trên sẽ cho kết quả thú vị hơn

Ví dụ 2 – Điều khiển digital input của Raspberry Pi

Bước 1: Lắp mạch điện như hình sau

Raspberry Pi with a led

Bước 2: Viết và biên dịch mã nguồn

Bước 3: Chép vào Raspberry Pi và chạy thử

EMBD còn làm được gì nữa?

Với hai ví dụ trên, bạn sẽ thấy thật dễ dàng khi sử dụng thư viện EMBD để phát triển các ứng dụng cho Raspberry Pi. Bên cạnh đó, EMBD còn hỗ trợ tương tác với:

PWM pin

Analog pin

Và nhiều linh kiện quen thuộc khác như:

  • TMP006 Thermopile sensor
  • BMP085 Barometric pressure sensor
  • BMP180 Barometric pressure sensor
  • LSM303 Accelerometer and magnetometer
  • L3GD20 Gyroscope
  • US020 Ultrasonic proximity sensor
  • BH1750FVI Luminosity sensor
  • Membrane 3×4 Matrix Keypad
  • PCA9685
  • MCP4725

Bên cạnh EMBD, bạn còn biết thư viện nào khác hỗ trợ xây dựng ứng dụng nhúng cho Go thì comment bên dưới nha.

SSS Full-stack Engineer

Love Silicon Straits and want to know more about our company culture, working environment or job vacancies?
Find out more at careers.siliconstraits.vn.

Silicon Straits
Be Challenged. Be Inspired. Be Different.




Posted by

on December 19, 2015

in , , ,

Comments

Follow us for more later

or subscribe with