Tài liệu Internet Of Things (IoT) cho người mới bắt đầu

Internet Of Things (IoT)  
cho người mới bắt đầu  
IoT Maker Việt Nam  
Mục lục  
Lời mở đầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1  
Đôi lời về tác giả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1  
Thuật ngữ hay sử dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1  
Giải thích code trong bài. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2  
Giới thiệu nội dung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3  
Ai có thể sử dụng? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4  
Mục tiêu mang lại cho người đọc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4  
Chuẩn bị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4  
Kiến thức cơ bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5  
Internet Of Things (IoT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6  
Internet of Things (IoT) là gì?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6  
Hệ thống Internet of Things (IoT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7  
Những ứng dụng thực tế trong cuộc sống. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10  
ESP8266. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11  
Sơ đồ chân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11  
Thông số phần cứng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12  
SDK hỗ trợ chính thức từ hãng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12  
ESP8285 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13  
Module và Board mạch phát triển . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14  
Board mạch phát triển ESP8266. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14  
Arduino là gì?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16  
Một số đặc điểm của Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16  
Các lợi ích khi sử dụng Arduino. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17  
Cộng đồng Arduino trên thế giới . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17  
Arduino cho ESP8266 & board mạch ESP8266 WiFi Uno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17  
Node.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19  
Lý do sử dụng Node.js trong cuốn sách này. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19  
Cuốn sách này có hướng dẫn Node.js ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20  
Sublime Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21  
Cài đặt và chuẩn bị. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22  
Arduino IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22  
Cài đặt thư viện Arduino. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23  
USB CDC driver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24  
Chọn Board ESP8266 WiFi Uno trong Arduino IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26  
Nạp chương trình xuống board dùng Arduino IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27  
Xuất firmware binary trong Arduino IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27  
Serial Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  
Node.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  
Sublime Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  
Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  
Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30  
Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31  
Chớp tắt bóng LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  
Kiến thức . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32  
Đấu nối . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33  
Mã nguồn chớp tắt dùng Delay. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34  
Mã nguồn chớp tắt dùng định thời . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34  
Digital IO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34  
Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  
Kiến thức . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35  
Mã nguồn dùng hỏi vòng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  
Mã nguồn dùng ngắt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36  
Các khái niệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37  
OLED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38  
Màn hình OLED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38  
Màn hình OLED SSD1306 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38  
Giao tiếp I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38  
Hiển thị màn hình OLED với ESP8266. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39  
Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42  
ESP8266 WiFi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43  
Chế độ WiFi Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45  
Kiến thức . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45  
Kết nối vào mạng WiFi nội bộ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45  
Sử dụng WiFiMulti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46  
HTTP Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48  
Giao thức HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48  
JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51  
Ứng dụng xem giá Bitcoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52  
Chế độ WiFi Access Point. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56  
ESP8266 hoạt động ở chế độ Access Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56  
Khởi tạo mạng WiFi sử dụng ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57  
Web Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58  
Web Server là gì? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58  
HTML - Javascript - CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58  
Ứng dụng điều khiển đèn LED thông qua Webserver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61  
ESP8266 Web Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61  
Kết hợp WiFi AP và Web Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62  
Trao đổi dữ liệu giữa 2 ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63  
Yêu cầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63  
Hướng dẫn thực hiện. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63  
Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63  
Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66  
Dự án đọc cảm biến DHT11 và gởi về Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67  
Thiết kế ứng dụng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68  
Yêu cầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69  
Phân tích . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69  
Kiến thức . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69  
Thực hiện . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71  
Server Nodejs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72  
Code ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77  
Chuẩn bị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77  
Ứng dụng mở rộng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80  
Dùng ESP8266 như 1 Web Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80  
Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81  
Các chế độ cấu hình WiFi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82  
Smartconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83  
Kiến thức . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83  
Thực hiện SmartConfig với ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84  
Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85  
WPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87  
WPS là gì?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87  
Thực hiện WPS với ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88  
Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88  
Wifi Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89  
Hoạt động cơ bản WifiManager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89  
Chuẩn bị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91  
Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91  
Mở rộng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92  
Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93  
MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94  
Publish, subscribe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94  
QoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94  
Retain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95  
LWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95  
MQTT Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96  
MQTT Lens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96  
MQTT.js. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99  
ESP8266 MQTT Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102  
MQTT Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109  
MOSCA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109  
Một số MQTT Broker sử dụng cho sản phẩm thực tế . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113  
Tổng kết. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114  
Websocket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115  
Ưu điểm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115  
Nhược điểm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115  
Sử dụng ESP8266 như Websocket Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116  
Yêu cầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116  
Chuẩn bị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116  
Đoạn code Javascript để tạo kết nối Web Socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116  
Nhúng file HTML chứa đoạn code JS vào ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117  
Chương trình hoàn chỉnh cho ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118  
Kết quả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120  
Video kết quả. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121  
Sử dụng ESP8266 như Websocket Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122  
Javascript Websocket Client trên trình duyệt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122  
Node.js Websocket Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123  
ESP8266 Websocket Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124  
Tổng kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127  
Firmware update over the air (FOTA). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128  
Cập nhật firmware từ xa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129  
Bảo mật. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129  
An toàn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130  
Yêu cầu căn bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130  
Update process - memory view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130  
OTA sử dụng Arduino IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132  
Bước 1: nạp firmware hỗ trợ OTA thông qua cổng Serial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132  
Bước 2: Lựa chọn cổng nạp thông qua OTA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134  
Bước 3: Sửa firmware mới và nạp lại thông qua WiFi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135  
Sử dụng mật khẩu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136  
Những sự cố thường gặp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137  
Cập nhật Firmware dùng Web Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138  
Thực hiện . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138  
Bảo mật . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141  
HTTP Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142  
ESP8266 ESPhttpUpdate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142  
Node.js OTA Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144  
Cheatsheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146  
Arduino - ESP8266 Cheatsheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147  
C - Cheatsheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151  
Lời kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154  
Các thành viên tham gia đóng góp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154  
Lời kết. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154  
Giấy phép sử dụng tài liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155  
Internet Of Things (IoT) cho người mới bắt đầu  
1/155  
Lời mở đầu  
Internet Of Things (IoT) – Internet vạn vật dường như đang đứng trước một bước ngoặt để đi đến  
giai đoạn tiếp theo cho một thế giới hiện đại, văn minh. Đó là viễn cảnh mà mọi vật đều có thể kết nối  
với nhau thông qua Internet không dây. Các doanh nghiệp đang có xu hướng ứng dụng sản phẩm  
công nghệ IoT vào sản xuất ngày càng nhiều bởi thị trường sáng tạo tiềm năng và chi phí sản xuất  
ngày càng thấp.  
Chứng kiến sự phát triển như vũ bão của các sản phẩm ứng dụng công nghệ IoT và thị trường công  
nghệ Start up tiềm năng đang ngày càng sôi động hơn bao giờ hết, quyển sách này cung cấp các  
nội dung về IoT với triết lí Không chỉ là thực tế – không rời rạc, hướng đến những người trẻ tuổi đã,  
đang và muốn tập trung năng lực của mình cho không gian Internet Of Things. Mong muốn cho ra đời  
những sản phẩm độc đáo, sáng tạo, ngày càng hoàn thiện và đồng bộ để có thể đáp ứng nhu cầu  
của cuộc sống.  
Nội dung được thiết kế một cách cơ bản giúp học viên có cái nhìn tổng quan về việc xây dựng hệ  
thống, sản xuất thiết bị và dễ dàng tham gia vào lĩnh vực IoT mới mẻ.  
Đôi lời về tác giả  
Chủ biên của cuốn sách là ông Phạm Minh Tuấn(TuanPM), có nhiều năm kinh nghiệm làm việc trong  
mảng IoT và phát triển các thư viện mã nguồn mở cho cộng đồng. Tác giả xây dựng cuốn sách này  
với mục đích đóng góp 1 phần nhỏ những kiến thức của mình vào sự phát triển của ngành công  
nghiệp vẫn còn mới mẻ nhưng rất tiềm năng này.  
Thuật ngữ hay sử dụng  
• IoT - Internet Of Things hay internet vạn vật.  
• ESP8266 - Chip xử lí tích hợp thu phát WiFi.  
• Git - Trình quản lý phiên bản.  
• Github - Mạng xã hội dành cho lập trình viên.  
• IDE - Viết tắt của Integrated Development Enviroment - môi trường phát triển tích hợp.  
• Compiler - Trình biên dịch.  
• Logic Level - Mức điện áp để chip hiểu được (1 hay 0).  
2/155  
Giải thích code trong bài  
void setup()  
{
//comment ①  
int a = 1;  
a ++; ②  
}
①
②
Dòng này giải thích đây là comment (chú thích).  
Dòng này giải thích biến a tăng thêm 1 đơn vị.  
Internet Of Things (IoT) cho người mới bắt đầu  
3/155  
Giới thiệu nội dung  
Nội dung quyển sách này bao gồm các hướng dẫn chi tiết cho người đọc lập trình ứng dụng IoT sử  
dụng Chip WiFi phổ biến hiện này là ESP8266 để kết nối với Server, gởi, nhận dữ liệu và thực thi các  
lệnh từ Server. Internet Of Things dựa và các kết nối Internet khá nhiều, do vậy các nội dung cũng  
tập trung nhiều vào các giao thức (prototcol), các phương pháp quản lý cũng như cấu hình kết nối.  
Phần cứng sử dụng chính là System On Chip (SoC) ESP8266 - có khả năng kết nối WiFi và lập trình  
được với giá thành rẻ và phổ biến trên thế giới. Board mạch sử dụng là board phần cứng mở. IoT WiFi  
Uno có sơ đồ chân tương thích với các board Arduino Uno.  
Phần mềm sử dụng lập trên máy tính cho Chip ESP8266 là Arduino, ngôn ngữ lập trình C/C++.  
Các phần liên quan đến Server chạy trên máy tính sử dụng NodeJS với ngôn ngữ lập trình  
Javascript.  
Ngoài ra, bạn sẽ cần tìm hiểu một số công cụ và khái niệm thường xuyên được sử dụng trong quyển  
sách này như sau:  
• Git - Trình quản lý phiên bản sử dụng rất rộng rãi trên thế giới, Github là một mạng xã hội cho  
lập trình viên dựa trên Git. Git giúp bạn quản lý được mã nguồn, làm việc nhóm, xử lý các thao  
tác hợp nhất, lịch sử mã nguồn … Có thể trong quá trình làm việc với quyển sách này, bạn sẽ  
cần sử dụng các thư viện mã nguồn mở cho Arduino từ Github, nên việc cài đặt và sử dụng công  
cụ khá cần thiết cho việc đó. Chưa kể, nó sẽ giúp bạn quản lý mã nguồn và dự án ngày càng  
chuyên nghiệp hơn.  
• Sublime Text - Là một trình soạn thảo phổ biến, nhanh, nhẹ và nhiều tính năng hay. Sử dụng  
để lập trình. Javascript (NodeJS)  
• Code formater - Dùng để định dạng mã nguồn phù hợp, dễ đọc, dễ sửa chữa.  
• Editorconfig - Là một công cụ cộng thêm vào cho các Editor, giúp việc đồng bộ hóa các tiêu  
chuẩn như Indent, Align, Space … để đảm bảo code khi được mở ở các Editor không bị thay đổi.  
Tuy phần cứng chính thức sử dụng là board mạch phần cứng mở IoT WiFi Uno,  
nhưng bạn hoàn toàn có thể sử dụng bất kỳ board ESP8266 nào khác trên thị  
trường cho cuốn sách này, ví dụ như: NODEMCU, Wemos, …  
Các nội dung trong quyển sách này tập trung vào hướng dẫn các giao thức,  
cách thức làm việc với có hệ thống với board ESP8266, Server …, còn các dự án  
mẫu, hướng dẫn chi tiết có thể tìm thêm tại arduino.esp8266.vn.  
Tất cả các phần Code đều không giải thích rõ chi tiết API cho mỗi tính năng. Mà  
thay vào đó được cung cấp tại phụ lục Cheat Sheet (Arduino và C).  
4/155  
Ai có thể sử dụng?  
• Các lập trình viên phần mềm/Mobile App, Web App… muốn tham gia làm sản phẩm IoT.  
• Sinh viên muốn nâng cao kỹ năng, bổ sung kiến thức.  
• Cá nhân muốn tự mình làm các sản phẩm phục vụ cuộc sống, phục vụ công việc.  
• Startup Tech không chuyên về phần cứng hoặc phần mềm.  
Mục tiêu mang lại cho người đọc  
• Giúp cho người không chuyên về phần cứng tiếp cận để làm sản phẩm IoT dễ dàng.  
• Có thể tự phát triển hệ thống tích hợp cho sản phẩm IoT.  
• Hiểu biết về quy trình tạo ra sản phẩm phần cứng, đi vào mảng sản xuất thiết bị.  
• Tránh những sai sót không đáng có khi phát triển và thiết kế sai hệ thống.  
Chuẩn bị  
• Ít nhất bạn cần 1 board mạch ESP8266 lập trình được, tốt nhất nên sử dụng các board mạch  
tương tích với Arduino IDE (đã có các module nạp cho chip).  
• Nên có thêm các module khác như cảm biến, động cơ để thực hành, một bộ StarterKit là phù  
hợp.  
• 1 máy tính cá nhân (Windows, MacOS hoặc Linux).  
• C & Arduino ESP8266 Cheatsheet (Mục lục cuối quyển sách này).  
Internet Of Things (IoT) cho người mới bắt đầu  
5/155  
Kiến thức cơ bản  
Trong phần này, chúng ta sẽ bắt đầu bằng việc tìm hiểu tổng quan về hệ thống IoT, tổng quan về  
dòng chip ESP8266, rồi đến việc cài đặt công cụ phát triển Arduino trên máy tính của bạn. Tiếp đến  
là việc biên dịch các dự án mẫu, lựa chọn trình thư viện, trình soạn thảo sẽ làm việc. Kết thúc chương  
này chúng ta sẽ có được cái nhìn tổng quát về hệ thống IoT, làm thế nào và sử dụng công cụ gì để  
lập trình ứng dụng với ESP8266.  
Điểm qua phần này như sau:  
• IoT và ứng dụng thực tế.  
• Tìm hiểu về chip WiFi ESP8266.  
• Arduino IDE và sử dụng Arduino với ESP8266.  
• Starter Kit bộ công cụ khởi động việc học lập trình IoT.  
• Node.js - Javascript ngôn ngữ lập trình Server Side.  
• Cài đặt tất cả các công cụ.  
Với những ai đã từng hiểu rõ ESP8266, đã từng làm về hệ thống IoT, đã chuyên nghiệp trong lập trình  
C/C++ có thể bỏ qua chương này.  
6/155  
Internet Of Things (IoT)  
Internet of Things (IoT) là gì?  
Internet of Things (IoT) - Mạng lưới vạn vật kết nối Internet là một kịch bản  
của thế giới, khi mà mỗi đồ vật, con người được cung cấp một định danh của  
riêng mình, và tất cả có khả năng truyền tải, trao đổi thông tin, dữ liệu qua  
một mạng duy nhất mà không cần đến sự tương tác trực tiếp giữa người với  
người, hay người với máy tính. IoT đã phát triển từ sự hội tụ của công nghệ  
không dây, công nghệ vi cơ điện tử và Internet[1]. Nói đơn giản là một tập  
hợp các thiết bị có khả năng kết nối với nhau, với Internet và với thế giới bên  
ngoài để thực hiện một công việc nào đó. Link: vi.wikipedia.org/wiki/  
— Wikipedia  
Internet of things (IoT) dùng để chỉ các đối tượng có thể được nhận biết cũng như chỉ sự tồn tại của  
chúng trong một kiến trúc tổng hòa mang tính kết nối: Mạng lưới vạn vật kết nối Internet, hay gọi đơn  
giản hơn là Things.  
IoT có thể là bộ cảm ứng được lắp ráp trong một chiếc tủ lạnh để ghi lại nhiệt độ, là một trái tim được  
cấy ghép trong cơ thể con người,… Hiểu đơn giản, IoT có thể khiến mọi vật giờ đây có thể giao tiếp với  
nhau dễ dàng hơn và ưu điểm lớn nhất của “Thông minh” là khả năng phòng ngừa và cảnh báo tại  
bất kì đâu.  
Cụm từ Internet of things được đưa ra bởi Kevin Ashton vào năm 1999, tiếp sau đó nó cũng được dùng  
nhiều trong các ấn phẩm đến từ các hãng và nhà phân tích. Họ cho rằng IoT là một hệ thống phức  
tạp, bởi nó là một lượng lớn các đường liên kết giữa máy móc, thiết bị và dịch vụ với nhau. Ban đầu,  
IoT không mang ý nghĩa tự động và thông minh. Về sau, người ta đã nghĩ đến khả năng kết hợp giữa  
hai khái niệm IoT - Autonomous control lại với nhau. Nó có thể quan sát sự thay đổi và phản hồi với  
môi trường xung quanh, cũng có thể tự điều khiển bản thân mà không cần kết nối mạng. Việc tích  
hợp trí thông minh vào IoT còn có thể giúp các thiết bị, máy móc, phần mềm thu thập và phân tích  
các dữ liệu điện tử của con người khi chúng ta tương tác với chúng. Xu hướng tất yếu trong tương lai,  
con người có thể giao tiếp với máy móc chỉ qua mạng internet không dây mà không cần thêm bất cứ  
hình thức trung gian nào khác.  
Câu hỏi đặt ra là, điều gì giúp IoT “thông minh” và “hiểu” con người? Ban đầu, người ta cho rằng  
Internet của vạn vật chủ yếu xoay quanh giao tiếp M2M (các thiết bị kết nối với nhau thông qua một  
thiết bị khác điều khiển). Nhưng khi hướng đến sự “thông minh hóa”, đó không chỉ là giao tiếp giữa  
M2M nữa mà cần phải đề cập đến các cảm biến (sensor). Và cũng đừng lầm tưởng rằng Sensor là  
Internet Of Things (IoT) cho người mới bắt đầu  
7/155  
một cỗ máy hoạt động dưới sự vận hành của các thiết bị khác mà thực chất, nó tương tự như đôi mắt  
và đôi tai của loài người với sự ghi nhận liên tục những đo lường, định lượng, thu thập dữ liệu từ thế  
giới bên ngoài. Suy cho cùng, Internet of things đem đến sự kết nối giữa máy móc và cảm biến, và  
nhờ đến dữ liệu điện toán đám mây để mã hóa dữ liệu. Những ứng dụng điện toán đám mây là mắt  
xích quan trọng giúp cho Internet of things có thể hoạt động nhờ sự phân tích, xử lí và sử dụng dữ  
liệu mà các cảm biến thu thập được.  
Tình hình trên thế giới hiện nay, tác động của IOT rất đa dạng và tích cực ở nhiều lĩnh vực: quản lý hạ  
tầng, y tế, xây dựng và tự động hóa, giao thông…. John Chambers (CEO của Cisco) đã công bố: Cho  
đến năm 2024 sẽ có 500 tỷ thiết bị được kết nối. Thực tế, con số này lớn hơn gần 100 lần số người  
trên Trái đất, điều đó cho thấy “vạn vật” nhiều hơn con người rất nhiều. Chúng ta đều biết ứng dụng  
IoT có thể “nói chuyện” với con người thông qua bàn phím, thiết bị cũng được thiết kế ngày càng  
hoàn thiện với nhiều cảm biến hơn để có thể giao tiếp một cách nhanh nhất và chính xác nhất với  
con người, thu thập dữ liệu đơn giản từ mỗi người chúng ta. Nhưng quan trọng nhất, tuy giao tiếp với  
con người nhưng ứng dụng IoT không phải là con người.  
Người ta cho rằng, IoT là chìa khóa của sự thành công, là bước ngoặt và cơ hội lớn của tương lai. Để  
không bị tụt lại phía sau, các chính phủ và doanh nghiệp cần có sự đổi mới và đầu tư mạnh tay hơn  
để phát triển các sản phẩm ứng dụng công nghệ Internet of things.  
Hệ thống Internet of Things (IoT)  
Hệ thống IoT cho phép người dùng tiến sâu hơn vào việc tự động hóa, phân tích, tích hợp. Giúp cho  
việc cải thiện tầm nhìn, tính chính xác, nâng tầm các công nghệ về cảm biến, kết nối, robot để đạt  
hiệu quả cao nhất.  
Các hệ thống IoT phát triển, khai thác các tiến bộ của phần mềm, giảm giá thành khi xây dụng phần  
cứng và tận dụng các công nghệ hiện đại. Những cải tiến này làm thay đổi cách vận hành của quá  
trình sản xuất sản phẩm, dịch vụ, xã hội, kinh tế và ảnh hưởng đến cả chính trị  
Những điểm mấu chốt của IoT  
Những vấn đề quan trọng nhất của hệ thống IoT bao gồm trí thông minh nhân tạo, kết nối, cảm biến  
và các thiết bị nhỏ nhưng mang tính cơ động cao, chúng được mô tả sơ lược như bên dưới:  
• AI (Artifical Intelligence) - Hệ thống IoT về cơ bản được hiểu là làm cho mọi thiết bị trở nên  
thông minh, nghĩa là nó giúp nâng cao mọi khía cạnh của cuộc sống bằng những dữ liệu thu  
thập được, thông qua các thuật toán tính toán nhân tạo và kết nối mạng. Một ví dụ đơn giản như  
hộp đựng gạo của bạn, khi biết rằng gạo sắp hết, hệ thống tự động đặt một đơn hàng mới cho  
nhà cung cấp.  
• Connectivity - Là một đặc trưng cơ bản của IoT, hiện nay các mạng thiết bị đang trở nên phổ  
8/155  
biến, nhiều mạng thiết bị ngày càng nhỏ hơn, rẻ hơn và được phát triển phù hợp với thực tế  
cũng như nhu cầu của người dùng .  
• Sensors - IoT sẽ mất đi sự quan trọng của mình nếu không có sensors. Các cảm biến hoạt  
động giống như một công cụ giúp IoT chuyển từ mạng lưới các thiết bị thụ động sang mạng lưới  
các thiết bị tích cực, đồng thời có thể tương tác với thế giới thực.  
• Active Engagement Ngày nay, phần lớn các tương tác của những công nghệ kết nối xảy ra 1  
cách thụ động. IoT được cho là sẽ đem đến những hệ thống mang tích tích cực về nội dung, sản  
phẩm cũng như các dịch vụ gắn kết.  
• Small Devices - Như đã được dự đoán từ trước, các thiết bị ngày càng được tối ưu với mục đích  
nâng cao độ chính xác, khả năng mở rộng cũng như tính linh hoạt. Nó được thiết kế ngày càng  
nhỏ hơn, rẻ hơn và mạnh mẽ hơn theo thời gian.  
IoT − Những lợi ích mang lại  
Những lợi ích mà IoT đem lại được dàn trải hầu hết đến các tất cả các lĩnh vực trong đời sống, kinh  
doanh… Dưới đây liệt kê ngắn gọn một số tính năng hữu ích của IoT:  
• Cải thiện việc gắn kết khách hàng - Hệ thống IoT giúp phân tích các điểm mù hiện tại, tìm ra  
những sai sót về độ chính xác. IoT thay đổi điều này để mang lại nhiều sự gắn kết hơn và hiệu  
quả hơn với người dùng. Một ứng dụng tại các cửa hàng, dịch vụ iBeacon giúp tăng số lượng  
sản phẩm tới người tiêu dùng bằng cách chỉ dẫn người dùng tới khu vực cụ thể trong cửa hàng  
và đưa ra các gợi ý về sản phẩm. Chúng cung cấp các thông tin chi tiết, các đánh giá về sản  
phẩm, …Bên cạnh đó chúng cũng có khả năng cho phép người dùng chia sẻ các sản phẩm qua  
mạng xã hội …  
• Tối ưu hóa công nghệ - giúp nâng cao trải nghiệm của khách hàng cũng như cải thiện việc sử  
dụng thiết bị và hỗ trợ cải tiến công nghệ.  
• Giảm sự hao phí - IoT giúp việc quản lí tài nguyên ở các lĩnh vực được cải thiện 1 cách rõ ràng.  
Các phân tích hiện tại thường cung cấp cho chúng ta cái nhìn ở khía cạnh bên ngoài, trong khi  
IoT cung cấp các dữ liêu, thông tin thực tế để quản lí tài nguyên một cách hiệu quả hơn.  
• Tăng cường việc thu thập dữ liệu - Thông thường, việc thu thập dữ liệu bị hạn chế do thiết  
kế hệ thống mang tính thụ động. IoT phá vỡ sự ràng buộc, giới hạn của thiết kế và tạo ra 1 hình  
ảnh chính xác của tất cả mọi thứ.  
IoT − Những thách thức gặp phải  
Mặc dù IoT mang lại khá nhiều lợi ích ấn tượng, nó cũng gặp phải những thách thức đáng kể. Dưới  
đây là 1 số vấn đề chính của IoT :  
• Kiểm soát an ninh - IoT tạo ra 1 hệ sinh thái mà ở đó các thiết bị kết nối liên tục và giao tiếp với  
nhau qua mạng lưới các kết nối. Tuy nhiên, hệ thống thường chưa chú trọng đến các biện pháp  
Internet Of Things (IoT) cho người mới bắt đầu  
9/155  
an ninh nhằm bảo mật thông tin, dẫn đến nó có thể gặp phải các cuộc tấn công nhằm lấy cắp  
thông tin của người dùng.  
• Tính bảo mật - Do tính bảo mật chưa cao cộng với bản chất của IoT là không cần nhiều sự  
tương tác của con người nên các kẻ tấn công có thể cung cấp các thông tin người dùng giả  
mạo.  
• Tính phức tạp - Một số hệ thống IoT có độ phức tạp về thiết kế và triển khai ứng dụng cũng  
như khó khăn trong việc bảo trì, nâng cấp hệ thống do sử dụng nhiều công nghệ còn khá mới  
mẻ.  
• Tính linh hoạt - Có nhiều sự lo ngại khi đề cập đến tính linh hoạt của hệ thống IoT khi tích hợp  
với các hệ thống khác bởi các hệ thống khi kết hợp có thể xảy ra xung đột và các tính năng sẽ bị  
khóa lẫn nhau.  
• Tuân thủ các tiêu chuẩn - Giống như các công nghệ khác trong lĩnh vực thương mại, IoT cũng  
phải tuân thủ các tiêu chuẩn, quy định đã đặt ra trước đó. Tính phức tạp của IoT làm cho việc  
tuân thủ các tiêu chuẩn là một thử thách thực sự  
Hình 1. Hình minh họa  
10/155  
Hình 2. Sự phát triển của iot dự đoán đến năm 2020  
Những ứng dụng thực tế trong cuộc sống  
Những ứng dụng của IoT vào các lĩnh vực trong đời sống là vô cùng phong phú và đa dạng. Chúng ta  
sẽ cùng điểm qua một số ứng dụng điển hình đã mang lại "tiếng tăm" cho IoT:  
• Smart Home - Theo thống kê, smart home là ứng dụng liên quan đến IoT được tìm kiếm nhiều  
nhất trên Google. Smart Home là 1 ngôi nhà với rất nhiều tính năng tự động như bật máy điều  
không khí khi bạn sắp về tới nhà, tắt đèn ngay khi bạn rời khỏi nhà, mở khóa khi người thân trong  
gia đình đang ở cửa nhà, mở garage khi bạn lái xe đi làm về … còn rất nhiều những tính năng  
giúp nâng cao chất lượng cuộc sống khi sử dụng smart home.  
• Vật dụng mang theo trên người - Có thể kể đến một số thiết bị như Dashbon Mask, đây là 1  
chiếc smart headphone giúp bạn vừa có thể nghe nhạc với âm thanh có độ trung thực cao vừa  
có thể xem phim HD với máy chiếu ảo , hoặc AMPL SmartBag ba lô có pin dự phòng có thể sạc  
điện cho các thiết bị di động, kể cả máy tính.  
• Connected cars - Giúp nâng cao những trải nghiệm cho người dùng xe ôtô, 1 chiếc Connected  
car có thể tối ưu các hoạt động của nó như thông báo khi hết nhiên liệu, đưa ra các cảnh báo  
khi có vật tới gần hoặc mới đây nhất là xe điện tự lái của hãng Tesla…  
Internet Of Things (IoT) cho người mới bắt đầu  
11/155  
ESP8266  
ESP8266 là dòng chip tích hợp Wi-Fi 2.4Ghz có thể lập trình được, rẻ tiền được sản xuất bởi một công  
ty bán dẫn Trung Quốc: Espressif Systems.  
Được phát hành đầu tiên vào tháng 8 năm 2014, đóng gói đưa ra thị trường dạng Mô dun ESP-01, được  
sản xuất bởi bên thứ 3: AI-Thinker. Có khả năng kết nối Internet qua mạng Wi-Fi một cách nhanh  
chóng và sử dụng rất ít linh kiện đi kèm. Với giá cả có thể nói là rất rẻ so với tính năng và khả năng  
ESP8266 có thể làm được.  
ESP8266 có một cộng đồng các nhà phát triển trên thế giới rất lớn, cung cấp nhiều Module lập trình  
mã nguồn mở giúp nhiều người có thể tiếp cận và xây dựng ứng dụng rất nhanh.  
Hiện nay tất cả các dòng chip ESP8266 trên thị trường đều mang nhãn ESP8266EX, là phiên bản  
nâng cấp của ESP8266  
Sơ đồ chân  
LƯU Ý:  
Dòng trên mỗi chân 6mA,lớn nhất 12mA  
Cho chế độ ngủ nối tắt GPIO16 và  
EXT_RSTB. Để wakeup, GPIO16 sẽ xuất mức  
THẤP khởi động lại hệ thống  
Khi khởi động/khởi động lại/weakup, giữ GPIO15 THẤP  
và GPIO2 CAO.  
1
VDDA  
LNA  
SDIO  
23  
22  
21  
SPI_MOSI U1RXD  
2
GPIO8  
GPIO7  
GPIO6  
GPIO11  
GPIO10  
GPIO9  
VDDPST  
DATA1  
SDIO  
SPI_MISO  
SPI_CLK  
SPI_CS0  
VDD3P3 3  
DATA0  
SDIO  
CLK  
VDD3P3  
4
SDIO  
CMD  
20  
19  
18  
17  
VDD_RTC 5  
SDIO  
6
7
HSPIWP  
HSPIHD  
TOUT ADC  
SPIWP  
DATA3  
SDIO  
CHIP_EN CHIP_EN  
SPIHD  
DATA2  
8
TOUT GPIO16  
SP. FUNCTION(S)  
COMM. INTERFACE  
PIN NUMBER  
PWM  
POWER  
I/O  
ADC  
CONTROL  
N/C  
Hình 3. Sơ đồ chân ESP8266EX  
12/155  
Thông số phần cứng  
• 32-bit RISC CPU : Tensilica Xtensa LX106 chạy ở xung nhịp 80 MHz  
• Hổ trợ Flash ngoài từ 512KiB đến 4MiB  
• 64KBytes RAM thực thi lệnh  
• 96KBytes RAM dữ liệu  
• 64KBytes boot ROM  
• Chuẩn wifi EEE 802.11 b/g/n, Wi-Fi 2.4 GHz  
◦
◦
Tích hợp TR switch, balun, LNA, khuếch đại công suất và matching network  
Hổ trợ WEP, WPA/WPA2, Open network  
• Tích hợp giao thức TCP/IP  
• Hổ trợ nhiều loại anten  
• 16 chân GPIO  
• Hổ trợ SDIO 2.0, UART, SPI, I²C, PWM,I²S với DMA  
• 1 ADC 10-bit  
• Dải nhiệt độ hoạt động rộng : -40C ~ 125C  
Hình 4. Một module tích hợp phổ biến (Module ESP12E)  
SDK hỗ trợ chính thức từ hãng  
Espressif hiện đã hỗ trợ 3 nền tảng SDK (Software Development Kit - Gói phát triển phần mềm) độc  
lập, là: NONOS SDK, RTOS SDK và Arduino. Cả 3 đều có những ưu điểm riêng phù hợp với từng ứng  
dụng nhất định, và sử dụng chung nhiều các hàm điều khiển phần cứng. Hiện nay Arduino đang  
được sử dụng rộng rãi bởi tính dễ sử dụng, kiến trúc phần mềm tốt và tận dụng được nhiều thư viện  
Internet Of Things (IoT) cho người mới bắt đầu  
13/155  
cộng đồng  
ESP8266 NONOS SDK  
Hiện nay, NONOS SDK phiên bản từ 2.0.0 trở lên đã ổn định và cung cấp gần như là đầy đủ tất cả  
các tính năng mà ESP8266 có thể thực hiện:  
• Các API cho Timer, System, Wifi, đọc ghi SPI Flash, Sleep và các Module phần cứng: GPIO, SPI, I²C,  
PWM, I²S với DMA.  
• Smartconfig: Hỗ trợ cấu hình thông số Wi-Fi cho ESP8266 nhanh chóng.  
• Sniffer API: Bắt các gói tin trong mạng không dây 2.4Ghz.  
• SNTP API: Đồng bộ thời gian với Máy chủ thời gian.  
• WPA2 Enterprise API: Cung cấp việc quản lý kết nối Wi-Fi bằng tài khoản sử dụng các máy chủ  
RADIUS.  
• TCP/UDP API: Cho kết nối internet và hỗ trợ các Module dựa trên các giao thức như: HTTP, MQTT,  
CoAP.  
• mDNS API: Giúp tìm ra IP của thiết bị trong mạng nội bộ bằng tên (hostname).  
• MESH API: Liên kết các module ESP8266 với cấu trúc mạng MESH  
• FOTA API: Firmware Over The Air - cập nhật firmware từ xa cho thiết bị .  
• ESP-Now API: Sử dụng các gói tin Wireless 2.4GHz trao đổi trực tiếp với ESP8266 khác mà không  
cần kết nối tới Access Point.  
• Simple Pair API: Thiết lập kết nối bảo mật giữa 2 thiết bị tự động.  
ESP8266 RTOS SDK  
RTOS SDK sử dụng FreeRTOS làm nền tảng, đồng thời hầu hết các API của NON OS SDK đều có thể  
sử dụng với RTOS SDK.  
ESP8285  
ESP8285 là một phiên bản khác sau này của ESP8266EX, giống hoàn toàn ESP8266EX ngoại trừ việc  
thay vì dùng SPI FLASH bên ngoài thì ESP8285 tích hợp 1MiB Flash bên trong giúp giảm diện tích phần  
cứng và đơn giản hóa quá trình sản xuất.  
14/155  
Module và Board mạch phát triển  
ESP8266 cần ít nhất thêm 7 linh kiện nữa mới có thể hoạt động, trong đó phần khó nhất là Antena.  
Đòi hỏi phải được sản xuất, kiểm tra với các thiết bị hiện đại. Do đó, trên thị trường xuất hiện nhiều  
Module và Board mạch phát triển đảm đương hết để người dùng đơn giản nhất trong việc phát triển  
ứng dụng. Một số Module và Board phát triển phổ biến:  
Bảng 1. Một số module ESP8266 trên thị trường  
Tên  
Số chân  
Pitch  
0.1"  
LEDs  
Yes  
No  
Antenna  
PCB  
Shielded  
No  
Dimensions  
14.3 × 24.8  
14.2 × 14.2  
17.3 × 12.1  
14.7 × 12.1  
ESP-01  
ESP-02  
ESP-03  
ESP-04  
ESP-05  
ESP-06  
ESP-07  
6
6
0.1"  
U-FL  
No  
10  
10  
3
2mm  
2mm  
0.1"  
No  
Ceramic  
None  
U-FL  
No  
No  
No  
No  
No  
14.2 × 14.2  
14.2 × 14.7  
20.0 × 16.0  
11  
14  
misc  
2mm  
No  
None  
Yes  
Yes  
Ceramic+U- Yes  
FL  
ESP-08  
ESP-09  
ESP-10  
ESP-11  
10  
10  
3
2mm  
misc  
2mm  
0.05"  
2mm  
2mm  
2mm  
1.5mm  
2mm  
No  
None  
None  
None  
Ceramic  
PCB  
Yes  
No  
17.0 × 16.0  
10.0 × 10.0  
14.2 × 10.0  
17.3 × 12.1  
No  
No  
No  
6
No  
No  
ESP-12  
ESP-12E  
ESP-12F  
ESP-13  
ESP-14  
14  
20  
20  
16  
22  
Yes  
Yes  
Yes  
No  
Yes  
Yes  
Yes  
Yes  
Yes  
24.0 × 16.0  
24.0 × 16.0  
24.0 × 16.0  
18.0 x 20.0  
24.3 x 16.2  
PCB  
PCB  
PCB  
No  
PCB  
Board mạch phát triển ESP8266  
Module ESP8266 chỉ bao gồm Chip ESP8266 và các linh kiện giúp chip có thể hoạt động được, tuy  
nhiên, trong quá trình phát triển sản phẩm, chúng ta cần phải nạp chương trình cho chip trước khi  
đưa vào hoạt động thực tế. Quá trình này là quá trình gởi dữ liệu Binary (đã biên dịch trên máy tính)  
xuống bộ nhớ Flash của ESP8266. Để đưa ESP8266 vào chế độ Nạp (Program) thì cần phải đặt mức  
logic 0 (0V - GND) vào chân GPIO0, đồng thời RESET chip. Rồi sau đó có thể dùng các công cụ nạp để  
gởi Firmware từ máy tính xuống.  
Tải về để xem bản đầy đủ
pdf 161 trang yennguyen 47241 Free
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu Internet Of Things (IoT) cho người mới bắt đầu", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdftai_lieu_internet_of_things_iot_cho_nguoi_moi_bat_dau.pdf