1. Trang chủ
  2. » Giáo Dục - Đào Tạo

đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos

55 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phát Triển Thiết Bị Cảnh Báo Nguy Cơ Cháy Nổ Sử Dụng Hệ Điều Hành Thời Gian Thực FreeRTOS
Tác giả Nguyễn Trọng Đức, Hoàng Thị Hiền, Kiều Quang Huynh, Nguyễn Thị Trang
Người hướng dẫn Ths. Lê Thị Hồng Vân
Trường học Học Viện Kỹ Thuật Mật Mã
Chuyên ngành Hệ Điều Hành Nhúng Thời Gian Thực
Thể loại Báo Cáo Môn Học
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 55
Dung lượng 11,75 MB

Cấu trúc

  • CHƯƠNG 1. CƠ SỞ LÝ THUYẾT (9)
    • 1.1 Tổng quan đề tài (9)
      • 1.1.1 Đặt vấn đề (9)
      • 1.1.2 Đặc điểm (9)
      • 1.1.3 Mục tiêu (10)
    • 1.2 Tổng quan về Arduino và hệ điều hành thời gian thực (10)
      • 1.2.1 Lập trình Arduino (10)
      • 1.2.2 Hệ điều hành thời gian thực FreeRTOS (12)
    • 1.3 Tổng quan về nền tảng Blynk (16)
  • CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ ĐỀ TÀI (21)
    • 2.1 Chức năng của thiết bị (21)
    • 2.2 Thiết kế phần cứng (22)
      • 2.2.1 Lựa chọn linh kiện (22)
      • 2.2.2 Sơ đồ lắp đặt mô phỏng (31)
    • 2.3 Thiết kế phần mềm (32)
      • 2.3.1 Sơ đồ hệ thống (32)
      • 2.3.2 Biểu đồ ca sử dụng (33)
      • 2.3.3 Đặc tả các ca sử dụng (34)
      • 2.3.4 Biểu đồ tuần tự (36)
  • CHƯƠNG 3. KẾT QUẢ THỰC NGHIỆM (37)
    • 3.1 Mô hình thiết bị thực tế (37)
    • 3.2 Thực nghiệm các chức năng (41)
  • KẾT LUẬN (54)
  • TÀI LIỆU THAM KHẢO (55)

Nội dung

Đồng thời, hướng dẫn thoát nạn cho hàng nghìn người,trực tiếp cứu an toàn 323 người bị nạn trong các vụ cháy.”[1]Vì thế, đề tài nghiên cứu của nhóm nhằm phần nào đó việc phát hiện hiện k

CƠ SỞ LÝ THUYẾT

Tổng quan đề tài

Ngày nay với sự phát triển vượt bậc của khoa học kỹ thuật, điện tử đã được ứng dụng ở rất nhiều lĩnh vực trong thực tế để phục vụ nhu cầu: chăm sóc sức khỏe, bảo vệ tính mạng và tài sản cho con người.

Khi đời sống con người được cải thiện thì việc sử dụng bếp gas hay các sản phẩn của gas làm nhiên liệu đun nấu đang phổ biến Bên cạnh việc tiện lợi của gas, một vấn đề khác của gas cũng được quan tâm đó là: an toàn khi sử dụng gas Khi con người tiếp xúc trực tiếp với khí gas (vượt quá một nộng độ cho phép nhất định) trong thời gian dài thì rất dễ bị ngộ độc gas và có thể gây tử vong Không những vậy khí gas rò rỉ vào trong không khí có thể dễ dàng bắt lửa và gây cháy nổ, ảnh hưởng nghiêm trọng tới an toàn của người sử dụng cũng như những người xung quanh Vì vậy, vấn đề phát hiện và xử lý sự cố cháy nổ do rò rỉ gas là một việc rất cần thiết với người thường xuyên sử dụng gas Đặc biệt là các bạn sinh viên thường sử dụng các bình gas mini không đảm bảo chất lượng, có thể rò rỉ gas bất cứ khi nào Xuất phát từ nguyên nhân trên và tình hình thực tế nhóm thấy đây là một gợi ý cho đề tài của mình, có tính ứng dụng cao và có thể phát triển nên nhóm đã chọn đề tài này làm đề tài chính trong đồ án môn học.

Thiết bị cảnh báo nguy cơ cháy nổ này sẽ giúp chúng ta dễ dàng nhận biết khí gas khi bị rò rỉ, phát hiện ngọn lửa đám cháy Kịp thời phát hiện và ngăn chặn các tình huống xấu có thể xảy ra.

Như thầy cô và mọi người đã biết trong cuộc sống xã hội hiện đại ngày nay vấn đề sử dụng khí đốt ( ở đây chúng ta đang nói đến là khí Gas ) trong việc lấu ăn hàng ngày và hay cả sử dụng khí đốt cho các ngành công nghiệp đang rất phổ biết Như ngày xưa khoảng 15 năm về trước thì chỉ có thành phố mới sử dụng khí đốt cho nấu ăn hay cho nhưng ngành công nghiệp còn nông thôn thường sử dụng bếp rạ và củi cho việc đun lấu thì nay gần như từ quê lên phố thì 99% sử dụng khí đốt cho bếp lúc đun lấu nên khi khí gas bị rò rỉ ra ngoài khả năng cháy nổ là rất cao vì chỉ cần có tia nửa điện từ các ổ cắm hay thiết bị điện hay một đoạn dây bị hở sỉnh ra tia lửa điện là khả năng hỏa hoạn cho ngồi nhà là rất cao ảnh hưởng đến tài sản và tính mạng con người.

