THIẾT KẾ HỆ THỐNG IOT
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
Hiển thị giá trị nhiệt đô không khí
D3 nối với chân data DHT11
Hiển thị giá trị độ ẩm không khí
D3 nối với chân data DHT11
DHT dht(D3, DHT11); float h = dht.readHumidity();
Hiển thị giá trị cảm biến mưa
D0 nối với cảm biến mưa int r = digitalRead(D0);
Hiển thị giá trị cảm biến độ ẩm đất
A0 nối với cảm biến độ ẩm đất int value = analogRead(A0); int phantram map(value,0,1023,0,100); int phantramthuc 0 - phantram;
Hiển thị giá 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
D5,D6 nối vói in1,in2 của l298n
V7 Slider Speed điều chỉnh tốc độ tưới
V8 Styled button Điều chỉnh chế độ
Không có BLYNK_WRITE(V8){ chedo_hoatdong param.asInt();
Serial.println("Chế độ hoạt động: " +
Hình ảnh 5: Sơ đồ kết nối
Hình ảnh 6: 2 Mạch điện thực tế
Lưu đồ thuật toán (Flowchart)
Hình ảnh 7: Lưu đồ thuật toán
Thiết kế ứng dụng trên điện thoại thông minh
Blynk là ứng dụng đa nền tảng trên iOS và Android, cho phép người dùng điều khiển và giám sát thiết bị qua internet Ứng dụng này không giới hạn vào một loại phần cứng cụ thể, mà hỗ trợ nhiều loại như Arduino, Raspberry Pi, ESP8266 và các module phần cứng phổ biến khác, mang lại sự linh hoạt cho người dùng trong việc lựa chọn thiết bị.
▪ 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ó
Nếu bạn chưa có kiến thức về lập trình ứng dụng cho Android và iOS, Blynk là một lựa chọn tuyệt vời để khám phá thế giới IoT Ứng dụng này cho phép bạn điều khiển và giám sát thiết bị từ xa qua internet, đồng thời đồng bộ hóa trạng thái và thiết bị một cách hiệu quả.
▪ 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 đóng vai trò quan trọng trong việc xử lý dữ liệu giữa điện thoại, máy tính bảng và phần cứng Người dùng có thể lựa chọn sử dụng Blynk Cloud hoặc tự thiết lập máy chủ Blynk riêng Với mã nguồn mở, Blynk cho phép dễ dàng tích hợp vào các thiết bị, bao gồm cả việc sử dụng Raspberry Pi làm máy chủ.
Thư viện Blynk hỗ trợ hầu hết các nền tảng phần cứng phổ biến, cho phép giao tiếp hiệu quả với máy chủ và xử lý tất cả các lệnh gửi đi và nhận về.
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
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.v được cập nhật các tính năng liên tục!
2.3.2 Cấu hình các nút chức năng
Hình ảnh 8: Chức năng datastreams (V0)
Hình ảnh 9:Chức năng datastreams (V1)
Hình ảnh 10:Chức năng datastreams (V2)
Hình ảnh 11: Chức năng datastreams (V3)
Hình ảnh 12: Chức năng datastreams (V6)
Hình ảnh 13: Chức năng datastreams (V7)
Hình ảnh 14: Chức năng datastreams (V8)
Hình ảnh 15: Giao diện ứng dụng hoàn chỉnh
Viết code chương trình điều khiển Phần kết nối và khai báo các biến
DHT dht(D3, DHT11); //(sensor pin,sensor type)
#define echo D8 bool batbom = 0; int Speed; int depth ; float nhietdo; float doam; int doam_bomtuoi=0; int doam_tatbomtuoi=0;
//khai báo chế độ tưới boolean chedo_hoatdong=1; unsigned long times=millis(); void smartcar() { int r = digitalRead(D0); int value = analogRead(A0); int phantram = map(value,0,1023,0,100); int phantramthuc 0 - phantram;
// chế độ trực tiếp if(chedo_hoatdong==1){ if (batbom == 1) {
// chế độ tự động if(chedo_hoatdong==0){ if (phantramthuc >doam_tatbomtuoi or r ==0){
// Serial.println("Tắt bơm tưới!");
} else{ if( phantramthuc < doam_bomtuoi){
// Serial.println("Bật bơm tưới!");
Đưa dữ liệu cảm biến lên webserver
Máy chủ Web là sự kết hợp giữa phần cứng và phần mềm, có nhiệm vụ duy trì, tìm nạp và cung cấp các trang web Nội dung của các trang này có thể bao gồm văn bản dưới dạng tài liệu HTML, hình ảnh, video, ứng dụng và liên kết.
Trình duyệt web trên laptop và điện thoại di động hoạt động như một ứng dụng web cho máy khách, kết nối với máy chủ lưu trữ dữ liệu Hình thức giao tiếp này được gọi là Mô hình Máy khách - Máy chủ (client-server).
Web server, hay máy chủ web, là phần mềm hoặc phần cứng có chức năng lưu trữ và phân phối nội dung của các trang web Khi bạn nhập địa chỉ như www.google.com, kết quả trả về được lấy từ web server thông qua giao thức HTTP và các giao thức liên quan khác.
HTTP, hay Giao thức truyền thông siêu văn bản, là giao thức văn bản dùng để giao tiếp giữa máy khách và máy chủ Trong số nhiều phương thức HTTP, hai phương thức phổ biến nhất là GET và POST.
▪ Chúng ta Lập trình webserver trên ESP8266 dùng HTTP-GET
Bước 1: Gọi thư viện thiết lập wifi và Web server
Bước 2: Khởi tạo đối tượng SERVER port 80 (mặc định của web server)
Bước 3: Gọi hàm thực hiện chỉ truy vấn trang chủ của phương thức GET server.on("/", handleRoot);
Bước 4: Viết trương trình hương trình con trả về cho truy vấn void handleRoot() { server.send(200, "text/plain", "Hello world"); }
Bước 5: Gọi phương thức trong vòng lặp để đọc truy vấn từ client server.handleClient();
Giao tiếp giọng nói với hệ thống sử dụng ngôn ngữ lập trình Python
▪ Chúng ta sử dụng API có sẵn trong Nhận dạng giọng nói Python
Gói Python như wit và apiai mang lại nhiều tính năng vượt trội hơn so với nhận dạng giọng nói cơ bản, nhưng trong bài viết này, chúng ta sẽ tập trung vào việc sử dụng SpeechRecognition vì tính dễ sử dụng của nó.
Mã cứng này mã hóa một khóa API mặc định cho API Google Web Speech
▪ Điều kiện tiên quyết để nhận dạng giọng nói Python
Cài đặt các thư viện:
Bạn có thể sử dụng pip để cài đặt cái này pip install SpeechRecognition pip install PyAudio
▪ Đọc tệp âm thanh bằng Python
Lớp nhận dạng Đầu tiên, chúng ta tạo một thể hiện của lớp Recognizer r=sr.Recognizer()
Với Recognizer, chúng tôi có một phương thức cho mỗi API-
- Recog_ing_bing () – Microsoft Bing Speech
- Recog_google () – API giọng nói trên web của Google
- Recog_google_cloud () – Google Cloud Speech
- accept_ibm () – IBM Speech to Text
- công nhận_wit () – Wit.ai
▪ Thu thập dữ liệu với record ()
Chúng tôi có thể yêu cầu trình quản lý ngữ cảnh mở tệp và đọc nội dung, sau đó ghi lại vào một phiên bản AudioData Để thực hiện điều này, sử dụng mã demo=sr.AudioFile('demo.wav') và với demo như là nguồn, audio=r.record(source).
▪ Đọc một đoạn âm thanh
To listen to a specific segment of your audio file, you can use the offset parameter to indicate the starting point in seconds and the duration parameter to specify the listening length For example, you can implement this with the code: audio = r.record(source, offset=4, duration=3), followed by r.recognize_google(audio) to transcribe the selected audio.
Xử lý tiếng ồn là một phần không thể tránh khỏi trong quá trình ghi âm Dù bạn sử dụng thiết bị chuyên nghiệp đến đâu, tiếng ồn vẫn luôn tồn tại Do đó, việc học cách đối phó với tiếng ồn là rất cần thiết để cải thiện chất lượng âm thanh.
Phương thức Adjust_for_ambient_noise() thực hiện việc đọc giây đầu tiên của luồng tệp để hiệu chỉnh trình nhận dạng theo mức độ tiếng ồn của âm thanh Phần âm thanh này thường được sử dụng và không xuất hiện trong bản chép lời.
23 r.adjust_for_ambient_noise(source,duration=0.51) audio=r.record(source,offset=2.5,duration=3) r.recognize_google(audio)
To process real-time voice data, we need a microphone as the audio source First, we adjust for ambient noise using `r.adjust_for_ambient_noise(source)` Then, we capture the audio with `audio = r.listen(source)` and finally, we utilize `r.recognize_google(audio)` to transcribe the spoken words into text.
KIỂM TRA HOẠT ĐỘNG CỦA HỆ THỐNG
Tình Huống 1
Kiểm tra kết nối giữa NodeMCU và ứng dụng Blynk là rất quan trọng để đảm bảo hệ thống hoạt động ổn định Việc duy trì kết nối giúp nhận thông báo về độ ẩm đất, từ đó cho phép người dùng theo dõi và điều chỉnh ngưỡng độ ẩm cũng như quản lý hoạt động của bơm nước, tránh ảnh hưởng tiêu cực đến cây trồng.
Hình ảnh 16: Kiểm tra kết nối giữa NodeMCU và Blynk app
Lỗi trên là do Blynk app và NodeMCU không giao tiếp được với nhau do 1 trong số những nguyên nhân sau:
- Lỗi kết nối do mất mạng, mất wifi
- Do NodeMCU bị mất nguồn hoặc cổng USB bị lỏng
Mất kết nối giữa Blynk và
- Do chưa cắm cổng USB của NodeMCU vào nguồn
- Do không tìm được sever băng thông để kết nối
Tình huống 2
▪ Kiểm tra độ nhạy của cảm biến độ ẩm đất
Theo thời gian, đầu cảm biến có thể bị ăn mòn và mất đi độ chính xác Do đó, việc theo dõi thường xuyên là cần thiết để phát hiện sớm những sai lệch Việc áp dụng biện pháp xử lý thích hợp sẽ giúp tránh những ảnh hưởng xấu đến cây trồng.
Hình ảnh 17: Hoạt động của cảm biến và chức năng hiển thị trên Blynk App
▪ Lỗi trên là do 1 trong những nguyên nhân sau:
Cảm biến trục trặc dẫn đến không hiển thị độ ẩm đất, các chức năng của app Blynk không cập nhật được giá trị
Cảm biến độ ẩm sau thời gian dài sử dụng có thể bị ăn mòn và hư hại, dẫn đến việc không cập nhật chính xác giá trị độ ẩm Do đó, việc thay mới cảm biến là cần thiết để đảm bảo độ chính xác trong việc đo lường.
- Do lỗi kết nối giữa NodeMCU và Blynk app dẫn đến việc không thể chuyển giá trị độ ẩm thu được từ chân của NodeMCU lên Blynk app
Đánh giá hoạt động của hệ thống
Hệ thống tưới phun mưa là giải pháp hiệu quả trong nông nghiệp, đặc biệt cho các loại cây trồng cần lượng nước lớn cho cả tán lá Phương pháp này cũng được ứng dụng rộng rãi trong việc tưới cỏ và cây cảnh tại các địa điểm công cộng và khu nghỉ dưỡng, với thiết kế đảm bảo tính thẩm mỹ.
Hệ thống phun mưa hiện đại đang được áp dụng rộng rãi tại các vườn chè, khu vực trồng hoa và vườn rau lớn ở Việt Nam, giúp nông dân tiết kiệm chi phí đầu tư, công sức và nguồn nước, đặc biệt trong mùa khô Với khả năng tưới nước đồng đều trên toàn bề mặt, hệ thống này hỗ trợ cây trồng phát triển mạnh mẽ từ bộ rễ đến bề mặt lá, nâng cao hiệu quả sản xuất nông nghiệp và đảm bảo chất lượng nông sản tốt nhất.
Hệ thống mà chúng tôi thiết kế rất phù hợp cho phòng thí nghiệm và mô hình trồng rau tại nhà Với ưu điểm nhỏ gọn, giá thành rẻ và tiện dụng, hệ thống này lý tưởng cho các mô hình trồng rau nhỏ và vừa Nó dễ dàng điều chỉnh và có tiềm năng phát triển thành các dự án nông nghiệp lớn hơn Tuy nhiên, để mở rộng cho các dự án quy mô lớn, cần cải tiến nhiều về kỹ thuật và cảm biến.
Hình ảnh 18: Demo hệ thống