Đồ án mái che tự động dùng esp32 kết hợp Blynk IOT full file code cho các bạn làm đồ án nhé , liên hệ với mình qua email trong tài liệu để được hướng dẫn chi tiết , chúc các bạn sớm ra trường được bằng giỏi
TỔNG QUAN
GIỚI THIỆU
Trong nhịp sống xã hội sôi nổi hiện nay, con người phải phân chia thời gian cho nhiều công việc khác nhau, dẫn đến việc chăm sóc vườn trở nên khó khăn và tốn thời gian Để giải quyết vấn đề này, việc ứng dụng các cảm biến tự động theo dõi thời tiết để chăm sóc vườn một cách chính xác và đều đặn đã trở thành một giải pháp hiệu quả.
Mái che tự động ngày càng trở nên phổ biến và được ưa chuộng bởi nhiều người dùng Tuy nhiên, phần lớn các sản phẩm mái che hiện có trên thị trường vẫn sử dụng hệ thống điều khiển thô sơ và cơ khí.
Khối điều khiển mái che tự động theo thời tiết sử dụng cảm biến mưa, cho phép mái che tự động cuốn vào khi trời mát và không có mưa vào ban ngày Ngược lại, khi có mưa, mái che sẽ tự động cuốn ra để che chắn Nhờ đó, người sử dụng không cần phải thao tác thủ công như trước đây.
Nhằm đáp ứng nhu cầu tìm hiểu về hệ thống tự động và ứng dụng của nó trong cuộc sống, đặc biệt là trong khu vườn, nhóm chúng tôi quyết định thực hiện đề tài “Thiết kế và thi công mô hình hệ thống mái che tự động” sử dụng vi điều khiển.
ESP32 kết hợp với cảm biến mưa và cảm biến ánh sáng, sử dụng module L298 và động cơ để kéo mái che Dữ liệu được hiển thị trên LCD và gửi lên Firebase qua WiFi.
MỤC TIÊU
Nghiên cứu cơ sở lý thuyết về hiển thị LCD, module điều khiển động cơ, cảm biến mưa, cảm biến cường độ sáng và ESP32
Nghiên cứu, thực hành các thao tác kĩ thuật điện tử cơ bản (lắp ráp, test mạch, mô phỏng, thiết kế )
Ngoài ra, trong quá trình nghiên cứu đề tài, em mong muốn phát triển một sản phẩm hữu ích cho một số lĩnh vực trong đời sống, với khả năng đạt được độ chính xác cao.
ĐỐI TƯỢNG NGHIÊN CỨU
- Module LCD 1602 kết hợp với I2C
- Cảm biến cường độ sáng LM393
- Module điều khiển động cơ L298N
- Công tắc hành trình KW12-3A
Kết nối các module và cảm biến với board ESP32 để hiển điều khiển động cơ, hiển thị trên LCD và gửi dữ liệu lên Firebase bằng WiFi.
PHẠM VI NGHIÊN CỨU
Nghiên cứu lý thuyết về mạch hiển thị giá trị cảm biến và trạng thái động cơ trên LCD, đồng thời gửi dữ liệu lên Firebase qua WiFi Mục tiêu của đề tài là lựa chọn thuật toán và phương pháp nhằm nâng cao độ chính xác cho sản phẩm.
Tìm hiểu các lý thuyết có liên quan như ngôn ngữ Arduino.
BỐ CỤC ĐỒ ÁN
Chương 1: Tổng quan: Nêu tính cấp thiết của đề tài, xu hướng và tình hình khoa học và công nghệ hiện nay Sự phát triển công nghiệp và đời sống hằng ngày và từ đó đưa ra lý do chọn đề tài và xác định mục tiêu cho đề tài
Chương 2: Cở sở lý thuyết: Trình bày tổng quan về các thành phần và chức năng của từng loại phần cứng có trong hệ thống, dẫn dắt chi tiết cụ thể để xây dựng hoàn chỉnh về mô hình
Chương 3: Thiết kế và xây dựng hệ thống: Từ yêu cầu đề tài, trình bày về sơ đồ hệ thống
Nêu ra các phương pháp xử lý dữ liệu rồi từ đó thiết kế mô hình
Chương 4: Kết quả thực hiện: Trình bày về kết quả của từng khối nhỏ thông qua hình ảnh, video Đưa ra các hiển thị như mong muốn đã lập trình
Chương 5: Kết luận và hướng phát triển: Dựa vào kết quả có được từ chương 4, đưa ra kết luận tổng quan về những gì đạt được và chưa đạt được của đề tài Từ đó đưa ra hướng phát triển để cải thiện hệ thống.
CƠ SỞ LÝ THUYẾT
KHỐI HIỂN THỊ
LCD truyền thống yêu cầu nhiều chân kết nối, gây khó khăn trong việc đấu nối và chiếm dụng nhiều chân trên vi điều khiển Thay vì sử dụng 6 chân (RS, EN, D7, D6, D5, D4) cho LCD 16×2, module I2C chỉ cần 2 chân (SCL, SDA) để kết nối Module I2C hỗ trợ các loại LCD sử dụng driver HD44780 như LCD 16×2 và LCD 20×4, đồng thời tương thích với hầu hết các vi điều khiển hiện nay.
Bảng 2.1 Thông số kỹ thuật của Module I2C
Tên Chức năng Điện áp hoạt động 2.5 V ~ 6.0 V
Kích thước 41.5mm(L) x 19mm(W) x 15.3mm(H)
Bảng 2.2 Địa chỉ I2C Địa chỉ A0 A1 A2
Bảng 2.3 Kết nối module I2C với ESP32
- Màn hình LCD 16x2 là màn hình 2 dòng, mỗi dòng hiển thị 16 ký tự
- Điện áp hoạt động: 5.0 VDC
Hình 2.2 LCD 16x2 tích hợp module I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); void setup(){ lcd.init(); lcd.backlight();
Bảng 2.4 Thông số kỹ thuật cho LCD 16x2
Max (tối đa) Đơn vị
1 VDD Điện áp cung cấp 4.5 5 5.5 V
2 VIH Điện áp vào mức cao 2.2 VDD V
3 VIL Điện áp vào mức thấp -0.3 +0.6 V
5 FOSC Tần số dao động 270 KHz
Bảng 2.5 Thông số các chân của LCD 16x2
STT Tên Mô tả Thông số kỹ thuật, chức năng
4 RS Lựa chọn thanh ghi RS=0 (mức thấp) chọn thanh ghi lệnh
RS=1 (mức cao) chọn thanh ghi dữ liệu
5 R/W Chọn thanh ghi đọc/viết dữ liệu
R/W=0 thanh ghi viết R/W=1 thanh ghi đọc
Chân truyền dữ liệu 8 bit: DB0DB7
11 DB4 void loop(){ lcd.setCursor(1, 0); lcd.print("Hello World!");
15 A Cực dương led nền 0V đến 5V
(https://datasheetspdf.com/pdf-file/866421/Qingyuninnovative/LCM1602A/1)
2.1.3 Màn hình LCD TFT cảm ứng Arduino 2.4 inch [2]
Arduino LCD TFT 2.4 inch touch Shield là một màn hình cảm ứng được tối ưu hóa cho Arduino Uno, cho phép hiển thị hình ảnh từ thẻ nhớ.
Bảng 2.6 Thông số kỹ thuật của màn hình LCD TFT cảm ứng Arduino 2.4 inch
Tên Thông số kỹ thuật
Chip điều khiển ILI9340, ILI9341, ILI9320, SPFD5408 Độ phân giải 240 x 320 pixel
Màu sắc 18 bit, lên đến 262.000 màu
Loại cảm ứng Điện trở
Kích thước 71 mm x 52 mm x 7.0 mm
(https://docs.rs-online.com/6d12/0900766b815ca93d.pdf)
Hình 2.3 Màn hình LCD TFT cảm ứng Arduino 2.4 inch
KHỐI ĐIỀU KHIỂN ĐỘNG CƠ VÀ ĐỘNG CƠ
2.2.1 Module điều khiển động cơ L298N [3]
Module L298 là một sản phẩm phổ biến trên thị trường, được thiết kế để điều khiển động cơ DC thông qua mạch cầu H tích hợp sẵn Nó thường được sử dụng trong các ứng dụng như xe điều khiển từ xa, xe tự hành và điều khiển tốc độ quạt Module này có khả năng điều khiển nhiều loại động cơ, bao gồm động cơ có hộp số giảm tốc, động cơ bước và động cơ Servo.
Bảng 2.7 Thông số kỹ thuật của module L298N
Tên Thông số kỹ thuật Điện áp đầu vào 3.2 VDC ~ 40 VDC
Driver L298N Dual H Bridge DC Motor Driver
Dòng điện điều khiển 0 ~ 36mA
Công suất tiêu thụ tối đa 20 W
Tín hiệu điện áp điều khiển ngõ -0.3V ≤ Vin ≤ 1.5V vào mức thấp
Tín hiệu điện áp điều khiển ngõ vào mức cao 2.3V ≤ Vin ≤ Vss
Tín hiệu điện áp cho phép ngõ vào mức thấp -0.3V ≤ Vin ≤ 1.5V
Tín hiệu điện áp điều cho phép ngõ vào mức cao 2.3V ≤ Vin ≤ Vss
(http://www.handsontec.com/dataspecs/L298N%20Motor%20Driver.pdf )
Hình 2.4 Module điều khiển động cơ L298N
The provided code initializes motor control by defining pin assignments for two motor pins and an enable pin, specifically setting `motor1Pin1` to 27, `motor1Pin2` to 26, and `enable1Pin` to 14 It establishes a PWM frequency of 30,000 Hz, utilizes a PWM channel set to 0, and defines an 8-bit resolution with a duty cycle of 170 In the `setup()` function, the code configures the motor pins and enable pin as outputs, sets up the PWM channel, attaches the enable pin to the PWM channel, and writes the specified duty cycle to control the motor's speed.
// đặt mã chính của bạn ở đây để chạy lặp lại:
// Di chuyển động cơ DC về phía trước digitalWrite(motor1Pin1, HIGH); digitalWrite(motor1Pin2, LOW); delay(1000);
// Di chuyển động cơ DC về phía sau digitalWrite(motor1Pin1, LOW); digitalWrite(motor1Pin2, HIGH); delay(1000);
// di chuyển về phía trước với tốc độ ngày càng tăng digitalWrite(motor1Pin1, HIGH); digitalWrite(motor1Pin2, LOW); for (dutyCycle = 170; dutyCycle < 255; dutyCycle++) { ledcWrite(pwmChannel, dutyCycle); delay(20);
2.2.2 Động cơ giảm tốc DC V1 Động cơ DC giảm tốc V1 Dual Shaft Plastic Geared TT Motor xe là loại được lựa chọn và sử dụng nhiều nhất hiện nay cho các thiết kế khung Robot, xe, thuyền, , động cơ có chất lượng và giá thành vừa phải cùng với khả năng dễ lắp ráp đem đến chi phí tiết kiệm và sự tiện dụng cho người sử dụng
Bảng 2.7 Thông số kỹ thuật của động cơ giảm tốc DC V1
Tên Thông số kỹ thuật Điện áp hoạt động 3.0 VDC ~ 9.0 VDC Dòng điện tiêu thụ 110 mA ~ 140 mA
Tốc độ quay tại 3.0 VDC 125 vòng/ phút Tốc độ quay tại 5.0 VDC 208 vòng/ phút
Hình 2.5 Động cơ giảm tốc DC V1
2.2.3 Động cơ bước Động cơ bước hay còn gọi là Step Motor là một loại động cơ chạy bằng điện có nguyên lý và ứng dụng khác biệt với đa số các động cơ điện thông thường Chúng thực chất là một động cơ đồng bộ dùng để biến đổi các tín hiệu điều khiển dưới dạng các xung điện rời rạc kế tiếp nhau thành các chuyển động góc quay hoặc các chuyển động của rôto có khả năng cố định roto vào các vị trí cần thiết
KHỐI CÔNG TẮC HÀNH TRÌNH [4]
Công tắc hành trình KW10-N
Công tắc hành trình, hay còn gọi là công tắc giới hạn hành trình, là thiết bị dùng để kiểm soát và giới hạn hành trình của các bộ phận chuyển động trong một cơ cấu hoặc hệ thống.
Bảng 2.8 Thông số kỹ thuật của công tắc hành trình KW10-N
Tên Thông số kỹ thuật Điện áp tối đa 250 VAC
Dải nhiệt độ hoạt động -25 0 C ~ 85 0 C
Kích thước 13.0 mm x 6.0 mm x 6.7 mm
( http://www.farnell.com/datasheets/1685049.pdf fbclid=IwAR03FjYZ7WX7Ie1SD465GBz9e77KqNeuoHaBTpiJZCC9nhxv_RTXU-6CgHg)
Hình 2.7 Công tắc hành trình KW10-N
KHỐI CẢM BIẾN
2.4.1 Module cảm biến mưa YL – 83 [5]
Lá chắn mưa hoạt động như một thiết bị nhận biết sự xuất hiện của nước trên bề mặt, bao gồm hai thanh dẫn song song Khi nước xuất hiện, tính dẫn điện của nó kết nối hai thanh dẫn, và module chuyển đổi tín hiệu sẽ giao tiếp với các board mạch vi điều khiển cùng đèn LED để hiển thị trạng thái của lá chắn.
Cảm biến hổ trợ hai loại ngõ ra tín hiệu là analog (tương tự) và digital (số), để có thể áp dụng linh hoạt tùy mục đích khác nhau
Hình 2.8 Module cảm biến mưa YL-83
Bảng 2.9 Thông số kỹ thuật của module cảm biến mưa YL-83
Tên Nội dung Thông số kỹ thuật Độ nhạy phát hiện mưa Vùng phát hiện nhỏ nhất 0.05 cm 2
Nguồn cung cấp Điện áp cung cấp 3.0 VDC ~ 12.0 VDC Dòng điện cung cấp 150 mA ~ 260 mA Đầu ra tín hiệu Analog Có mưa 1.0 VDC
Diện tích tấm cảm biến 7.20 cm 2
Bảng 2.10 Thông số các chân của Module cảm biến mưa YL-83
STT Ký hiệu Chức năng
(https://www.openhacks.com/uploadsproductos/rain_sensor_module.pdf)
Code test : const int rainSensorPin = 5; // kết nối chân D0 của cảm biến mưa YL83 với chân số 5 của ESP32 void setup() {
Serial.begin(115200); pinMode(rainSensorPin, INPUT_PULLUP);
} void loop() { int rainSensorValue = digitalRead(rainSensorPin); if (rainSensorValue == HIGH) {
} 2.4.2 Module cảm biến mưa FC-37
Là một phiên bản khác của Module cảm biến mưa YL-83
Có cấu tạo, chức năng, thông số kỹ thuật, nguyên lý hoạt động giống như Module cảm biến mưa YL-83
Hình 2.9 Module cảm biến mưa FC-37
2.4.3 Module cảm biến cường độ ánh sáng BH 1750 [6]
Module cảm biến GY-302 BH1750 (lux) là thiết bị lý tưởng để đo cường độ ánh sáng với độ chính xác và ổn định cao, giúp cung cấp thông tin chính xác về mức độ ánh sáng trong môi trường.
Module cảm biến cường độ sáng GY-302 BH1750 (lux) cho ta giá trị cường độ ánh sáng lux trực tiếp thông qua giao tiếp I2C
Hình 2.10 Module cảm biến cường độ ánh sáng BH-1750
Bảng 2.11 Thông số kỹ thuật của module cảm biến cường độ ánh sáng BH-1750
STT Ký hiệu Thông số Min
Max (tối đa) Đơn vị
1 Vcc Điện áp cung cấp 3 5 V
2 ICCA Dòng tiêu thụ 10 mA
3 ISDA Dòng hút SDA 7 mA
4 VAH Điện áp vào ADDR mức cao 0.7* Vcc
5 VAL Điện áp vào ADDR mức thấp 0.3* Vcc
Bảng 2.12 Thông số các chân của module cảm biến cường độ ánh sáng BH-1750
STT Ký hiệu Chức năng
Chân SDA trong giao tiếp I2C là đầu vào/ra dữ liệu nối tiếp, cần có một điện trở kéo lên bên ngoài để truyền dữ liệu Điện áp kéo lên có thể đạt tối đa 5.5V.
4 SDA Đầu vào nối tiếp SCL truyền xung Clock đầu vào sử dụng để đồng bộ hóa dữ liệu
Chân địa chỉ để lập trình ADDR = ‘H’(ADDR > 0.7* Vcc) “1011100”
(https://pdf1.alldatasheet.com/datasheet-pdf/download/338083/ROHM/BH1750FVI.html)
Để khởi tạo bus I2C, cần lưu ý rằng thư viện BH1750 không thực hiện tự động quá trình này Trên các thiết bị ESP8266, bạn có thể chọn các chân SCL và SDA bằng cách sử dụng lệnh Wire.begin(D4, ).
} void loop() { float lux = lightMeter.readLightLevel();
} 2.4.4 Module cảm biến cường độ sáng TEMT6000 [7]
Cảm biến cường độ ánh sáng TEMT6000 là một cảm biến analog dạng Phototransistor, được thiết kế để đo cường độ ánh sáng của môi trường xung quanh Nó hoạt động bằng cách mắc nối tiếp với điện trở, tạo thành cầu phân áp, từ đó cung cấp giá trị điện áp analog tuyến tính tương ứng với cường độ ánh sáng Cảm biến này rất phù hợp cho các ứng dụng trong nông nghiệp và nhà thông minh.
Hình 2.11 Cảm biến cường độ sáng TEMT6000
Bảng 2.13 Thông số kỹ thuật của module cảm biến cường độ ánh sáng TEMT6000
STT Ký hiệu Thông số Min
Max (tối đa) Đơn vị
1 Vcc Điện áp cung cấp 5 6 V
2 ICCA Dòng tiêu thụ 3 50 nA
Bảng 2.14 Thông số các chân module cảm biến cường độ ánh sáng TEMT6000
STT Ký hiệu Chức năng
3 S Tín hiệu ra https://pdf1.alldatasheet.com/datasheet-pdf/download/117488/VISHAY/TEMT6000.html
2.4.5 Module Cảm Biến Ánh Sáng LM393
Module cảm biến ánh sáng là linh kiện điện tử có điện trở thay đổi theo mức độ ánh sáng chiếu vào Quang trở, được làm từ chất bán dẫn có điện trở cao và không có tiếp giáp, có điện trở lên đến vài MΩ trong bóng tối Khi có ánh sáng, điện trở giảm xuống còn vài trăm Ω Độ chính xác của thiết bị đạt ± 5%RH và ±2 độ.
Hoạt động của quang trở dựa trên hiệu ứng quang điện trong khối vật chất
Khi photon có năng lượng lớn va chạm, chúng sẽ giải phóng electron khỏi phân tử, khiến chúng trở thành tự do trong chất rắn và biến chất bán dẫn thành chất dẫn điện Mức độ dẫn điện phụ thuộc vào số lượng photon được hấp thụ.
• Kích thước PCB: 3cm * 1.6cm
• Led xanh báo nguồn và ánh sáng
• DO: Đầu ra tín hiệu số (0 và 1)
• AO: Đầu ra Analog (Tín hiệu tương tự)
Mô tả sơ đồ chân của module cảm biến ánh sáng
• DO: Tín hiệu ra digital
• GND: Nối Mass- Cực âm
Thiết kế nhỏ gọn, dễ kết nối và sử dụng
Hình 2.12 Bàn phím cứng 1x4 keypad
Bảng 2.15 Thông số các chân bàn phím cứng 1x4 keypad
STT Ký hiệu Chức năng
2 K(1 - 4) Tín hiệu khi nhấn phím
2.5.2 Bàn phím cảm ứng điện dung
Bàn phím cảm ứng điện dung là thiết bị lý tưởng cho các ứng dụng như bàn phím, công tắc cảm ứng điện và công tắc ẩn, nhờ vào khả năng nhận biết điện dung từ tay người với độ nhạy cao Sản phẩm này không chỉ bền bỉ mà còn mang lại sự độc đáo và chuyên nghiệp cho các ứng dụng điều khiển cảm ứng.
Hình 2.13 Bàn phím cảm ứng điện dung
Bảng 2.16 Thông số các chân bàn phím cảm ứng điện dung
3 OUT(1 - 4) Tín hiệu khi nhấn phím
KHỐI NGUỒN
Bảng 2.17 Thông số kỹ thuật của Adapter 5VDC – 1A
Tên Thông số kỹ thuật Điện áp đầu vào 100 VAC ~ 240 VAC 50/60 Hz Điện áp đầu ra, Dòng điện đầu ra 5.0 VDC, 1.0 A
Bảng 2.18 Thông số kỹ thuật của Adapter 5VDC – 1A
Tên Thông số kỹ thuật Điện áp đầu vào 100 VAC ~ 240 VAC 50/60 Hz Điện áp đầu ra, Dòng điện đầu ra 9.0 VDC, 1.0 A
KHỐI XỬ LÝ TRUNG TÂM
2.7.1 Vi điều khiển PIC16F887 [8] Được hãng Microchip sản xuất, thuộc dòng PIC 16, có 5 port xuất nhập với 35 lệnh đơn
Bảng 2.19 Thông số kỹ thuật của PIC16F887
Hình 2.16 Vi điều khiển PIC16F887
STT Thông số Chuẩn Đơn vị
Bảng 2.20 Thông số các chân của vi điều khiển PIC16F887
Pin No Name Type Description
2-7,13,14 RA(0-7) Port Nhập xuất dữ liệu
33-40 RB(0-7) Port Nhập xuất dữ liệu
15-18,24-26 RC(0-7) Port Nhập xuất dữ liệu
30 RD(0-7) Port Nhập xuất dữ liệu
1,8-10 RE(0-3) Port Nhập xuất dữ liệu
(https://pdf1.alldatasheet.com/datasheet-pdf/view/197543/MICROCHIP/PIC16F887.html)
ESP32-WROOM-32 là một module tiên tiến hơn so với các module ESP8266, với khả năng hỗ trợ Bluetooth và Bluetooth Low Energy (BLE) bên cạnh tính năng WiFi Sản phẩm sử dụng chip ESP32-D0WDQ6, trang bị 2 CPU có thể hoạt động độc lập với tần số xung clock tối đa lên đến 240 MHz.
Module hỗ trợ các giao thức giao tiếp như SPI, UART, I2C và I2S, cho phép kết nối với nhiều thiết bị ngoại vi như cảm biến, bộ khuếch đại và thẻ nhớ (SD card).
3 Các chân I/O số (digital I/O) 35 chân
5 Độ phân giải ADC 10 bit
9 Tốc độ xung clock 20 MHz Ở chế độ sleep dũng điện hoạt động là 5 àA nờn thớch hợp cho cỏc ứng dụng dựng pin như các thiết bị điện tử đeo tay Ngoài ra module còn hỗ trợ cập nhật firmware từ xa (OTA) do đó người dùng vẫn có thể có những bản cập nhật mới nhất của sản phẩm
Bảng 2.21 Thông số kỹ thuật của ESP32-WROOM-32
Tên Nội dung Thông số kỹ thuật
Chứng nhận RF FCC/CE-
RED/IC/TELEC/KCC/SRRC/NCC Chứng nhận Wifi Wi-Fi Alliance
Chứng nhận năng lượng tái tạo RoHS/REACH
Kiểm tra Độ tin cậy ( Độ bền ) HTOL/HTSL/uHAST/TCT/ESD
Kỹ thuật ghép kênh A-MPDU và A-MSDU và hỗ trợ giảm khoảng cách giữa các symbol (ký hiệu) từ 4 nano giây xuống còn 3,6 nano giây để tăng tốc độ
Dải tần số 2.4 GHz ~ 2.5 GHz
Giao thức Bluetooth v4.2 BR/EDR and BLE specification
Bộ thu NZIF với độ nhạy –97 dBm Class-1, class-2 and class-3 transmitter AFH Âm thanh Tần số âm thanh CVSD & SBC
The article discusses various communication protocols and components used in electronics, including SD cards, UART, SPI, SDIO, I2C, and LED control through PWM It highlights the significance of Motor PWM, I2S for audio applications, and IR for remote communication Additionally, it covers pulse counters, GPIO for general-purpose input/output, and capacitive touch sensors for user interaction The article also mentions ADC and DAC for analog signal processing, along with the Two-Wire Automotive Interface (TWAI®), which is compatible with ISO11898-1 (CAN Specification 2.0) Lastly, it addresses the integration of Hall effect sensors on chips for various sensing applications.
Giao động tích hợp 40 MHz crystal
SPI 4MB Điện áp hoạt động / Nguồn cấp 3.0 V ~ 3.6 V
Dòng điện hoạt động Trung bình: 80 mA
Dòng điện chuyển đổi từ nguồn cấp tối thiểu 500 mA
Nhiệt độ yêu cầu để hoạt động –40 °C ~ +85 °C
(3.10±0.10) mm Mức nhạy với hơi ẩm (MSL) Cấp 3
Bảng 2.22 Thông số các chân của ESP32-WROOM-32
Tên STT Loại chân Chức năng
EN 3 I Tín hiệu cho phép Mức cao tích cực
SENSOR_VP 4 I GPIO36, ADC1_CH0, RTC_GPIO0
SENSOR_VN 5 I GPIO39, ADC1_CH3, RTC_GPIO3
IO34 6 I GPIO34, ADC1_CH6, RTC_GPIO4
IO35 7 I GPIO35, ADC1_CH7, RTC_GPIO5
IO32 8 I/O GPIO32, XTAL_32K_P (32.768 kHz giao động thạch anh đầu vào), ADC1_CH4, TOUCH9, RTC_GPIO9
IO33 9 I/O GPIO33, XTAL_32K_N (32.768 kHz giao động thạch anh đầu ra), ADC1_CH5, TOUCH8, RTC_GPIO8
IO25 10 I/O GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6,
IO26 11 I/O GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7,
IO27 12 I/O GPIO27, ADC2_CH7, TOUCH7,
RTC_GPIO17, EMAC_RX_DV
IO14 13 I/O GPIO14, ADC2_CH6, TOUCH6,
RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2
IO12 14 I/O GPIO12, ADC2_CH5, TOUCH5,
RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3
IO13 16 I/O GPIO13, ADC2_CH4, TOUCH4,
RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER
SHD/SD2* 17 I/O GPIO9, SD_DATA2, SPIHD, HS1_DATA2,
SWP/SD3* 18 I/O GPIO10, SD_DATA3, SPIWP, HS1_DATA3,
SCS/CMD* 19 I/O GPIO11, SD_CMD, SPICS0, HS1_CMD,
SCK/CLK* 20 I/O GPIO6, SD_CLK, SPICLK, HS1_CLK,
SDO/SD0* 21 I/O GPIO7, SD_DATA0, SPIQ, HS1_DATA0,
SDI/SD1* 22 I/O GPIO8, SD_DATA1, SPID, HS1_DATA1,
IO15 23 I/O GPIO15, ADC2_CH3, TOUCH3, MTDO,
HSPICS0, RTC_GPIO13, HS2_CMD, SD_CMD, EMAC_RXD3
IO2 24 I/O GPIO2, ADC2_CH2, TOUCH2,
RTC_GPIO12, HSPIWP, HS2_DATA0, SD_DATA0
IO0 25 I/O GPIO0, ADC2_CH1, TOUCH1,
RTC_GPIO11, CLK_OUT1, EMAC_TX_CLK
IO4 26 I/O GPIO4, ADC2_CH0, TOUCH0,
RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER
IO16 27 I/O GPIO16, HS1_DATA4, U2RXD,
IO17 28 I/O GPIO17, HS1_DATA5, U2TXD,
IO5 29 I/O GPIO5, VSPICS0, HS1_DATA6,
IO18 30 I/O GPIO18, VSPICLK, HS1_DATA7
IO19 31 I/O GPIO19, VSPIQ, U0CTS, EMAC_TXD0
IO21 33 I/O GPIO21, VSPIHD, EMAC_TX_EN
RXD0 34 I/O GPIO3, U0RXD, CLK_OUT2
TXD0 35 I/O GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
IO22 36 I/O GPIO22, VSPIWP, U0RTS, EMAC_TXD1
IO23 37 I/O GPIO23, VSPID, HS1_STROBE
( https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32_datasheet_en.pdf )
Hình 2.18: Sơ đồ nguyên lý ESP32WROOM32
THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG
YÊU CẦU VÀ SƠ ĐỒ KHỐI HỆ THỐNG
3.1.1 Yêu cầu của hệ thống
Hệ thống có các chức năng sau:
- Phát hiện có mưa thì động cơ hoạt động kéo mái che ra, khi hết mưa thì mái che được thu lại
- Phát hiện có nắng thì mái che được kéo ra, khi không có nắng thì mái che được thu lại
- Có màn hình hiển thị trạng thái của động cơ và trạng thái thời tiết
- Có nút nhấn để điều khiển động cơ kéo mái che
- Có đưa dữ liệu lên Sever
3.1.2 Sơ đồ khối và chức năng mỗi khối
KHỐI XỬ LÝ TRUNG TÂM
KHỐI NÚT NHẤN MODULE ĐIỀU
Hình 3.1 Sơ đồ khối hệ thống
Khối xử lý trung tâm thực hiện việc truyền nhận dữ liệu qua giao thức I2C để cập nhật cơ sở dữ liệu hiển thị trên LCD Đồng thời, nó cũng truyền dữ liệu điều khiển cho khối động cơ và nhận tín hiệu từ khối cảm biến, sau đó cập nhật dữ liệu lên server.
- Khối Wifi: kết nối internet để đưa dữ liệu cần đưa lên sever
- Khối hiển thị: Nhận dữ liệu từ khối xử lý trung tâm để hiển thị trạng thái của động cơ và thời tiết
- Khối cảm biến: Đọc và gửi dữ liệu về khối xử lý trung tâm
- Khối nút nhấn: truyền dữ liệu điều khiển đến khối xử lý trung tâm để điều khiển động cơ
- Khối động cơ: Điều khiển động cơ theo lệnh được truyền ra từ khối xử lý trung tâm
- Khối nguồn: Cung cấp nguồn cho các khối: hiển thị LCD, động cơ, xử lý trung tâm và cảm biến
- Sever: cập nhật dữ liệu trạng thái của động cơ và thời tiết từ khối xử lý trung tâm thông qua WIFI
3.1.3 Hoạt động của hệ thống
Khi được cấp nguồn, khối cảm biến mưa và cảm biến nắng sẽ truyền dữ liệu về khối xử lý trung tâm Tại đây, tín hiệu sẽ được xử lý để điều khiển module động cơ, hiển thị thông tin trên màn hình LCD và gửi dữ liệu lên Sever qua Wifi Người dùng có thể dễ dàng điều khiển động cơ thông qua phím nhấn.
THIẾT KẾ HỆ THỐNG PHẦN CỨNG
3.2.1 Khối cảm biến cường độ ánh sáng BH1750
Trên thị trường hiện nay, có nhiều loại module cảm biến nắng như GY-302 BH1750, TEMT6000, GY-49 MAX44009, với chức năng và thiết kế tương tự nhau Nhóm đã chọn module GY-302 BH1750 vì nó có tính năng phù hợp với thiết kế mạch, giá thành rẻ hơn và dễ dàng mua sắm.
Cảm biến GY-302 BH1750 tích hợp ADC và bộ tiền xử lý, cho phép trả về giá trị cường độ ánh sáng lux trực tiếp mà không cần qua bất kỳ xử lý hay tính toán nào, thông qua giao tiếp I2C.
- Chân số 1(Vcc ) nối với nguồn 5V, chân số 2 (GND) nối với Ground
- Chân số 3 (SCL) nối với GPIO 22 (SCL) của ESP32 Được sử dụng để đồng bộ sự chuyển dữ liệu trên đường dây nối tiếp
- Chân số 4 (SDA) nối với GPIO 21 (SDA) của ESP32 Là chân vào ra cho 2 đường dây nối tiếp
Hình 3.2 Module cảm biến cường độ ánh sáng BH1750
3.2.2 Khối cảm biến mưa YL-83
Trên thị trường, cảm biến mưa YL-83 là lựa chọn phù hợp cho các nghiên cứu nhờ vào giá thành hợp lý và độ phổ biến cao.
Thiết kế đơn giản của sản phẩm bao gồm một lá chắn để phát hiện mưa hoặc nước trên bề mặt, cùng với module chuyển đổi tín hiệu để giao tiếp với các board mạch vi điều khiển và đèn LED báo hiệu trạng thái của lá chắn.
Cảm biến hổ trợ hai loại ngõ ra tín hiệu là analog (tương tự) và digital (số), để có thể áp dụng linh hoạt tùy mục đích khác nhau
- Chân số 1 (Vcc ) nối với nguồn 5V, chân số 2 (GND) nối với Ground
- Chân số 3 (DO) nối với GPIO 34 của ESP32 để truyền dữ liệu số từ cảm biến đến khối xử lý trung tâm
Hình 3.3 Module cảm biến mưa YL-83
Có nhiều loại nút nhấn như nút nhấn giữ, nút nhấn nhả và nút nhấn cảm ứng điện dung Trong bài viết này, chúng ta sẽ tập trung vào việc sử dụng nút nhấn nhả và nút nhấn cảm ứng điện dung.
Với độ phổ biến, giá thành và dễ sử dụng hơn nút nhấn cảm ứng điện dung nên nhóm quyết định chọn nút nhấn cơ
- Chân số 4 (GND) của nút nhấn nối với Ground
- Chân số 1 (K1) của nút nhấn nối với chân D2 của ESP32
- Chân số 2 (K2) của nút nhấn nối với chân D4 của ESP32
- Chân số 3 (K3) của nút nhấn nối với chân D5 của ESP32
3.2.4 Khối module điều khiển động cơ và động cơ
Hiện nay trên thị trường có nhiều module điều khiển động cơ như: module L298, module L293, module L9110S, module BTS7960…khá giống nhau về chức năng và thiết kế
Với sự phổ biến, dễ mua có nhiều trên thị trường phù hợp với yêu cầu của đề tài nên nhóm chúng em đã chọn module L298
Module L298 có thể điều khiển 2 động cơ DC hoặc 1 động cơ bước, có 4 lỗ nằm ở 4 góc thuận tiện cho người sử dụng cố định vị trí của module
- Chân số 1 (12V) nối vào chân dương của adapter 9V
- Chân số 2 (GND) nối vào chân âm GND của adapter 9V
- Chân số 5 (IN1) nối vào chân 27 của ESP32
- Chân số 6 (IN2) nối vào chân 26 của ESP32
- Chân số 12, 13 (OUT1, OUT2) nối vào động cơ
Hình 3.5 Module điều khiển động cơ L298N
Trên thị trường hiện có nhiều loại module hiển thị như màn hình LCD, TFT và HMI UART, mỗi loại phục vụ cho những mục đích và nhu cầu khác nhau của người dùng Trong hệ thống này, nhóm đã chọn sử dụng module LCD1602 tích hợp I2C.
- Chân SDA được kết nối với GPIO22 của ESP32
- Chân SCL được kết nối với GPIO21 của ESP32
Chân SDA và SCL là hai chân quan trọng trong giao tiếp I2C, với chân SCL đóng vai trò là chân Clock, giúp đồng bộ hóa việc truyền dữ liệu giữa các thiết bị, trong khi chân SDA là chân truyền dữ liệu Cả hai chân này luôn hoạt động ở chế độ mở, do đó cần có trở kéo để sử dụng hiệu quả.
Hình 3.6 Module I2C và module LCD1602
3.2.6 Khối xử lý trung tâm và khối Wifi
Hiện nay, thị trường có nhiều loại module xử lý dữ liệu như Arduino Mega, Arduino Uno, Pic 16F887, Esp8266, và Esp32, mỗi loại có những tính năng riêng để đáp ứng nhu cầu người dùng Nhóm chúng em đã chọn Esp32 cho đề tài này vì nó cho phép tích hợp khối Wifi vào khối xử lý trung tâm, tạo sự tiện lợi và hiệu quả.
Khối xử lý trung tâm có sơ đồ kết nối mô tả như sau:
- Chân GPIO 22 của Esp32 kết nối với chân SCL của LCD và cảm biến cường độ sáng
- Chân GPIO 21 của Esp32 kết nối với chân SDA của LCD và cảm biến cường dộ sáng
- Chân GPIO 34 của Esp32 kết nối với chân DO của cảm biến mưa
- Chân GPIO 02 của Esp32 kết nối với chân 02 của nút nhấn MOD
- Chân GPIO 04 của Esp32 kết nối với chân 02 của nút nhấn RA
- Chân GPIO 05 của Esp32 kết nối với chân 02 của nút nhấn VAO
- Chân GPIO 12 của Esp32 kết nối với chân C của công tắc hành trình 1
- Chân GPIO 13 của Esp32 kết nối với chân C của công tắc hành trình 2
- Chân GPIO 27 của Esp32 kết nối với chân IN1 của Module điều khiển động cơ L298N
- Chân GPIO 26 của Esp32 kết nối với chân IN2 của Module điều khiển động cơ
- Chân GPIO 21 của Esp32 kết nối với chân SCL của Module I2C
- Chân GPIO 22 của Esp32 kết nối với chân SDA của Module I2C
(sơ đồ mạch nguyên lý được đính kèm trong file đính kèm)
Bảng 3.1 Dòng tiêu thụ và điện áp hoạt động của các linh kiện 5V
STT Thiết bị Dòng tiêu thụ Điện áp
1 Cảm biến mưa YL-83 10 mA 5 V
2 Cảm biến cường độ sáng 260 mA 5 V
Từ bảng thống kê trên nhóm đã lựa chọn nguồn 5.0 VDC 1.0 A
Bảng 3.2 Dòng tiêu thụ và điện áp hoạt động của các linh kiện 9V
STT Thiết bị Dòng tiêu thụ Điện áp
1 Module điều khiển động cơ L298 36 mA 9 V
Từ bảng thống kê trên nhóm đã lựa chọn nguồn 9.0 VDC 1.0 A
LƯU ĐỒ
3.4.1 Lưu đồ chương trình chính
Khai báo các thư viện, khởi tạo các giá trị ban đầu
S S Đọc giá trị cảm biến
Hiển thị giá trị cảm biến, chế độ, động cơ
Kết nối mạng, kết nối Websever
- Khai báo thư viện, khởi tạo các giá trị bạn đầu
- Kết nối với mạng và kết nối với Websever
Chế độ 1 cho phép đọc các giá trị cảm biến, hiển thị chúng trên màn hình LCD và gửi lên Webserver Hệ thống kiểm tra xem nút nhấn chuyển chế độ có được nhấn hay không; nếu đúng, biến Mode sẽ được tăng thêm 1 Nếu không, sẽ so sánh biến Mode với giá trị 2 để xác định trạng thái của biến Mode.
= 1, sai thì tiếp tục so sánh biến Mode
So sánh biến Mode = 1; nếu đúng, gọi chương trình con chế độ tự động Nếu sai, tiếp tục so sánh biến Mode = 2; nếu đúng, gọi chương trình con chế độ thủ công Nếu vẫn sai, quay lại bước trước.
- Chương tỉnh lặp đi lặp lại liên tục
Hình 3.9 Lưu đồ giải thuật chương trình chính
3.4.2 Lưu đồ chương trình con chế độ tự động
Công tắc hành trình ngoài mở Động cơ chạy ra Ngắt động cơ
S Công tắc hành trinh trong mở Động cơ chạy vào Ngắt động cơ
Hình 3.10 Lưu đồ giải thuật chương trình con chế độ tự động
Trước tiên, cần kiểm tra xem có mưa hay không Nếu có mưa, tiếp theo cần xác nhận công tắc hành trình ngoài đã được mở Nếu công tắc mở, động cơ sẽ hoạt động, ngược lại, động cơ sẽ bị ngắt.
Nếu không có mưa và cường độ sáng vượt quá 1000lx, cần kiểm tra công tắc hành trình ngoài Nếu công tắc mở, động cơ sẽ hoạt động; nếu không, động cơ sẽ bị ngắt.
Nếu không có nắng và mưa, hãy kiểm tra công tắc hành trình Nếu công tắc mở, động cơ sẽ hoạt động; nếu không, động cơ sẽ ngừng chạy.
3.4.2.Lưu đồ chương trình con chết độ thủ công
Kiểm tra nút nhấn ra
Công tắc hành trình ngoài mở Động cơ chạy ra Ngắt động cơ Đ
S Công tắc hành trình trong mở Động cơ chạy vào Ngắt động cơ Đ
Kiểm tra nút nhấn vào Đ
Hình 3.11 Lưu đồ giải thuật chương trình con chế độ thủ công
Bắt đầu quá trình bằng cách kiểm tra xem nút nhấn có được bấm hay không Nếu nút được bấm, tiếp tục kiểm tra công tắc hành trình ngoài có đang mở hay không Nếu công tắc mở, động cơ sẽ hoạt động, ngược lại, nếu công tắc không mở, động cơ sẽ bị ngắt.
Nếu không có nút bấm ra, cần kiểm tra xem nút nhấn có được bấm hay không Nếu có, tiếp tục kiểm tra công tắc hành trình ngoài có mở hay không; nếu đúng, động cơ sẽ chạy ra, ngược lại sẽ ngắt động cơ Nếu không có bấm, chương trình sẽ kết thúc.
KẾT QUẢ THỰC HIỆN
Kết quả từng khối
Trong quá trình thiết kế phần cứng, tôi đã thực hiện việc lựa chọn linh kiện và kiểm tra các kết nối giữa các module của các khối, và kết quả thu được được trình bày qua các hình ảnh bên dưới.
KHỐI HIỂN THỊ KHỐI CẢM BIẾN
KHỐI ĐỘNG CƠ KHỐI CTHT
KHỐI ĐIỀU KHIỂN ĐỘNG CƠ KHỐI NÚT NHẤN
KHỐI XỬ LÝ TRUNG TÂM
Hình 4.1 Các khối trong mô hình hệ thống mái che tự động
Kết quả hoạt động toàn hệ thống
Sau khi kiểm tra các module hoạt động ổn định Em tiến hành kết nối các module và linh kiện lại với nhau và thu được sản phẩm
Hình 4.2 Mô hình hệ thống mái che tự động
Hoạt động của sản phẩm:
Khi được cấp nguồn, mái che hoạt động tự động, hiển thị các giá trị cảm biến trên màn hình LCD và gửi dữ liệu về trạng thái động cơ cùng chế độ hoạt động lên Firebase Nếu cường độ sáng vượt quá lux, động cơ sẽ kéo mái che ra cho đến khi gặp công tắc hành trình thì dừng lại; ngược lại, mái che sẽ được thu vào cho đến khi gặp công tắc hành trình Trong trường hợp có mưa, mái che sẽ tự động mở ra cho đến khi gặp công tắc hành trình và khi hết mưa, mái che sẽ thu vào cho đến khi dừng lại ở công tắc hành trình.
Khi nhấn nút chế độ, mái che sẽ chuyển sang chế độ thủ công, trong khi các giá trị cảm biến, trạng thái động cơ và chế độ hoạt động vẫn được hiển thị và cập nhật liên tục trên màn hình LCD.
Firebase cho phép điều khiển mái che bằng nút nhấn Khi nhấn nút đưa mái che ra, mái che sẽ tự động mở cho đến khi người dùng ngừng nhấn hoặc gặp công tắc hành trình Tương tự, khi nhấn nút kéo mái che vào, mái che sẽ được kéo vào cho đến khi ngừng nhấn hoặc gặp công tắc hành trình, lúc này mái che sẽ dừng lại.