Hình 2.2: Sơ đô chân ESP32 2 Soil Moisture Sensor- Cảm biến độ ẩm đất Soil Moisture Sensor thường được sử dụng trong các mô hìnhtưới nước tự động, vườn thông minh,..., cảm biến giúp xác
Trang 1NHÓM 3
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA KĨ THUẬT ĐIỆN TỬ 1
Trang 2NHÓM 3
Mục lục
MỞ ĐẦU 1
I Cơ sở lý thuyết: 3
1) Vi điều khiển ESP32 3
2) Soil Moisture Sensor 4
3) Cảm biến ánh sáng BH1750 5
4) Cảm biến DHT11 8
5) Màn hình LCD TFT 11
6) Cơ sở dữ liệu MySQL 14
7) Socket io 15
8) HTML, CSS, JS 16
9) MQTT 17
10) RTOS 18
II Thiết kế hệ thống 19
1 Nguyên lý hoạt động: 19
2 Sơ đồ khối: 19
3 Lưu đồ thuật toán: 21
4 Hệ thống: 21
5 Kết quả: 24
6 Kết luận và định hướng phát triển: 26
7 Phân công nhiệm vụ: 27
Tài Liệu Tham Khảo 28
LỜI CẢM ƠN 29
1
Trang 3Chúng em xin chân thành cảm ơn thầy giáo Nguyễn Ngọc Minh đã tận tìnhquan tâm hướng dẫn chúng em trong suốt thời gian qua Do còn việc hạn chế về trình
độ ngoại ngữ, chuyên môn và thiếu kinh nghiệm làm bài nên đồ án của chúng em cònnhiều khiếm khuyết, sai sót Chúng em mong nhận được nhiều ý kiến đóng góp cũngnhư những lời khuyên hữu ích từ các thầy, cô để có thể thấy rõ những điều cần nghiêncứu bổ sung, giúp cho việc xây dựng đề tài đạt đến kết quả hoàn thiện hơn
2
Trang 4Hệ thống vườn thông minh
I Cơ sở lý thuyết:
1) Vi điều khiển ESP32
- Board mạch thu phát ESP32 là một hệ thống vi điều khiển trên chip (SoC) giá
rẻ của Espressif Systems, nhà phát triển của ESP8266 SoC Nó là sự kế thừacủa SoC ESP8266 và có cả hai biến thể lõi đơn và lõi kép của bộ vi xử lý 32-bitXtensa LX6 của Tensilica với Wi-Fi và Bluetooth tích hợp, được dùng nhiềucho các thiết bị IoT, các ứng dụng cần kết nối mạng wifi
Hình 2.1: ESP32 NodeMCU
- Sơ đồ chân:
Trang 5Hình 2.2: Sơ đô chân ESP32 2) Soil Moisture Sensor
- Cảm biến độ ẩm đất Soil Moisture Sensor thường được sử dụng trong các mô hìnhtưới nước tự động, vườn thông minh, , cảm biến giúp xác định độ ẩm của đất qua đầu
dò và trả về giá trị Analog, Digital qua 2 chân tương ứng để giao tiếp với vi điều khiển
để thực hiện vô số các ứng dụng khác nhau
Hình 2.3: Cảm biến độ ẩm đất
- Thông số kỹ thuật:
● Điện áp hoạt động: 3.3~5VDC
● Tín hiệu đầu ra:
o Analog: theo điện áp cấp nguồn tương ứng
o Digital: High hoặc Low, có thể điều chỉnh độ ẩm mong muốn bằng biếntrở thông qua mạch so sánh LM393 tích hợp
Trang 6Hình 2.4: Sơ đồ chân cắm với vi điều khiển 3) Cảm biến ánh sáng BH1750
- Mạch cảm biến cường độ ánh sáng BH1750 là cảm biến ánh sáng với bộ chuyển đổi
AD 16 bit tích hợp trong chip và có thể xuất ra trực tiếp dữ liệu theo dạng digital Cảmbiến không cần bộ tính toán cường độ ánh sáng khác
- BH1750 sử dụng đơn giản và chính xác hơn nhiều lần so với dùng cảm biến quangtrở để đo cường độ ánh sáng với dữ liệu thay đổi trên điện áp dẫn đến việc sai sốcao.Với cảm biến BH1750 cho dữ liệu đo ra trực tiếp với dạng đơn vị là LUX khôngcần phải tính toán chuyển đổi thông qua chuẩn truyền I2C
Hình 2.5: Cảm biến ánh sáng BH1750
- 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
Trang 7● Ban đêm: 0.001 - 0.02 lx.
● Trời sáng trăng: 0.02 - 0.3 lx
● Trời mây trong nhà: 5 - 50 lx
● Trời mây ngoài trời: 50 - 500 lx
SDA Chân truyền dữ liệu giao thức I2C
ADDR Chân địa chỉ chọn địa chỉ thiết bị giao
tiếp khi có nhiều hơn hai module kếtnối
Hình 2.6: Sơ đồ cắm chân BH1750 với vi điều khiển
- Chuẩn giao tiếp I2C:
I2C kết hợp các tính năng tốt nhất của SPI và UART Với I2C, bạn có thể kếtnối nhiều slave với một master duy nhất (như SPI) và bạn có thể có nhiều master điềukhiển một hoặc nhiều slave
Hình 2.7: Giao tiếp I2C
Trang 8SDA (Serial Data) - đường truyền cho master và slave để gửi và nhận dữ liệu.
SCL (Serial Clock) - đường mang tín hiệu xung nhịp
Cách hoạt động:
Hình 2.8: Chu trình truyền dữ liệu
● Điều kiện khởi động: Đường SDA chuyển từ mức điện áp cao xuống mức điện
áp thấp trước khi đường SCL chuyển từ mức cao xuống mức thấp
● Điều kiện dừng: Đường SDA chuyển từ mức điện áp thấp sang mức điện áp cao
sau khi đường SCL chuyển từ mức thấp lên mức cao
● Khung địa chỉ: Một chuỗi 7 hoặc 10 bit duy nhất cho mỗi slave để xác định
slave khi master muốn giao tiếp với nó
Hình 2.9: Khung địa chỉ
● Bit Đọc / Ghi: Một bit duy nhất chỉ định master đang gửi dữ liệu đến slave
(mức điện áp thấp) hay yêu cầu dữ liệu từ nó (mức điện áp cao)
● Bit ACK / NACK: Mỗi khung trong một tin nhắn được theo sau bởi một bit xác
nhận / không xác nhận Nếu một khung địa chỉ hoặc khung dữ liệu được nhậnthành công, một bit ACK sẽ được trả lại cho thiết bị gửi từ thiết bị nhận
● Các bước truyền dữ liệu I2C:
• Master gửi điều kiện khởi động đến mọi slave được kết nối bằng cách
chuyển đường SDA từ mức điện áp cao sang mức điện áp thấp trước khichuyển đường SCL từ mức cao xuống mức thấp
• Master gửi cho mỗi slave địa chỉ 7 hoặc 10 bit của slave mà nó muốngiao tiếp, cùng với bit đọc / ghi
• Mỗi slave sẽ so sánh địa chỉ được gửi từ master với địa chỉ của chính nó.Nếu địa chỉ trùng khớp, slave sẽ trả về một bit ACK bằng cách kéo dòngSDA xuống thấp cho một bit Nếu địa chỉ từ master không khớp với địachỉ của slave, slave rời khỏi đường SDA cao
• Master gửi hoặc nhận khung dữ liệu
• Sau khi mỗi khung dữ liệu được chuyển, thiết bị nhận trả về một bitACK khác cho thiết bị gửi để xác nhận đã nhận thành công khung
• Để dừng truyền dữ liệu, master gửi điều kiện dừng đến slave bằng cáchchuyển đổi mức cao SCL trước khi chuyển mức cao SDA
Trang 94) Cảm biến DHT11
- Cảm Biến Nhiệt Độ Và Độ Ẩm DHT11 là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1 wire (giao tiếp digital 1 dây truyền dữ liệu duy nhất) Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp bạn có được dữ liệu chính xác mà không phải qua bất kỳ tính toán nào
● Phạm vi cảm biến nhiệt độ: 0°C ~ 50°C, sai số ±2°C
● Tần số lấy mẫu tối đa: 1Hz (1 giây 1 lần)
liệu nối tiếp
Trang 10GND Chân đất
- Phương thức hoạt động của chuẩn 1 wire:
Hình 2.12: Mô hình kết nối của chuẩn 1 wire
Chuẩn 1 wire có 4 phương thức được sử dụng là reset, write bit 0, write bit 1 vàread:
● Reset: Chuẩn bị giao tiếp Master cấu hình chân data là Ouput, kéo xuống 0
một khoảng H rồi nhả ra để trở treo kéo lên mức 1 Sau đó cấu hình Master làchân Input, delay I (us) rồi đọc giá trị slave trả về Nếu = 0 thì cho phép giaotiếp Nếu data = 1 đường truyền lỗi hoặc slave đang bận
● Write 1 : truyền đi bit 1: Master kéo xuống 0 một khoảng A(us) rồi về mức 1
khoảng B (us)
● Write 0 : truyền đi bit 0: Master kéo xuống 0 khoảng C rồi trả về 1 khoảng D
(us)
● Read : Đọc một Bit : Master kéo xuống 0 khoảng A rồi trả về 1 delay khoảng
E(us) rồi đọc giá trị slave gửi về Các bạn phải bắt được tín hiệu trong khoảng
F Sau khoảng đó sẽ Slave sẽ nhả chân F về trạng thái 1 (IDLE – Rảnh rỗi)
Hình 2.13: Dạng xung các phương thức hoạt động chuẩn 1 wire
Trang 11Hình 2.14: Bảng thời gian delay tiêu chuẩn
Chu trình nhận dữ liệu: Ban đầu DHTT11 ở trạng thái tiêu thụ năng lượng thấp,khi có tín hiệu Reset, chúng sẽ được wakeup sau đó DHT11 phản hổi bằng cách kéochân Data xuống 1 khoảng thời gian, rồi nhả ra Sau đó 5byte dữ liệu sẽ được gửi đi,MCU sẽ đọc 5 byte đó Kết thúc DHT11 nhả chân Data về lại mức 1 và trở về trạngthái tiết kiệm năng lượng Nó sẽ được đánh thức nếu có 1 tín hiệu reset
Hình 2.15: Chu trình giao tiếp với DHT11
Phương thức reset hay start: Để xuất tín hiệu reset hay start cho DHT11, chúng
ta sẽ kéo chân Data xuống 0 ít nhất là 18ms, sau đó nhả ra 20-40us để chờ DHT11phản hồi Nếu DHT11 phản hồi, nó sẽ kéo chân Data xuống 0 khoảng 80us, sau đó nhả
về 1 80us.Tiếp theo sẽ là 80bit (5byte) dữ liệu ngay sau đó
Trang 12Hình 2.16: Phương thức hoạt động start
Phương thức hoạt động wire 1 và wire 0:
● Với bit 0 DHT11 sẽ kéo chân Data xuống 0 50us và trả về 1 26-28us
● Với bit 1 DHT11 sẽ kéo chân Data xuống 0 50us và trả về 1 70us
Hình 2.17: DHT11 truyền bit 0
Hình 2.18: DHT11 truyền bit 1 5) Màn hình LCD TFT
- Màn hình LCD TFT cảm ứng điện trở 2.8 inch ILI9341 giao tiếp SPI được sử dụngtrong các ứng dụng điều khiển cảm ứng và hiển thị, màn hình sử dụng giao tiếp SPInên rất dễ giao tiếp và sử dụng, giúp bạn xây dựng giao diện điều kiển cảm ứng trênmàn hình 1 cách chuyên nghiệp
- Thông số kỹ thuật:
● Điện áp sử dụng: 3.3~5VDC
● Điện áp giao tiếp: TTL 3.3~5VDC
● IC Driver hiển thị: ILI9341 giao tiếp SPI
● Cỡ màn hình: 2.8 inch
● Độ phân giải: 240 x 320 pixels
Trang 13● IC Driver cảm ứng: XPT2046 giao tiếp SPI
● Tích hợp khe thẻ nhớ SD giao tiếp SPI
- Chuẩn giao tiếp SPI:
SPI là một giao thức giao tiếp phổ biến được sử dụng bởi nhiều thiết bị khácnhau Lợi ích duy nhất của SPI là dữ liệu có thể được truyền mà không bị gián đoạn.Bất kỳ số lượng bit nào cũng có thể được gửi hoặc nhận trong một luồng liên tục VớiI2C và UART, dữ liệu được gửi dưới dạng gói, giới hạn ở một số bit cụ thể Điều kiệnbắt đầu và dừng xác định điểm bắt đầu và kết thúc của mỗi gói, do đó dữ liệu bị giánđoạn trong quá trình truyền
Hình 2.20: Giao tiếp SPI
MOSI (đầu ra master / đầu vào slave) - đường truyền cho master gửi dữ liệu đến slave.MISO (đầu vào master / đầu ra slave) - đường cho slave gửi dữ liệu đến master
SCLK (clock) - đường cho tín hiệu xung nhịp
SS / CS (Slave Select / Chip Select) - đường cho master chọn slave nào để gởi tín hiệu
Cách hoạt động:
Khung truyền SPI
● Mỗi chip Master hay Slave đều có một thanh ghi dữ liệu 8 bits
Trang 14● Quá trình truyền nhận giữa Master và Slave xảy ra đồng thời sau 8 chu kỳ đồng
hồ, một byte dữ liệu được truyền theo cả 2 hướng
● Quá trình trao đổi dữ liệu bắt đầu khi Master tạo 1 xung clock từ bộ tạo xungnhịp (Clock Generator) và kéo đường SS của Slave mà nó truyền dữ liệu xuốngmức Low
● Cứ 1 xung clock, Master sẽ gửi đi 1 bit từ thanh ghi dịch (Shift Register) của nóđến thanh ghi dịch của Slave thông qua đường MOSI Đồng thời Slave cũng gửilại 1 bit đến cho Master qua đường MISO.Như vậy sau 8 chu kỳ clock thì hoàntất việc truyền và nhận 1 byte dữ liệu
● Dữ liệu của 2 thanh ghi được trao đổi với nhau nên tốc độ trao đổi diễn ranhanh và hiệu quả
● Trong giao tiếp SPI, chỉ có thể có 1 Master nhưng có thể 1 hoặc nhiều Slavecùng lúc Ở trạng thái nghỉ, chân SS của các Slave ở mức 1, muốn giao tiếp vớiSlave nào thì ta chỉ việc kéo chân SS của Slave đó xuống mức 0
Hình 2.21: Khung truyền SPI
● CPHA dùng để chỉ các mà dữ liệu được lấy mẫu theo xung Dữ liệu sẽ được lấy
ở cạnh lên của SCK khi CPHA=0 hoặc cạnh xuống khi CPHA=1
Hình 2.22: Giản đồ xung các mode hoạt động SPI
● Mode 0 (mặc định) – xung nhịp của đồng hồ ở mức thấp (CPOL = 0) và dữ liệuđược lấy mẫu khi chuyển từ thấp sang cao (cạnh lên) (CPHA = 0)
● Mode 1 - xung nhịp của đồng hồ ở mức thấp (CPOL = 0) và dữ liệu được lấymẫu khi chuyển từ cao sang thấp (cạnh xuống) (CPHA = 1)
● Mode 2 - xung nhịp của đồng hồ ở mức cao (CPOL = 1) và dữ liệu được lấymẫu khi chuyển từ cao sang thấp (cạnh lên) (CPHA = 0)
● Mode 3 - xung nhịp của đồng hồ ở mức cao (CPOL = 1) và dữ liệu được lấymẫu khi chuyển từ thấp sang cao (cạnh xuông) (CPHA = 1)
Trang 156) Cơ sở dữ liệu MySQL
a) Khái niệm
- MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (gọi tắt làRDBMS) hoạt động theo mô hình client-server Với RDBMS là viết tắt củaRelational Database Management System MySQL được tích hợp apache, PHP.MySQL 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ể
có nhiều bảng quan hệ chứa dữ liệu MySQL cũng có cùng một cách truy xuất
và mã lệnh tương tự với ngôn ngữ SQL MySQL được phát hành từ thập niên90s
- Database là tập hợp dữ liệu theo cùng một cấu trúc được đặt trong một bộ dữliệu chung dataset Database được tổ chức sắp xếp giống như một bảng tính có
sự liên kết chặt chẽ với nhau
b) Cách thức hoạt động:
Hình 2.23: Mô hình hệ thống - Database
- Máy tính cài đặt và chạy phần mềm RDBMS được gọi là client (máy khách).Mỗi khi chúng cần truy cập dữ liệu, chúng kết nối tới máy chủ (server)RDBMS Cách thức này chính là mô hình client-server
MySQL Server
- Đây là máy tính hay một hệ các máy tính cài đặt phần mềm MySQL dành choserver để giúp bạn lưu trữ dữ liệu trên đó để máy khách có thể truy cập vàoquản lý
MySQL Client
- MYSQL Client là tên gọi chung của mọi phần mềm có thể thực hiện truy vấnMySQL server và nhận kết quả trả về Hay nói cách khác, MySQL Client làđoạn mã PHP script trên một máy tính hay trên cùng server dùng để kết nối tớiMySQL database
Cách hoạt động
Cách vận hành chính trong môi trường MySQL như sau:
Trang 16- 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
7) Socket io
a) 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ácbê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ứcthông qua server trung gian Socketio có thể được sử dụng trong nhiều ứngdụng như chat, game online, cập nhật kết quả của một trận đấu đang xảy ra,
- Socketio không phải là một ngôn ngữ, mà chỉ là 1 công cụ giúp thực hiệnnhững ứng dụng realtime Vì thế, không thể sử dụng socketio để thay thế hoàntoàn cho một ngôn ngữ, mà phải sử dụng kết hợp với một ngôn ngữ khác Ngônngữ đó có thể là php, asp.net, nodejs,
b) Cấu trúc Socket io
- 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.24: Mô hình hệ thống - Socket io Phía server
- Đây là nơi sẽ cài đặt socket io Ngôn ngữ để dựng server có thể là php, asp.net,nodejs, Tuy nhiên, tùy vào ngôn ngữ lựa chọn mà cách cấu trúc server khácnhau Ở đây, nếu được thì khuyến khích sử dụng nodejs để dựng server, vì nhưvậy có thể cài trực tiếp socket io vào cùng một server Nếu sử dụng php thì phảicài thêm những package khác, hoặc phải chuẩn bị riêng server để chạy socketio
Trang 17- Cơ chế hoạt động của một ứng dụng realtime đó là thông qua server để lắngnghe (listen) data và truyền data về các máy client Vì vậy cần cài khai báo sửdụng socketio ở cả phía server và client
- Để lắng nghe data, ta sử dụng câu lệnh socket.on(), để phát dữ liệu thì sử dụnglệnh socket.emit()
- Socket.on và socket.emit có parameter thứ 1 là tên đường truyền Tên đườngtruyền có thể là tên bất ký, tuy nhiên đễ truyền và nhận dữ liệu của chung 1đường truyền thì tên đường truyền phải giống nhau
- 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
- Tuy HTML được đánh giá là khá mạnh nhưng nó vẫn chưa đủ khả năng xâydựng một trang web chuyên nghiệp Do đó, các lập trình viên thường chỉ sửdụng HTML để thêm các element dạng văn bản và xây dựng giao diện cấu trúccho phần nội dung trên trang Sau đó, họ dùng 2 ngôn ngữ frontend là CSS vàJavascript để tạo nên một Website hoàn chỉnh
b) CSS
- CSS là chữ viết tắt của Cascading Style Sheets, nó là một ngôn ngữ được sửdụng để tìm và định dạng lại các phần tử được tạo ra bởi các ngôn ngữ đánh dấu(HTML) Nói ngắn gọn hơn là ngôn ngữ tạo phong cách cho trang web Bạn cóthể hiểu đơn giản rằng, nếu HTML đóng vai trò định dạng các phần tử trênwebsite như việc tạo ra các đoạn văn bản, các tiêu đề, bảng,…thì CSS sẽ giúpchúng ta có thể thêm style vào các phần tử HTML đó như đổi bố cục, màu sắctrang, đổi màu chữ, font chữ, thay đổi cấu trúc…