CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI 1.1 Giới thiệu tổng quan về IOT Thuật ngữ Internet of things (viết tắt là IoT) được hiểu một cách đơn giản là một mạng lưới vạn vật kết nối với nhau thông qua Internet. Chúng bao gồm các đồ vật, con người được cung cấp một định danh của riêng mình và tất cả có khả năng truyền tải hay trao đổi thông tin hay dữ liệu qua một mạng duy nhất mà không cần đến sự tương tác trực tiếp giữa người với người, hay người với máy tính. IoT đã phát triển từ sự hội tụ của công nghệ không dây, công nghệ vi cơ điện tử và quan trọng hơn là sự có mặt của Internet. Nói đơn giản IoT là một tập hợp các thiết bị có khả năng kết nối mọi thứ lại với nhau với Internet và với thế giới bên ngoài để thực hiện một công việc nào đó.
Có thể nói IoT có mặt trong hầu hết các lĩnh vực đời sống của chúng ta hiện nay từ văn hóa, du lịch, giáo dục, y học, truyền thông,…Tất cả các lĩnh vực trên đều được ứng dụng từ các thành tựu của IoT cả. Như trước đây nếu chúng ta muốn thông tin liên lạc với nhau thì không còn cách nào khác đó là viết thư và truyền thư thông qua người giao nhận. Còn bây giờ thì thông qua các thiết bị thông minh, chúng được kết nối với nhau thông qua hệ thống wifi, 3G hay các ứng dụng riêng của từng hãng. Chưa đầy 10s chúng ta đã có thể gửi tin nhắn đến một người hay nhiều người khác.
Bên cạnh đó thì còn có nhiều ứng dụng khác như: • Quản lý môi trường. • Quản lý hệ thống máy móc • Hệ thống mua sắm trực tuyến • Hệ thống kiểm soát an ninh • Nhà thông minh • Ứng dụng quản lý toàn bộ thiết bị cá nhân thông qua việc động bộ 1.2 Mục tiêu ý tưởng đề tài Về lý thuyết: 1. Đọc giá trị độ ẩm đất từ chân A0 của NodeMcu và hiển thị trên Blynk bằng chức năng Value Display (V1) chuyển về giai đo phần trăm (%). Cho phép tùy chỉnh 2 chế độ Auto/Manual thông qua chức năng Styled button (V2).
Chế độ Auto - Cho phép đặt ngưỡng trên và dưới của độ ẩm thông qua chức năng Numeric Input: (V3 – ngưỡng trên, V4 – ngưỡng dưới) *Nếu độ ẩm cao hơn ngưỡng trên thì: + Trên Blynk: Bật LED vàng, gửi cảnh báo “độ ẩm cao” qua chức năng Notification và hiển thị LCD “độ ẩm cao” + Trên NOdeMCU: Bật LED vàng, ngắt relay tắt máy bơm *Nếu độ ẩm thấp hơn ngưỡng dưới: + Trên Blynk: Bật LED đỏ, gửi cảnh báo “độ ẩm thấp”, LCD “ đang tưới nước” + Trên NodeMCU: Bật LED đỏ, đóng relay để mở máy bơm *Nếu độ ẩm trong ngưỡng thì: + Trên Blynk: Bật LED xanh, LCD “độ ẩm BT” + Trên NodeMCU: Bật LED xanh, đóng relay để tắt máy bơm 4. Chế độ Manual: + Sử dụng nút nhấn button (V9) trên Blynk app để điều khiển đóng ngắt relay. Về thực nghiệm: Chạy thành công hệ thống tưới nước dựa trên độ ẩm đất và theo dõi từ xa trên ứng dụng 3 1.3 Sơ đồ khối hệ thống và nguyên lý hoạt động của hệ thống 1.1 sơ đồ khối: Blynk sever KHỐI KHỐI CHẤP HÀNH 1.2 Nguyên lý hoạt động: #Mode Auto Cảm biến thu tín hiệu độ ẩm về chân A0 của NodeMCU => Hiển thị trên Blynk thông qua Value Display (V1) Sau đó gửi tín hiệu về NodeMCU để thực thi các lệnh đã ràng buộc #Mode Manual - Điều khiển đóng tắt relay thông qua Blink App bằng button (V9) - Bật: Xuất tín hiệu HIGH về chân D2 trên NodeMCU để đóng relay mở máy bơm - Tắt: Xuất tín hiệu LOW về chân D2 trên NodeMCU để đóng relay tắt máy bơm.4 Lựa chọn phần cứng cho hệ thống: Trên cơ sở phân tích yêu cầu của hệ thống ở Bước 1, chúng ta sẽ chọn lựa linh kiện phần cứng phù hợp như: Board mạch điều khiển: NodeMCU NodeMCU V1.0 được phát triển dựa trên Chip WiFi ESP8266EX bên trong Module ESP-12E dễ dàng kết nối WiFi với một vài thao tác.Board còn tích hợp IC CP2102, giúp dễ dàng giao tiếp với máy tính thông qua Micro USB để thao tác với board. Và có sẵn nút nhấn, led để tiện qua quá trình học, nghiên cứu.
Với kích thước nhỏ gọn, linh hoạt board dễ dàng liên kết với các thiết bị ngoại vi để tạo thành project, sản phẩm mẫu một cách nhanh chóng. Hình ảnh 1: NodeMCU ▪ Thông số kỹ thuật: – Chip: ESP8266EX – WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n – Điện áp hoạt động: 3.3V – Điện áp vào: 5V thông qua cổng USB – Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ chân D0) – Số chân Analog Input: 1 (điện áp vào tối đa 3.3V) – Bộ nhớ Flash: 4MB – Giao tiếp: Cable Micro USB – Hỗ trợ bảo mật: WPA/WPA2 – Tích hợp giao thức TCP/IP 5 – Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU – Lua Cảm biến: ▪ Cảm biến độ ẩm đất Thông số kỹ thuật: – Điện áp hoạt động: 3.3~12VDC – Tích hợp đầu dò chống ăn mòn cho độ bền và độ ổn định cao. – Tín hiệu đầu ra: – Analog: theo điện áp cấp nguồn tương ứng. – Digital: High hoặc Low, có thể điều chỉnh độ ẩm mong muốn bằng biến trở thông qua mạch so sánh LM393 tích hợp.
Hình ảnh 2: Cảm biến độ ẩm đất ▪ Thiết bị điều khiển động cơ: – Driver: L298N tích hợp hai mạch cầu H. – Điện áp điều khiển: +5V ~ +12V – Dòng tối đa cho mỗi cầu H là: 2A (=>2A cho mỗi motor) – Điện áp của tín hiệu điều khiển: +5 V ~ +7 V – Dòng của tín hiệu điều khiển: 0 ~ 36mA (Arduino có thể chơi đến 40mA nên khỏe re nhé các bạn) – Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃) – Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃ 6 Hình ảnh 3:L298N ▪ Máy bơm nước – Dòng điện đầu vào: DC 3V-5V – Lưu lượng dòng chảy: 1.6 L/min – Nhiệt độ khi hoạt động: 80 độ C – Dòng điện hoạt động: 0.8 mét (Tối đa) – Đường kính bên ngoài của đầu ra nước: 7.5mm – Đường kính bên trong của đầu ra nước: 5.0 mm – Đường kính đầu nước vào: 5.0 mm – Độ dài dây dẫn: 200 mm – Chiều dài ống cao su: 1 mét – Kích thước: 45 x 30 x 25 mm – Nặng: 30g Hình ảnh 4:Máy bơm 5v 7 CHƯƠNG 2: THIẾT KẾ HỆ THỐNG IOT 2.1 lập bảng dữ liệu Trước khi thiết kế hệ thống IoT chúng ta cần lập bảng dữ liệu về các chức năng trên Blynk App và trên NodeMCU. Trên Blynk app Trên NodeMCU Widget Chức năng Chân kết nối Code cho NodeMCU Virtualpin V0 Value Hiển thị giá D3 nối với chân DHT dht(D3, DHT11); Display trị nhiệt đô data DHT11 Float t = không khí dht.readTemperature(); V1 Value Hiển thị giá D3 nối với chân DHT dht(D3, DHT11); Display trị độ ẩm data DHT11 float h = dht.readHumidity(); không khí V2 Value Hiển thị giá D0 nối với cảm int r = digitalRead(D0); Display trị cảm biến biến mưa mưa V3 Value Hiển thị giá A0 nối với cảm int value = analogRead(A0); Display trị cảm biến biến độ ẩm đất int phantram = độ ẩm đất map(value,0,1023,0,100); int phantramthuc =100 - phantram; Serial.println(value); 8 V4 Value Hiển thị giá Display trị lượng nước còn lại trong thùng chứa V9,V10 Slider Speed điều chỉnh ngưỡng bơm tưới V6 button Bật tắt D5,D6 nối vói #define IN1 D6 L298n ở chế in1,in2 của #define IN2 D5 đọ Manual l298n V7 Slider Speed điều D7 nối với #define ENA D7 chỉnh tốc độ EnA l298n tưới V8 Styled Điều chỉnh Không có BLYNK_WRITE(V8){ button chế độ chedo_hoatdong = Auto/Manual param.println("Chế độ hoạt động: " + String(chedo_hoatdong)); } 9 Hình ảnh 5: Sơ đồ kết nối Hình ảnh 6: 2 Mạch điện thực tế 10 2.2 Lưu đồ thuật toán (Flowchart) Hình ảnh 7: Lưu đồ thuật toán 2.3 Thiết kế ứng dụng trên điện thoại thông minh 2.1 Giới thiệu về Blynk Blynk là một ứng dụng chạy trên nền tảng iOS và Android để điều khiển và giám sát thiết bị thông qua internet. Blynk không bị ràng buộc với những phần cứng cụ thể nào cả, thay vào đó, nó hỗ trợ phần cứng cho bạn lựa chọn như Arduino, Raspberry Pi, ESP8266 và nhiều module phần cứng phổ biến khác.
▪ Những lý do nên sử dụng Blynk: Dễ sử dụng: việc cài đặt ứng dụng và đăng ký tài khoản trên điện thoại rất đơn giản cho cả IOS và Android Chức năng phong phú: Blynk hỗ trợ rất nhiều chức năng với giao diện đẹp và thân thiện, bạn chỉ việc kéo thả đối tượng và sử dụng nó. 11 Không phải lập trình ứng dụng: nếu bạn không có kiến thức về lập trình app cho Android cũng như IOS thì Blynk là một ứng dụng tuyệt vời để giúp bạn khám phá thế giới IOTs. Điều khiển, giám sát thiết bị ở bất kì đâu thông qua internet với khả năng đồng bộ hóa trạng thái và thiết bị. ▪ Có ba thành phần chính trong nền tảng: Blynk 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. Bạn có thể sử dụng Blynk Cloud của Blynk cung cấp hoặc tự tạo máy chủ Blynk riêng của bạn. Vì đây là mã nguồn mở, nên bạn có thể dễ dàng intergrate vào các thiết bị và thậm chí có thể sử dụng Raspberry Pi làm server của bạn. Library Blynk – support cho hầu hết tất cả các nền tảng phần cứng phổ biến - cho phép giao tiếp với máy chủ và xử lý tất cả các lệnh đến và đi.
▪ Các tính năng: 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: Wifi, Bluetooth và BLE Ethernet, USB (Serial)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 12 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. được cập nhật các tính năng liên tục! 2.2 Cấu hình các nút chức năng 1. Chức năng datastreams (V0) Hình ảnh 8: Chức năng datastreams (V0) 2.
Chức năng datastreams(V1) Hình ảnh 9:Chức năng datastreams (V1) 3. Chức năng datastreams (V2) 13 Hình ảnh 10:Chức năng datastreams (V2) 4. Chức năng datastreams (V3) Hình ảnh 11: Chức năng datastreams (V3) 5. Chức năng datastreams (V6) 14 Hình ảnh 12: Chức năng datastreams (V6) 6.