đồ á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.
Trang 1MỤC LỤ
Trang 2Lời mở đầu
I) Giới thiệu đề tài
1) Nội dung
2) Mục tiêu
II) Cơ sở lý thuyết
1) Giao thức
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
c) Cảm biến nhiệt độ, độ ẩm DHT11
d) Cảm biến khí Gas MQ2
e) Quang trở
f) Màn hình OLED 0.96 inch
g) App Blynk IoT
2) Sơ đồ khối
3) Lưu đồ thuật toán
IV) Kết quả và định hướng phát triển
1) Kết quả
2) Nhận xét
3) Định hướng
Trang 3Lời mở đầu
IOT (Internet Of Things – internet vạn vật) đã xuất hiện ở 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ôngminh… và đã giúp tăng năng suất lao động, giảm chi phí sản xuất, dễ dàng quản lý và
sử dụng Vậy chúng ta sẽ đi vào khái niệm IOT là gì: IOT là liên kết vạn vật thông quamạng internet, đơn giản hơn nghĩa là các thiết bị sẽ giao tiếp với nhau thông quainternet Chúng ta có thể lấy ví dụ đơn giản là thông qua mạng internet có thể bật tắtđược cái bóng đèn, quạt, điều hòa, máy bơm nước bằng điện thoại thông minh, máytính Và lý do để chúng em chọn đề tài “ Nhà thông minh sử dụng ESP8266” để làm
đề tài cho nhóm là vì giúp quản lí các thiết bị trong nhà tốt hơn, đem lại sự thuận tiệnkhi sử dụng các thiết bị của mình trong nhà
Chúng em xin chân thành cảm ơn Thầy giáo Nguyễn Ngọc Minh đã tận tìnhquan tâm hướng dẫn chúng em trong suốt thời gian qua Do còn việc hạn chế về trình
độ ngoại ngữ, chuyên môn và thiếu kinh nghiệm làm bài nên đồ án của chúng em cònnhiều khiếm khuyết, sai sót Chúng em mong nhận được nhiều ý kiến đóng góp cũngnhư những lời khuyên hữu ích từ các thầy, cô để có thể thấy rõ những điều cần nghiêncứu bổ sung, giúp cho việc xây dựng đề tài đạt đến kết quả hoàn thiện hơn
Trang 4Phân Chia Công Việc
- Đinh Trung Toàn B18DCDT217
Lập sơ đồ khối, lưu đồ thuật toán.
Tìm hiểu về 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 giữa Arduino Nano với Esp8266.
Viết word, làm powerpoint.
Trang 5I) Giới thiệu đề tài
1) Nội dung
Nhà thông minh là kiểu nhà được lắp đặt các thiết bị điện, điện tử có thểđược điều khiển hoặc tự động hoá hoặc bán tự động Thay thế con ngườitrong thực hiện một hoặc một số thao tác quản lý, điều khiển. Hệ thống điện
tử này giao tiếp với người dùng thông qua bảng điện tử đặt trong nhà, ứngdụng trên điện thoại di động, máy tính bảng hoặc một giao diện web
Nhờ ứng dụng các công nghệ như hồng ngoại, điện thoại thông minh, IoT,công nghệ đám mây…Nhà thông minh có thể tự động giúp bạn làm nhữngcông việc trong nhà, giúp cho cuộc sống thoải mái hơn
IC với nhau chỉ sử dụng hai đường truyền tín hiệu
- Các bit dữ liệu sẽ được truyền từng bit một theo các khoảng thời gian đều đặnđược thiết lập bởi 1 tín hiệu đồng hồ
- Bus I2C thường được sử dụng để giao tiếp ngoại vi cho rất nhiều loại IC khácnhau như các loại vi điều khiển, cảm biến, EEPROM, …
Trang 6Hình 1: Sơ đồ khối giao thức I2C
- I2C sử dụng 2 đường truyền tín hiệu:
SCL - Serial Clock Line : Tạo xung nhịp đồng hồ do Master phát đi
SDA - Serial Data Line : Đường truyền nhận dữ liệu
- Khung truyền I2C
Hình 2: Khung truyền I2C
Khối bit địa chỉ: Thông thường quá trình truyền nhận sẽ diễn ra với rất nhiềuthiết bị, IC với nhau Do đó để phân biệt các thiết bị này, chúng sẽ được gắn
1 địa chỉ vật lý 7 bit cố định
Bit Read/Write: Bit này dùng để xác định quá trình là truyền hay nhận dữliệu từ thiết bị Master Nếu Master gửi dữ liệu đi thì ứng với bit này bằng
‘0’, và ngược lại, nhận dữ liệu khi bit này bằng ‘1’
Bit ACK/NACK: Viết tắt của Acknowledged / Not Acknowledged Dùng để
so sánh bit địa chỉ vật lý của thiết bị so với địa chỉ được gửi tới Nếu trùngthì Slave sẽ được đặt bằng ‘0’ và ngược lại, nếu không thì mặc định bằng
‘1’
Khối bit dữ liệu: Gồm 8 bit và được thiết lập bởi thiết bị gửi truyền đến thiết
bị nhân Sau khi các bit này được gửi đi, lập tức 1 bit ACK/NACK được gửingay theo sau để xác nhận rằng thiết bị nhận đã nhận được dữ liệu thànhcông hay chưa Nếu nhận thành công thì bit ACK/NACK được set bằng ‘0’
và ngược lại
Trang 7- Quá trình truyền nhận dữ liệu:
Hình 3: Sơ đồ xung Clock của 2 đường dây
Bắt đầu: Thiết bị Master sẽ gửi đi 1 xung Start bằng cách kéo lần lượt cácđường SDA, SCL từ mức 1 xuống 0
Tiếp theo đó, Master gửi đi 7 bit địa chỉ tới Slave muốn giao tiếp cùng vớibit Read/Write
Slave sẽ so sánh địa chỉ vật lý với địa chỉ vừa được gửi tới Nếu trùng khớp,Slave sẽ xác nhận bằng cách kéo đường SDA xuống 0 và set bitACK/NACK bằng ‘0’ Nếu không trùng khớp thì SDA và bit ACK/NACKđều mặc định bằng ‘1’
Thiết bị Master sẽ gửi hoặc nhận khung bit dữ liệu Nếu Master gửi đếnSlave thì bit Read/Write ở mức 0 Ngược lại nếu nhận thì bit này ở mức 1
Nếu như khung dữ liệu đã được truyền đi thành công, bit ACK/NACK đượcset thành mức 0 để báo hiệu cho Master tiếp tục
Sau khi tất cả dữ liệu đã được gửi đến Slave thành công, Master sẽ phát 1 tínhiệu Stop để báo cho các Slave biết quá trình truyền đã kết thúc bằng cácchuyển lần lượt SCL, SDA từ mức 0 lên mức 1
a) UART
- UART (Universal Asynchronous Receiver / Transmitter) là một vi mạch sẵn cótrong một vi điều khiển nhưng không giống như một giao thức truyền thông(I2C & SPI) Chức năng chính của UART là truyền dữ liệu nối tiếp TrongUART, giao tiếp giữa hai thiết bị có thể được thực hiện theo hai cách là giaotiếp dữ liệu nối tiếp và giao tiếp dữ liệu song song
- Chuẩn giao tiếp UART sử dụng 2 dây để truyền và nhận dữ liệu giữa các thiếtbị:
TX (Transmiter) - Dây truyền dữ liệu
Trang 8 RX (Receiver) - Dây nhận dữ liệu
- Dữ liệu được truyền trong giao tiếp UART được tổ chức thành các gói(Packets) Mỗi Packets chứa 1 bit Start, 5 đến 9 bit dữ liệu (tùy thuộc vàoUART), 1 bit Parity và 1 hoặc 2 bit Stop
Hình 4: Khung truyền UART
- Start bit
Đường truyền dữ liệu trong giao tiếp UART thường được giữ ở mức điện ápcao khi nó không truyền dữ liệu Để bắt đầu truyền dữ liệu, UART truyền sẽkéo đường truyền từ mức cao xuống mức thấp trong một chu kỳ đồng hồ.Khi UART 2 phát hiện sự chuyển đổi điện áp cao xuống thấp, nó bắt đầuđọc các bit trong khung dữ liệu ở tần số của tốc độ truyền (Baud rate)
- Data Frame (khung dữ liệu)
Khung dữ liệu chứa dữ liệu thực tế đang được truyền Nó có thể dài từ 5 bitđến 8 bit nếu sử dụng bit Parity (bit chẵn lẻ) Nếu không sử dụng bit Parity,khung dữ liệu có thể dài 9 bit Trong hầu hết các trường hợp, dữ liệu đượcgử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ó bất kỳ dữ liệu nào đã thay đổi trong quá trinhtruyền hay không Nếu bit Parity là 0 (chẵn), thì tổng các bit 1 trong khung
dữ liệu phải là một số chẵn Nếu bit Parity là 1 (lẻ), thì tổng các bit 1 trongkhung dữ liệu sẽ là một số lẻ Khi bit Parity khớp với dữ liệu, UART biếtrằng quá trình truyền không có lỗi Nhưng nếu bit Parity là 0 và tổng là số lẻhoặc bit Parity là 1 và tổng số là chẵn, UART biết rằng các bit trong khung
dữ liệu đã thay đổi
- Stop bit (bit kết thúc)
Để báo hiệu sự kết thúc của gói dữ liệu, UART gửi sẽ điều khiển đườngtruyền dữ liệu từ điện áp thấp đến điện áp cao trong ít nhất hai khoảng thờigian bit
Trang 9- Các bước truyền dữ liệu trong chuẩn giao tiếp UART
UART truyền nhận dữ liệu song song từ bus dữ liệu
UART truyền thêm bit bắt đầu, bit chẵn lẻ và (các) bit dừng vào khung dữliệu
Toàn bộ gói tin được gửi nối tiếp từ UART truyền đến UART nhận UARTnhận lấy mẫu đường dữ liệu ở tốc độ truyền được định cấu hình trước
UART nhận loại bỏ bit bắt đầu, bit chẵn lẻ và bit dừng khỏi khung dữ liệu
UART nhận chuyển đổi dữ liệu nối tiếp trở lại thành song song và chuyển
Hình 5: Cách hoạt động của FreeRTOS
Trang 10- Chia nhỏ chương trình thành các Task, mỗi task thực hiện tác vụ riêng củamình, chúng có không gian bộ nhớ riêng và hoàn toàn độc lập với nhau.
- Để trao đổi thông tin giữa các Task thì ta dùng Queue (hàng đợi), semaphore,mutex
- Queue (hàng đợi) : Hoạt động theo cơ chế FIFO (First In - First Out)
Trang 11Hình 7: Kích thước và sơ đồ chân arduino nano
- Arduino nano có 12 chân Digital, 8 chân Analog, chân nguồn và các chân chứcnăng khác
- Arduino Nano là phiên bản nhỏ gọn của Arduino Uno R3 sử dụng MCUATmega328P-AU dán, vì cùng MCU nên mọi tính năng hay chương trình chạytrên Arduino Uno đều có thể sử dụng trên Arduino Nano, một ưu điểm củaArduino Nano là vì sử dụng phiên bản IC dán nên sẽ có thêm 2 chân AnalogA6, A7 so với Arduino Uno
b) Kit ESP8266
- Module thu phát Wifi ESP8266 NodeMCU sử dụng IC chính hãng ESP – 12E(4MB Flash) của AI-Thinker được sản xuất, gia công và đo kiểm với chất lượngtốt nhất Module có các tính năng nổi 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 hoặc CH340, có thể sử dụng trình biên dịch củaArduino để lập trình hoặc build code
Hình 8: ESP8266
- Thông số kỹ thuật:
Nhà sản xuất: Ai – Thinker
Trang 12 Phiên bả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 hoặc 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
- Để có thể giao tiếp với DHT11 theo chuẩn 1 chân vi xử lý thực hiện theo 2
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 được với DHT11, Cảm biến sẽ gửi lại 5 byte dữ liệu vànhiệt độ đo được
- Bước 1: gửi tín hiệu Start
Trang 13Hình 11: Tín hiệu Start
MCU thiết lập chân DATA là Output, kéo chân DATA xuống 0 trongkhoảng thời gian >18ms Khi đó DHT11 sẽ hiểu MCU muốn đo giá trị nhiệt
độ và độ ẩm
MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào
Sau khoảng 20-40us, DHT11 sẽ kéo chân DATA xuống thấp Nếu >40us màchân DATA ko đượckéo xuống thấp nghĩa là ko giao tiếp được với DHT11
Chân DATA sẽ ở mức thấp 80us sau đó nó được DHT11 kéo nên cao trong80us Bằng việc giám sát chân DATA, MCU có thể biết được có giao tiếpđược với DHT11 ko Nếu tín hiệu đo được DHT11 lên cao, khi đó hoànthiện quá trình giao tiếp của MCU với DHT
- Bước 2: đọc giá trị trên DHT11
DHT11 sẽ trả giá trị nhiệt độ và độ ẩm về dưới dạng 5 byte
Hình 12: Cấu trúc gói Data của DHT11
Trong đó:
Byte 1: giá trị phần nguyên của độ ẩm (RH%)
Byte 2: giá trị phần thập phân của độ ẩm (RH%)
Byte 3: giá trị phần nguyên của nhiệt độ (TC)
Byte 4 : giá trị phần thập phân của nhiệt độ (TC)
Byte 5 : kiểm tra tổng
Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) thì giá trị độ ẩm vànhiệt độ là chính xác, nếusai thì kết quả đo không có nghĩa
d) Cảm biến khí Gas MQ2
- MQ2 là cảm biến khí gas, nó được tạo từ chất bán dẫn SnO2 Chất này có độ
nhạy cảm thấp với không khí sạch, nhưng khi trong môi trường có chất gâycháy, độ dẫn của nó sẽ thay đổi ngay
Trang 14- Khi môi trường sạch, điện áp đầu ra của cảm biến thấp Giá trị điện áp đầu ra
càng tăng khi nồng độ khí gây cháy xung quanh cảm biến MQ2 càng cao
- MQ2 hoạt động rất tốt trong môi trường khí hóa lỏng LPG, H2, và các chất gây
Dòng tiêu thụ khi nóng: ≤ 180mA
Năng lượng khi nóng : ≤ 900Mw
- Nguyên lý hoạt động:
Khả năng phát hiện của cảm biến khí MQ2 phụ thuộc vào chemiresister
(điện trở hóa trị) được sử dụng phổ biến nhất là Dioxit(SnO2), là một chấtbán dẫn loại N có các điện tử tự do
Thông thường trong không khí chứa nhiều oxy hơn khác khí dễ cháy, cácphần tử oxy sẽ hút các các điện tử tự do có trong SnO2 và đẩy chúng lển bềmặt của SnO2 Vì không có electron tự do nên dòng điện đầu ra sẽ bằng 0
Khi đặt cảm biến nằm trong môi trường khí độc hoặc dễ cháy, khí khử nàyphản ứng với các phần tử oxi bị hấp thụ và phá vỡ liên kết hóa học giữa oxy
và các điện tử tự do, do đó giải phóng các điện tử tự do Các điện tử tự d trởlại ví trí ban đầu, chúng có thể dẫn dòng điện Sự dẫn dòng điện này tỷ lệvới số lượng điện tử tự do có sẵn trong SnO2, nếu khí có độc tính cao hơnthì sẽ có nhiều điện tử tự do hơn
Trang 15- Quang trở được gọi là trở điện quang, photoresistor, photocell là một trongnhững linh kiện được tạo bằng một chất đặc biệt có thể thay đổi điệntrở khi ánh sáng chiếu vào Về cơ bản, bạn có thể hiểu nó là một tếbào quang điện được hoạt động dựa theo nguyên lý quang dẫn Hay cóthể hiểu nó là một điện trở có thể thay đổi được giá trị theo cường độánh sáng.
Hình 14: Quang trở
Phần trên và phần dưới là các màng kim loại được đấu nối vớinhau thông qua các đầu cực Linh kiện này được thiết kế theo cáchcung cấp diện tích tiếp xúc tối đa nhất với 2 màng kim loại vàđược đặt trong một hộp nhựa có thể giúp tiếp xúc được với ánhsáng và có thể cảm nhận được sự thay đổi của cường độ ánh sáng.
Thành phần chính để tạo nên quang trở đó chính là CadmiumSulphide (CdS) được sử dụng là chất quang dẫn, thường khôngchứa hoặc có rất ít các hạt electron khi không được ánh sáng chiếuvào
- Công thức tính ra đơn vị lux:
Lux là đơn vị dùng để tính công suất ánh sáng, lượng ánh sáng chiếu trên bềmặt cụ thể Lượng Lumen trên một mét vuông = LUX
Trang 16g) App Blynk IoT
Hình 16: Nguyên lý hoạt động của App Blynk IoT
- Có ba thành phần chính trong nền tảng:
Ứng dụng Blynk – cho phép chúng ta tạo giao diện cho các dự án của mìnhbằng cách sử dụng các widget khác nhau Ngoài ra trong phiên bản mới nhất
Trang 17– Blynk IoT nhà sản xuất đã tích hợp web server để chúng ta có thể thựchiện điều khiển và theo dõi các thiết bị IoT ngay trên trình duyệt web.
Blynk Server – chịu trách nhiệm về tất cả các giao tiếp giữa điện thoại thôngminh và phần cứng Bạn có thể sử dụng Blynk Cloud hoặc chạy cục bộ máychủ Blynk riêng của mình Nó là mã nguồn mở, có thể dễ dàng xử lý hàngnghìn thiết bị và thậm chí có thể được khởi chạy trên Raspberry Pi
Thư viện Blynk – dành cho tất cả các nền tảng phần cứng phổ biến BlynkLibrary sẽ được upload vào các mạch điều khiển như Arduino, Esp8266 trên các mạch có thể kết nối với nhiều cảm biến, thiết bị, Và được kết nốivới Blynk Server thông qua Wifi, Ethernet, 3G, LTE cho phép giao tiếpvới máy chủ và xử lý tất cả các lệnh đến và lệnh đi
- Mỗi khi nhấn một nút trong ứng dụng Blynk, thông điệp sẽ truyền đến không
gian của đám mây Blynk, và tìm đường đến phần cứng của chúng ta
Hình 17: Giao diện điều khiển web2) Sơ đồ khối
Trang 18Hình 18: Sơ đồ khối3) Lưu đồ thuật toán
Trang 19Hình 19: Lưu đồ thuật toán
- Hoạt động của các Task
Hình 20: Lưu đồ thuật toán
Esp8266 nhận dữ liệu từ arduino và gửi lên Blynk IoT
Nếu giá trị nhiệt độ >40 hoặc độ ẩm <40 hoặc khí gas >1000 thì Esp sẽ gửicảnh báo lên Blynk
Khi tín hiệu điều khiển thiết bị gửi đến Esp từ Blynk thì Esp sẽ bật tắt cácthiết bị tương ứng
III) Kết quả và định hướng phát triển
1) Kết quả
- Giao diện Web
Trang 20- Mạch demo
2) Nhận xét
- Sau một thời gian tìm hiểu, nghiên cứu, nhóm đã giải quyết tương đối các yêu
cầu cơ bản như truyền nhận dữ liệu, điều khiển thiết bị, của đề tài đã đề ra banđầu:
Đọc giá trị nhiệt độ, độ ẩm, ánh sáng , khí gas
Gửi dữ liệu và hiển thị lên trên App
Điều khiển các thiết bị cơ bản trong gia đình
- Ưu điểm:
Đáp ứng được yêu cầu đề bài đặt ra
Dễ dàng sử dụng cho mọi người