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

BÁO CÁO BÀI TẬP Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh

39 35 0

Đ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 đề Hệ thống trang trại thông minh
Tác giả Nguyễn Văn Thắng, Phạm Hoàng Long, Nguyễn Cao Đàm, Nguyễn Thành Nam
Người hướng dẫn Thầy Nguyễn Ngọc Minh
Trường học Học viện công nghệ bưu chính viễn thông
Chuyên ngành Đồ án thiết kế hệ thống nhúng
Thể loại báo cáo
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 39
Dung lượng 2,21 MB

Cấu trúc

  • Chương 1: Tổng quan (6)
    • 1.1 Đặt vấn đề (6)
    • 1.2 Mục tiêu (6)
    • 1.3 Nội dung thực hiện (6)
  • Chương 2: Cơ sở lý thuyết (8)
    • 2.1 Giới thiệu phần cứng (8)
      • 2.1.1 ESP32 (8)
      • 2.1.2 Cảm biến nhiệt độ DHT11 (10)
      • 2.1.3. Cảm biến ánh sáng (11)
      • 2.1.4 Cảm biến siêu âm (12)
      • 2.1.5 Máy bơm nước (13)
      • 2.1.6 Relay (14)
      • 2.1.7 Cảm biến vân tay AS608 (14)
      • 2.1.8 Động cơ servo SG90 (15)
    • 2.2 Các loại chuẩn giao tiếp (16)
      • 2.2.1 Chuẩn giao tiếp one-wire (16)
      • 2.2.2 Chuẩn giao tiếp I2C (18)
    • 2.3 Hệ điều hành FreeRTOS (20)
      • 2.3.1 Khái niệm (20)
      • 2.3.2 Các khái niệm trong hệ điều hành thời gian thực RTOS (20)
      • 2.3.3 Cách hoạt động của RTOS (23)
    • 2.4 Cơ sở dữ liệu MySQL (24)
      • 2.4.1. Khái niệm (24)
      • 2.4.2 Mô hình Client-server (24)
      • 2.4.3. Làm việc với cơ sở dữ liệu (25)
      • 2.4.4. Kết nối Socket io với MYSQL (27)
    • 2.5 Socket io (28)
      • 2.5.1 Khái niệm (28)
      • 2.5.2. Cấu trúc Socket io (28)
    • 2.6 HTML, CSS, JS (30)
      • 2.6.1 HTML (30)
      • 2.6.2 CSS (31)
      • 2.6.3 Javascript (32)
  • Chương 3 Thiết kế hệ thống (33)
    • 3.1 Thiết kế sơ đồ khối hệ thống (33)
    • 3.2 Sơ đồ nguyên lý (34)
    • 3.2 Lưu đồ thuật toán (35)
      • 3.2.1 Lưu đồ thuật toán cho Esp (35)
      • 3.2.2 Lưu đồ thuật toán cho webserver (36)
    • 3.3 Nguyên lý hoạt động (36)
    • 3.4 Kết quả xây dựng Webserver (37)
  • Chương 4 Kết luận và hướng phát triển (38)
    • 4.1 Kết luận (38)
    • 4.2 Hướng phát triền (38)
  • Tài liệu tham khảo (39)

Nội dung

Đồ án thiết kế hệ thống nhúng Nhóm 02 thangc2k53gmail com 1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA KĨ THUẬT ĐIỆN TỬ BÁO CÁO BÀI TẬP Môn học Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh Giảng viên Nguyễn Ngọc Minh Nhóm môn học 02 Sinh viên thực hiện Nguyễn Văn Thắng B18DCDT241 Phạm Hoàng Long B18DCDT133 Nguyễn Cao Đàm B18DCDT038 Nguyễn Thành Nam B18DCDT169 Hà Nội, ngày 2 tháng 5 năm 2022 Đồ án thiết kế hệ thống nhúng Nhóm 02 thangc2k53gmail com 2 Lời cảm ơn Trong thời gian.

Tổng quan

Đặt vấn đề

Ngành nông nghiệp Việt Nam, mặc dù là một ngành truyền thống, vẫn gặp nhiều hạn chế do lối canh tác cũ, dẫn đến hiệu quả không cao Việc áp dụng công nghệ và kỹ thuật mới sẽ mở ra hướng đi mới, mang lại sự phát triển mạnh mẽ cho ngành nông nghiệp, tạo nên “làn gió mới” cho nền kinh tế quốc dân.

Việc ứng dụng IoT trong nông nghiệp mang lại nhiều lợi ích cho nông dân, nâng cao hiệu quả trồng trọt và kinh tế Trong bối cảnh khí hậu ngày càng khắc nghiệt, việc tự theo dõi thời tiết và chăm sóc cây trồng trở nên khó khăn và tốn thời gian Tuy nhiên, với sự hỗ trợ của máy móc và hệ thống cảm biến, nông dân có thể giám sát một cách chính xác và hiệu quả hơn Hiện nay, IoT đã được áp dụng trong hầu hết các giai đoạn từ sản xuất đến đóng gói và phân phối nông sản tới tay người tiêu dùng.

Nhận thấy tiềm năng và ứng dụng cao của IoT trong nông nghiệp, đặc biệt là trong lĩnh vực cây trồng, nhóm chúng tôi đã chọn nghiên cứu về “Hệ thống nông nghiệp thông minh” Hệ thống này hoạt động dựa trên việc thu thập thông tin từ các cảm biến, sau đó truyền về trung tâm xử lý Từ đó, trung tâm sẽ điều khiển các thiết bị như bơm phun sương, quạt và đèn để tạo ra môi trường tối ưu nhất cho sự phát triển của cây trồng.