Theo Thông cáo báo chí của Cục cánh sát phòng cháy, chữa cháy và cứu nạn cứu hộ: “ 9 tháng đầu năm 2021, toàn quốc xảy ra 1.723 vụ cháy, làm chết 72 người, bị thương 104 người, gây thiệt hại về tài sản ước tính 332,91 tỷ đồng và 3,588,56 ha rừng; xảy ra 18 vụ nổ, làm 10 người chết và 10 người bị thương Lực lượng Cảnh sát PCCC và CNCH đã trực tiếp CNCH 806 vụ tai nạn, sự cố, cứu được 283 người, tìm được 459 thi thể nạn nhân bàn giao cho cơ quan chức năng xử lý Đồng thời, hướng dẫn thoát nạn cho hàng nghìn người, trực tiếp cứu an toàn 323 người bị nạn trong các vụ cháy.”[1]

Vì thế, đề tài nghiên cứu của nhóm nhằm phần nào đó việc phát hiện hiện khí gas và ngọn lửa đám cháy giúp ngăn chặn hỏa hoạn cho cho người và bảo vệ tài sản.

Mục tiêu đồ án nhóm đặt ra sau khi hoàn thành là:

 Mục tiêu kiến thức: o Nắm bắt được cấu trúc phần cứng, sơ đồ khối, nguyên lý làm việc của mạch điều khiển. o Tìm hiểu về lập trình Arduino. o Ứng dụng hệ điều hành thời gian thực FreeRTOS vào trong thực hành. o Biết cách làm một đồ án hoàn chỉnh phục vụ cho việc làm đồ án tốt nghiệp về sau.

 Mục tiêu sản phẩm: o Sản phẩm hoạt động ổn định với đầy đủ các chức năng cần thiết cho việc “Cảnh báo nguy cơ cháy nổ”. o Sản phẩm nhỏ, gọn, mang tính thẩm mỹ cao. o Giá thành sản phẩm phù hợp với người tiêu dùng hiện nay.

Tổng quan về Arduino và hệ điều hành thời gian thực

Có thể mọi người đã quen lập trình trên PC, với những ngôn ngữ như C, C++, C#, Java,Python, Ruby

Nhưng có biết rằng phần mềm trên PC chỉ chiếm khoảng 10% sản lượng phần mềm trên thị trường 90% còn lại là code điều khiển tivi, máy giặt, điều hòa, tủ lạnh tóm lại là tất cả các thiết bị điện tử xung quanh ta Lập trình theo hướng này được gọi là embedded computing, hay physical computing, tức là lập trình để con người tương tác với các thiết bị thực. Để người thiết kế có thể nhanh chóng đưa ra được mẫu thể hiện ý tưởng của mình, rất cần phải có những platform để dễ dàng prototyping Và một trong những platform đang được sử dụng rất nhiều trong prototyping là Arduino.

Arduino là một bo mạch xử lý được dùng để lập trình tương tác với các thiết bị phần cứng như cảm biến, động cơ, Điểm hấp dẫn ở Arduino là ngôn ngữ cực kì dễ học (giống C/C++), các ngoại vi trên bo mạch đều đã được chuẩn hóa, nên không cần biết nhiều về điện tử, cũng có thể lập trình được những ứng dụng thú vị Thêm nữa, vì Arduino là một platform đã được chuẩn hóa, nên đã có rất nhiều các bo mạch mở rộng (gọi là shield) để cắm chồng lên bo mạch Arduino, có thể hình dung như là "library" của các ngôn ngữ lập trình Ví dụ, muốn kết nối Internet thì có Ethernet shield, muốn điều khiển động cơ thì có Motor shield, muốn kết nối nhận tin nhắn thì có GSM shield, Rất đơn giản, và chỉ phải tập trung vào việc "lắp ghép" các thành phần này và sáng tạo ra các ứng dụng cần thiết.

Có thể kể ở đây một số ứng dụng hay của Arduino:

 Robot: Arduino được dùng để làm bộ xử lý trung tâm của rất nhiều loại robot Đó là nhờ vào khả năng đọc các thiết bị cảm biến, điều khiển động cơ, của Arduino.

 Game tương tác: chúng ta có thể dùng Arduino để tương tác với Joystick, màn hình, để chơi các trò như Tetrix, phá gach, Mario

 Máy bay không người lái.

 Và nhiều ví dụ khác nữa,

Như vậy, tuy là một bo mạch nhỏ như thế, nhưng Arduino có thể dùng vào rất nhiều ứng dụng thú vị khác nhau Vậy để phát triển ứng dụng dựa trên Arduino, cần những gì?

Rất đơn giản, chỉ cần IDE phát, một dây kết nối USB loại A-B, và một bo mạch Arduino là có thể bắt đầu.

