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. 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 đó. ( Wikipedia). 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.
IOT ( Internet Of Things ) I Khái niệm Internet Of Things ( IOT) gì? Khái niệm IOT Internet of Things (IoT) - Mạng lưới vạn vật kết nối Internet kịch giới, mà đồ vật, người cung cấp định danh riêng mình, tất có khả truyền tải, trao đổi thông tin, liệu qua mạng mà không cần đến tương tác trực tiếp người với người, hay người với máy tính IoT phát triển từ hội tụ công nghệ không dây, công nghệ vi điện tử Internet Nói đơn giản tập hợp thiết bị có khả kết nối với nhau, với Internet với giới bên để thực cơng việc ( Wikipedia) Hiểu đơn giản, IoT khiến vật giao tiếp với dễ dàng ưu điểm lớn “Thơng minh” khả phòng ngừa cảnh báo đâu Những ứng dụng thực tế sống Những ứng dụng IoT vào lĩnh vực đời sống vô phong phú đa dạng Chúng ta điểm qua số ứng dụng điển hình IoT: • Smart Home - Theo thống kê, smart home ứng dụng liên quan đến IoT tìm kiếm nhiều Google Smart Home nhà với nhiều tính tự động bật máy điều khơng khí bạn tới nhà, tắt đèn bạn rời khỏi nhà, mở khóa người thân gia đình cửa nhà, mở garage bạn lái xe làm … nhiều tính giúp nâng cao chất lượng sống sử dụng smart home Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 • Vật dụng mang theo người - Có thể kể đến số thiết bị Dashbon Mask, smart headphone giúp bạn vừa nghe nhạc với âm có độ trung thực cao vừa xem phim HD với máy chiếu ảo , AMPL SmartBag ba lơ có pin dự phòng sạc điện cho thiết bị di động, kể máy tính ESP8266 dòng chip sử dụng phổ biến IOT ESP8266 dòng chip tích hợp Wi-Fi 2.4Ghz lập trình được, rẻ tiền sản xuất công ty bán dẫn Trung Quốc: Espressif Systems Được phát hành vào tháng năm 2014, đóng gói đưa thị trường dạng Mơ dun ESP-01, sản xuất bên thứ 3: AI-Thinker Có khả kết nối Internet qua mạng Wi-Fi cách nhanh chóng sử dụng linh kiện kèm Với giá nói rẻ so với tính khả ESP8266 làm ESP8266 có cộng đồng nhà phát triển giới lớn, cung cấp nhiều Module lập trình mã nguồn mở giúp nhiều người tiếp cận xây dựng ứng dụng nhanh Hiện tất dòng chip ESP8266 thị trường mang nhãn ESP8266EX, phiên nâng cấp ESP8266 Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Module Board phát triển ESP8266 ESP8266 cần số linh kiện hoạt động, phần khó Anten Đòi hỏi phải sản xuất, kiểm tra với thiết bị đại Do đó, thị trường xuất nhiều Module Board mạch phát triển đảm đương hết để người dùng đơn giản việc phát triển ứng dụng Một số Module Board phát triển phổ biến: Hiện phiên sử dụng phổ biến ESP8266 12E Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Giới thiệu module ESP 12E( NodeMCU V1) NodeMCU v1.0 Lua - ESP8266 ESP12E Sơ đồ chân ESP12E NodeMCU V1.0 phát triển dựa Chip WiFi ESP8266EX bên Module ESP-12E dễ dàng kết nối WiFi với vài thao tác Board tích hợp IC CP2102, giúp dễ dàng giao tiếp với máy tính thơng qua Micro USB để thao tác với board Và có sẳn nút nhấn, led để tiện qua trình học, nghiên cứu Với kích thước nhỏ gọn, linh hoạt board dễ dàng liên kết với thiết bị ngoại vi để tạo thành project, sản phẩm mẫu cách nhanh chóng Thơng số kỹ thuật: • • • • • • Chip: ESP8266EX WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n Điện áp hoạt động: 3.3V Điện áp vào: 5V thông qua cổng USB Số chân I/O: 11 (tất chân I/O có Interrupt/PWM/I2C/One-wire, trừ chân D0) Số chân Analog Input: (điện áp vào tối đa 3.3V) Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Bộ nhớ Flash: 4MB Giao tiếp: Cable Micro USB Hỗ trợ bảo mật: WPA/WPA2 Tích hợp giao thức TCP/IP Lập trình ngơn ngữ: C/C++, Micropython, NodeMCU - Lua • • • • • Lập trình ESP 12E Arduino IDE Giới thiệu ESP826612E: Để bắt đầu với dự án Wifi bạn cần ESP8266 với giá thành rẻ, dễ dàng sử dụng Đặc biệt ESP8266 12E lập trình Arduino IDE Trước bắt đầu chuỗi dự án với ESP8266, viết này, chia sẻ cách cài đặt Arduino IDE để nạp code cho ESP8266 Chuẩn bị phần • cứng: x ESP8266 V12 V12E tích mạch nạp hợp sẵn Cài đặt phần mềm arduino IDE thư viện cho esp8266 Sau tải phần mềm Arduino IDE, bạn tiến hành cài đặt bình thường mở chương trình lên Và bạn nhớ cài driver cho nhé.( file driver có sẵn file cài) Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Để tiến hành cài đặt thư viện chức nạp code cho IDE bạn làm sau: Vào File→ Preferences, vào textbox Additional Board Manager URLs thêm đường link sau vào http://arduino.esp8266.com/stable/package_esp8266com_index.json Click OK để chấp nhận Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Tiếp theo vào Tool→Board→Boards Manager Đợi lát để chương trình tìm kiếm Ta kéo xuống click vào ESP8266 by ESP8266 Community, click vào Install Chờ phần mềm tự động download cài đặt Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Hướng dẫn nạp chương trình cho ESP8266 12E: Kết nối mudule ESP8266 -12E vào máy tính Vào Tool→Board→NodeMCU 1.0, chọn cổng COM tương ứng với module tương ứng Chọn chế độ nạp Arduino as ISP chọn cổng COM cho nhé.Vậy ta có mơi trường lập trình cho esp8266 thân thiện Sau kết nối ESP8266 với máy tính, bạn test code ESP8266 đây: Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Code test led board esp8266 12E chân 13 (D7 ) sáng tắt vòng giây void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); // bật led sáng giây delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); delay(1000); // tắt led giây // wait for a second } Hình ảnh thực tế: Từ ví dụ đơn giản ta bắt tay vào học lập trình cho ESP để làm dự dán IOT có ứng dụng cao II Bài học mẫu ứng dụng lập trình esp8266: Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Lập trình điều khiển ESP8266 12E Arduino IDE Giới thiệu ESP826612E: Để bắt đầu với dự án Wifi bạn cần ESP8266 với giá thành rẻ, dễ dàng sử dụng Đặc biệt, ESP8266 ( phần tơi sử dụng loại V12E) lập trình Arduino IDE Trước bắt đầu chuỗi dự án hay ho với ESP8266, viết này, chia sẻ cách cài đặt Arduino IDE để nạp code cho ESP8266 Chuẩn bị phần • cứng: x ESP8266 V12 V12E tích hợp sẵn mạch nạp ( Trong ví viết tơi sử dụng ESP8266-V12E) Cài đặt phần mềm arduino IDE thư viện cho esp8266 Sau tải phần mềm Arduino IDE, bạn tiến hành cài đặt bình thường mở chương trình lên Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Hình ảnh thực tế: Ta nhập địa ip vào trình duyệt cho giao diện giống hình Hình điều khiển thực tế Điều khiển thiết bị điện wifi app MIT invertor Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Phần mền cần chuẩn bị • Phần mềm IDE • App inverter (được đính kèm file code) Phần cứng cần chuẩn bị: • ESP8266 12 HOẶC ESP8266 12E • Breadboard • Điện thoại sử dụng hệ điều hành android • Dây test board • Led ( bạn thay relay để đóng ngắt thiết bị điện) • Trở 220 Ohm Lắp mạch: Code chương trình: #include const char* ssid = "Truong Phi"; //Identifier is the name of your WIFI const char* password = "xxxxxxxxx"; // Your Wifi password int R1=D1; int R2=D2; int R3=D3; int R4=D4; WiFiServer server(80); //port is 80 Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 void setup() { Serial.begin(115200); delay(10); pinMode(R1, OUTPUT); pinMode(R2, OUTPUT); pinMode(R3, OUTPUT); pinMode(R4, OUTPUT); digitalWrite(R1,HIGH); digitalWrite(R2,HIGH); digitalWrite(R3,HIGH); digitalWrite(R4,HIGH); // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println("Server started"); // Print the IP address Serial.print("Use this URL to connect: "); Serial.print("http://"); Serial.print(WiFi.localIP()); //Gets the WiFi shield's IP address and Print the IP address of serial monitor Serial.println("/"); } Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 void loop() { WiFiClient client = server.available(); if (!client) { return; } Serial.println("new client"); while(!client.available()){ delay(1); } String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); if (request.indexOf("/Relay1On") != -1) { digitalWrite(R1,LOW); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println(""); client.println(""); client.println("Relay is ON"); client.println(""); client.stop(); delay(1); } if (request.indexOf("/Relay1Off") != -1) { digitalWrite(R1, HIGH); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println(""); client.println(""); client.println("Relay is OFF"); client.println(""); client.stop(); delay(1); } if (request.indexOf("/Relay2On") != -1) { Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 digitalWrite(R2,LOW); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println(""); client.println(""); client.println("Relay is ON"); client.println(""); client.stop(); delay(1); } if (request.indexOf("/Relay2Off") != -1) { digitalWrite(R2, HIGH); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println(""); client.println(""); client.println("Relay is OFF"); client.println(""); client.stop(); delay(1); } if (request.indexOf("/Relay3On") != -1) { digitalWrite(R3,LOW); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println(""); client.println(""); client.println("Relay is ON"); client.println(""); client.stop(); delay(1); } if (request.indexOf("/Relay3Off") != -1) { digitalWrite(R3, HIGH); Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println(""); client.println(""); client.println("Relay is OFF"); client.println(""); client.stop(); delay(1); } if (request.indexOf("/Relay4On") != -1) { digitalWrite(R4,LOW); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println(""); client.println(""); client.println("Relay is ON"); client.println(""); client.stop(); delay(1); } if (request.indexOf("/Relay4Off") != -1) { digitalWrite(R4, HIGH); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println(""); client.println(""); client.println("Relay is OFF"); client.println(""); client.stop(); delay(1); } } Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Cài đặt app cho điện thoại ( Andriod): Viết app mit inverter (có file kèm theo), bạn nên đăng kí tài khoản web app mit invetor Hình ảnh thực tế: Ta mở hình kết giống serial monitor nên ta có sau lần ta bật tắt Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Hình thực tế: 10 Điều khiển thiết bị điện Nodemcu( esp8266 12E) app Blynk Phần mền cần chuẩn bị • Phần mềm IDE • App Blynk bạn tải App Store CH play Phần cứng cần chuẩn bị: • ESP8266 12 HOẶC ESP8266 12E • Breadboard • Điện thoại sử dụng hệ điều hành android ISO • Dây test board • Led ( bạn thay relay để đóng ngắt thiết bị điện) • Trở 220 Ohm Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Lắp mạch: • Chân ( + ) led nối chân D3 ( tương ứng với chân số GPIO0 ) • Chân ( ) led nối chân GND ESP Code chương trình: Trước hết phải tải cài thư viện Blynk cho Arduino IDE, thư viện kèm theo file code Tiếp đến sau add thư viện blynk cho IDE ta mở code mẫu có sẵn thư viện hình sau: Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Và ta code sau: #define BLYNK_PRINT Serial #include #include char auth[] = "YourAuthToken"; // token sau đăng kí email blynk lập project mã token gửi vào email đăng kí char ssid[] = "YourNetworkName"; // tên wifi char pass[] = "YourPassword"; // nhập mật wifi cần kết nối void setup() { // Debug console Serial.begin(9600); Blynk.begin(auth, ssid, pass); } void loop() { Blynk.run(); } Các bước thực sau: a) Tải app Blynk Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 b) Đăng kí tài khoản blynk đăng nhập Sau cài app xong đăng kí tài khoản email blynk báo bạn đăng kí thành công Tiếp đến ta lập project bật tắt led c) Lập project: Ta chọn New Project Ta thực theo thứ tự hình dưới: Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Hình số ta chọn OK blynk gửi email đăng kí mã token ta lấy mã cho vào code IDE: Tới hình số ta hồn thành việc lập app Blynk d) Chỉnh sửa code: #define BLYNK_PRINT Serial #include #include char auth[] = "8b77ceab91c5406e99624623d 2af0e3c"; char ssid[] = "Truong Phi"; char pass[] = "xxxxxxxx"; void setup() { // Debug console Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Serial.begin(9600); Blynk.begin(auth, ssid, pass); } void loop() { Blynk.run(); } Hình ảnh thực tế: 11 Hiển thị hình OLED với Nodemcu( esp8266 12E) Phần mền cần chuẩn bị • Phần mềm IDE • Thư viện OLED : https://github.com/ThingPulse/esp8266-oledssd1306 Phần cứng cần chuẩn bị: • ESP8266 12 HOẶC ESP8266 12E • Breadboard • Dây test board Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 • Màn hình OLed Lắp mạch: ESP8266_12E Màn hình OLed GND VCC D2 D1 GND ( ) 3.3V SDA SCL Code chương trình: Trước hết phải tải cài thư viện OLED cho Arduino IDE, thư viện bạn tải link #include #include "SSD1306.h" SSD1306 display(0x3c, 4, 5); int thoi_gian = 0; void setup() { Serial.begin(115200); display.init(); display.setFont(ArialMT_Plain_10); display.drawString(0, 0, "Hello world"); display.display(); delay(1000); display.clear(); } void loop() { Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 int gio, phut, giay; delay(1000); thoi_gian ++; gio = thoi_gian/3600; phut = (thoi_gian%3600)/60; giay = thoi_gian % 60; display.clear(); display.drawString(0, 0, String(gio) + ":" + String(phut) + ":" + String(giay)); display.display(); } Tài liệu biên soạn Phi Nguyen số tài liệu tham khảo từ arduino.cc cộng đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 ... textbox Additional Board Manager URLs thêm đường link sau vào http:/ /arduino. esp8266.com/stable/package_esp8266com_index.json Click OK để chấp nhận Tiếp theo vào Tool→Board→Boards Manager Tài... đồng arduino Web: tdhshop.com.vn Email: tdhshop1991@gmail.com hotline: 0395 304 802 Cài đặt thingspeak: sau đăng kí tài khoản miễn phí ta giao diện sau ta chọn New Channel Sau ta thực thao tác sau:... client.println(""); client.println(""); client.println("");