Phát triển ứng dụng IOT với Mongoose OS

Bài viết này mình sẽ giới thiệu với các bạn công cụ Mongoose OS và cách để build một project IoT với cái OS này.

Trước khi bắt đầu thì chúng ta có thể tìm hiểu lại một số khái niệm. Nếu các bạn muốn bắt đầu một cách đơn giản và dễ dàng hơn thì có thể xem qua các bài viết trước của mình

Update 22/10/19: Mongoose dạo này đổi nhiều quá, tự dưng đụng vào nên update lại tut cho ae luôn

Giới thiệu

Như chúng ta đã biết thì IoT(Internet of Things) nó có liên quan tới một đối tượng, mình nói nôm na là một đồ vật nào đó được kết nối với Internet. Về mặt kỹ thuật thì việc này được thực hiện bằng cách kết nối 1 “thing” với một máy tính(computer). Với máy tính này thì có thể đọc được dữ liệu từ các “thing” và gửi thông tin này lên internet, ngoài ra nó còn có thể nhận được các lệnh và điều khiển trạng thái của các “thing”.

Để dễ hình dung thì mời các bạn xem hình sau

Ở đây computer có thể là laptop, hoặc máy tính bàn, tuy nhiên 2 cái này giá cũng không rẻ, kích thước thì lớn, ngoài ra thì còn tốn điện nữa, giải pháp khác là dùng các máy tính nhúng loại nhỏ như Raspberry Pi, BeagleBone hoặc Intel Edison, những cái này thì thường chạy Linux, phần này ta thường thấy một tên gọi khác là gateway.

Ở mức độ thing thì thường được sử dụng các MCU, ưu điểm của MCU  có các chân IO để kết nối, thu thập dữ liệu, điều khiển các cơ cấu,… ngoài ra còn có thêm Wifi. Nếu bạn có biết và làm việc với MCU thì mấy khái niệm này khá là đơn giản. Nhưng nếu chưa đụng gì tới, hoặc có khó khăn về phần cứng thì kinh nghiệm là mua ngay 1 board develop để dùng, chẳng hạn như board ESP8266 NodeMCU mình sẽ dùng trong bài viết này.

Có nhiều cách để bạn có thể lập trình thể hiện ý tưởng của mình với NodeMCU, chẳng hạn như dùng ArduinoIDE, tuy nhiên với một tool như Mongoose OS thì ta sẽ thiết lập một hệ điều hành ở trên đó, nghĩa là chúng ta có thể tạm quên đi các cấu trúc liên quan tới phần cứng phức tạp, các bước cấu hình môi trường, compiler,… để tập trung vào dev ứng dụng.

Vậy Mongoose OS sẽ cung cấp cho chúng ta những tính năng gì ?

  • Cài đặt nhanh chóng
  • Dễ dàng lập trình cho người mới bắt đầu cũng như các chuyên gia.
  • Hỗ trợ ngôn ngữ C và JavaScript
  • Các phương thức điều khiển thông qua Restful, websocket, MQTT
  • Tương thích với code Arduino
  • Hỗ trợ các phần cứng như ESP8266,ESP32,TI CC3200 và STM32F746

Tạo project IoT với Mongoose OS

Chuẩn bị

Phần cứng

  • Kit NodeMCU ESP8266 và cáp

Phần mềm

Chúng ta cần tải và cài đặt mos tool hàng chính hãng

  • Windows tải tại link: mos
  • MacOS: Cài brew sau đó chạy các lệnh
$ brew tap cesanta/mos
$ brew install mos
$ mos
  • Linux Ubuntu:
$ sudo add-apt-repository ppa:mongoose-os/mos
$ sudo apt-get update
$ sudo apt-get install mos
$ mos

Thực hiện

Các bước thực hiện rất đơn giản, mình hướng dẫn các bạn cách làm đơn giản nhất trên window, nếu các bạn xài Linux hay MacOS thì mos cũng có hỗ trợ các bạn giao diện trên web tương tự

Bước 1: Mở mos.exe đã tải về hiện lên giao diện như hình và flash firmware

  • Để tạo app mới ấn Ctrl + n
  • Sau đó clone app demo về mos clone https://github.com/mongoose-os-apps/demo-js app1
  • Build app firmware với lệnh mos build
  • Flash firmware với lệnh mos flash

Bước 2: cấu hình Wifi

$ mos wifi WIFI_NETWORK_NAME WIFI_PASSWORD

Nếu hiện kết quả như hình dưới đây và quan sát ở dưới NodeMCU có đèn nháy mỗi giây là thành công

Lưu ý:
Nếu trong quá trình flash xảy ra lỗi thì bạn có thể ấn nút reset trên NodeMCU

Quá trình cài OS lên NodeMCU được lưu tại MOS tool logs và hoạt động được lưu tại Device logs

Bước 3: để bắt đầu code chúng ta cần thay đổi nội dung trong file init.js ở đường dẫn C:\app1\fs

Bước 4: Mình sẽ thử chỉnh sửa code một chút và lưu lại xem có hoạt động không.

Chọn file init.js vào dòng số 17 sửa lại btnCount->btnCountHocARM

Sau đó gọi lệnh sau để update thay đổi

$ mos put fs/init.js
$ mos call Sys.Reboot

Vậy là xong được bước ban đầu, để tìm hiểu và nghiên cứu thêm các bạn có thể xem thêm các tài liệu

Tạm kết

Chúng ta đã có được 1 hệ điều hành được dùng trên ESP8266 mà không cần phải tốn quá nhiều thời gian để tạo môi trường, giờ thì có thể yên tâm làm các ứng dụng của mình mà không phải gặp các lỗi linh tinh về cấu hình nữa rồi 😀