Ngôn ngữ lập trình của Arduino chính là C/C++, nhưng so với lập trình lập trình trực tiếp với vi điều khiển, lập trình với Arduino đơn giản hơn nhiều vì chỉ phải giao tiếp với phần cứng thông qua các thư viện, có thể xem như các lớp C++ wrapper lên các giao tiếp với phần cứng Trên website, có khá nhiều các library viết sẵn để điều khiển ngoại vi: LCD, sensor, motor việc cần làm là kết hợp chúng với nhau để tạo ứng dụng cho riêng mình.

Một chương trình arduino được gọi là sketch, sẽ được upload lên bo mạch Arduino qua cổng USB.

Phân tích chương trình: có 2 method quan trọng nhất là setup() và loop().

 setup(): làm nhiệm vụ khởi tạo mode cho các ngoại vi của Arduino Hàm này sẽ được chạy một lần khi bo mạch Arduino được reset Ở chương trình này, setup() chỉ làm nhiệm vụ đặt các chân 4,5,6,7 của Arduino sang mode output.

 loop(): là chương trình chính của Arduino Đoạn code trong loop() sẽ được Arduino chạy vô hạn Trong chương trình này, có hàm digitalWrite() để đặt các chân (pin) ở mức điện áp cao (HIGH) hay thấp (LOW) Hàm tiếp theo là delay(), nhận đối số là một số nguyên, thẻ hiện số mili giây ta muốn chương trình tạm ngưng.[2]

1.2.2 Hệ điều hành thời gian thực FreeRTOS

 Hệ điều hành thời gian thực FreeRTOS (Real Time Operating Systeam) được phái triển bởi Real Time Engineers Ltd, sáng lập và sở hữu vởi Richard Barry

 FreeRTOS được thiết kế phù hợp cho nhiều hệ nhúng nhỏ gọn vì nó chỉ triển khai rất ít các chức năng như: cơ chế quản lý bộ nhớ và tác vụ cơ bản, các hàm API quan trọng cho cơ chế đồng bộ Nó không cung cấp sẵn các giao tiếp mạng, drivers, hay hệ thống quản lý tệp (file system) như những 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 khi biên dịch trên Arduino), được viết bằng ngôn ngữ C và có thể sử dụng, phát triển với nhiều trình biên dịch C khác nhau (GCC, OpenWatcom, Keil, IAR, Eclipse, …), cho phép không giới hạn các tác vụ chạy đồng thời, không hạn chế quyền ưu tiên thực thi, khả năng khai thác phần cứng.

Ngoài ra, nó cũng cho phép triển khai các cơ chế điều độ giữa các tiến trình như: queues, counting semaphore, mutexes.[3]

 Trong RTOS thì task có 4 trạng thái: o Ready: Task đã sẵn sàng để có thể thực thi nhưng chưa được thực thi do có các task khác với độ ưu tiên ngang bằng hoặc hơn đang chạy (tương tự như đối với ngắt). o Running: Task đang thực thi. o Blocked: Task đang chờ 1 sự kiện nào đó xảy ra, sự kiện này có thể là khoảng thời gian hoặc 1 sự kiện nào đó từ task khác. o Suspended: Task ở trạng thái treo, về cơ bản thì trạng thái này cũng tương tự như Blocked Nhưng điểm khác nhau là “cách” chuyển từ trạng thái hiện tại sang Ready State Chỉ khi gọi hàm vTaskResume() thì task bị treo mới được chuyển sang trạng thái Ready để có thể thực thi.

 Trong FreeRtos mỗi Task sẽ được gán: o 1 “cái tên”: chủ yếu được sử dụng để debug. o Size: Kích thước ngăn xếp của task. o Tham số truyền vào. o 1 mức ưu tiên (priority): tùy vào thư viện mà rank của mức độ ưu tiên có thể được định nghĩa khác nhau (càng thấp càng được ưu tiên hoặc càng cao càng được ưu tiên). o 1 con trỏ đại diện cho task (xTaskHandle): thường được sử dụng để điều khiển task từ 1 task khác. o Return: pdPASS – task được tạo thành công; pdFAIL – task không được tạo do thiếu bộ nhớ heap.

 Khi xây dựng 1 task ta cần chú ý, mỗi task nên là 1 “siêu vòng lặp” vì nếu không chip của bạn sẽ bị reset khi task chạy xong các lệnh của nó ⇒ Để tránh điều này ta cần Delete task đó trước khi nó kết thúc bằng hàm: vTaskDelete();

 void vApplicationIdleHook(void): Cái này để mình định nghĩa chức năng của Idle Task khi mình cho công việc gì trong này thì khi mà Task Idle được gọi là nó sẽ thực hiện Để sử dụng được chức năng này thì mình phải set giá trị configUSE_IDLE_HOOK bằng 1 trong file FreeRTOSConfig.h.

 Idle Task là 1 task mặc định được tạo ra khi gọi hàm vTaskStartScheduler(); Task này luôn có Priority bằng 0 và chỉ được gọi tới khi không có Task nào Running Ta có thể thiết lập Task này để đưa trạng thái của hệ thống về dạng tiết kiệm năng lượng chẳng hạn.

 Có 1 lưu ý nhỏ: Khi các Task đang chạy mà gặp hàm delay 1 thời gian nào đó thì nó sẽ bị Block ⇒ sau khi hết thời gian Block nó sẽ tiếp tục chạy từ cái chỗ mà nó bị block chứ không phải chạy lại task đó từ đầu.

