❖ Khối xử lý trung tâm (Esp 32 được dùng như một khối xử lí trung tâm)
Yêu cầu khối xử lý trung tâm: Đây được xem như là trái tim của toàn bộ hệ thống, khối có chức năng tiếp nhận, xử lý mọi tín hiệu ngõ vào thu được từ các cảm biến, các cơ cấu tác động, các tín hiệu điều khiển từ web, truyền nhận dữ liệu giữa web và phần cứng để xử lý rồi đem những thông số đo được, xử lý được hiển thị lên cho người dùng theo dõi, toàn bộ hoạt động điều khiển của hệ thống được được thông qua khối xử lý trung tâm này.
Esp32 là một hệ thống hoàn chỉnh với kết nối Wi-Fi, kết nối Bluetooth, ADC độ phân giải cao, DAC, kết nối nối tiếp và nhiều tính năng khác. Các thành phần RF tích hợp của nó như bộ khuếch đại công suất, bộ khuếch đại nhận tiếng ồn thấp, công tắc ăng-ten, bộ lọc và Balun RF. Điều này làm cho việc thiết kế phần cứng xung quanh ESP32 rất dễ dàng vì bạn cần rất ít thành phần bên ngoài.
Thông số kỹ thuật:
• Model: Wifi BLE SoC ESP32 ESP-WROOM-32E (Tương thích hoàn toàn với phiên bản cũ ESP-WROOM-32 hiện đã ngưng sản xuất).
• ESP32-D0WD-V3 embedded, Xtensa® dual-core 32-bit LX6 microprocessor, up to 240 MHz
• Điện áp sử dụng: 3~3.6VDC • Dòng điện sử dụng: ~90mA
• 448 KB ROM for booting and core functions • 520 KB SRAM for data and instructions • 16 KB SRAM in RTC
• Kiểu Antenna: PCB
❖ Arduino Nano
Thông số kỹ thuật:
• Thiết kế chuẩn kích thước, chân Arduino Nano. • Firmware: Arduino Nano.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 35
• IC chính: ATmega328P-AU.
• IC nạp và giao tiếp UART: CH340.
• Điện áp cấp: 5VDc cổng USB hoặc 6-9VDc chân Raw. • Mức điện áp giao tiếp GPIO: TTL 5VDc.
• Dòng GPIO: 40mA.
• Số chân GPIO: 14 chân, trong đó có 6 chân PWM. • Số chân Analog: 8 chân (hơn Arduino Nano 2 chân). • Bộ nhớ Flash: 32KB (2KB Bootloader).
• SPAM: 2KB. • EEPROM: 1KB • Clock Speed: 16MHz.
• Tích hợp Led báo nguồn, led chân D13, LED RX, TX. • Tích hợp IC chuyển điện áp 5V LM1117.
• Kích thước: 18.542 x 43.18mm.
❖ Khối cảm biến
Đối với khối cảm biến ta có nhiệm vụ là thu thập các thông số đo được ngoài môi trường sau đó truyền thông tin tới khối xử lý ,khối này lưu thông tin xử lí so với ngưỡn đặt cập nhật từng thời gian để điều chỉnh.
Cảm biến mưa
Thông số kỹ thuật
• Điện áp: 3V – 5V • Ngõ ra:
o DO: dạng digital – TTL có khả năng điều khiển trực tiếp Relay, Buzzer... o AO: dạng analog
• Có LED báo hiệu khi có mưa hoặc nước trên bề mặc lá chắn • Độ nhạy có thể được điều chỉnh thông qua chiết áp
• Kích thước module chuyển đổi: 3.2cm x 1.4cm
• Lá chắn sử dụng vật liệu chất lượng cao FR-04 hai mặt, bề mặt mạ niken, chống oxy hóa
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 36
Sơ đồ kết nối chân:
Cảm biến mưa Arduino Nano
5V Vcc
GND GND
A0 A0
Hình 3.2Sơ đồ kết nối chân của cảm biến mưa với Arduino Nano Cách thức giao tiếp của cảm biến mưa với Arduino Nano:
Đo đầu ra tương tự và xuất ra giá trị lượng mưa, giá trị 1023 là hoàn toàn khô và giá trị 0 là mưa rất lớn.
Cảm biến áp suất BMP280
Thông số kỹ thuật:
• kich thước - 2.0 * 2.5 * 0.95 mm
• Phạm vi hoạt động - Áp suất - 300… ..1100 hPa, Nhiệt độ - 0… + 65 Độ C • Điện áp cung cấp - 1,71 V - 3,6 V.
• KícGiao diện - I2C và SPI
• Dòng điện trung bình - 2,74 micro Ampe
• Độ phân giải - Áp suất - 0,18 Pa (eqiuv. Đến <10 cm), Nhiệt độ - 0,01 K
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 37
Hình 3.3Sơ đồ kết nối chân của cảm biến áp suất với Arduino Nano Cách thức giao tiếp của cảm biến áp suất với Arduino Nano:
Giống như mọi thiết bị I2C khác, cảm biến BME280 có địa chỉ bus I2C là 0x76 hoặc 0x77. Địa chỉ này phụ thuộc vào nối của chân SDO (được sử dụng cho chế độ SPI dưới dạng dữ liệu nối tiếp hoặc MISO), nếu chân SDO được nối (trực tiếp hoặc qua điện trở) với VCC (3.3V), địa chỉ sẽ là 0x77 và nếu đó là nối với GND, địa chỉ sẽ là 0x76.Địa chỉ I2C mặc định của thư viện được xác định là 0x77 và địa chỉ I2C thiết bị của tôi là 0x76. mô-đun BME280 có ít nhất 4 chân vì nó có thể hoạt động ở chế độ SPI hoặc chế độ I2C. Đối với chế độ I2C các chân: SDA và SCL trong đó:
SDA là chân dữ liệu nối tiếp bus I2C, được nối với chân Arduino analog 4 (A4) SCL là dòng đồng hồ nối tiếp bus I2C, được nối với chân analog 5 (A5).
Cảm biến ánh sáng
Thông số kỹ thuật:
• Chuẩn kết nối i2C
• Độ phân giải cao(1 – 65535 lx ) • Tiêu hao nguồn ít.
• Khả năng chống nhiễu sáng ở tần số 50 Hz/60 Hz • Sự biến đổi ánh sáng nhỏ (+/- 20%)
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 38
• Nguồn cung cấp : 3.3V-5V
• Kích thước board : 0.85*0.63*0.13″(21*16*3.3mm)
Sơ đồ kết nối chân:
Hình 3.4 Sơ đồ kết nối chân của cảm biến áp suất với Arduino Nano
Cách thức giao tiếp của cảm biến áp suất với Arduino Nano
Cảm biến cường độ ánh sáng BH1750 được sử dụng để đo cường độ ánh sáng theo đơn vị lux, cảm biến có ADC nội và bộ tiền xử lý nên giá trị được trả ra là giá trị trực tiếp cường độ ánh sáng lux mà không phải qua bất kỳ xử lý hay tính toán nào thông qua giao tiếp I2C
Khi cấp điện hệ thống hoạt động, vi điều khiển hiển thị thông tin ban đầu. Lúc này vi điều khiển chờ tín hiệu từ mạch đọc cảm biến ánh sáng BH1750 trong môi trường trả về tín hiệu analog dùng để đo cường độ ánh sáng trong ánh nắng hoặc trong đèn tia cực tím và kiểm tra mức tín hiệu, Khi nhận tín hiệu vi điều khiển tính toán, xử lý dữ liệu và xuất tín hiệu giá trị thực tế ra màn hình
❖ Khối hiển thị
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 39
Hình 3. 5 Sơ đồ kết nối LCD với I2C
LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển (RS, RW, EN).và 5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ dữ liệu.Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi.
• Điện áp hoạt động: 2.5-6V DC.
• Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780).
• Giao tiếp: I2C.
• Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2).
• 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.
Module I2C LCD 16×2 Arduino Nano
GND GND
VCC 5V
SDA A4/SDA
SCL A5/SCL
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 40 3.2.3. Sơ đồ nguyên lý của toàn mạch
❖ Sơ đồ nguyên lý cổng Node (Gói Gửi).
Hình 3. 6 Sơ đồ nguyên lý cổng Node
Nguyên lý hoạt động của cổng Node như sau:
Nguồn cung cấp cho hệ thống hoạt động tôi chọn nguồn 5V và sử dụng dòng 2A để cung cấp cho Node cảm biến ,Arduino Nano .Các cảm biến và Lora sx1278 liên kết với Arduino Nano .
Các cảm biến thu thập các thông số từ môi trường và đưa về cho Arduino Nano, cả 3 cảm biến đều Ngõ ra là tín hiệu Analog, và sử dụng chân SDA, SCL. Đối với cảm biến mưa dùng chân A0 làm ngõ tín hiệu.
Sau khi lấy các tham số từ cảm biến về Arduino Nano để thu thập xử lí hệ thống, module Lora có nhiệm vụ truyền gửi thông tin từ cổng Node sang Getway.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 41
❖ Sơ đồ nguyên lý Getway (Esp32 nối với Lora )
Hình 3. 7 Sơ đồ nguyên lý Getway
Theo yêu cầu của đề tài thì sơ đồ nguyên lý Getway bao gồm Esp32 liên kết với Module Lora ,và cấp nguồn ổn định để thu thập xử lí và cho hệ thống hoạt động.
Esp32 trong đồ án đóng vai trò như bộ trung tâm xử lí toàn mạch giúp lưu trữ số liệu thu thập từ cổng Node và sau đó phân tích số liệu gửi lên Thingspeak cho người dùng .
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 42 CHƯƠNG 4:THI CÔNG HỆ THỐNG
4.1. GIỚI THIỆU
Sau quá trình thiết kế tính toán ,lựa chọn các thiết bị phù hợp thì chúng tôi tiến hành thi công mô hình hệ thống và lắp ráp thiết bị lại cho hợp lí .Tiến hành vào việc liên kết các thiết bị và thi công thiết kế bo mạch phù hợp cho các cảm biến và modun thiết bị .
4.2. THI CÔNG HỆ THỐNG 4.2.1. Thi công bo mạch 4.2.1. Thi công bo mạch
Dựa vào sơ đồ nguyên lý mạch chúng ta tiến hành thiết kế đi dây phù hợp cho từng khối và thi công vẽ mạch bo PCB của mạch và In ra mạch in .Quá trình này phải kiểm tra kĩ vào các chân của thiết bị để lên mạch không bị sai lệch.
Hình 4. 1 Sơ đồ mạch in Gateway bên (nhận dữ liệu)
Trong quá trình vẽ bo mạch PCB chúng ta có thể chuyển sang chế độ 3D để kiểm tra quan sát có bị sai lệch chân với linh kiện chọn .Để có thể điều chỉnh và bố trí lại phù hợp trước khi In ra mạch in.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 43
Hình 4. 2 Sơ đồ mạch in cổng Node
4.2.2. Lắp ráp và kiểm tra bo mạch
Bước này là bước quan trọng chúng ta cần kiểm tra lắp ráp ,kết nối giữa thiết bị ổn định hàn linh kiện.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 44
Quy trình tiến hành như sau:
Bước 1: Chúng ta đo thông mạch khi chưa gắn linh kiện xem bo đồng có đảm bảo hay chưa .Rồi thực hiện khoan các chân linh kiện của bo mạch.
Bước 2: sau đó gắn các linh kiện và kiểm tra chân linh kiện chính xác vị trí vào bo mạch.
Bước 3: Kiểm tra chân lại và hàn linh kiện vào mạch.
Bước 4: Tiến hành đo đạc bo mạch xem thông mạch với đường kết nối đảm bảo và kiểm tra .
Bước 5: Sau đó cấp nguồn và nạp chương trình cho Arduino Nano và Esp32 xem có chạy đúng yêu cầu của hệ thống mạch.
4.3. THI CÔNG MÔ HÌNH
Sau khi lắp ráp mô hình ta tiến hành xây dựng đóng hộp mô hình và lắp ráp bố trí hợp lí cho mô hình hệ thống mạch của gửi và nhận .
Hình 4. 4 Mô hình hoàn thiện của hệ thống (gói nhận và gói gửi)
Quy trình tiến hành các bước sau:
Bước 1: cắt tấm mica cho phù hợp với mô hình .
Bước 2: Kiểm tra điều chình đánh dấu vị trí cho phù hợp mô hình
Bước 3: Sau đó tiến hành điều chỉnh lắp ráp mô hình hệ thống và kiểm tra sắp gọn, đo đạc chổ vị trị đánh dấu phù hợp.
Bước 4: Xây dựng điều chỉnh tính toán và đi dây trong hộp để không bị cấn hay sai lệch
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 45
Bước 6: Kiểm tra và tiến hành cho chạy hệ thống.
4.4. LẬP TRÌNH HỆ THỐNG 4.2.1. Lưu đồ giải thuật 4.2.1. Lưu đồ giải thuật
Hoạt động dựa vào quá trình truyền nhận dữ liệu qua lại với nhau theo quá trình sau: Hiển thị quan sát các yếu tố môi trường cho người dùng thông qua ứng dụng Thingspeak, MitApp cập nhật thời điểm liên tục. Hệ thống cập nhật liên tục truyền gửi tín hiệu qua lại có thể báo về cho người dùng cập nhật kịp thời.
Quá trình khi cấp điện áp cho hệ thống sẽ khởi động Esp32,Arduino Nano,Lora sx1278,cảm biến mưa ,áp suất BMP280,và cảm biến ánh sáng...đảm bảo quá trình truyền không bị tác động ngoài môi trường. Dữ liệu từ các cảm biến lấy thông số giá trị ngoài môi trường và hiển thị lên Web Server .
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 46
Hình 4.5 Lưu đồ giải thuật gói nhận (Gateway)
Sau khi các cảm biến lấy dữ liệu thông số từ môi trường thông qua Arduino chương trình bắt đầu khởi tạo các chân chuẩn SPI ,khởi tạo Lora ,các biến và khởi tạo cảm biến và kết nối Lora với các thông số băng tầng đã thiết lập.Sau đó nhận dữ liệu từ cảm biến để tiến hành kiểm tra với ngưỡng xác lập và kiểm tra so sánh đọc giá trị .Nếu có tham số thay đổi thì sẽ đọc và gửi giá trị cảm biến cho Gateway.
Lưu đồ giải thuật gói nhận (Gateway)
Hình 4.6 Lưu đồ giải thuật gói gửi cổng Node
Chương trình bắt đầu khởi tạo các biến, chuẩn giao tiếp SPI,và Lora ,Esp32 mặt định trạng thái Auto ,kiểm tra lại băng tầng hoạt động .Ban đầu Gateway sẽ kiểm tra có gói dữ liệu từ lora bên Node gửi tới .Nếu có dữ liệu thì lora nhận sẽ nhận gói tin và lưu vào dữ liệu lên sever và đưa lên Thingspeak,đảm bảo là thingspeak đã có địa chỉ mã hóa và kết nối wifi với Esp32.Ở chế độ Auto so sánh thì giá trị nhận nếu thay đổi thì hiển thị thông số mới nhất đến người dùng với mã tương ứng ghi vào biến tạo và trao đổi tín hiệu qua lại giữa gói nhận và gửi .Nếu không có gói tin Lora gửi đến thì gói nhận(Gateway) sẽ bỏ qua bước nhận gói tin và đưa dữ liệu trực tiếp lên Thingspeak.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 48 4.2.2. Phần mềm lập trình cho vi điều khiển
❖ Giới thiệu phần mềm :
Arduino IDE là một phần mềm mã nguồn mở chủ yếu được sử dụng để viết và biên dịch mã vào module Arduino.
Đây là một phần mềm Arduino chính thức, giúp cho việc biên dịch mã trở nên dễ dàng mà ngay cả một người bình thường không có kiến thức kỹ thuật cũng có thể làm được.
Hình 4.7 Giao diện phần mềm Arduino IDE
Nó có các phiên bản cho các hệ điều hành như MAC, Windows, Linux và chạy trên nền tảng Java đi kèm với các chức năng và lệnh có sẵn đóng vai trò quan trọng để gỡ lỗi, chỉnh sửa và biên dịch mã trong môi trường. Có rất nhiều các module Arduino như Arduino Uno, Arduino Mega, Arduino Leonardo, Arduino Micro và nhiều module khác. Mỗi module chứa một bộ vi điều khiển trên bo mạch được lập trình và chấp nhận thông tin dưới dạng mã. Mã chính, còn được gọi là sketch, được tạo trên nền tảng IDE sẽ tạo ra một file Hex, sau đó được chuyển và tải lên trong bộ điều khiển trên bo.
Môi trường IDE chủ yếu chứa hai phần cơ bản: Trình chỉnh sửa và Trình biên dịch, phần đầu sử dụng để viết mã được yêu cầu và phần sau được sử dụng để biên dịch và tải mã lên module Arduino. Môi trường này hỗ trợ cả ngôn ngữ C và C ++.
Khi người dùng viết mã và biên dịch, IDE sẽ tạo file Hex cho mã. File Hex là các file thập phân Hexa được Arduino hiểu và sau đó được gửi đến bo mạch bằng cáp USB. Mỗi bo Arduino đều được tích hợp một bộ vi điều khiển, bộ vi điều khiển sẽ nhận file hex và chạy theo mã được viết.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 49
❖ Các vùng chức năng cơ bản :