Mục tiêu

Khám phá và áp dụng công nghệ điều khiển thiết bị nông nghiệp như đèn, quạt và máy bơm nước qua Internet Đặc biệt, tìm hiểu về chip ESP32 để quản lý các thiết bị này thông qua mạng Wifi.

Tìm hiểu và tiến hành xây dựng cơ sở dữ liệu thông qua MySQL, thực hiện truyền nhận thiết bị và server Socket io

Xây dựng giao diện Webserver để điều khiển và giám sát thiết bị

Thiết kế và thi công mô hình nông nghiệp thông minh.

Nội dung thực hiện

Nội dung 1: Tìm hiểu nguyên lý hoạt động và thiết kế mạch điều khiển sử dụng chip

ESP32, các cảm biến, thiết bị được sử dụng

Nội dung 2: Thiết kế mạch nguồn và mạch công suất cho mô hình

Nội dung 3: Tìm hiểu và xây dựng cơ sở dữ liệu

Thiết kế lưu đồ giải thuật và lập trình điều khiển thiết bị là bước quan trọng trong việc xây dựng Socket Server Đồng thời, việc thiết kế giao diện Webserver giúp người dùng dễ dàng điều khiển và giám sát trạng thái đóng mở của các thiết bị một cách hiệu quả.

Nội dung 5 : Thi công mô hình

Nội dung 6 : Thử nghiêm và điều chỉnh phần cứng cũng như chương trình để mô hình được tối ưu Đánh giá các thông số của mô hình

Nội dung 7: Viết báo cáo thực hiện

Cơ sở lý thuyết

Giới thiệu phần cứng

Module ESP32-WROOM bao gồm:

 Điện áp logic là 2,7 đến 3,3 V

 1 Enable Button (Chân reset) và 1 User Button(GPIO 0)

 Led báo nguồn và User Led (GPIO 2)

 UART: Serial Debug mặc định là UART 0

Hình 2 1: Vi điều khiển esp32

GPIO 34 đến 39 – input only pins Các chân này không có nội trở kéo lên hoặc kéo xuống Chúng không thể được sử dụng làm output, vì vậy chỉ sử dụng các chân này làm input:

Analog to Digital Converter (ADC)

ESP32 sở hữu 18 kênh đầu vào ADC với độ phân giải 12 bit, vượt trội hơn so với ESP8266 chỉ có 1 kênh ADC với độ phân giải 10 bit Các GPIO trên ESP32 có khả năng được sử dụng làm ADC, mang lại nhiều tùy chọn hơn cho người dùng.

Digital to Analog Converter (DAC)

Bộ điều khiển ESP32 LED PWM hỗ trợ 16 kênh độc lập, cho phép cấu hình tín hiệu PWM với các đặc tính đa dạng Tất cả các chân có khả năng hoạt động như output đều có thể sử dụng để tạo tín hiệu PWM, ngoại trừ các chân GPIO từ 34 đến 39 không hỗ trợ chức năng này.

 Chân GPIO xuất tín hiệu

ESP32 hỗ trợ hai kênh I2C, cho phép cấu hình bất kỳ chân nào làm chân SDA và SCL Khi lập trình ESP32 bằng Arduino IDE, các chân I2C mặc định được sử dụng là:

ESP32 được trang bị module giao tiếp SPI với các thiết bị ngoại vi, bao gồm SPI0, SPI1, HSPI và VSPI Trong đó, SPI0 được sử dụng riêng để kết nối bộ nhớ flash của ESP32 với các thiết bị bộ nhớ flash bên ngoài.

SPI1 được kết nối cũng tương tự như SPI0 nhưng nó dùng để ghi dữ liệu cho bộ nhớ Flash của chip

HSPI và VSPI là hai giao thức sử dụng tự do trên ESP32, cho phép kết nối đồng thời với 3 thiết bị slave thông qua 3 cổng kết nối với chip Trong đó, ESP32 hoạt động như thiết bị master trong giao tiếp SPI.

Tất cả các GPIO có thể được cấu hình như ngắt

2.1.2 Cảm biến nhiệt độ DHT11

Cảm biến độ ẩm và nhiệt độ DHT11 là một lựa chọn phổ biến nhờ vào chi phí thấp và khả năng lấy dữ liệu dễ dàng thông qua giao tiếp 1 wire Với bộ tiền xử lý tín hiệu tích hợp, DHT11 cung cấp dữ liệu chính xác mà không cần tính toán phức tạp Tuy nhiên, so với cảm biến DHT22 mới hơn, DHT11 có khoảng đo và độ chính xác kém hơn đáng kể.

Hình 2 2 Cảm biến nhiệt độ, độ ẩm DHT11

DHT11 là cảm biến có thể đọc được nhiệt độ và độ ẩm cùng lúc

 NC (Not Connected - chân này chúng ta không dùng đến)

 Dòng sử dụng: 2.5mA max (khi truyền dữ liệu)

 Đo tốt ở độ ẩm 20-80%RH với sai số 5%

 Đo tốt ở nhiệt độ 0 to 50°C sai số ±2°C

 Tần số lấy mẫu tối đa 1Hz (1 giây 1 lần)

 Kích thước 15mm x 12mm x 5.5mm

 4 chân, khoảng cách chân 0.1'' Đọc cảm biến