1.2.2.2 Quản lý hàng đợi Queue

 Hàng đợi Queue: Gửi và nhận đồng thời xoá

 Mailbox : Gửi và nhận nhưng không xoá cho tới khi bên gửi ghi đè

Tổng quan về nền tảng Blynk

Hình 1.1 Logo của ứng dụng Blynk.

Blynk là một phần mềm mã nguồn mở được thiết kế cho các ứng dụng IoT Ứng dụng giúp người dùng điều khiển phần cứng từ xa có thể hiển thị dữ liệu cảm biến, lưu trữ dữ liệu, biến đổi dữ liệu hoặc làm nhiều việc khác.

Nền tảng Blynk có ba phần chính:

 Blynk Moblie App - cho phép tạo giao diện cho sản phẩm của bạn bằng cách kéo thả các widget khác nhau mà nhà cung cấp đã thiết kế sẵn.

 Blynk Server - chịu trách nhiệm xử lý dữ liệu trung tâm giữa điện thoại, máy tính bảng và phần cứng.

 Blynk Library - thư viện chứa các nền tảng phổ biến, giúp việc giao tiếp phần cứng với Server dễ dàng hơn.

Hình 1.2 Các thành phần của nền tảng Blynk.

Tính năng và đặc điểm của nền tảng Blynk:

 Cung cấp API & giao diện người dùng tương tự cho tất cả các thiết bị và phần cứng được hỗ trợ.

 Kết nối với server bằng cách sử dụng: o Wifi o Bluetooth và BLE o Ethernet o USB (Serial) o GSM

 Các tiện ích trên giao diện được nhà cung cấp dễ sử dụng.

 Thao tác kéo thả trực tiếp giao diện mà không cần viết mã.

 Dễ dàng tích hợp và thêm chức năng mới bằng cách sử dụng các cổng kết nối ảo được tích hợp trên blynk app.

 Theo dõi lịch sử dữ liệu.

 Thông tin liên lạc từ thiết bị đến thiết bị bằng Widget

 Gửi email, tweet, thông báo realtime, v.v. Để có thể sử dụng Blynk:

 Cấu hình App Blynk: Đầu tiên chúng ta cân phải cài đặt App Blynk trên Google Play hoặc trên App Store Sau khi truy cập vào App và tạo tài khoản xong, chúng ta có thể tạo New Project và sử dụng các chức năng của Blynk.

Hình 1.3 Tạo tài khoản Blynk trên App Blynk.

Hình 1.4 Các chức năng trên app Blynk.

 Ứng dụng Blynk khi khởi tạo tài khoản cho phép mỗi tài khoản 2000 điểm năng lượng, tương ứng với mức sử dụng của tài khoản

 Khi người dùng sử dụng các phần tử như Button, Slider, Timer…v.v sẽ bị trừ điểm năng lượng tương ứng.

 Các phần tử này sẽ giúp điều khiển hoặc nhận biết, hiển thị với dự án thực tế người sử dụng.

 Cài đặt library: Từ giao diện chính của Arduino IDE, chọn Sketch -> Include Library -> Tìm kiếm với từ khóa là Blynk Chọn install để tiến hành tải và cài đặt thư viện.

Hình 1.5 Cửa sổ Library Manager để cài đặt library Blynk.

PHÂN TÍCH THIẾT KẾ ĐỀ TÀI

Chức năng của thiết bị

Sau khi hoàn thiện thiết bị cảnh báo nguy cơ cháy nổ sẽ có những chức năng sau:

 Khi không phát hiện khí gas (khói) và ngọn lửa thiết bị sẽ ở trạng thái bình thường với giá trị môi trường hiển thị trên màn hình LCD và đèn led thông báo màu xanh.

 Khi phát hiện nồng độ khí gas (khói) và ngọn lửa quá mức cho phép, thiết bị sẽ hiển thị cảnh báo lên màn hình LCD, đèn led thông báo màu đỏ và phát ra âm thanh cảnh báo.

 Đồng bộ dữ liệu môi trường từ thiết bị lên trên ứng dụng Blynk, đồng thời cảnh báo trên ứng dụng.

Các khối trong thiết bị:

Khối nhận dữ liệu nhận giá trị các cảm biến rồi chuyển dữ liệu đó cho khối xử lý trung tâm Từ khối xử lý trung tâm dữ liệu sẽ được xử lý và gửi tới các khối hiển thị và khối đồng bộ dữ liệu để đồng bộ ứng dụng.

Khối xử lý trung tâm

Khối đồng bộ dữ liệu Khối nhận dữ liệu

Thiết kế phần cứng

