đồ án thiết kế hệ thống HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA KỸ THUẬT ĐIỂN TỬ I Đồ Án Hệ Thống Nhúng Nhúng ĐỀ TÀI Hệ Thống Nhà Thông Minh Nhóm 09 Giáo viên hướng dẫn Nguyễn Ngọc Minh MỤC LỤC L.
Đồ Án Hệ Thống Nhúng ĐỒ ÁN THIẾT KẾ HỆ THỐNG NHÚNG ĐỀ TÀI : Hệ Thống Nhà Thông Minh Nhóm : 09 Giáo viên hướng dẫn : Nguyễn Ngọc Minh |Page Đồ Án Hệ Thống Nhúng MỤC LỤ Lời mở đầu I) Giới thiệu đề tài .3 1) Nội dung 2) Mục tiêu II) Cơ sở lý thuyết 1) Giao thức .3 a) I2C b) UART 2) Hệ điều hành FreeRTOS III) Hệ thống 1) Linh kiện a) Kit Arduino nano b) Kit ESP8266 10 c) Cảm biến nhiệt độ, độ ẩm DHT11 .12 d) Cảm biến khí Gas MQ2 13 e) Quang trở .14 f) Màn hình OLED 0.96 inch 15 g) App Blynk IoT .16 2) Sơ đồ khối 18 3) Lưu đồ thuật toán .19 IV) Kết định hướng phát triển 20 1) Kết 20 2) Nhận xét 22 3) Định hướng 22 |Page Đồ Án Hệ Thống Nhúng Lời mở đầu IOT (Internet Of Things – internet vạn vật) xuất nhiều nghành nghề như: Công nghệ thông tin, điện tử, viễn thông, Sản xuất nông nghiệp, nhà thông minh… giúp tăng suất lao động, giảm chi phí sản xuất, dễ dàng quản lý sử dụng Vậy vào khái niệm IOT gì: IOT liên kết vạn vật thông qua mạng internet, đơn giản nghĩa thiết bị giao tiếp với thông qua internet Chúng ta lấy ví dụ đơn giản thơng qua mạng internet bật tắt bóng đèn, quạt, điều hịa, máy bơm nước điện thoại thơng minh, máy tính Và lý để chúng em chọn đề tài “ Nhà thông minh sử dụng ESP8266” để làm đề tài cho nhóm giúp quản lí thiết bị nhà tốt hơn, đem lại thuận tiện sử dụng thiết bị nhà Chúng em xin chân thành cảm ơn Thầy giáo Nguyễn Ngọc Minh tận tình quan tâm hướng dẫn chúng em suốt thời gian qua Do cịn việc hạn chế trình độ ngoại ngữ, chuyên môn thiếu kinh nghiệm làm nên đồ án chúng em cịn nhiều khiếm khuyết, sai sót Chúng em mong nhận nhiều ý kiến đóng góp lời khuyên hữu ích từ thầy, để thấy rõ điều cần nghiên cứu bổ sung, giúp cho việc xây dựng đề tài đạt đến kết hoàn thiện |Page Đồ Án Hệ Thống Nhúng Phân Chia Công Việc - Đinh Trung Toàn B18DCDT217 Lập sơ đồ khối, lưu đồ thuật tốn Lập trình quang trở để đo ánh sáng Tổng hợp code, lập trình hệ thống hệ điều hành FreeRTOS, hiển thị lên App Blynk, OLED Làm báo cáo, mạch nguyên lý - Phạm Minh Tuấn B18DCDT225 Tìm hiểu hệ điều hành FreeRTOS Lập trình cho cảm biến DHT11 đọc nhiệt độ, độ ẩm, làm word - Phan Đức Trọng B18DCDT Tìm hiểu, lập trình cho cảm biến khí Gas MQ2 để đọc nồng độ khí gas Viết word - Nguyễn Phương Nam B18DCDT Tìm hiểu, lập trình giao tiếp UART Arduino Nano với Esp8266 Viết word, làm powerpoint |Page Đồ Án Hệ Thống Nhúng I) Giới thiệu đề tài 1) Nội dung Nhà thông minh kiểu nhà lắp đặt thiết bị điện, điện tử điều khiển tự động hoá bán tự động Thay người thực thao tác quản lý, điều khiển Hệ thống điện tử giao tiếp với người dùng thông qua bảng điện tử đặt nhà, ứng dụng điện thoại di động, máy tính bảng giao diện web Nhờ ứng dụng công nghệ hồng ngoại, điện thoại thông minh, IoT, cơng nghệ đám mây…Nhà thơng minh tự động giúp bạn làm công việc nhà, giúp cho sống thoải mái 2) Mục tiêu Có thể lập trình với kit Arduino nano ESP8266, giao tiếp với cảm biến Đọc giá trị cảm biến nhiệt độ độ ẩm dht11, cảm biến khí gas MQ2 hiển thị lên app điện thoại tín hiệu điều khiển từ app điều khiển bật tắt đèn,quạt I) Cơ sở lý thuyết 1) Giao thức a) I2C - I2C ( Inter – Integrated Circuit) giao thức giao tiếp nối tiếp đồng phát triển Philips Semiconductors, sử dụng để truyền nhận liệu IC với sử dụng hai đường truyền tín hiệu - Các bit liệu truyền bit theo khoảng thời gian đặn thiết lập tín hiệu đồng hồ - Bus I2C thường sử dụng để giao tiếp ngoại vi cho nhiều loại IC khác loại vi điều khiển, cảm biến, EEPROM, … |Page Đồ Án Hệ Thống Nhúng Hình 1: Sơ đồ khối giao thức I2C - I2C sử dụng đường truyền tín hiệu: SCL - Serial Clock Line : Tạo xung nhịp đồng hồ Master phát SDA - Serial Data Line : Đường truyền nhận liệu - Khung truyền I2C Hình 2: Khung truyền I2C Khối bit địa chỉ: Thơng thường q trình truyền nhận diễn với nhiều thiết bị, IC với Do để phân biệt thiết bị này, chúng gắn địa vật lý bit cố định Bit Read/Write: Bit dùng để xác định trình truyền hay nhận liệu từ thiết bị Master Nếu Master gửi liệu ứng với bit ‘0’, ngược lại, nhận liệu bit ‘1’ Bit ACK/NACK: Viết tắt Acknowledged / Not Acknowledged Dùng để so sánh bit địa vật lý thiết bị so với địa gửi tới Nếu trùng Slave đặt ‘0’ ngược lại, khơng mặc định ‘1’ Khối bit liệu: Gồm bit thiết lập thiết bị gửi truyền đến thiết bị nhân Sau bit gửi đi, bit ACK/NACK gửi theo sau để xác nhận thiết bị nhận nhận liệu thành công hay chưa Nếu nhận thành cơng bit ACK/NACK set ‘0’ ngược lại |Page Đồ Án Hệ Thống Nhúng - Quá trình truyền nhận liệu: Hình 3: Sơ đồ xung Clock đường dây Bắt đầu: Thiết bị Master gửi xung Start cách kéo đường SDA, SCL từ mức xuống Tiếp theo đó, Master gửi bit địa tới Slave muốn giao tiếp với bit Read/Write Slave so sánh địa vật lý với địa vừa gửi tới Nếu trùng khớp, Slave xác nhận cách kéo đường SDA xuống set bit ACK/NACK ‘0’ Nếu không trùng khớp SDA bit ACK/NACK mặc định ‘1’ Thiết bị Master gửi nhận khung bit liệu Nếu Master gửi đến Slave bit Read/Write mức Ngược lại nhận bit mức Nếu khung liệu truyền thành công, bit ACK/NACK set thành mức để báo hiệu cho Master tiếp tục Sau tất liệu gửi đến Slave thành cơng, Master phát tín hiệu Stop để báo cho Slave biết trình truyền kết thúc chuyển SCL, SDA từ mức lên mức a) UART - UART (Universal Asynchronous Receiver / Transmitter) vi mạch sẵn có vi điều khiển không giống giao thức truyền thơng (I2C & SPI) Chức UART truyền liệu nối tiếp Trong UART, giao tiếp hai thiết bị thực theo hai cách giao tiếp liệu nối tiếp giao tiếp liệu song song - Chuẩn giao tiếp UART sử dụng dây để truyền nhận liệu thiết bị: TX (Transmiter) - Dây truyền liệu |Page Đồ Án Hệ Thống Nhúng RX (Receiver) - Dây nhận liệu - Dữ liệu truyền giao tiếp UART tổ chức thành gói (Packets) Mỗi Packets chứa bit Start, đến bit liệu (tùy thuộc vào UART), bit Parity bit Stop Hình 4: Khung truyền UART - Start bit Đường truyền liệu giao tiếp UART thường giữ mức điện áp cao khơng truyền liệu Để bắt đầu truyền liệu, UART truyền kéo đường truyền từ mức cao xuống mức thấp chu kỳ đồng hồ Khi UART phát chuyển đổi điện áp cao xuống thấp, bắt đầu đọc bit khung liệu tần số tốc độ truyền (Baud rate) - Data Frame (khung liệu) Khung liệu chứa liệu thực tế truyền Nó dài từ bit đến bit sử dụng bit Parity (bit chẵn lẻ) Nếu không sử dụng bit Parity, khung liệu dài bit Trong hầu hết trường hợp, liệu gửi với bit LSB (bit có trọng số thấp nhất) trước tiên - Parity bit (bit chẵn lẻ) Bit Parity cho biết liệu có liệu thay đổi trinh truyền hay không Nếu bit Parity (chẵn), tổng bit khung liệu phải số chẵn Nếu bit Parity (lẻ), tổng bit khung liệu số lẻ Khi bit Parity khớp với liệu, UART biết q trình truyền khơng có lỗi Nhưng bit Parity tổng số lẻ bit Parity tổng số chẵn, UART biết bit khung liệu thay đổi - Stop bit (bit kết thúc) Để báo hiệu kết thúc gói liệu, UART gửi điều khiển đường truyền liệu từ điện áp thấp đến điện áp cao hai khoảng thời gian bit |Page Đồ Án Hệ Thống Nhúng - Các bước truyền liệu chuẩn giao tiếp UART UART truyền nhận liệu song song từ bus liệu UART truyền thêm bit bắt đầu, bit chẵn lẻ (các) bit dừng vào khung liệu Tồn gói tin gửi nối tiếp từ UART truyền đến UART nhận UART nhận lấy mẫu đường liệu tốc độ truyền định cấu hình trước UART nhận loại bỏ bit bắt đầu, bit chẵn lẻ bit dừng khỏi khung liệu UART nhận chuyển đổi liệu nối tiếp trở lại thành song song chuyển đến data Bus b) Hệ điều hành FreeRTOS - FreeRTOS hệ điều hành nhúng thời gian thực (Real Time Operating System) mã nguồn mở phát triển Real Time Engineers Ltd, sáng lập sở hữu Richard Barry FreeRTOS thiết kế phù hợp cho nhiều hệ nhúng nhỏ gọn triển khai chức như: chế quản lý nhớ tác vụ bản, hàm API quan trọng cho chế đồng Nó khơng cung cấp sẵn giao tiếp mạng, drivers, hay hệ thống quản lý tệp (file system) hệ điều hành nhúng cao cấp khác Tuy vậy, FreeRTOS có nhiều ưu điểm, hỗ trợ nhiều kiến trúc vi điều khiển khác nhau, kích thước nhỏ gọn (4.3 Kbytes sau biên dịch Arduino), viết ngơn ngữ C sử dụng, phát triển với nhiều trình biên dịch C khác (GCC, OpenWatcom, Keil, IAR, Eclipse, …), cho phép không giới hạn tác vụ chạy đồng thời, không hạn chế quyền ưu tiên thực thi, khả khai thác phần cứng Hình 5: Cách hoạt động FreeRTOS |Page Đồ Án Hệ Thống Nhúng - Chia nhỏ chương trình thành Task, task thực tác vụ riêng mình, chúng có khơng gian nhớ riêng hoàn toàn độc lập với - Để trao đổi thơng tin Task ta dùng Queue (hàng đợi), semaphore, mutex - Queue (hàng đợi) : Hoạt động theo chế FIFO (First In - First Out) Hình 6: Cách hoạt động Queue II) Hệ thống 1) Linh kiện a) Kit Arduino nano |Page Đồ Án Hệ Thống Nhúng Hình 7: Kích thước sơ đồ chân arduino nano - Arduino nano có 12 chân Digital, chân Analog, chân nguồn chân chức khác - Arduino Nano phiên nhỏ gọn Arduino Uno R3 sử dụng MCU ATmega328P-AU dán, MCU nên tính hay chương trình chạy Arduino Uno sử dụng Arduino Nano, ưu điểm Arduino Nano sử dụng phiên IC dán nên có thêm chân Analog A6, A7 so với Arduino Uno b) Kit ESP8266 - Module thu phát Wifi ESP8266 NodeMCU sử dụng IC hãng ESP – 12E (4MB Flash) AI-Thinker sản xuất, gia công đo kiểm với chất lượng tốt Module có tính bật như: chất lượng tốt độ bền cao, ổn định, bắt sóng tốt - Sử dụng chip nạp CP2102 CH340, sử dụng trình biên dịch Arduino để lập trình build code Hình 8: ESP8266 - Thơng số kỹ thuật: Nhà sản xuất: Ai – Thinker |Page Đồ Án Hệ Thống Nhúng IC chính: ESP -12F Phiên fimware: Node mcu Lua Chip nạp: CP2102 GPIO tương thích hoàn toàn với code NODE MCU Điện áp cấp: 5V từ Micro USB chân Vin GPIO giao tiếp mức: 3.3V Tương thích trình biên dịch: Arduino, platform io, … Tích hợp đèn báo: Báo trạng thái, nút reset flash Kích thước: 50 x 25.5 x 13 mm (dài x rộng x cao) Hình 9: Sơ đồ chân ESP8266 c) Cảm biến nhiệt độ, độ ẩm DHT11 - - Hình 10: DHT11 Để giao tiếp với DHT11 theo chuẩn chân vi xử lý thực theo bước: Gửi tin hiệu muốn đo (Start) tới DHT11, sau DHT11 xác nhận lại Khi giao tiếp với DHT11, Cảm biến gửi lại byte liệu nhiệt độ đo Bước 1: gửi tín hiệu Start |Page Đồ Án Hệ Thống Nhúng - Hình 11: Tín hiệu Start MCU thiết lập chân DATA Output, kéo chân DATA xuống khoảng thời gian >18ms Khi DHT11 hiểu MCU muốn đo giá trị nhiệt độ độ ẩm MCU đưa chân DATA lên 1, sau thiết lập lại chân đầu vào Sau khoảng 20-40us, DHT11 kéo chân DATA xuống thấp Nếu >40us mà chân DATA ko kéo xuống thấp nghĩa ko giao tiếp với DHT11 Chân DATA mức thấp 80us sau DHT11 kéo nên cao 80us Bằng việc giám sát chân DATA, MCU biết có giao tiếp với DHT11 ko Nếu tín hiệu đo DHT11 lên cao, hồn thiện q trình giao tiếp MCU với DHT Bước 2: đọc giá trị DHT11 DHT11 trả giá trị nhiệt độ độ ẩm dạng byte Hình 12: Cấu trúc gói Data DHT11 Trong đó: Byte 1: giá trị phần nguyên độ ẩm (RH%) Byte 2: giá trị phần thập phân độ ẩm (RH%) Byte 3: giá trị phần nguyên nhiệt độ (TC) Byte : giá trị phần thập phân nhiệt độ (TC) Byte : kiểm tra tổng Nếu Byte = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) giá trị độ ẩm nhiệt độ xác, sai kết đo khơng có nghĩa d) Cảm biến khí Gas MQ2 |Page Đồ Án Hệ Thống Nhúng - - MQ2 cảm biến khí gas, tạo từ chất bán dẫn SnO2 Chất có độ nhạy cảm thấp với khơng khí sạch, mơi trường có chất gây cháy, độ dẫn thay đổi Khi môi trường sạch, điện áp đầu cảm biến thấp Giá trị điện áp đầu tăng nồng độ khí gây cháy xung quanh cảm biến MQ2 cao MQ2 hoạt động tốt môi trường khí hóa lỏng LPG, H2, chất gây cháy khác Hình 13: MQ2 - - - Thơng số kỹ thuật: Điện áp hoạt động: 5V Phạm vi phát hiện: 300 - 10000ppmm Độ nhạy sáng: R in air/Rin typical gas≥5 Cảm kháng: 1KΩ to 20KΩ / 50ppm Thời gian đáp ứng: ≤10s Thời gian phục hồi: ≤ 30s Trở kháng nóng: 31Ω ± 3Ω Dịng tiêu thụ nóng: ≤ 180mA Năng lượng nóng : ≤ 900Mw Nguyên lý hoạt động: Khả phát cảm biến khí MQ2 phụ thuộc vào chemiresister (điện trở hóa trị) sử dụng phổ biến Dioxit(SnO2), chất bán dẫn loại N có điện tử tự Thơng thường khơng khí chứa nhiều oxy khác khí dễ cháy, phần tử oxy hút các điện tử tự có SnO2 đẩy chúng lển bề mặt SnO2 Vì khơng có electron tự nên dịng điện đầu Khi đặt cảm biến nằm mơi trường khí độc dễ cháy, khí khử phản ứng với phần tử oxi bị hấp thụ phá vỡ liên kết hóa học oxy điện tử tự do, giải phóng điện tử tự Các điện tử tự d trở lại ví trí ban đầu, chúng dẫn dòng điện Sự dẫn dòng điện tỷ lệ với số lượng điện tử tự có sẵn SnO2, khí có độc tính cao có nhiều điện tử tự Cơng thức tính đơn vị ppm: PPM diễn đạt nồng độ theo khối lượng hay thể tích chất hỗn hợp có chứa chất đó, tính theo phần triệu Vì vậy: |Page Đồ Án Hệ Thống Nhúng ppm = 1/1.000.000 Vậy 10.000 ppm = 1% (nồng độ khí gas khơng khí) e) Quang trở - Quang trở gọi trở điện quang, photoresistor, photocell linh kiện tạo chất đặc biệt thay đổi điện trở ánh sáng chiếu vào Về bản, bạn hiểu tế bào quang điện hoạt động dựa theo nguyên lý quang dẫn Hay hiểu điện trở thay đổi giá trị theo cường độ ánh sáng Hình 14: Quang trở - - Cấu tạo gồm phần: Phần phần màng kim loại đấu nối với thông qua đầu cực Linh kiện thiết kế theo cách cung cấp diện tích tiếp xúc tối đa với màng kim loại đặt hộp nhựa giúp tiếp xúc với ánh sáng cảm nhận thay đổi cường độ ánh sáng Thành phần để tạo nên quang trở Cadmium Sulphide (CdS) sử dụng chất quang dẫn, thường khơng chứa có hạt electron không ánh sáng chiếu vào Cơng thức tính đơn vị lux: Lux đơn vị dùng để tính cơng suất ánh sáng, lượng ánh sáng chiếu bề mặt cụ thể Lượng Lumen mét vuông = LUX Độ rọi (Lux) = Cơng suất đèn ( W ) ×Quang thơng × Số lượng đèn sử dụng ( Lm W ) Diệntích chiếu sáng (m 2) Hay: 1Lux = lumens/1m2 f) Màn hình OLED 0.96 inch - Những ưu điểm kể đến hình OLED lớp hữu nhựa mỏng, nhẹ mềm dẻo lớp tinh thể LED hay LCD nhờ mà ứng |Page Đồ Án Hệ Thống Nhúng dụng OLED để chế tạo hình gập cuộn Độ sáng OLED tốt LED không cần đèn LCD nên sử dụng pin - Hình 15: Màn hình Oled Thơng số kĩ thuật hình OLED 0.96inch I2C: Điện áp sử dụng: 3V3 đến 5V (DC) Công suất tiêu thụ: 0.04W Góc hiển thị: Lớn 160 độ Độ phân giải: 128X64 pixel (Điểm ảnh) Độ rộng hình: 0.96inch Giao tiếp: I2C Màu: Trắng Đen Driver: SSD13 g) App Blynk IoT Hình 16: Nguyên lý hoạt động App Blynk IoT |Page Đồ Án Hệ Thống Nhúng - Có ba thành phần tảng: Ứng dụng Blynk – cho phép tạo giao diện cho dự án cách sử dụng widget khác Ngoài phiên – Blynk IoT nhà sản xuất tích hợp web server để thực điều khiển theo dõi thiết bị IoT trình duyệt web Blynk Server – chịu trách nhiệm tất giao tiếp điện thoại thơng minh phần cứng Bạn sử dụng Blynk Cloud chạy cục máy chủ Blynk riêng Nó mã nguồn mở, dễ dàng xử lý hàng nghìn thiết bị chí khởi chạy Raspberry Pi Thư viện Blynk – dành cho tất tảng phần cứng phổ biến Blynk Library upload vào mạch điều khiển Arduino, Esp8266 mạch kết nối với nhiều cảm biến, thiết bị, Và kết nối với Blynk Server thông qua Wifi, Ethernet, 3G, LTE cho phép giao tiếp với máy chủ xử lý tất lệnh đến lệnh - Mỗi nhấn nút ứng dụng Blynk, thông điệp truyền đến khơng gian đám mây Blynk, tìm đường đến phần cứng Hình 17: Giao diện điều khiển web |Page Đồ Án Hệ Thống Nhúng 2) Sơ đồ khối Hình 18: Sơ đồ khối 3) Lưu đồ thuật toán |Page Đồ Án Hệ Thống Nhúng Hình 19: Lưu đồ thuật tốn - Hoạt động Task |Page Đồ Án Hệ Thống Nhúng Hình 20: Lưu đồ thuật toán - Nguyên lý hoạt động Taskdht TaskSensor đọc liệu từ cảm biến DHT11, MQ2, quang trở gửi giá trị Queue tương ứng TaskSerial đọc giá trị từ Queue , đóng gói JSON lại gửi qua ESP8266 UART Esp8266 nhận liệu từ arduino gửi lên Blynk IoT Nếu giá trị nhiệt độ >40 độ ẩm 1000 Esp gửi cảnh báo lên Blynk Khi tín hiệu điều khiển thiết bị gửi đến Esp từ Blynk Esp bật tắt thiết bị tương ứng III) Kết định hướng phát triển 1) Kết - Giao diện Web |Page ... Nhà thông minh sử dụng ESP8266? ?? để làm đề tài cho nhóm giúp quản lí thiết bị nhà tốt hơn, đem lại thuận tiện sử dụng thiết bị nhà Chúng em xin chân thành cảm ơn Thầy giáo Nguyễn Ngọc Minh tận... dùng thông qua bảng điện tử đặt nhà, ứng dụng điện thoại di động, máy tính bảng giao diện web Nhờ ứng dụng công nghệ hồng ngoại, điện thoại thông minh, IoT, công nghệ đám mây? ?Nhà thơng minh. .. nghành nghề như: Công nghệ thông tin, điện tử, viễn thông, Sản xuất nông nghiệp, nhà thông minh? ?? giúp tăng suất lao động, giảm chi phí sản xuất, dễ dàng quản lý sử dụng Vậy vào khái niệm IOT