DHT11 truyền dữ liệu gồm 40 bit, được phân chia như sau: 8 bit đầu tiên biểu thị phần nguyên của độ ẩm, tiếp theo là 8 bit phần thập phân của độ ẩm, sau đó là 8 bit phần nguyên của nhiệt độ, tiếp theo là 8 bit phần thập phân của nhiệt độ, và cuối cùng là 8 bit kiểm tra (check sum).

Ví dụ: ta nhận được 40 bit dữ liệu như sau:

Độ ẩm hiện tại là 53%, được biểu thị bằng mã nhị phân 0011 0101 (35H), trong khi nhiệt độ đạt 24°C, tương ứng với mã nhị phân 0001 1000 (18H) Cả hai giá trị đều không tính phần thập phân do giá trị là 0000 0000.

Cảm biến ánh sáng là thiết bị thông minh có khả năng nhận diện biến đổi môi trường và điều chỉnh ánh sáng phù hợp Thiết bị này sử dụng các đi-ốt quang học để xác định mức độ ánh sáng và thực hiện điều chỉnh Nguyên lý hoạt động của cảm biến ánh sáng dựa trên hiệu ứng quang điện, trong đó khi ánh sáng chiếu vào, các electron được nới lỏng, tạo ra lỗ electron và dòng điện Mức độ ánh sáng càng cao thì dòng điện càng mạnh.

Hình 2 3 Cảm biến ánh sáng

 Sử dụng quang trở CDS

 Kích thước nhỏ gọn: 36x16mm

 Xuất tín hiệu Digital rất dễ sử dụng

Cảm biến siêu âm HC-SR04 là một thiết bị phổ biến để xác định khoảng cách nhờ vào tính năng RẺ và ĐỘ CHÍNH XÁC Thiết bị này hoạt động dựa trên sóng siêu âm, cho phép đo khoảng cách từ 2 đến 300 cm, với độ chính xác chủ yếu phụ thuộc vào cách lập trình.