Arduino Uno là một bảng mạch vi điều khiển nguồn mở dựa trên vi điều khiển Microchip ATmega328 được phát triển bởi Arduino.cc Bảng mạch được trang bị các bộ chân đầu vào/ đầu ra Digital và Analog có thể giao tiếp với các bảng mạch mở rộng khác nhau Mạch Arduino Uno thích hợp cho những bạn mới tiếp cận và đam mê về điện tử, lập trình…Dựa trên nền tảng mở do Arduino.cc cung cấp các bạn dễ dàng xây dựng cho mình một dự án nhanh nhất ( lập trình Robot, xe tự hành, điều khiển bật tắt led…).

 Điện áp đầu vào(khuyên dùng) : 7-12V.

 Điện áp đầu vào (giới hạn): 6-20V.

 Số chân Digital: 14 (of which 6 provide PWM output).

 Dòng điện DC trên mỗi chân I/O: 20 mA.

 Dòng điện DC trên chân 3.3V: 50 mA.

 Flash Memory: 32 KB (ATmega328P) of which 0.5 KB used by bootloader.

 Tốc độ thạch anh: 16 MHz.

 LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào chân D13 Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng và LED tắt khi ở mức thấp (LOW).

 VIN: Chân này dùng để cấp nguồn ngoài (điện áp cấp từ 7-12VDC).

 5V: Điện áp ra 5V (dòng điện trên mỗi chân này tối đa là 500mA).

 3V3: Điện áp ra 3.3V (dòng điện trên mỗi chân này tối đa là 50mA).

 GND: Là chân mang điện cực âm trên board.

 IOREF: Điệp áp hoạt động của vi điều khiển trên Arduino UNO và có thể đọc điện áp trên chân IOREF Chân IOREF không dùng để làm chân cấp nguồn.

Hình 2.7 Các chân Arduino Uno R3.

 Vi điều khiển ATmega328: o 32 KB bộ nhớ Plash: trong đó bootloader chiếm 0.5KB. o 2 KB cho SRAM: (Static Random Access Menory): giá trị các biến khai báo sẽ được lưu ở đây Khai báo càng nhiều biến thì càng tốn nhiều bộ nhớ RAM Khi mất nguồn dữ liệu trên SRAM sẽ bị mất. o 1 KB cho EEPROM: (Electrically Eraseble Programmable Read Only Memory):

Là nơi có thể đọc và ghi dữ liệu vào đây và không bị mất dữ liệu khi mất nguồn.

LCD text 1602 một sản phẩm quen thuộc với những người mới học và muốn thực hiện các dự án về điện tử, lập trình Với khả hiển thị 2 dòng với mỗi dòng 16 ký tự, đồng thời có rất nhiều ví dụ mẫu được cộng đồng Arduino xây dựng sẵn sẽ giúp người mới sử dụng làm quen nhanh hơn cũng như tiết kiệm được thời gian trong việc phát triển ứng dụng của mình.

 Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với Breadboard.

 Đèn led nền có thể dùng biến trở hoặc PWM điều chình độ sáng thích hợp.

 Có thể được điều khiển với 6 dây tín hiệu.

 VSS: cực âm nguồn cho LCD - GND: 0V.

 VDD: cực dương nguồn LCD - 5V.

 Constrast Voltage (Vo): điều khiển độ sáng màn hình.

 Register Select (RS): lựa chọn thanh ghi.

 RS=0 chọn thanh ghi lệnh.

 RS=1 chọn thanh ghi dữ liệu.

 Enable: Cho phép ghi vào LCD.

 D0 - D7: 8 chân trao đổi dữ liệu với các vi điều khiển, với 2 chế độ sử dụng.

 Chế độ 8 bit: Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7.

 Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7.

 Backlight (Backlight Anode (+) và Backlight Cathode (-)): Tắt bật đèn màn hình LCD.

LCD có quá nhiều chân gây khó khăn trong quá trình kết nối và chiếm dụng nhiều chân của vi điều khiển? Module chuyển đổi I2C cho LCD sẽ giải quyết vấn đề này cho bạn, thay vì sử dụng tối thiểu 6 chân của vi điều khiển để kết nối với LCD (RS, EN, D7, D6, D5 và D4) thì với module chuyển đổi bạn chỉ cần sử dụng 2 chân (SCL, SDA) để kết nối Module chuyển đổi I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 1602, LCD 2004, … ), kết nối với vi điều khiển thông qua giao tiếp I2C, tương thích với hầu hết các vi điều khiển hiện nay.

 Điện áp hoạt động: 2.5-6V DC.

 Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780).

 Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2).

 Kích thước: 41.5mm(L)x19mm(W)x15.3mm(H).

 Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt.

 Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.

2.2.1.4 Cảm biến khí gas, Khói MQ-2

Hình 2.10 Cảm biến khí gas, khói MQ-2.

Cảm biến khí ga MQ2 là một trong những loại cảm biến được sử dụng để nhận biết:

LPG, i-butan, Propane, Methane , Alcohol, Hydrogen, Smoke và khí ga Được thiết kế với độ nhạy cao, thời gian đáp ứng nhanh Gía trị đọc được từ cảm biến sẽ được đọc về từ chân Analog của vi điều khiển.

 Tính hiệu đầu ra: tương tự (analog) và digital.

 Hoạt động trong thời gian dài, ổn định

 Điện áp chuyển tiếp Đỏ và Vàng: 1.9V ~ 2.4V DC

 Dòng điện tiêu thụ: 80 dB.

 Nhiệt độ hoạt động:-20 °C đến +70 °C.

2.2.1.7 Cảm biến cháy Flame Sensor

