Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Subject of Infomation Technology's major, High school final essays of Technology

Hành vi sử dụng mạng xã hội của sinh viên ĐH Hải Dương ...https://www.slideshare.net › luan-van...· Translate this page ...http://vannghã hội ngày nay đóng một vai trò to lớn trong đời sống của mỗi người và có ảnh h

Typology: High school final essays

2020/2021

Uploaded on 02/27/2022

ngo-hai-long
ngo-hai-long 🇻🇳

1 document

1 / 73

Toggle sidebar

Related documents


Partial preview of the text

Download Subject of Infomation Technology's major and more High school final essays Technology in PDF only on Docsity! L ê T h an h T ù n g BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI --------------------------------------- BÁO CÁO THỰC TẬP TỐT NGHIỆP THIẾT KẾ HỆ THỐNG ĐIỀU CHỈNH NHIỆT ĐỘ TRONG PHÒNG TỰ ĐỘNG GVHD: TS Nguyễn Thị Thu K ỹ T h u ật M áy T ín h Sinh viên: Lê Thanh Tùng Mã số sinh viên: 1141250166 Hà Nội – Năm 2020 0 1 MỤC LỤC HÌNH ẢNH CHƯƠNG I: GIỚI THIỆU VỀ INTERNET OF THINGS (IOT) Hình 1.1: Cách thức hoạt động của IoT..........................................................9 Hình 1.2. Một mạch nạp tự động sử dụng chip USB CDC...........................15 Hình 1.3: Hình ảnh thực tế của KIT Arduino NodeMCU Wifi CH340........15 Hình 1.4: Sơ đồ chân của KIT Arduino NodeMCU Lua Wifi V3 CH340. . .16 Hình 1.5: Thêm file thông tin board ESP8266..............................................18 Hình 1.6: Cài đặt board ESP8266.................................................................19 Hình 1.7: Khởi động Library Manager.........................................................19 Hình 1.8: Cài đặt thư viện ESP 8266............................................................20 Hình 1.9: Cài đặt thư viện thử công..............................................................20 Hình 1.10: Connect USB..............................................................................21 Hình 1.11: Kết nối thành công......................................................................22 Hình 1.12: Lựa chọn Allow Apps Downloaded From Anywhere................23 Hình 1.13: Cấu hình Board ESP8266 WiFi Uno..........................................23 Hình 1.14: Nạp chương trình........................................................................24 Hình 1.15: Giao diện công cụ lập trình Android Studio...............................26 Hình 1.16: ESP 8266 Web Server.................................................................27 Hình 1.17: Tạo tài khoản ThingSpeak..........................................................28 Hình 1.18: Tạo dữ liệu trên kênh cá nhân của ThingSpeak..........................28 Hình 1.19: Địa chỉ URL để upload dữ liệu...................................................29 Hình 1.20: Quá trình truyền nhận dữ liệu trong chuẩn OneWire..................30 Hình 1.21: Module cảm biến nhiệt độ, độ ẩm DHT11.................................30 Hình 1.22: Màn hình LCD 16x2...................................................................31 Hình 1.23: Module I2C LCD 16x2...............................................................32 Hình 1.24: Module Relay 2 Kênh 5V10A RL2-0510...................................33 Hình 1.25: Sơ đồ chân một hệ thống sử dụng Rơ – le cơ bản.......................34 CHƯƠNG II: THIẾT KẾ MÔ HÌNH HỆ THỐNG ĐIỀU KHIỂN NHIỆT ĐỘ TRONG PHÒNG TỰ ĐỘNG 4 Hình 2.1: Mô hình tổng quát của hệ thống...................................................35 Hình 2.2: Kết nối cảm biến tới Module........................................................36 Hình 2.3: Kết quả chạy thử nghiệm cảm biến...............................................37 Hình 2.4: Sơ đồ chân của Module phục vụ cho giao tiếp I2C......................38 Hình 2.5: Kết nối màn hình LCD tới Module...............................................40 Hình 2.6: Kết quả chạy thử nghiệm màn hình LCD.....................................40 Hình 2.7: Mẫu biểu đồ thu thập dữ liệu sử dụng ThingSpeak......................41 Hình 2.8: Hệ thống khởi tạo Server tại địa chỉ 192.168.0.132.....................48 Hình 2.9: Truy cập vào Server từ Browers...................................................48 Hình 2.10: Dữ liệu hiển thị khi có yêu cầu truy xuất....................................49 Hình 2.11: Giao diện của chương trình trên thiết bị di động........................50 CHƯƠNG III: HỆ THỐNG ĐIỀU CHỈNH NHIỆT ĐỘ TRONG PHÒNG TỰ ĐỘNG Hình 3.1: Kết quả khi truy cập vào XEM DATA NHIỆT ĐỘ ....................59 Hình 3.2: Kết quả khi truy cập vào XEM DATA ĐỘ ẨM ..........................60 Hình 3.3: Giao diện chương trình khi chọn chế độ tự động..........................61 Hình 3.4: Giao diện chương trình khi chọn chế độ tùy chỉnh.......................62 Hình 3.5: Sơ đồ mạch của hệ thống..............................................................63 Hình 3.6: Mô hình thực tế hệ thống..............................................................64 Hình 3.7: Lưu đồ thuật toán của Khối điều khiển.........................................65 Hình 3.8: Hệ thống hoạt động ở chế độ tự động (1) ....................................66 Hình 3.9: Hệ thống hoạt động ở chế độ tự động (2) ....................................66 Hình 3.10: Hệ thống hoạt động ở chế độ tùy chỉnh (1) ................................67 Hình 3.11: Hệ thống hoạt động ở chế độ tùy chỉnh (2) ................................67 5 LỜI CẢM ƠN Sau hai tháng tìm hiểu đề tài “Thiết kế hệ thống điều chỉnh nhiệt độ trong phòng tự động”, em đã hoàn thành tiến độ đồ án tốt nghiệp như dự kiến. Để đạt được kết quả này, em đã nỗ lực thực hiện và đồng thời cũng nhận được rất nhiều sự giúp đỡ, quan tâm, ủng hộ của các thầy cô và bạn bè. Em xin chân thành cảm ơn giáo viên hướng dẫn: cô Nguyễn Thị Thu đã tận tình giúp đơn em hoàn thành đồ án tốt nghiệp này. Em xin chân thành cảm ơn các thầy cô và ban lãnh đạo trường Đại học Công nghiệp Hà Nội đã nhiệt tình giảng dạy, truyền đạt kiến thức quý báu và bổ ích trong suốt quá trình em học tập tại trường. Em xin chân thành cảm ơn các thầy, cô thuộc khoa Điện tử đã trang bị cho em những kiến thức chuyên ngành rất hữu ích để em hoàn thành đề tài và phục vụ cho công việc của em sau này. Vì thời gian có hạn nên không thể tránh khỏi những thiếu sót, em rất mong nhận được sự đóng góp ý kiến từ thầy cô để đề tài có thể hoàn thiện hơn nữa. Em xin chân thành cảm ơn! 6 1.2. Khái niệm IoT Internet Vạn Vật, hay cụ thể hơn là Mạng lưới vạn vật kết nối Internet hoặc là Mạng lưới thiết bị kết nối Internet (tiếng Anh: Internet of Things, viết tắt IoT) là một liên mạng, trong đó các thiết bị, phương tiện vận tải (được gọi là "thiết bị kết nối" và "thiết bị thông minh"), phòng ốc và các trang thiết bị khác được nhúng với các bộ phận điện tử, phần mềm, cảm biến, cơ cấu chấp hành cùng với khả năng kết nối mạng máy tính giúp cho các thiết bị này có thể thu thập và truyền tải dữ liệu. Hệ thống IoT cho phép vật được cảm nhận hoặc được điều khiển từ xa thông qua hạ tầng mạng hiện hữu, tạo cơ hội cho thế giới thực được tích hợp trực tiếp hơn vào hệ thống điện toán, hệ quả là hiệu năng, độ tin cậy và lợi ích kinh tế được tăng cường bên cạnh việc giảm thiểu sự can dự của con người. Khi IoT được gia tố cảm biến và cơ cấu chấp hành, công nghệ này trở thành một dạng thức của hệ thống ảo-thực với tính tổng quát cao hơn, bao gồm luôn cả những công nghệ như điện lưới thông minh, nhà máy điện ảo, nhà thông minh, vận tải thông minh và thành phố thông minh. Mỗi vật được nhận dạng riêng biệt trong hệ thống điện toán nhúng và có khả năng phối hợp với nhau trong cùng hạ tầng Internet hiện hữu. 1.3. Cách thức hoạt động của IoT Về cơ bản, Internet Vạn Vật cung cấp kết nối chuyên sâu cho các thiết bị, hệ thống và dịch vụ, đồng thời hỗ trợ da dạng giao thức, miền (domain), và ứng dụng. IoT 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. 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à 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. 9 Hình 1.1: Cách thức hoạt động 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 tương tác và các thiết bị 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 chính chúng ta, 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ổ 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 chủ động về nội dung, sản phẩm cũng như các dịch vụ gắn kết. 10  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. Kết nối các thiết bị nhúng này (luôn cả các vật dụng thông minh), được kỳ vọng sẽ mở ra kỷ nguyên tự động hóa trong hầu hết các ngành, từ những ứng dụng chuyên sâu như điện lưới thông minh, mở rộng tới những lĩnh vực khác như thành phố thông minh. 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 đó. 1.4. Ứng dụng của IoT vào đời sống Một số ứng dụng của Internet of Things đã và đang được phát triển: 1. Thành phố thông minh – smart cities  Công viên thông minh: giám sát không gian đỗ xe của thành phố.  Kiểm tra xây dựng: giám sát các rung động và các điều kiện vật chất trong các tòa nhà, cầu và công trình lịch sử.  Bản đồ tiếng ồn thành phố: giám sát âm thanh trong các phạm vi quán bar và các khu trung tâm theo thời gian thực.  Chiếu sáng thông minh: chiếu sáng thông minh và tương ứng với thời tiết trong hệ thống đèn đường.  Quản lý chất thải: phát hiện mức độ rác thải trong các container để tối ưu đường đi thu gom rác.  Hệ thống vận tải thông minh: các tuyến đường và cao tốc thông minh với các thông điệp cảnh báo và các điều chỉnh theo điều kiện thời tiết và các sự kiện không mong muốn như tai nạn, tắc đường. 2. Môi trường thông minh – Smart Environment.  Phát hiện cháy rừng: giám sát khí gas đốt cháy và các điều kiện cảnh báo cháy rừng để đưa ra vùng cảnh báo.  Ô nhiễm không khí: điều khiển khí CO2 thải ra từ các nhà máy, các khí gây ô nhiễm từ phương tiện và khí độc trong các nông trại.  Phòng ngừa lũ quét và lở đất: giám sát độ ẩm đất, các rung chấn và mật độ đất để phát hiện các mối nguy hiểm theo điều kiện đất. 11 10. Chăm sóc sức khỏe – eHealth.  Phát hiện ngã: giúp đỡ người già hoặc người tàn tật sống độc lập.  Các tủ thuốc: giám sát các điều kiện bên trong tủ lạnh lưu trữ vaccine, thuốc, và các yếu tố hữu cơ.  Giám sát bệnh nhân: giám sát điều kiện của các bênh nhân trong bệnh viện và tại nhà họ.  Bức xạ tử ngoại: đo lường lượng tia mặt trời UV để cảnh bảo mọi người  Đo lường chất lượng không khí: cảnh báo người dân hạn chế ra đường khi chất lượng không khí xuống thấp (AQI). 1.5. Ý nghĩa và ảnh hưởng của IoT Khi mà vạn vật đều có chung một mạng kết nối thì việc liên lạc và làm việc trở nên rất dễ dàng. Con người có thể hiện thực hóa mục đích của mình trong tương lai. Chúng ta hoàn toàn có thể kiểm soát mọi thứ. Giả sử 1 chiếc ví mà chúng ta đang sử dụng có tích hợp công nghệ IOT. Chúng có nhiệm vụ kiểm tra số lượng tiền trong ví, kiểm tra ngày hết hạn của các giấy tờ mà chúng ta để trong đó như: bảo hiểm y tế, hạn nộp học phí,.. và thông báo tình trạng của nó đến cho chúng ta biết thông qua các ứng dụng tin nhắn SMS, Facebook, Skype, Zalo,… Hay như một hệ thống tưới nước tự động cây cối trong gia đình được tích hợp công nghệ IoT giúp điều khiển qui trình chăm sóc cây, tưới nước cây, thậm chí là bắt sâu bọ,…khi chúng ta có chuyến đi công tác xa vài ngày hay vài tháng mà không thể thực hiện được các chức năng đó. Điều đó sẽ trở nên rất đơn giải khi giả sử mà hệ thống tưới cây tự động và điện thoại hoặc laptop, PC,.. của chúng ta được kết nối và mạng lưới Internet và qua đó có thể trao đổi thông tin cũng như thực thi các câu lệnh mong muốn. Chúng ta có thể tiết kiệm được rất nhiều thời gian cũng như tránh gặp phải những trường hợp khó khăn khi không làm chủ và quản lý được tất cả mọi vật xung quanh ta. Cho đến ngày nay, Internet of Things không còn là 1 vấn đề quá viễn vông, cụ thể là rất nhiều các phát mình, ứng dụng được trình làng. Khái niệm thiết bị thông minh, tủ lạnh thông minh, tivi thông minh, … được sử dụng rỗng rãi trong thể giới công nghệ ngày nay. Chúng ta có thể điều khiển 1 chiếc tivi bằng điều hướng bàn tay, giọng nói,… máy lạnh tự động điều chỉnh nhiệt độ theo thời tiết,…Hay như xe ô tô tích hợp chức năng chống sốc tự dộng, tự động báo cho người sử dụng khi lốp xe bị xẹp hay gặp trúng vật cản phía trước khoảng bao nhiêu mét chẳng hạn. Thậm chí là ngôi nhà – nơi chúng ta đang sống cũng 14 có định nghĩa là ngôi nhà thông minh với rất nhiều ứng dụng công nghệ hiện đại. Rất và rất nhiều những ứng dụng của Internet of Things đã được các công ty công nghệ nghiên cứu và áp dụng vào đời sống. 1.6. Các công cụ hỗ trợ xây dựng nền tảng IoT 1.6.1. Kit WiFi NodeMcu ESP8266 ESP8266 là dòng module 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. ESP8266 là Chip WiFi phổ biến hiện này để kết nối với Server, gửi, nhận dữ liệu và thực thi các lệnh từ Server. ESP8266 có rất nhiều phiên bản khác nhau như ESP8266-01, ESP8266-02, ESP-WROOM-02, ESP8266-12, ESP8266-12-E,… với số chân khác nhau, sự đa dạng này cho phép người dùng có thêm sự lựa chọn, người dùng có thể lựa chọn phiên bản với số chân và kích thước phù hợp cho các loại dự án khác nhau, nhằm tối ưu hoá kích thước sản phẩm và điện năng tiêu thụ. Ngoài các khả năng điều khiển các chân GPIO, kết nói SPI, I2C, … ESP8266 còn cung cấp các ứng dụng Wifi như TCP, UDP, HTTP, mDNS, SSDP, DNS Servers. Ngoài ra trong các phiên bản mới còn hỗ trợ cập nhật firmware OTA (Over the Air). Đặc biệt, ESP8266 có thể được lập trình bằng Arduino IDE, đặc điểm này khiến ESP8266 là một sự lựa chọn hoàn hảo dành cho những người mới bắt đầu với IoT. 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á 15 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. Hình 1.2. Một mạch nạp tự động sử dụng chip USB CDC Hiện nay các Board mạch phát triển đều tích hợp các mạch nạp tự động, nghĩa là phần mềm sẽ tự động điều chỉnh các chân DTR và RTS của chip USB CDC, đưa ESP8266 vào chế độ nạp, sau đó sẽ gởi firmware xuống. Arduino IDE cũng vậy, nó sẽ điều chỉnh dựa trên việc khai báo Board mạch sử dụng. Trong đề tài sử dụng KIT Arduino NodeMCU Lua Wifi V3 CH340. 16  Các thư viện được viết dựa trên lớp API trên cùng, nên đa số các thư viện cho Arduino có thể dùng được cho tất cả các chip. Điển hình là Arduino cho ESP8266 có thể tận dụng trên 90% các thư viện cho Arduino khác  Cách tổ chức các thư viện C/C++ theo dạng OOP giúp phân lớp, kế thừa và quản lý cực kỳ tốt cho các ứng dụng lớn .Các MCU ngày càng mạnh mẽ và ứng dụng cho nó sẽ ngày càng lớn. Các mô hình quản lý code đơn giản trước đây (thuần C) sẽ khó.  Các project cho Arduino đều opensource, chúng ta dễ dàng lấy nó và đưa vào sản phẩm production với chất lượng tốt và học hỏi được nhiều từ cách thức thiết kế chương trình của các bậc thầy. Cài đặt và chuẩn bị Arduino IDE Bước 1: Cài đặt Arduino IDE. Download và cài đặt Arduino từ trang chủ của Arduino. Link download: www.arduino.cc/en/Main/Software. Bước 2: Cài đặt bộ công cụ, trình biên dịch, SDK hỗ trợ chip ESP8266 trong Arudino IDE. Với bộ công cụ này, chúng ta có thể dễ dàng lập trình, biên dịch và sử dụng các thư viện dành cho ESP8266 trực tiếp trên Arduino IDE. Mở Arduino IDE, trên thanh Menu chọn File → Preferecens, trong tab settings chọn các tùy chọn như hình dưới: 19 Hình 1.5: Thêm file thông tin board ESP8266 Sketchbook location là đường dẫn mà ta muốn lưu Sketch (file chương trình), trên các hệ điều hành Unix liked đường dẫn mặc định là: /home/name_your_computer/Arduino. Đây cũng sẽ là vị trí lưu những thư viện mà chúng ta sẽ thêm vào sau này. Mục Additional Board Manager URLs field nhập đường dẫn http://arduino.esp8266.com/stable/package_esp8266com_index.json. Bước 3: Cài đặt board ESP8266. Mở Boards Manager ở mục Tools trên thanh menu-bar → tìm board cần sử dụng với keyword Generic 8266 → chọn board cần cài đặt như hình và nhấn vào install. Hình 1.6: Cài đặt board ESP8266  Cài đặt thư viện Arduino Một số thư viện do các nhà phát triển khác công bố và được tự do sử dụng có thể cài đặt trực tiếp bằng công cụ Library Manager của Arduino. Khởi động Arduino IDE và chọn mục Sketch ⇒ include library ⇒ Manage libraries: 20 Hình 1.7: Khởi động Library Manager Trong mục library manager nhập nội dung thư viện cần tìm tại hộp thoại text box, chọn phiên bản, rồi nhấn install, Những thư viện đã được cài đặt sẽ có text hiển thị Installed ở đầu mỗi thư viện. Ví dụ tìm thư viện OLED liên quan đến ESP8266: Hình 1.8: Cài đặt thư viện ESP 8266 Một cách khác để chúng ta có thể thêm thư viện vào Arduino bằng cách thủ công là click vào Sketch trên thanh công cụ chọn Include Library > Add .ZIP library... 21 Hình 1.12: Lựa chọn Allow Apps Downloaded From Anywhere  Chọn Board ESP8266 WiFi Uno trong Arduino IDE Sau khi kết nối và cài đặt xong, sẽ xuất hiện cổng COM ảo trên máy tính (Tùy từng loại hệ điều hành mà có những tên cổng như: COM1, COM2 … đối với Windows, /dev/tty.wchusbserial1420 trên Mac OS, /dev/ttyUSB0 trên Linux) Mở Arduino IDE và lựa chọn (tham khảo cấu hình kết nối như hình dưới): Hình 1.13: Cấu hình Board ESP8266 WiFi Uno 24 - Board: Generic ESP8266 Module. - Flash Size: 4M (3M SPIFFS). - Port: chọn cổng khi gắn thiết bị vào sẽ thấy xuất hiện. - Upload speed: Chọn cao nhất, nếu nạp không được chọn thấp dần.  Nạp chương trình xuống board dùng Arduino IDE Trên giao diện Arduino có 2 nút, ngoài cùng bên trái là nút Verify, để biên dịch chương trình, tương đương với Sketch > Verify/Compile, nút tiếp theo là Upload, tương đương Sketch > Upload. Khi đã lựa chọn board phù hợp, chương trình không có lỗi, thì nhấn Upload sẽ nạp chương trình vào board và thực thi sau đó. Hình 1.14: Nạp chương trình 1.6.2.2. Android Studio Android Studio là một phầm mềm bao gồm các bộ công cụ khác nhau dùng để phát triển ứng dụng chạy trên thiết bị sử dụng hệ điều hành Android như các loại điện thoại smartphone, các tablet... Android Studio được đóng gói với một bộ code editor, debugger, các công cụ performance tool và một hệ thống build/deploy (trong đó có trình giả lập simulator để giả lập môi trường 25 của thiết bị điện thoại hoặc tablet trên máy tính) cho phép các lập trình viên có thể nhanh chóng phát triển các ứng dụng từ đơn giản tới phức tạp. Việc xây dựng một ứng dụng mobile (hoặc tablet) bao gồm rất nhiều các công đoạn khác nhau. Đầu tiên chúng ta sẽ viết code ứng dụng sử dụng máy tính cá nhân hoặc laptop. Sau đó chúng ta cần build ứng dụng để tạo file cài đặt. Sau khi build xong thì chúng ta cần copy file cài đặt này vào thiết bị mobile (hoặc table) để tiến hành cài đặt ứng dụng và chạy kiểm thử (testing). Thử tưởng tượng nếu với mỗi lần viết một dòng code ta lại phải build ứng dụng, cài đặt trên điện thoại hoặc tablet và sau đó chạy thử thì sẽ vô cùng tốn thời gian và công sức. Android Studio được phát triển để giải quyết các vấn đề này. Với Android Studio tất cả các công đoạn trên được thực hiện trên cùng một máy tính và các quy trình được tinh gọn tới mức tối giản nhất. Cài đặt Android Studio Trước khi tiền hành cài đặt Android Studio ta cần tải Android Studio về máy bằng cách truy cập vào đường link https://developer.android.com/studio/index.html và chọn phiên bản Android Studio phù hợp với hệ điều hành mà ta đang sử dụng. Trang tải Android Studio ở trên có sử dụng một đoạn mã JavaScript được để phát hiện ra hệ điều hành máy tính của bạn và cung cấp phiên bản Android Studio phù hợp. Và do đó bạn chỉ việc nhấp vào link sẵn có trên trang để tải về.  Hệ Điều Hành Windows Việc cài đặt Android Studio trên Windows khá đơn giản. Sau khi tải xong ta nhấp đúp vào file cài đặt để tiến hành cài đặt. Sau khi cài đặt xong máy tính sẽ khởi động chương trình Android Studio để có thể bắt đầu phát triển ứng dụng đầu tiên.  Hệ Điều Hành Mac Tương tự như Windows việc cài đặt Android Studio trên Mac OS X cũng khá đơn giản. Sau khi tải về tập tin DMG dùng để cài đặt Android Studio trên Mac thì chúng ta sẽ nhấp đúp vào file này. Ở cửa sổ bật ra ta cần nhấp chuột và kéo Android Studio vào thư mục Applications. Sau đó click đúp vào biểu tượng Android Studio để tiến hành cài đặt.  Hệ Điều Hành Linux Để cài đặt Android Studio trên Linux thì sau khi tải tập tin .zip về máy ta thực hiện các bước sau: 26 Hình 1.17: Tạo tài khoản ThingSpeak Sau khi xác thực, ta sẽ có thể login vào và thấy được các thông tin về tài khoản của mình. Bước 2: Tạo Data Channel Sau khi login, chúng ta cần tạo một data channel để lưu trữ dữ liệu. Trong My Channels, ta chọn New Channel và điền các thông tin cần thiết. Ở đây ta tạo 1 channel để chứa các dữ liệu từ cảm biến thu được trong phòng ngủ với Field 1 là temperature (nhiệt độ) và Field 2 là humidity (độ ẩm): Hình 1.18: Tạo dữ liệu trên kênh cá nhân của ThingSpeak 29 Bước 3: Lấy URL cần thiết để upload dữ liệu Để upload hay lấy dữ liệu về ta cần biết URL để truy cập. Ta mở channel mới tạo, tìm đến tab API Keys và sẽ thấy được các URL để get hay upload data: Hình 1.19: Địa chỉ URL để upload dữ liệu Để lưu trữ và sử dụng được dữ liệu bằng ThingSpeak, chúng ta cần download và cài đặt thư viện hỗ trợ sử dụng ThingSpeak tại: https://github.com/mathworks/thingspeak-arduino 1.6.4. Các cảm biến và công cụ hỗ trợ 1.6.4.1. Cảm biến nhiệt độ, độ ẩm DHT 11 Cảm biến độ ẩm và nhiệt độ DHT11 là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua chuẩn giao tiếp 1 wire. OneWire là chuẩn giao tiếp nối tiếp được thiết kế bởi hãng Dallas. Đó là hệ thống bus nhằm kết nối các thiết bị với nhau để truyền hoặc nhận dữ liệu. Trong chuẩn giao tiếp này thường chỉ sử dụng 1 chân đồng thời là vừa là nguồn cung cấp vừa là chân truyền nhận dữ liệu. Cũng giống như các chuẩn giao tiếp khác, OneWire cũng gồm 3 giai đoạn request (hỏi) → respond (đáp) → data reading (truyền nhận dữ liệu). 30 Hình 1.20: Quá trình truyền nhận dữ liệu trong chuẩn OneWire Mô tả: 1. Master (ESP8266) gửi tín hiệu START, DHT11 sẽ chuyển từ chế độ tiết kiệm năng lượng (low-power mode) sang chế độ làm việc bình thường (high-speed mode) 2. DHT11 nhận được tín hiệu và phản hồi đến master, master nhận tín hiệu và bắt đầu quá trình truyền dữ liệu. 3. DHT11 sẽ gửi dữ liệu lên bus, mỗi lần gửi là 1 gói 40 bits data. 4. Khi muốn kết thúc, Master sẽ gửi tín hiệu STOP, kết thúc quá trình truyền nhận dữ liệu Bộ tiền xử lý tín hiệu được tích hợp trong cảm biến giúp bạn có thể đọc dữ liệu chính xác mà không phải qua bất kỳ tính toán nào. Hình 1.21: Module cảm biến nhiệt độ, độ ẩm DHT11 31 Để sử dụng màn hình LCD giao tiếp I2C sử dụng Arduino thì ta cần cài đặt thư viện Liquidcrystal_I2C: http://k3.arduino.vn/img/2014/05/28/0/497_81220- 1401265422-0-liquidcrystal-i2c.zip. 1.6.4.3. Module Relay (Rơ-le) Rơ-le là một công tắc (khóa K). Nhưng khác với công tắc ở một chỗ cơ bản, rơ-le được kích hoạt bằng điện thay vì dùng tay người. Chính vì lẽ đó, rơ- le được dùng làm công tắc điện tử. Vì rơ-le là một công tắc nên nó có 2 trạng thái: đóng và mở. Trên thị trường chúng ta có 2 loại module rơ-le: module rơ- le đóng ở mức thấp (nối cực âm vào chân tín hiệu rơ-le sẽ đóng), module rơ-le đóng ở mức cao (nối cực dương vào chân tín hiệu rơ-le sẽ đóng). Điều làm nên sự khác nhau chính là ở transistor của mỗi module, ngoài ra thì giữa 2 module rơ-le có cùng thông số kỹ thuật thì hầu hết mọi kinh kiện của nó đều giống nhau. Có 2 loại transistor là NPN - kích ở mức cao, và PNP - kích ở mức thấp. Trong đồ án này ta sử dụng rơ-le kích ở mức thấp. Hình 1.24: Module Relay 2 Kênh 5V10A RL2-0510 Thông số kỹ thuật:  - Tính hiệu vào điều khiển: DC5V - Mặc định điều khiển: + Bật 0, Tắt 1 - Đầu ra:  + COM : Tiếp điểm relay 220V 10A ( Lưu ý tiếp điểm , không phải điện áp ra) + NC : Thường đóng 34 + NO: Thường mở - Đầu vào : + EN1, EN2 : 2 tiếp điểm nhận tín hiệu điều khiển + VCC, GND là nguồn chung với điều khiển  + VSS+ , VSS- là nguồn của Relay Nếu muốn cách ly thì sử dụng 2 nguồn riêng Nếu dùng chung nguồn, cần Jump Chốt 2.54MM để nối VCC -- VSS+ ; GND -- VSS- Hình 1.25: Sơ đồ chân một hệ thống sử dụng Rơ – le cơ bản 35 CHƯƠNG II: THIẾT KẾ MÔ HÌNH HỆ THỐNG ĐIỀU KHIỂN NHIỆT ĐỘ TRONG PHÒNG TỰ ĐỘNG 2.1. Mô hình hệ thống Mô hình tổng quát của hệ thống điều chỉnh nhiệt độ trong phòng tự động Hình 2.1: Mô hình tổng quát của hệ thống Trong đó:  Cảm biến (DHT11): đo chỉ số nhiệt độ , độ ẩm.  Khối điều khiển (ESP 8266): có vai trò điều khiển tiếp nhận và xử lý dữ liệu, truyền tải lệnh điều khiển đến thiết bị, chuyển tiếp dữ liệu đến khối hiển thị và thiết bị di động thông qua Webserver.  Smart phone: cung cấp môi trường tương tác thân thiện cho người dùng; hiển thị chỉ số nhiệt độ, độ ẩm; điều khiển thiết bị; hiển thị trạng thái hiện tại của các thiết bị; hiển thị dữ liệu thống kê.  Thiết bị: quạt và máy hút ẩm.  Khối hiển thị: LCD 16x2.  ThingSpeak: công cụ giúp tổng hợp và thống kê dữ liệu. 36 Clock) và xung tín hiệu SDA (Serial Data) ta kết nối với chân D1(20) và D2(19) là chân SCL và SDA tương ứng trên Esp8266. Hình 2.4: Sơ đồ chân của Module phục vụ cho giao tiếp I2C Ta kết nối như hình Hình 2.5: Kết nối màn hình LCD tới Module 39 Kết nối bảng mạch với máy tính thông qua cổng USB và nạp vào chương trình chạy thử màn hình LCD Code: #include <DHT.h> // thư viện của cảm biến DHT #include <Wire.h> // thư viện hỗ trợ I2C #include <LiquidCrystal_I2C.h> // thư viện của LCD_I2C LiquidCrystal_I2C lcd(0x27,16,2); // khai báo địa chỉ của LCD const int DHTPIN = 2; const int DHTTYPE = DHT11; DHT dht(DHTPIN, DHTTYPE); byte degree[8] = { // khởi tạo kí hiệu nhiệt độ 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000 }; void setup() { Serial.begin(9600); lcd.init(); // khởi động LCD lcd.backlight(); // màu nền của LCD (cải thiện chất lượng hiển thị) lcd.print("Nhiet do: "); lcd.setCursor(0,1); // đặt con trỏ về vị trí đầu tiên dòng thứ nhất lcd.print("Do am: "); lcd.createChar(1, degree); dht.begin(); } 40 void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { // Kiểm tra xem thử việc đọc giá trị có bị thất bại hay không } else { int a=round(t); // làm tròn giá trị int b=round(h); lcd.setCursor(10,0); // đặt con trỏ về vị trí thứ mười dòng thứ nhất lcd.print(a); lcd.write(1); lcd.print("C"); lcd.setCursor(10,1); // đặt con trỏ về vị trí thứ mười dòng thứ hai lcd.print(b); lcd.print(" %"); delay(1000); } } Kết quả thu được: Hình 2.6: Kết quả chạy thử nghiệm màn hình LCD 41 client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: " + writeAPIKey + "\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Content-Length: "); client.print(body.length()); client.print("\n\n"); client.print(body); client.print("\n\n"); Serial.printf("Nhiet do %s - Do am %s\r\n", String(temp, 1).c_str(), String(humi, 1).c_str()); } client.stop(); } Kết quả ta thu được biểu đồ như hình 2.3.1.1. 2.3.1.2. Xây dựng chương trình điều khiển thông qua Webserver Đầu não của khối điều khiển chính là ESP 8266 Webserver, nơi cung cấp khả năng tương tác với người dùng của hệ thống. ESP8266 sẽ khởi tạo một WebServer, khi có bất kỳ Client nào kết nối tới (Web Browser) thì ESP 8266 sẽ gửi về 1 trang HTML với các thông tin để Client có thể đọc dữ liệu và điểu khiển bật tắt thiết bị. Code lập trình trên ESP 8266 WebServer: #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <DHT.h> #include <Wire.h> ESP8266WebServer server; // hoạt động như 1 server String webPage; int a; int b; int c; 44 int x = 0; int y = 0; String x1 = ""; String x2 = ""; const char* ssid = "P1003"; // tên mạng Wifi khả dụng (SSID) const char* password = "12345678"; // password Wifi const int DHTPIN = 2; const int DHTTYPE = DHT11; DHT dht(DHTPIN, DHTTYPE); void setup() { pinMode(12, OUTPUT); // led chân 12 pinMode(13, OUTPUT); // led chân 13 digitalWrite(12, 1); // tắt thiết bị 12 khi khởi động digitalWrite(13, 1); // tắt thiết bị 13 khi khởi động // Cấu hình trang HTML trả về webPage += "<h1>ESP8266 Web Server</h1>"; webPage += "<p>Socket #1 <a href=\"socket1On\"><button>ON</button></a>&nbsp;<a href=\"socket1Off\"><button>OFF</button></a></p>"; webPage += "<p>Socket #2 <a href=\"socket2On\"><button>ON</button></a>&nbsp;<a href=\"socket2Off\"><button>OFF</button></a></p>"; webPage += "<p>Thong so <a href=\"thongso\"><button>CHECK</button></a></p>"; webPage += "<a href=\"tudong\"><button>Auto</button></a>"; webPage += "<a href=\"tuychinh\"><button>Manual</button></a>"; Serial.begin(115200); dht.begin(); delay(100); Serial.println(); Serial.println(); Serial.print("Connecting to "); 45 Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); server.on("/thongso", handleSpecificArg); // thực thi yêu cầu // khi chọn auto, gán c=1 server.on("/tudong", [](){ server.send(200, "text/html", webPage); // thực thi yêu cầu //Bật chế độ Auto c=1; }); // khi chọn tùy chỉnh, gán c=0 server.on("/tuychinh", [](){ server.send(200, "text/html", webPage); // thực thi yêu cầu //Bật chế độ Manual c=0; }); server.on("/", [](){ server.send(200, "text/html", webPage); // thực thi yêu cầu }); server.on("/socket1On", [](){ server.send(200, "text/html", webPage); // thực thi yêu cầu //Bật chân 12 digitalWrite(12, 0); }); server.on("/socket1Off", [](){ server.send(200, "text/html", webPage); // thực thi yêu cầu //Tắt chân 12 digitalWrite(12, 1); 46 message += "Quat: " + x1; message += "<br></br>"; message += "Do am: " + String(b) + "% "; message += "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp"; message += "May hut am: " + x2; server.send(200, "text/html", message); // đáp lại yêu cầu } Kết quả ESP8266 thiết lập 1 WebServer tại địa chỉ : 192.168.0.132 Hình 2.8: Hệ thống khởi tạo Server tại địa chỉ 192.168.0.132 Ta truy cập vào địa chỉ http://192.168.0.132/ bằng browser: Hình 2.9: Truy cập vào Server từ Browers 49 Khi bấm vào nút check xem thông số ta sẽ có được chỉ số nhiệt độ và độ ẩm cũng như trạng thái thiết bị Hình 2.10: Dữ liệu hiển thị khi có yêu cầu truy xuất Chúng ta hoàn toàn có thể điều khiển thiết bị bật/tắt trong chế độ Manual (Tùy chỉnh) hoặc thiết lập tự động trong chế độ Auto (Tự động). Tuy nhiên, không phải ai, lúc nào cũng nhớ được dãy địa chỉ 10 chữ số do hệ thống cung cấp để truy cập vào và thao tác, cho nên hệ thống cũng cung cấp phần mềm điều khiển trên thiết bị di động chạy hệ điều hành Android được viết bằng Android Studio sau đây. 2.3.2. Thiết kế giao diện ứng dụng điều khiển trên thiết bị Android Mục đích mà ta xây dựng phần mềm trên thiết bị di động là để giúp hệ thống thân thiện hơn với người dùng, vì thế phàn giao diện cũng được thiết kế đơn giản nhất có thể, chỉ bao gồm những thông tin cơ bản cũng như thao tác đơn giản với hệ thống. Trong đó:  Thông số: chỉ số nhiệt độ, độ ẩm đo được và trạng thái của thiết bị  Xem Data: truy cập ThingSpeak để hiển thị biểu đô thống kê nhiệt độ, độ ẩm  Chế độ hoạt động: người dùng chọn giữa Tự động và Tùy chỉnh (mặc định là Tùy chỉnh). Trong chế độ tự động, quạt sẽ bật khi nhiệt độ lớn hơn 28°C, khi độ ẩm lớn hơn 90% thì bật máy hút ẩm. Trong chế độ tùy chỉnh, người dùng có thể bật/tắt thiết bị bằng cách ấn các nút ấn phía bên dưới (Hình 2.3.2.1) 50 Hình 2.11: Giao diện của chương trình trên thiết bị di động 51 <Button android:id="@+id/btn_fanoff" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="OFF" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginTop="450dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="• Hút ẩm" android:textSize="20sp" /> <Button android:id="@+id/btn_dehumon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="ON" /> <Button android:id="@+id/btn_dehumoff" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="OFF" /> </LinearLayout> </RelativeLayout> 54 CHƯƠNG III: HỆ THỐNG ĐIỀU CHỈNH NHIỆT ĐỘ TRONG PHÒNG TỰ ĐỘNG 3.1. Mô hình mạch nguyên lý 3.1.1. Xây dựng chương trình điều khiển Để ứng dụng có thể hoạt động được thì đâu tiên chúng ta phải xây dựng nó như một client để có thể truy cập vào Webserver, ta sử dụng hàm AsyncHttpClient. Cài đặt và khai báo thư viện chúng ta làm theo hướng dẫn: https://www.youtube.com/watch?v=K3yd18tNpis. Sau đây là đoạn code: // khai báo thư viện import com.loopj.android.http.*; import android.os.Bundle; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; import androidx.appcompat.app.AppCompatActivity; import java.util.Timer; import java.util.TimerTask; import cz.msebera.android.httpclient.Header; // khai báo các biến sử dụng trong chương trình (Webview, Button,…) public class MainActivity extends AppCompatActivity { private WebView webView; private Button btnData, btnFanOn, btnFanOff, btnDehumOn, btnDehumOff; private RadioGroup rdg; private RadioButton rdbAuto, rdbManual; // chương trình chính @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // biểu thị thông số nhiệt độ, độ ẩm webView = findViewById(R.id.webview); webView.setWebViewClient(new WebViewClient()); Timer repeatTask = new Timer(); 55 repeatTask.scheduleAtFixedRate(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { webView.loadUrl("http://192.168.0.132/thongso"); } }); }// tự động cập nhập thông số mỗi 0,1s }, 0, 100); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); // gán ID cho các biến tương ứng với các tương tác ở giao diện rdg = findViewById(R.id.rdg); rdbAuto = findViewById(R.id.rdb_tudong); rdbManual = findViewById(R.id.rdb_tuychinh); btnData = findViewById(R.id.btn_data); btnFanOn = findViewById(R.id.btn_fanon); btnFanOff = findViewById(R.id.btn_fanoff); btnDehumOn = findViewById(R.id.btn_dehumon); btnDehumOff = findViewById(R.id.btn_dehumoff); // thiết lập cho mục chọn chế độ hoạt động rdg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override //hành động khi ô tích có thay đổi public void onCheckedChanged(RadioGroup radioGroup, int i) { // nếu ô Tự động được chọn, chương trình thực hiện hành động tương ứng if (rdbAuto.isChecked()) { AsyncHttpClient auto = new AsyncHttpClient(); auto.get("http://192.168.0.132/tudong", new AsyncHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { } }); 56 dehumon.get("http://192.168.0.132/socket2On", new AsyncHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { } }); } }); // hành động khi bấm nút tắt máy hút ẩm btnDehumOff.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { AsyncHttpClient dehumoff = new AsyncHttpClient(); dehumoff.get("http://192.168.0.132/socket2Off", new AsyncHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { } }); } }); } // chương trình con phục vụ xem Thống kê nhiệt độ, độ ẩm public void openWebUrl(String inUrl) { Intent browse = new Intent(Intent.ACTION_VIEW, Uri.parse(inUrl)); startActivity(browse); } // cho phép sử dụng nút back nhưng không đóng chương trình @Override public void onBackPressed() { if (webView.canGoBack()) { webView.goBack(); } else { 59 super.onBackPressed(); }}} Kết quả thu được như (Hình 2.3.2.1) Mục thông số hiển thị chỉ số nhiệt độ, độ ẩm và trạng thái của thiết bị (bật/tắt). Khi ấn vào nút XEM DATA NHIỆT ĐỘ Hình 3.1: Kết quả khi truy cập vào XEM DATA NHIỆT ĐỘ 60 Khi ấn vào nút XEM DATA ĐỘ ẨM Hình 3.2: Kết quả khi truy cập vào XEM DATA ĐỘ ẨM Khi chọn chế độ hoạt động Tự động (Hình 3.4) và chế độ hoạt động Tùy chỉnh (Hình 3.5) 61 3.1.2. Sơ đồ mạch hệ thống Hình 3.5: Sơ đồ mạch của hệ thống 64 3.1.3. Mô hình hệ thống Hình 3.6: Mô hình thực tế hệ thống 65 3.2. Nguyên lý hoạt động của hệ thống 3.2.1. Nguyên lý hoạt động biểu diễn qua lưu đồ thuật toán Trong hệ thống, chúng ta sử dụng 2 module ESP8266. Module thứ nhất có vai trò là một WebServer để người dùng có thể điều khiển và kiểm soát hệ thống. Module thứ hai có vai trò như một Client truy cập và gửi dữ liệu thu thập được từ cảm biến đến Server của ThingSpeak để thống kê và lưu trữ dữ liệu. Do đó, có thể dễ dàng thấy rằng module WebServer có vai trò quan trọng nhất trong khối điều khiển. Hình 3.7: Lưu đồ thuật toán của Khối điều khiển 66 3.3. Đánh giá hoạt động hệ thống và hướng phát triển Trong quá trình hoạt động thử nghiệm và thay đổi em đã rút ra được những ưu và nhược điểm của hệ thống điều chỉnh nhiệt độ trong phòng tự động sử dụng Module ESP8266 như sau: Ưu điểm:  Đơn giản, gọn nhẹ  Dễ dàng thiết kế, lắp đặt  Chính xác, sai số nhỏ  Thân thiện với người sử dụng (hỗ trợ điều khiển bằng ứng dụng trên thiết bị di động)  Bảo mật cao (yêu cầu quyền truy cập vào mạng nội bộ để điều khiển) Nhược điểm:  Yêu cầu thay đổi chương trình khi chuyển đổi môi trường mạng  Tốc độ tương tác với hệ thống phụ thuộc vào tốc độ của mạng Wifi  Chỉ có thể điều khiển bật/tắt , không có khả năng điều chỉnh công suất hoạt động (mạnh, yếu) hay các tính năng hoạt động mở rộng (quay về phía cố định, hẹn giờ,… )  Chính vì hệ thống hoạt động yêu cầu môi trường mạng nội bộ nên người dùng không có khả năng điều khiển khi ở khoảng cách xa Qua những yếu điểm rút ra được sau quá trình hoạt động thử nghiệm, hệ thống trong tương lai cần cải thiện và nâng cấp nhiều hơn nữa để có thể theo kịp sự phát triển của thời đại công nghệ 4.0 cũng như nhu cầu ngày càng khắt khe của người dùng thiết bị công nghệ. Những hướng phát triền của hệ thống có thể kể đến như:  Thiết lập máy chủ vật lý hoặc máy chủ ảo (Cloud Server), cùng với đó là danh sách dữ liệu người dùng để người dùng có thể sử dụng tài khoản và mật khẩu đăng nhập vào hệ thống và điều khiển hệ thống ở bất cứ nơi đâu.  Mở rộng thêm các tính năng điều khiển như: quay thiết bị về phía cố định, hẹn giờ hoạt động, điều khiển thiết bị hoạt động ở các mức công suất phù hợp chứ không cố định ở bật và tắt, …  Kết nối thêm nhiều thiết bị vào hệ thống như điều hòa, lò sưởi, bình nóng lạnh,… để hướng tới môi trường hệ thống nhà thông minh thực sự thông minh và hiện đại. 69 KẾT LUẬN Internet Of Things ngày này đang phát triển một cách vô cùng mạnh mẽ. Vạn vật xung quanh chúng ta không còn là những vật dụng vô tri vô giác mà phần nào sẽ trở thành người bạn đồng hành và giúp ích cho chúng ta trong cuộc sống hiện tại cũng như trong tương lai. Các chuyên gia 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. 70 TÀI LIỆU THAM KHẢO 1. Giới thiệu và cài đặt Arduino: https://iotmakervn.github.io/iot-starter-book/#_wifi 2. Giới thiệu và cài đặt Android Studio: https://iotmakervn.github.io/iot-starter-book/#_wifi 3. Giới thiệu về ESP 8266: https://www.theengineeringprojects.com/2018/08/introduction-to-esp8266.html https://lastminuteengineers.com/esp8266-nodemcu-arduino-tutorial/ 4. Lịch sử phát triển của IoT: https://tek4.vn/tong-quan-ve-internet-of-things-iots/ https://vi.wikipedia.org/wiki/Internet_V%E1%BA%A1n_V%E1%BA%ADt# %E1%BB%A8ng_d%E1%BB%A5ng 5. Khái niệm, cách thức hoạt động của IoT: https://blog.vietnamlab.vn/2019/09/10/tong-quan-ve-internet-of-thing-iot/ https://vi.wikipedia.org/wiki/Internet_V%E1%BA%A1n_V%E1%BA%ADt 6. Ảnh hưởng và ý nghĩa của IoT với đời sống : https://www.digistar.vn/tim-hieu-ve-internet-of-things/ 7. Giới thiệu về DHT 11: https://arduinokit.vn/doc-cam-bien-nhiet-do-do-am-dht11-arduino 8. Giới thiệu về LCD I2C: https://arduinokit.vn/giao-tiep-i2c-lcd-arduino 9. Hiển thị nhiệt độ, độ ẩm lên LCD sử dụng I2C: https://arduinokit.vn/dht11-giao-tiep-i2c-su-dung-arduino http://arduino.vn/bai-viet/91-doc-nhiet-do-do-am-va-xuat-ra-man-hinh-lcd 10.Giới thiệu về ThingSpeak: https://yolostem.gitbooks.io/blocky/content/lam-viec-voi-thingspeak.html 11.Gửi dữ liệu lên ThingSpeak: http://dammedientu.vn/chuong-trinh-kiem-tra-nhiet-va-hien-thi-len-web- server-cua-nodemcu/ https://arduino.esp8266.vn/projects/dht11-thingspeak.html 71