ksp gửi vào
- 24544 lượt xem
Với bài viết của bạn Tống Quốc Thái rất hay, bạn Thái đã chọn một con đường mới là IOT với NodeJS. Hôm nay, là mình xin mở rộng bài này cho các bạn yêu thích. Mục tiêu của bài viết này là "điều khiển một bóng LED từ xa qua Webserver đơn giản". Bạn sẽ học được cách tạo một webserver đơn giản cùng với đó là viết một trang web để điều khiển bé LED của mình trên board mạch Arduino.
Đặt vấn đề
Vì sao mình lại chọn WebSocket để giao tiếp giữa người dùng từ trình duyệt với Arduino? Mình có thể sử dụng các yêu cầu HTTP truyền thống mà! Và lý do là:
Vì sao mình lại chọn NodeJS thay cho ngôn ngữ C++ truyền thống?
Bài toán mình sẽ giải quyết trong bài này:
Cài đặt môi trường NodeJS
Các bạn có thể xem toàn văn hướng dẫn và bài test cài đặt thành công ngay tại đây.
Tạo và truy cập project
Chỉ việc tạo một thư mục với và cd (change dir) vào là chúng ta đã tạo và truy cập dự án thành công!
Cài đặt các thư viện
Ý nghĩa các thư viện:
Nạp code cho Arduino
Ngoài việc nạp chương trình cơ sở (firmware) cho Arduino tên là Firmata, thì bạn không cần phải làm gì cả, nếu chưa nạp Firmata bạn có thể xem bài hướng dẫn ở đây:
Bạn không cần phải lắp mạch trên board Arduino vì trên board Arduino đã có sẵn đèn LED 13 được gắn sẵn rồi mà haha.
Xây dựng code ở server và client
Bạn cần phải hiểu rằng, việc kết nối giữa một thiết bị A đến một thiết bị B luôn có hai vấn đề cần giải quyết (các phần bôi đậm là quan trọng nhất và phải trả lời trong mọi trường hợp cho việc xây dựng server-client):
Chỉ cần giải quyết các vấn đề bôi đậm và ứng dụng các câu trả lời vào thực thế thành công thì bạn đã tự xây dựng được một dự án server-client.
Bạn sẽ lựa chọn công nghệ truyền tin nào?
Mình dùng công nghệ NodeJS (môi trường) và WebSocket (truyền tin). Dùng thư viện SocketIO để dùng WebSocket dễ dàng trên cả server và client.
Các phương thức truyền tin là gì?
Mình sẽ xây dựng các phương thức sau:
Bạn lựa chọn công nghệ và ngôn ngữ lập trình nào để viết nên client?
Mình lựa chọn HTML + Javascript để lập trình client.
Xây dựng chương trình trên Server
Bạn tạo file index.js với nội dung sau:
Xây dựng chương trình trên Client
Bạn tạo file index.htm như sau:
Các bạn hãy chạy đoạn code sau ở Command line:
Sau đó hãy truy cập địa chỉ http://127.0.0.1:8000 ở trình duyệt và thử nhấn các nút như video dưới đây nhé.
Xây dựng code trên server để điều khiển board
Bây giờ mình sẽ sửa code ở file index.js để điều khiển đèn LED.
Chỉ cần khởi tạo board một lần, khởi tạo led một lần. Sau đó khi có bất từ client kết nối tới là điều khiển được ngay.
Kết luận
Bạn thấy đấy, việc tạo một client-server hoàn toàn không khó. Bạn hoàn toàn có thể làm lại được. Bạn hãy sử dụng code mình đã up lên github ở đây để thử nghiệm.
https://github.com/ngohuynhngockhanh/nodeJsDemoControlLed