Hình 2.13 Cảm biến cháy Flame Sensor.

Cảm biến phát hiện lửa (flame sensor) thường được sử dụng cho các ứng dụng phát hiện lửa như: xe robot chữa cháy, cảm biến lửa, Tầm phát hiện của cảm biến trong khoảng 80cm, góc quét là 60 độ, có thể phát hiện lửa tốt nhất là loại có bước sóng từ 760nm - 1100nm.

Cảm biến phát hiện lửa (flame sensor) có hai ngõ ra tín hiệu là Digital và Analog rất dễ dử dụng.

 Tín hiệu ra: Digital 3.3 - 5VDC tùy nguồn cấp hoặc Analog

ESP8266 là một hệ thống trên chip (SoC), do công ty Espressif của Trung Quốc sản xuất Nó bao gồm bộ vi điều khiển Tensilica L106 32-bit (MCU) và bộ thu phát Wi-Fi Nó có 11 chân GPIO (Chân đầu vào / đầu ra đa dụng) và một đầu vào analog, có thể lập trình nó giống như với Arduino hoặc vi điều khiển khác Bản thân chip ESP8266 có 17 chân GPIO, nhưng 6 trong số các chân này (6-11) được sử dụng để giao tiếp với chip nhớ flash trên bo mạch Ngoài ra nó có kết nối Wi-Fi, vì vậy có thể sử dụng nó để kết nối với mạng Wi-Fi, kết nối Internet, lưu trữ máy chủ web với các trang web thực, để điện thoại thông minh kết nối với nó.

 Phiên bản firmware: NodeMCU Lua

 Chip nạp và giao tiếp UART: CP2102.

 Cấp nguồn: 5VDC MicroUSB hoặc Vin.

 GIPO giao tiếp mức 3.3VDC

 Tích hợp Led báo trạng thái, nút Reset, Flash.

 Tương thích hoàn toàn với trình biên dịch Arduino.

2.2.2 Sơ đồ lắp đặt mô phỏng

Hình 2.14 Sơ đồ lắp đặt mô phỏng trên Fritzing.

 Chân TX, RX của Arduino Uno R3 nối với chân D6, D7 của NodeMCU ESP8266.

 Module I2C được nối với màn hình LCD 1602 đúng thứ tự như hình vẽ, và được nối 2 chân SDA, SCL với 2 chân A4, A5 của Arduno Uno R3.

 Cảm biến MQ2 nối chân Analog A0 với chân A0 của Arduino Uno R3.

 Cảm biến lửa nối chân Digital D0 với chân số 9 của Arduino Uno R3.

 Chân dương của đèn led xanh và đỏ nối vào chân số 7 và chân số 8 của Arduino Uno R3.

 Chân dương của còi chíp nối vào chân số 4 của Arduino Uno R3.

 Chân 5V của Arduino Uno R3 nối chung tới chân VCC của Module I2C, cảm biến MQ2, cảm biến lửa.

 Chân GND của Arduino Uno R3 được nối chung tới các chân GND của Module I2C,cảm biến MQ2, cảm biến lửa, còi chíp và 2 đèn led xanh, đỏ.

Thiết kế phần mềm

Hình 2.15 Sơ đồ hệ thống.

Về thiết kế phần mềm, trong hệ thống gồm 2 đoạn mã chạy trên 2 thiết bị đó là Arduino Uno R3 và NodeMCU ESP8266.

 Trên Arduino Uno R3: Các đoạn mã dựa trên nền tảng hệ điều hành thời gian thực FreeRTOS Gồm các task và hàng đợi. o Task thứ nhất: nhiệm vụ là đọc dữ liệu từ các cảm biến khí gas và cảm biến lửa, hiển thị giá trị khí gas đọc được lên màn hình LCD Đồng thời gửi các dữ liệu đọc từ cảm biến đó vào hàng đợi và gửi các dữ liệu cảm biến đó qua cổng Serial sang cho ESP8266.

TaskHandle_t xReadss; xTaskCreate(taskReadss, "readss", 128, NULL, 2, &xReadss); o Task thứ hai: nhiệm vụ của task thứ hai là đọc dữ liệu từ các hàng đợi mà Task thứ nhất đã ghi vào Tiếp theo đó là xử lý các dữ liệu này theo các giá trị định sẵn để đưa ra các cảnh báo nếu dữ liệu cảm biến vượt quá ngưỡng Task thứ 2 còn có một chức năng nữa là hiển thị trạng thái của môi trường lên dòng thứ hai của màn hình LCD.

TaskHandle_t xHandler; xTaskCreate(taskHandler, "handler", 128, NULL, 1, &xHandler); o Hàng đợi queue 1, queue 2: Nhận các giá trị của cảm biến ghi vào Được khởi tạo với một phần tử bên trong và kích thước phần từ theo kiểu INT Cụ thể là giá trị cảm biến khí gas ghi vào hàng đợi queue 1, giá trị cảm biến lửa ghi vào hàng đợi queue 2.