Cảm biến siêu âm SR04 hoạt động dựa trên nguyên lý phản xạ sóng siêu âm, bao gồm hai module: một module phát sóng siêu âm và một module thu sóng phản xạ Khi cảm biến phát ra sóng siêu âm với tần số 40kHz, nếu có vật cản, sóng sẽ phản xạ lại và được module thu nhận Thời gian từ khi phát đến khi nhận sóng được sử dụng để tính khoảng cách đến vật thể, với công thức: Khoảng cách = (thời gian * vận tốc âm thanh (340 m/s) / 2 Cảm biến kết nối qua các chân VCC (5V), trig (chân điều khiển phát), echo (chân nhận tín hiệu phản hồi) và GND.

Hình 2 4 cảm biến siêu âm

Thông số kĩ thuật Điện áp: 5V DC

Khoảng cách: 2cm – 450cm (4.5m) Độ chính xác: 3mm

 Mức cao: 5VThông số kĩ thuật :

 Đầu Hút Nước Vào: 5mm

Module 1 Relay với opto cách ly nhỏ gọn, có opto và transistor cách ly giúp cho việc sử dụng trở nên an toàn với board mạch chính, module 1 Relay với opto cách ly hl 5v được sử dụng để đóng ngắt nguồn điện công suất cao AC hoặc DC, có thể chọn đóng khi kích mức cao hoặc mức thấp bằng Jumper

Tiếp điểm đóng ngắt bao gồm ba loại: NC (thường đóng), NO (thường mở) và COM (chân chung), được cách ly hoàn toàn với bo mạch chính Trong trạng thái bình thường, tiếp điểm NC nối với COM, và khi được kích hoạt, COM sẽ chuyển sang nối với NO, đồng thời mất kết nối với NC.

 Sử dụng điện áp nuôi DC 5V

 Relay mỗi Relay tiêu thụ dòng khoảng 80mA

 Điện thế đóng ngắt tối đa: AC250V ~ 10A hoặc DC30V ~ 10A

 Có đèn báo đóng ngắt trên mỗi Relay

 Có thể chọn mức tín hiệu kích 0 hoặc 1 qua jumper

 Kích thước: 1.97 in x 1.02 in x 0.75 in (5.0 cm x 2.6 cm x 1.9 cm)

Hình 2 6 Module 1 Relay Với Opto Cách Ly Kích H/L (5VDC) 2.1.7 Cảm biến vân tay AS608

Cảm biến nhận dạng vân tay sử dụng giao tiếp UART TTL hoặc USB 1.1 để kết nối với vi điều khiển hoặc máy tính thông qua mạch chuyển đổi USB-UART.

Các loại chuẩn giao tiếp

2.2.1 Chuẩn giao tiếp one-wire

Chuẩn giao tiếp 1 dây (one-wire), được phát triển bởi Dallas Semiconductor và mua lại bởi Maxim vào năm 2001, là một giao thức truyền nhận dữ liệu với tốc độ thấp, chủ yếu phục vụ cho việc thu thập dữ liệu như thời tiết và nhiệt độ Giao thức này hoạt động theo cơ chế không đồng bộ và bán song công (half-duplex), với mối quan hệ chủ-tớ chặt chẽ Trên cùng một bus, có thể kết nối một hoặc nhiều thiết bị slave, nhưng chỉ có một thiết bị master có thể hoạt động trên bus đó Khi không có dữ liệu truyền tải, bus dữ liệu sẽ ở trạng thái rảnh.

Hình 2 9 Chuẩn giao tiếp One Wire

Để giao tiếp với vi điều khiển qua bus one-wire, tín hiệu được chia thành các khe thời gian 60 µs, trong đó mỗi bit dữ liệu được truyền dựa trên các khe này Các thiết bị slave có thể quy định thời gian khác nhau, nhưng độ chính xác về thời gian là yếu tố quan trọng nhất trong chuẩn giao tiếp này Do đó, để tối ưu hóa đường truyền, cần có một bộ định thời để đảm bảo độ trễ chính xác.

Hình 2 10 Cách gửi tin của giao tiếp One Wire

 Gửi bit 1: Khi muốn gửi đi bit 1, thiết bị Master sẽ kéo bus xuống mức 0 trong một khoảng thời gian A (às) và trở về mức 1 trong khoảng B (às)

 Gửi bit 0: Thiết bị Master kộo bus xuống mức 0 trong một khoảng thời gian C (às) và trở về mức 1 trong khoảng D (às)

Thiết bị master sẽ lấy mẫu dữ liệu trong khoảng thời gian E (às) sau khi bus được kéo xuống 1 khoảng A (às) Trong khoảng thời gian này, nếu bus ở mức 1, thiết bị master sẽ đọc bit 1, ngược lại, nếu bus ở mức 0, thiết bị master sẽ đọc bit 0.

 Reset: Thiết bị Master kộo bus xuống 1 khoảng thời gian H (às) và sau đú về mức

1 Khoảng thời gian này gọi là tớn hiệu reset Trong khoảng thời gian I (às) tiếp theo, thiết bị master tiến hành lấy mẫu Nếu thiết bị slave gắn với bus gửi về tín hiệu 0, (tức bus ở mức 0), master sẽ hiểu rằng slave vẫn có mặt và quá trình trao đổi dữ liệu lại tiếp tục Ngược lại nếu slave gửi về tin hiệu 1 ( bus ở mức 1) thì master hiểu rằng không có thiết bị slave nào tồn tại và dừng quá trình

I2C (Inter-Integrated Circuit) là một giao thức giao tiếp nối tiếp đồng bộ được phát triển bởi Philips Semiconductors, cho phép truyền nhận dữ liệu giữa các IC chỉ với hai đường 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ác nhau như các loại vi điều khiển, cảm biến, EEPROM, …

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

Hình 2 11 Cấu tạo chuẩn giao tiếp I2C

 Giao tiếp I2C bao gồm quá trình truyền nhận dữ liệu giữa các thiết bị chủ tớ, hay Master - Slave

Thiết bị Master là một vi điều khiển, có chức năng điều khiển tín hiệu SCL và thực hiện việc gửi nhận dữ liệu hoặc lệnh qua đường SDA đến các thiết bị khác.

Các thiết bị Slave nhận dữ liệu lệnh và tín hiệu từ thiết bị Master, thường là các IC hoặc vi điều khiển.

Master và Slave được kết nối qua hai đường bus SCL và SDA, cả hai đều hoạt động ở chế độ Open Drain Điều này có nghĩa là bất kỳ thiết bị nào kết nối với mạng đều có thể giao tiếp hiệu quả.

Giao thức I2C chỉ có khả năng kéo hai đường bus xuống mức thấp (LOW), nhưng không thể kéo lên mức cao Điều này nhằm ngăn chặn tình huống xảy ra ngắn mạch, khi một thiết bị kéo bus lên mức cao trong khi thiết bị khác kéo xuống mức thấp.

Do đó cần có 1 điện trờ ( từ 1 – 4,7 kΩ) để giữ mặc định ở mức cao

Quá trình truyền nhận dữ liệu:

 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

Hình 2 12 Quá trình truyền dữ liệu

 Tiếp theo đó, Master gửi đi 7 bit địa chỉ tới Slave muốn giao tiếp cùng với bit Read/Write

Slave sẽ so sánh địa chỉ vật lý với địa chỉ nhận được Nếu hai địa chỉ trùng khớp, Slave xác nhận bằng cách kéo đường SDA xuống 0 và thiết lập bit ACK/NACK thành ‘0’ Ngược lại, nếu không trùng khớp, SDA và bit ACK/NACK sẽ mặc định là ‘1’.

 Thiết bị Master sẽ gửi hoặc nhận khung bit dữ liệu Nếu Master gửi đến Slave 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 được set thành mức 0 để báo hiệu cho Master tiếp tục

Sau khi toàn bộ dữ liệu được gửi đến Slave thành công, Master sẽ phát tín hiệu Stop để thông báo cho các Slave rằng quá trình truyền đã hoàn tất Tín hiệu này được thể hiện qua việc chuyển đổi lần lượt các mức SCL và SDA từ 0 lên 1.

Hệ điều hành FreeRTOS

RTOS, hay hệ điều hành thời gian thực, là một loại hệ điều hành được thiết kế đặc biệt cho các vi điều khiển, cho phép điều khiển thiết bị một cách nhanh chóng và hỗ trợ đa nhiệm.

Hệ điều hành thời gian thực (real-time) được thiết kế cho các tác vụ yêu cầu phản hồi nhanh, thường được tích hợp trong vi điều khiển mà không có giao diện người dùng (GUI) Sự phản hồi nhanh là cần thiết vì các tác vụ chủ yếu tương tác với thiết bị và máy móc khác, không phải con người Do tài nguyên bên trong hạn chế, bất kỳ sự chậm trễ nào cũng có thể dẫn đến sai lệch trong hoạt động của hệ thống.

2.3.2 Các khái niệm trong hệ điều hành thời gian thực RTOS

Kernel, hay còn gọi là Nhân, có vai trò quan trọng trong việc quản lý và điều phối các Task Tất cả các sự kiện như ngắt, Timer và dữ liệu truyền đến đều được Kernel xử lý để đưa ra quyết định về các bước tiếp theo Thời gian xử lý của Kernel rất nhanh, giúp giảm thiểu độ trễ trong hệ thống.

Task là một đoạn chương trình thực thi một hoặc nhiều vấn đề gì đó, được Kernel quản lý

Kernel sẽ đảm nhiệm việc quản lý chuyển đổi giữa các tác vụ, lưu giữ ngữ cảnh của tác vụ sắp bị hủy và khôi phục ngữ cảnh của tác vụ tiếp theo.

 Kiểm tra thời gian thực thi đã được định nghĩa trước (time slice được tạo ra bởi ngắt systick)

 Khi có các sự kiện unblocking một task có quyền cao hơn xảy ra (signal, queue, semaphore,…)

 Khi task gọi hàm Yield() để ép Kernel chuyển sang các task khác mà không phải chờ cho hết time slice

 Khi khởi động thì kernel sẽ tạo ra một task mặc định gọi là Idle Task

Task States – Trạng thái Task

Một task trong RTOS thường có các trạng thái như sau

Hình 2 14 Trạng thái Task trong Rtos

 READY: sẵn sàng để thực hiện

 INACTIVE: không được kích hoạt

Scheduler – Lập lịch Đây là 1 thành phần của kernel quyết định task nào được thực thi Có một số luật cho scheduling như:

Lập trình hợp tác yêu cầu mỗi tác vụ chỉ có thể thực hiện khi tác vụ hiện tại tạm dừng, điều này có thể dẫn đến việc một tác vụ chiếm hết tài nguyên CPU.

 Round-robin: mỗi task được thực hiện trong thời gian định trước (time slice) và không có ưu tiên

Trong hệ thống quản lý tác vụ, các tác vụ được phân quyền theo mức độ ưu tiên, với các tác vụ có quyền cao nhất sẽ được thực hiện trước Nếu có nhiều tác vụ có cùng mức quyền, chúng sẽ được xử lý theo phương pháp round-robin Các tác vụ có mức ưu tiên thấp hơn sẽ tiếp tục được thực hiện cho đến khi hết thời gian phân bổ.

Hình 2 15 Cấu taọ Priority base

 Priority-based pre-emptive: Các task có mức ưu tiên cao nhất luôn nhường các task có mức ưu tiên thấp hơn thực thi trước

Message queue – Hàng đợi tin nhắn

Message queue là cơ chế kết nối các tác vụ, hoạt động như một bộ đệm FIFO (First In First Out) Nó được xác định bởi độ dài, tức số lượng phần tử mà bộ đệm có thể lưu trữ, và kích thước dữ liệu, là kích thước của các thành phần trong bộ đệm.

Task có thể ghi vào hằng đợi (queue)

 Task sẽ bị khóa (block) khi gửi dữ liệu tới một message queue đầy đủ

 Task sẽ hết bị khóa (unblock) khi bộ nhớ trong message queue trống

 Trường hợp nhiều task mà bị block thì task với mức ưu tiên cao nhất sẽ được unblock trước

Task có thể đọc từ hằng đợi (queue)

 Task sẽ bị block nếu message queue trống

 Task sẽ được unblock nếu có dữ liệu trong message queue

 Tương tự ghi thì task được unblock dựa trên mức độ ưu tiên

Hình 2 16 Message queue – Hàng đợi tin nhắn 2.3.3 Cách hoạt động của RTOS

RTOS (Hệ điều hành thời gian thực) là một phần mềm quan trọng trong việc quản lý và điều phối các tác vụ trong chương trình Nó thực hiện lập lịch, phân mức ưu tiên cho các tác vụ và xử lý các thông điệp gửi đi giữa chúng.

RTOS là một hệ điều hành thời gian thực phức tạp, chủ yếu thực hiện việc xử lý các trạng thái máy (State Machine) Để hiểu rõ hơn về khái niệm này, bạn có thể tham khảo bài viết về State Machine và lập trình nhúng.

Hình 2 17 Cách hoạt động của RTOS

RTOS hoạt động thông qua Nhân Kernel, điều phối các tác vụ (Task) với mức ưu tiên riêng và thực thi theo chu kỳ cố định Khi có sự kiện như ngắt, tín hiệu hoặc tin nhắn, Kernel sẽ chuyển tiếp thông tin đến Task tương ứng Sự chuyển giao giữa các Task diễn ra linh hoạt và với độ trễ thấp, đảm bảo độ tin cậy cao cho chương trình.

Cơ sở dữ liệu MySQL

MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (RDBMS) hoạt động theo mô hình client-server, được tích hợp với Apache và PHP Hệ thống này quản lý dữ liệu thông qua các cơ sở dữ liệu, mỗi cơ sở dữ liệu có thể chứa nhiều bảng quan hệ MySQL sử dụng cú pháp và lệnh tương tự như ngôn ngữ SQL và đã được phát hành từ thập niên 90.

Cơ sở dữ liệu (database) là tập hợp dữ liệu có cấu trúc đồng nhất, được tổ chức trong một bộ dữ liệu chung (dataset) và sắp xếp tương tự như bảng tính với sự liên kết chặt chẽ Open source (mã nguồn mở) cho phép người dùng tự do sử dụng, cài đặt và tùy chỉnh cơ sở dữ liệu theo nhu cầu của mình.

Hình 2 18 Mô hình Client – Server

Máy tính sử dụng phần mềm RDBMS được gọi là client, và để truy cập dữ liệu, chúng kết nối với máy chủ RDBMS, tạo thành mô hình client-server.

MySQL Server là một hệ thống máy tính hoặc một tập hợp các máy tính được cài đặt phần mềm MySQL, cho phép lưu trữ dữ liệu và cung cấp khả năng truy cập quản lý cho các máy khách.

MySQL Client là phần mềm dùng để thực hiện truy vấn tới MySQL server và nhận kết quả Nó có thể được hiểu là đoạn mã PHP script trên máy tính hoặc trên cùng một server, giúp kết nối tới cơ sở dữ liệu MySQL.

Hình 2 19 Cách hoạt động của MySQL client Cách vận hành chính trong môi trường MySQL như sau:

 MySQL tạo ra bảng để lưu trữ dữ liệu, định nghĩa sự liên quan giữa các bảng đó

 Client sẽ gửi yêu cầu SQL bằng một lệnh đặc biệt trên MySQL

 Ứng dụng trên server sẽ phản hồi thông tin và trả về kết quả trên máy client

2.4.3 Làm việc với cơ sở dữ liệu

Tạo cơ sở dữ liệu với tên được chỉ định nếu tên đó không tồn tại trong máy chủ cơ sở dữ liệu

CREATE DATABASE [IF NOT EXISTS] database_name;

Sử dụng cơ sở dữ liệu hoặc thay đổi cơ sở dữ liệu hiện tại thành cơ sở dữ liệu khác mà bạn đang làm việc:

Hiển thị tất cả cơ sở dữ liệu có sẵn trong máy chủ cơ sở dữ liệu MySQL hiện tại:

 Hiển thị tất cả các bảng trong cơ sở dữ liệu hiện tại

 Hiển thị thông tin các cột của bảng:

Truy vấn dữ liệu từ bảng

Truy vấn tất cả dữ liệu từ một bảng:

2.4.4 Kết nối Socket io với MYSQL

Socket io

2.5.1 Khái niệm Để xây dựng một ứng dụng realtime cần sử dụng socketio Socketio sẽ giúp các bên ở những địa điểm khác nhau kết nối với nhau, truyền dữ liệu ngay lập tức thông qua server trung gian Socketio có thể được sử dụng trong nhiều ứng dụng như chat, game online, cập nhật kết quả của một trận đấu đang xảy ra,

Socket.io không phải là một ngôn ngữ lập trình mà là một công cụ hỗ trợ xây dựng ứng dụng thời gian thực Do đó, Socket.io không thể thay thế hoàn toàn cho bất kỳ ngôn ngữ nào khác, mà cần được kết hợp với các ngôn ngữ như PHP, ASP.NET, Node.js, v.v để phát huy hiệu quả tối đa trong việc phát triển ứng dụng.

Cấu trúc một ứng dụng realtime sử dụng socket bao gồm 2 phần: phía server, phía client

Hình 2 20 Cấu trúc socket io

Phía server là nơi cài đặt Socket.io, với các ngôn ngữ như PHP, ASP.NET, hoặc Node.js có thể được sử dụng để dựng server Tuy nhiên, cấu trúc server sẽ khác nhau tùy thuộc vào ngôn ngữ lựa chọn Khuyến khích sử dụng Node.js để cài đặt Socket.io trực tiếp trên cùng một server, trong khi nếu sử dụng PHP, cần phải cài thêm các package khác hoặc chuẩn bị server riêng để chạy Socket.io.

Phía client Ở phía client sẽ xây dựng giao diện người dùng Ở đây có thể sử dụng js, hoặc các thư viện của js như jquery,

Cơ chế hoạt động của socketio

The mechanism of a real-time application operates through a server that listens for data and transmits it to client machines To implement this, Socket.IO must be configured on both the server and client sides To listen for data, the command `socket.on()` is used, while the command `socket.emit()` is utilized to emit data.

Socket.on và socket.emit đều sử dụng tham số đầu tiên là tên đường truyền Tên đường truyền này có thể là bất kỳ, nhưng để truyền và nhận dữ liệu trên cùng một đường truyền, tên đường truyền cần phải giống nhau.

HTML, CSS, JS

HTML tạm dịch là ngôn ngữ đánh dấu siêu văn bản Người ta thường sử dụng HTML trong việc phân chia các đoạn văn, heading, links, blockquotes,…

Một website thường bao gồm nhiều trang con, mỗi trang con có tập tin HTML riêng Cần lưu ý rằng HTML không phải là ngôn ngữ lập trình, do đó nó không thể thực hiện các chức năng “động” HTML chủ yếu được sử dụng để bố cục và định dạng trang web, tương tự như phần mềm Microsoft Word Khi kết hợp với CSS và JavaScript, HTML tạo thành một nền tảng vững chắc cho thế giới mạng.

HTML có thể hiển thị trên bất kỳ nền tảng nào khác như Linux, Windows, và Max vì nó là một nền tảng độc lập

Mặc dù HTML có sức mạnh nhất định, nhưng nó không đủ để xây dựng một trang web chuyên nghiệp Các lập trình viên thường sử dụng HTML chủ yếu để thêm các phần tử văn bản và tạo cấu trúc giao diện cho nội dung Để hoàn thiện một website, họ thường kết hợp với hai ngôn ngữ frontend là CSS và Javascript.

CSS, viết tắt của Cascading Style Sheets, là ngôn ngữ dùng để tìm và định dạng lại các phần tử do HTML tạo ra Nói một cách đơn giản, CSS là công cụ tạo phong cách cho trang web Trong khi HTML định dạng các phần tử như đoạn văn, tiêu đề và bảng, CSS cho phép chúng ta thêm kiểu dáng cho các phần tử HTML, bao gồm việc thay đổi bố cục, màu sắc, font chữ và cấu trúc của trang.

CSS hoạt động bằng cách tìm kiếm các vùng chọn, có thể là tên thẻ HTML, ID, class hoặc nhiều kiểu khác Sau đó, CSS sẽ áp dụng các thuộc tính cần thiết để thay đổi diện mạo của những vùng chọn này.

Một đoạn CSS bao gồm 4 phần như thế này:

Một số hình ảnh về CSS trong quá trình thực hiện

JavaScript là ngôn ngữ lập trình quan trọng giúp tạo ra sự sinh động cho website, khác biệt với HTML, thường dùng cho nội dung, và CSS, chuyên về phong cách Ngoài ra, JavaScript cũng khác với PHP, ngôn ngữ chạy trên server thay vì trên máy client.

JavaScript (JS) là ngôn ngữ lập trình giúp nâng cao tính tương tác trên website Nó hoạt động trực tiếp trên trình duyệt của người dùng thay vì trên máy chủ, thường kết hợp với các thư viện bên thứ ba để tối ưu hóa hiệu suất và trải nghiệm người dùng.

3 nên có thể tăng thêm chức năng cho website mà không phải code từ đầu

JavaScript là ngôn ngữ lập trình thường được nhúng trực tiếp vào trang web hoặc tham chiếu qua file js riêng Được coi là ngôn ngữ phía client, JavaScript cho phép script được tải về máy của người dùng và xử lý tại đó, thay vì phải xử lý trên server và gửi kết quả về cho khách truy cập.

JavaScript là ngôn ngữ lập trình mạnh mẽ cho phép thao tác với người dùng ở phía client, đồng thời tách biệt giữa các phiên làm việc của người dùng Khi hai người dùng truy cập vào hai trình duyệt khác nhau, mỗi người sẽ có phiên xử lý JavaScript riêng biệt mà không ảnh hưởng đến nhau Ngôn ngữ này có khả năng hoạt động trên nhiều nền tảng, bao gồm Windows, macOS và các hệ điều hành di động Đặc biệt, JavaScript rất dễ tiếp cận, giúp người học nhanh chóng làm quen mà không cần cài đặt nhiều phần mềm phức tạp.

Thiết kế hệ thống

Thiết kế sơ đồ khối hệ thống

Hệ thống bao gồm 6 khối ghép lại với nhau và tạo nên một hệ thống

Hình 3 1 Sơ đồ khối hệ thống

Khối xử lý trung tâm là bộ phận điều khiển chính của hệ thống, có nhiệm vụ thu thập và xử lý dữ liệu từ các thiết bị, đồng thời điều khiển các khối ngoại vi và khối hiển thị Nó cũng đảm bảo sự kết nối liên tục với server.

 Khối cảm biến : bao gồm nhiều cảm biến thu thập thông số môi trường như nhiệt độ, độ ẩm không khí, ánh sáng tại các địa điểm khác nhau

 Khối nhận diện : gồm thiết bị cảm biến vân tay để xác thực người dùng

Khối điều khiển thiết bị ngoại vi bao gồm các thiết bị điều khiển như nút điều chỉnh chế độ hoạt động trên website, cùng với các thiết bị thực thi hành động như Rơ-le, tất cả đều được điều khiển bởi khối xử lý giao tiếp không dây.

 Khối hiện thị : các thông số môi trường đo được tại các cảm biến được hiện thị trực tiếp lên web và màn hình oled

 Khối nguồn : cung cấp nguồn cho toàn bộ hệ thống

Sơ đồ nguyên lý

Hình 3 2 Sơ đồ nguyên lý

Các thiết bị kết nối với ESP32 được cấp nguồn từ chân GND và chân 3V3 Tuy nhiên, hai động cơ không sử dụng nguồn từ chân 3V3 mà thay vào đó sử dụng nguồn từ chân VIN Chân VIN cung cấp điện áp 5V, đủ để kích hoạt hoạt động của relay.

 Cảm biến DHT11, quang trở, realy servo giao tiếp với vi điều khiển Esp32 theo chuẩn giao tiếp one wire

 Cảm biến vân tay AS608 giao tiếp theo chuẩn UART

 Màn hình oled giao tiếp theo chuẩn I2C

Lưu đồ thuật toán

3.2.1 Lưu đồ thuật toán cho Esp

Hình 3 3 Lưu đồ thuật toán Esp32

3.2.2 Lưu đồ thuật toán cho webserver

Hình 3 4 Lưu đồ thuật toán webserver

Nguyên lý hoạt động

Dữ liệu từ các cảm biến được đọc và truyền qua ESP32 để hiển thị trên màn hình OLED, đồng thời gửi lên server qua Socket.IO Server sẽ chuyển tiếp dữ liệu này lên website, nơi hiển thị thông tin như nhiệt độ, độ ẩm, và ánh sáng hiện tại, cũng như các giá trị cao nhất và thấp nhất Ngoài ra, hệ thống còn tích hợp cảm biến vân tay để mở cửa; nếu vân tay được xác nhận, cửa sẽ tự động mở và đóng sau thời gian quy định Trên website, người dùng cũng có thể nhập mật khẩu để mở cửa, nhưng cần nhấn nút để đóng cửa Hệ thống còn theo dõi mức nước trong bể; khi mực nước xuống dưới ngưỡng, máy bơm sẽ tự động hoạt động cho đến khi bể đầy và ngắt.

Kết quả xây dựng Webserver

Hình 3 5 Giao diện điều khiển , giám sát

Hình 3 6 Giao diện hiện thị lịch sử đo

Thông qua Webserver, người dùng có thể dễ dàng truy cập và theo dõi các giá trị nhiệt độ, độ ẩm và ánh sáng tại thời điểm hiện tại, cũng như giá trị cao nhất và thấp nhất Hơn nữa, các giá trị này còn được thể hiện một cách trực quan và sinh động qua biểu đồ, giúp người dùng dễ dàng quan sát và phân tích.

Các thiết bị có khả năng điều khiển từ xa thông qua webserver theo thời gian thực, cho phép giám sát mức nước trong bể Hệ thống sẽ gửi thông báo khi mức nước giảm xuống dưới ngưỡng cảnh báo và tự động kích hoạt thiết bị bơm nước để duy trì mức nước an toàn.

Bên cạnh đó còn có thêm tính năng nhập mật khẩu để đóng mở cửa

Ngày đăng: 25/05/2022, 00:24

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Phạm Hoàng Huy, “ Bài giảng Kĩ thuật vi xử lý” Học viện Công nghệ Bưu chính Viễn thông Sách, tạp chí
Tiêu đề: Bài giảng Kĩ thuật vi xử lý
2. Nguyễn Quốc Uy, “ Tài liệu tham khảo môn Mạng cảm biên” Học viện Công nghệ Bưu chính Viễn thông Sách, tạp chí
Tiêu đề: Tài liệu tham khảo môn Mạng cảm biên
3. Trần Quốc Tiến, Nguyễn Thanh Phong, “THIẾT KẾ VÀ THI CÔNG HỆ THỐNG IOT PHỤC VỤ CHO NÔNG NGHIỆP ỨNG DỤNG GATEWAY”, Đồ án tốt nghiệp đại học, Trường đại học Sư phạm kỹ thuật TP.Hồ Chí Minh Sách, tạp chí
Tiêu đề: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG IOT PHỤC VỤ CHO NÔNG NGHIỆP ỨNG DỤNG GATEWAY
4. Cơ bản về socketio https://viblo.asia/p/co-ban-ve-socketio-bJzKm0kY59N 5. HTML Tutorialhttps://www.w3schools.com/html/ Link
6. CSS Tutorial https://www.w3schools.com/css/default.asp 7. JavaScript Tutorial Link

HÌNH ẢNH LIÊN QUAN

Hình 2. 1: Vi điều khiển esp32 - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2. 1: Vi điều khiển esp32 (Trang 8)
Hình 2.3 Cảm biến ánh sáng - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2.3 Cảm biến ánh sáng (Trang 12)
Hình 2.5 Máy bơm nước - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2.5 Máy bơm nước (Trang 13)
Hình 2.6 Module 1 Relay Với Opto Cách Ly Kích H/L (5VDC) 2.1.7 Cảm biến vân  tay AS608 - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2.6 Module 1 Relay Với Opto Cách Ly Kích H/L (5VDC) 2.1.7 Cảm biến vân tay AS608 (Trang 14)
Hình 2 .7 Cảm biến vân tay AS608 - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2 7 Cảm biến vân tay AS608 (Trang 15)
Hình 2 .9 Chuẩn giao tiếp One Wire - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2 9 Chuẩn giao tiếp One Wire (Trang 16)
Hình 2 .8 Động cơ sevro SG90 - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2 8 Động cơ sevro SG90 (Trang 16)
Hình 2. 10 Cách gửi tin của giao tiếp One Wire - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2. 10 Cách gửi tin của giao tiếp One Wire (Trang 17)
Hình 2. 11 Cấu tạo chuẩn giao tiếp I2C - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2. 11 Cấu tạo chuẩn giao tiếp I2C (Trang 18)
Hình 2. 12 Quá trình truyền dữ liệu - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2. 12 Quá trình truyền dữ liệu (Trang 19)
Hình 2. 13 Cấu tạo Kernel - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2. 13 Cấu tạo Kernel (Trang 20)
Hình 2. 14 Trạng thái Task trong Rtos - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2. 14 Trạng thái Task trong Rtos (Trang 21)
Hình 2. 15 Cấu taọ Priority base - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2. 15 Cấu taọ Priority base (Trang 22)
Hình 2. 17 Cách hoạt động của RTOS - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2. 17 Cách hoạt động của RTOS (Trang 23)
Hình 2. 16 Message queue – Hàng đợi tin nhắn - BÁO CÁO BÀI TẬP  Môn học: Đồ án thiết kế hệ thống nhúng Hệ thống trang trại thông minh
Hình 2. 16 Message queue – Hàng đợi tin nhắn (Trang 23)

TỪ KHÓA LIÊN QUAN

w