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
- Mongoose OS Document
- Các project được dùng Mongoose OS.
- Ngoài ra có thể tham khảo developer forum hoặc gửi tin trực tiếp trên mục contact để hỏi.
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 😀