QueueHandle_t queueFlame; queueGas = xQueueCreate(1, sizeof(int)); queueFlame = xQueueCreate(1, sizeof(int));

 Trên NodeMCU ESP8266: Các đoạn mã lập trình nhúng C++ với chức năng chính : o Khởi tạo kết nối từ ESP8266 tới mạng wifi và kết nối tới Internet. o Thiết lập và duy trì kết nối tới Blynk server. o Đọc và xử lý dữ liệu từ cổng Serial do Task thứ nhất của Uno R3 truyền sang. o Dựa vào dữ liệu đó phân tích các trường hợp và gửi dữ liệu tới server Blynk để đồng bộ lên ứng dụng Blynk trên điện thoại.

2.3.2 Biểu đồ ca sử dụng

Hình 2.16 Biểu đồ ca sử dụng tổng quát.

2.3.3 Đặc tả các ca sử dụng

Bảng 2.1 Đặc tả ca sử dụng “Hiển thị trạng thái”

Ca sử dụng Hiển thị trạng thái

Tác nhân  Cảm biến MQ2

Mô tả Hiển thị giá trị cảm biến MQ2 và trạng thái môi trường Điều kiện trước Thiết bị kết nối ổn định, các cảm biến hoạt động.

Luồng sự kiện chính 1 Các cảm biến nhận giá trị môi trường

2 Uno R3 đọc giá trị cảm biến 3 Uno R3 hiển thị lên màn hình LCD 4 Uno R3 truyền dữ liệu sang ESP 8266

5 ESP 8266 gửi giá trị hiển thị lên ứng dụng Blynk Luồng sự kiện phụ 1 Cảm biến không nhận được giá trị môi trường, LCD không hiển thị giá trị nếu không có giá trị 2 ESP 8266 mất kết nối, Ứng dụng Blynk hiển thị lần cuối

ESP 8266 kết nối tới. Điều kiện sau Các giá trị và trạng thái môi trường được hiển thịYêu cầu đặc biệt Không có.

Bảng 2.2 Đặc tả ca sử dụng “Cảnh báo”

Ca sử dụng Cảnh báo

Mô tả Cảnh báo nguy cơ cháy nổ tới người dùng Điều kiện trước Thiết bị kết nối ổn định, các cảm biến hoạt động.

Luồng sự kiện chính 1 Các cảm biến nhận giá trị môi trường

2 Uno R3 phát hiện giá trị vượt quá ngưỡng cho phép 3 Phát ra tín hiệu cảnh báo (còi và đèn)

4 ESP 8266 phát hiện giá trị vượt quá ngưỡng cho phép 5 ESP 8266 gửi email thông báo cho người dùng

6 ESP 8266 cảnh báo lên ứng dụng Blynk.

Luồng sự kiện phụ Không có Điều kiện sau Đưa ra cảnh báo tới người dùngYêu cầu đặc biệt Không có.

Hình 2.17 Biểu đồ tuần tự ca sử dụng “Hiển thị trạng thái”.

Hình 2.18 Biểu đồ tuần tự ca sử dụng “Cảnh báo”.

KẾT QUẢ THỰC NGHIỆM

Mô hình thiết bị thực tế

Hình 19.1 Mô hình thiét bị trên thực tế

- Mô hình thiết bị được thể hiện trên hình vẽ:

2 Đầu cảm biến MQ2 3 Hai đèn led báo trạng thái 4 Đầu cảm biến lửa

Hình 3.2 Lắp đặt các thiết bị bên trong mô hình

Hình 3.3 Giao diện bên trong ứng dụng

- Ứng dụng Blynk cho phép thiết kế giao diện tuỳ ý phù hợp với mục đích sử dụng của mình.

- Với đề tài này nhóm đã thiết kế giao diện hiển thị thông tin gồm có các trường hiển thị giá trị khí gas (khói) và tình trạng cảm biến lửa đo được

- Một đèn led xanh báo trạng thái môi trường.

- Ngoài ra trên giao diện còn có một màn hình LCD ảo giống như màn hình LCD trên mô hình thiết bị thật.

- Dưới cùng là biểu đồ về nồng độ khí gas (khói) và biểu đồ về trạng thái cảm biến lửa.

Thực nghiệm các chức năng

Hình 3.4 Thiết bị đọc giá trị cảm biến và hiển thị trạng thái bình thường

-Trạng thái bình thường đèn báo trạng thái sẽ sáng màu xanh lá cây, LCD hiển thị

Hình 3.5 Đồng bộ các giá trị từ thiết bị lên ứng dụng

- Trạng thái bình thường đèn báo trạng thái trên ứng dụng sẽ hiển thị màu xanh lá cây, giá trị của khí gas (khói) sẽ ít biến động và giá trị của cảm biến lửa sẽ là số 1 (không phát hiện lửa).

Hình 3.6 Phát hiện nồng độ khí gas quá ngưỡng cho phép

Hình 3.7 Ứng dụng Blynk hiện thông báo Gas detected!

- Khi phát hiện nồng độ khí gas vượt ngưỡng cho phép (300), đèn xanh sẽ tắt đi và đèn đỏ bật sáng, màn hình hiển thị LCD hiện dòng thông báo “Gas detected!”.

- Đồng thời là có tiếng còi chíp kêu để phát ra âm thanh cảnh báo tới cho người dùng biết.

- Ngay lập tức dữ liệu sẽ được đồng bộ lên ứng dụng Blynk và hiển thị Popup thông báo

“Gas detected!” , đèn báo trạng thái chuyển sang đỏ, biểu đồ trên ứng dụng cũng có sự tăng lên của giá trị khí gas.

Hình 3.8 Phát hiện nồng độ khói quá ngưỡng cho phép

- Khi phát hiện nồng độ khói trong không khí vượt ngưỡng cho phép (300), thiết bị và ứng dụng cũng phát ra cảnh báo tương tự như phát hiện khí gas.

- Demo trên hình sử dụng khói từ nén nhang (hương).

Hình 3.9 Phát hiện ra ngọn lửa và cảnh báo

- Khi phát hiện có ngon lửa, đèn xanh của thiết bị sẽ tắt đi và chuyển sang màu đỏ, đồng thời là tiếng kêu của còi chip để cảnh báo tới cho người dùng biết.

- Ngay lập tức dữ liệu sẽ được đồng bộ lên ứng dụng Blynk và hiển thị Popup thông báo

“Fire detected!” , đèn báo trạng thái chuyển sang đỏ, trạng thái cảm biến lửa chuyển từ số 1 thành số 0 và biểu đồ trên ứng dụng cũng có sự thay đổi giá trị

Hình 3.10 Ứng dụng Blynk hiện thông báo Fire detected!

Hình 3.11 Phát hiện ra lửa và khí gas (khói)

- Trường hợp đặc biệt nếu thiết bị phát hiện ra nồng độ khí gas (khói) và có lửa thì đèn xanh sẽ tắt đi, chuyển sang đèn đỏ Màn hình LCD hiển thị dòng thông báo “WARNING WARNING” và còi chip phát ra âm thanh để cảnh báo người dùng biết.

- Trên ứng dụng Blynk cũng sẽ nhận được dữ liệu và hiển thị Popup thông báo

Hình 3.12 Thông báo trên màn hình khoá

Hình 3.13 Thông báo trong trung tâm thông báo của điện thoại

- Ứng dụng Blynk cho phép thông báo ngay lập tức tới người dùng thông qua màn hình khoá và trong trung tâm thông báo, ngay cả khi ứng dụng không được bật.

Hình 3.14 Thống báo tới email người dùng về trạng thái môi trường

- Ngoài tính năng cảnh báo trên ứng dụng, thiết bị còn có thể gửi email cảnh báo tới người dùng giúp đa dạng hoá hình thức cảnh báo, sớm phát hiện nguy cơ cháy nổ.

Ngày đăng: 05/07/2024, 09:54

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Logo của ứng dụng Blynk. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 1.1 Logo của ứng dụng Blynk (Trang 16)
Hình 1.2 Các thành phần của nền tảng Blynk. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 1.2 Các thành phần của nền tảng Blynk (Trang 17)
Hình 1.4 Các chức năng trên app Blynk. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 1.4 Các chức năng trên app Blynk (Trang 19)
Hình 1.5 Cửa sổ Library Manager để cài đặt library Blynk. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 1.5 Cửa sổ Library Manager để cài đặt library Blynk (Trang 20)
Hình 2.7 Các chân Arduino Uno R3. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 2.7 Các chân Arduino Uno R3 (Trang 23)
Hình 2.9 Module I2C. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 2.9 Module I2C (Trang 25)
Hình 2.10 Cảm biến khí gas, khói MQ-2. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 2.10 Cảm biến khí gas, khói MQ-2 (Trang 26)
Hình 2.11 Đèn led. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 2.11 Đèn led (Trang 27)
Hình 2.12 Buzzer. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 2.12 Buzzer (Trang 28)
Hình 2.13 Cảm biến cháy Flame Sensor. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 2.13 Cảm biến cháy Flame Sensor (Trang 29)
Hình 2.9 NodeMCU ESP 8266 - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 2.9 NodeMCU ESP 8266 (Trang 30)
Hình 2.14 Sơ đồ lắp đặt mô phỏng trên Fritzing. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 2.14 Sơ đồ lắp đặt mô phỏng trên Fritzing (Trang 31)
Hình 2.15 Sơ đồ hệ thống. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 2.15 Sơ đồ hệ thống (Trang 32)
Hình 2.16 Biểu đồ ca sử dụng tổng quát. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 2.16 Biểu đồ ca sử dụng tổng quát (Trang 33)
Bảng 2.2 Đặc tả ca sử dụng “Cảnh báo” - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Bảng 2.2 Đặc tả ca sử dụng “Cảnh báo” (Trang 35)
Hình 2.17 Biểu đồ tuần tự ca sử dụng “Hiển thị trạng thái”. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 2.17 Biểu đồ tuần tự ca sử dụng “Hiển thị trạng thái” (Trang 36)
Hình 2.18 Biểu đồ tuần tự ca sử dụng “Cảnh báo”. - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 2.18 Biểu đồ tuần tự ca sử dụng “Cảnh báo” (Trang 36)
Hình 19.1 Mô hình thiét bị trên thực tế - đề tài phát triển thiết bị cảnh báo nguy cơ cháy nổ sử dụng hệ điều hành thời gian thực freertos
Hình 19.1 Mô hình thiét bị trên thực tế (Trang 37)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w