1. Trang chủ
  2. » Luận Văn - Báo Cáo

NGHIÊN CỨU, PHÁT TRIỂN HỆ THỐNG TỰ ĐỘNG NHẬN DIỆN VÀ PHÂN LOẠI MỘT SỐ BỆNH THÔNG THƢỜNG TRÊN THỎ NUÔI BẰNG CÔNG NGHỆ XỬ LÝ ẢNH THÂN NHIỆT

78 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Từ xƣa đến nay, qua nhiều năm kinh nghiệm, con ngƣời ta đã có rất nhiều cách để chuẩn đoán, xác định các bệnh phổ biến trên các loài động vật nói chung và loài thỏ nói riêng nhƣ: quan sát nhìn, sờ nắn, gõ, nghe, ... Các phƣơng pháp chuẩn đoán này cần tiếp xúc trực tiếp với cơ thể loài vật, điều này phần nào ảnh hƣởng tới kết quả chuẩn đoán và tình trạng của chúng do khi tiếp xúc trực tiếp nhƣ vậy sẽ gây hoảng loạn và tạo stress, đặc biệt đối với loài động vật có tính nhút nhát nhƣ thỏ, hơn nữa có thể làm cho bệnh nghiêm trọng hơn hoặc có thể gây lây nhiễm bệnh từ thỏ qua ngƣời. Do đó, việc ứng dụng camera ảnh nhiệt và công nghệ xử lý ảnh sẽ đem lại hiệu quả ƣu việt hơn các phƣơng pháp chuẩn đoán truyền thống bằng cách tiếp xúc vật lý. Sử dụng camera ảnh nhiệt để chuẩn đoán giúp ta có thể thu thập dữ liệu một cách hiệu quả, chính xác và nhanh chóng mà không cần tiếp xúc trực tiếp.

HỌC VIỆN NÔNG NGHIỆP VIỆT NAM KHOA CƠ - ĐIỆN  ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: NGHIÊN CỨU, PHÁT TRIỂN HỆ THỐNG TỰ ĐỘNG NHẬN DIỆN VÀ PHÂN LOẠI MỘT SỐ BỆNH THÔNG THƢỜNG TRÊN THỎ NUÔI BẰNG CÔNG NGHỆ XỬ LÝ ẢNH THÂN NHIỆT Giáo viên hướng dẫn : TS.NGUYỄN THÁI HỌC Sinh viên thực : TRẦN QUANG HUẤN Msv : 603005 Lớp : K60-TĐHA Chuyên ngành : TỰ ĐỘNG HÓA Hà Nội – 2021 MỤC LỤC MỤC LỤC…… I DANH MỤC HÌNH ẢNH V DANH MỤC BẢNG VII MỞ ĐẦU .1 Đặt vấn đề .1 Mục đích nghiên cứu đề tài Đối tƣợng nghiên cứu Nội dung phƣơng pháp nghiên cứu 4.1 Nội dung .2 4.2 Phương pháp nghiên cứu Giới hạn đề tài Thời gian địa điểm thực CHƢƠNG TỔNG QUAN ĐỀ TÀI 1.1 Cấu trúc hệ thống ứng dụng công nghệ IOT .4 1.1.1 Vạn vật (Things) 1.1.2 Trạm kết nối (Gateways) 1.1.3 Hạ tầng mạng (Internet) 1.1.4 Lớp dịch vụ (Service) 1.2 Ứng dụng công nghệ IoT chăn nuôi i 1.3 Tổng quan camera ảnh nhiệt 1.4 Một số ứng dụng camera nhiệt .7 1.4.1 Trong an ninh .7 1.4.2 Trong an ninh hàng hải .9 1.4.3 Trong tuần tra an ninh .9 1.4.4 Trong quân 10 1.4.5 Trong đo nhiệt độ .10 1.4.6 Trong kiểm tra phát 10 1.5 Áp dụng camera ảnh nhiệt việc nuôi thỏ 13 1.5.1 Đọc hình ảnh thân nhiệt vật nuôi 13 1.5.2 Lợi ích việc theo dõi sức khỏe gia súc từ xa 14 1.6 Một số bệnh thƣờng gặp thỏ gây biến đổi nhiệt 15 1.6.1 Bệnh bại huyết 15 1.6.2 Bệnh nhiễm khuẩn Listeria 16 1.6.3 Bệnh sổ mũi 17 1.6.4 Bệnh cầu trùng 18 1.7 Phƣơng pháp đo thân nhiệt thỏ 18 1.8 Kết luận chƣơng 20 CHƢƠNG NỘI DUNG VÀ PHƢƠNG PHÁP NGHIÊN CỨU 21 2.1 Yêu cầu thiết kế hệ thống 21 2.2 Sơ đồ công nghệ hệ thống 21 2.3 Lựa chọn cấu trúc phần cứng phần mềm điều khiển hệ thống 24 2.3.1 Camera Flir TG267 24 2.3.2 ESP8266 NodeMCU 25 ii 2.4 Giới thiệu ứng dụng blynk 29 2.5 Lập trình upload cho Arduino 33 2.6 Tìm hiểu ngơn ngữ lập trình Python phần mềm OpenCV 34 2.6.1 Ngôn ngữ lập trình Python 34 2.6.2 Thư viện OpenCV .38 2.7 Cơ sở lƣu đồ thuật toán 39 2.7.1 Cơ sở thuật toán .39 2.7.2 Lƣu đồ thuật toán .44 CHƢƠNG KẾT QUẢ VÀ THẢO LUẬN .48 3.1 Kết phần cứng hệ thống 48 3.2 Kết đo thân nhiệt gửi ứng dụng Blynk cho ngƣời dùng .49 3.3 Giao diện quan sát hệ thống .52 3.4 Một số kết thực nghiệm .54 3.5 Giá trị kinh tế Error! Bookmark not defined 3.6 Kết đạt đƣợc .56 3.7 Kết chƣa đạt đƣợc 56 3.8 Đánh giá 56 3.9 Kết luận chƣơng 58 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ĐỀ TÀI 59 TÀI LIỆU THAM KHẢO 60 iii PHỤ LỤC .61 iv DANH MỤC HÌNH ẢNH Hình 1 Bốn cấu phần hệ thống IoT [1] Hình Lược đồ mô tả giải pháp ứng dụng IOT chăn ni Hình Hình ảnh bước sóng [2] .7 Hình Camera ảnh nhiệt giám sát khu vực dân cư [3] Hình Camera ảnh nhiệt phát kiểm soát hoả hoạn [3] Hình Camera an ninh chống trộm [3] Hình Camera ảnh nhiệt lĩnh vực quân [3] 10 Hình Sử dụng camera ảnh nhiệt hệ thống sản xuất, phát nhiệt thiết bị vận hành [3] 11 Hình Camera ảnh nhiệt xây dựng [3] 12 Hình 10 Thang nhiệt độ thỏ [4] .13 Hình 11 Thỏ bị bệnh bại huyết [5] 15 Hình Sơ đồ khối hệ thống tự động nhận diện phân loại số bệnh thông thường thỏ nuôi công nghệ xử lý ảnh thân nhiệt 22 Hình 2 Sơ đồ nguyên lý hệ thống 23 Hình Camera ảnh nhiệt cầm tay FLIR TG267[6] 24 Hình ESP8266 Arduino[7] 26 Hình Các phiên Module ESP [7] 27 Hình Sơ đồ chân Kit NodeMCU ESP8266-12E [7] 29 Hình Cấu trúc tảng blynk .30 Hình Tạo tài khoản blynk 32 Hình Vào custom chọn server 32 Hình 10 Giao diện blynk .33 Hình 11 Upload chương trình cho Arduino 33 Hình 12 Mở pycharm 34 Hình 13 Tạo project .35 Hình 14 Nhấn vào create 35 v Hình 15 Vào Python File để tạo file sử dụng mã nguồn Python 36 Hình 16 Đặt tên cho file 36 Hình 17 Viết mã nguồn Python .37 Hình 18 Nhấn chọn mục Run để thực thi file 37 Hình 19 Chạy thực nghiệm file .38 Hình 20 Trackbars sau tạo .40 Hình 21 Kết sau điều chỉnh giá trị 40 Hình 22 Ảnh khơng gian màu HSV [8] 41 Hình 23 Lưu đồ thuật tốn hệ thống 46 Hình Sơ đồ nối chân hệ thống .48 Hình Mạch kết nối hệ thống phân tích .48 Hình 3 Màn hình LCD hiển thị kết đo thân nhiệt thỏ 49 Hình Chuyển liệu từ camera nhiệt sang máy tính 49 Hình Ảnh nhiệt thể thỏ có chứa vùng bất thường 50 Hình Ảnh sau lọc màu xám hoá .50 Hình Thơng báo kết nối blynk thành cơng 51 Hình Giao diện hệ thống 53 Hình Giao diện kết đo thân nhiệt 53 Hình 10 Giao diện Calibration để điều chỉnh nhiệt độ .54 Hình 11 Thân nhiệt thỏ bình thường .55 Hình 12 Thân nhiệt thỏ có bất thường nhiệt 55 vi DANH MỤC BẢNG Bảng Thông số kỹ thuật camera ảnh nhiệt cầm tay FLIR TG267 .24 Bảng 2 So sánh thông số loại module ESP8266 thông dụng thị trường 27 Bảng Thông số kỹ thuật ESP8266 Arduino 29 vii MỞ ĐẦU Đặt vấn đề Từ xƣa đến nay, qua nhiều năm kinh nghiệm, ngƣời ta có nhiều cách để chuẩn đoán, xác định bệnh phổ biến lồi động vật nói chung lồi thỏ nói riêng nhƣ: quan sát - nhìn, sờ nắn, gõ, nghe, Các phƣơng pháp chuẩn đoán cần tiếp xúc trực tiếp với thể loài vật, điều phần ảnh hƣởng tới kết chuẩn đoán tình trạng chúng tiếp xúc trực tiếp nhƣ gây hoảng loạn tạo stress, đặc biệt lồi động vật có tính nhút nhát nhƣ thỏ, làm cho bệnh nghiêm trọng gây lây nhiễm bệnh từ thỏ qua ngƣời Do đó, việc ứng dụng camera ảnh nhiệt công nghệ xử lý ảnh đem lại hiệu ƣu việt phƣơng pháp chuẩn đoán truyền thống cách tiếp xúc vật lý Sử dụng camera ảnh nhiệt để chuẩn đốn giúp ta thu thập liệu cách hiệu quả, xác nhanh chóng mà khơng cần tiếp xúc trực tiếp Hiện giới Việt Nam ứng dụng hiệu công nghệ camera ảnh nhiệt công nghệ xử lý ảnh việc chuẩn đốn số bệnh thơng thƣờng vật ni Việc ứng dụng cơng nghệ mang lại nhiều ƣu điểm việc chuẩn đoán bệnh thể thỏ nhƣ: - Đƣa kết nhanh chóng xác - Giúp thu thập thông tin quan trọng mà không cần tiếp xúc vật lý - Cung cấp cho ta thông tin sơ bệnh, mức độ nghiêm trọng bệnh mà biện pháp kiểm tra vật lý phát đƣợc Mặc dù có nhiều ƣu điểm việc chuẩn đốn bệnh nhƣ nhƣng việc sử dụng camera ảnh nhiệt để thu thập liệu tồn số nhƣợc điểm nhƣ sau: - Chỉ áp dụng đƣợc với bệnh liên quan đến việc thay đổi nhiệt độ thể vật ni - Nguồn pin có thời lƣợng sử dụng định, cần kiểm tra bổ sung kịp thời để đảm bảo khả vận hành khơng bị gián đoạn q trình sử dụng Cần có hệ thống xử lý ngƣời có trình độ chuyên môn cao để xử lý nên - áp dụng trang trại với cán có trình độ Trong khn khổ đề tài em trình bày cho ngƣời đọc nhìn tổng quan việc ứng dụng camera ảnh nhiệt công nghệ xử lý ảnh việc chuẩn đoán số bệnh gia súc, gia cầm áp dụng giới Việt Nam Từ tình hình thực tế, việc nghiên cứu chế tạo mơ hình hệ thống tự động phát chuẩn đoán số bệnh gây tăng thân nhiệt từ xa góp phần thúc đẩy ngành chăn nuôi nƣớc ta theo hƣớng đại hóa Vì em chọn ý tƣởng nghiên cứu là: “Nghiên cứu phát triển hệ thống tự động nhận diện phân loại số bênh thông thƣờng thỏ nuôi công nghệ xử lý ảnh thân nhiệt” Mục đích nghiên cứu đề tài Đề tài “Nghiên cứu phát triển hệ thống tự động nhận diện phân loại số bệnh thông thƣờng thỏ nuôi công nghệ xử lý ảnh thân nhiệt” đƣợc xây dựng dựa mục đích nghiên cứu nhƣ sau:  Phát đƣợc cá thể thỏ có nhiệt độ tăng bất thƣờng ảnh thân nhiệt đàn thỏ nuôi trang trại  Xác định vị trí giá trị nhiệt độ lớn cá thể thỏ bị nhiễm bệnh  Nhận diện phân loại số loại bệnh thỏ tăng nhiệt độ bất thƣờng  Gửi cảnh báo ứng dụng điện thoại ngƣời quản lý đƣợc cài đặt sẵn Đối tƣợng nghiên cứu Các đối tƣợng nghiên cứu đƣợc sử dụng đề tài:  Các phƣơng pháp, thuật toán phục vụ cho việc phát hiện, nhận dạng phân loại bệnh qua thân nhiệt  Bộ thƣ viện xử lý ảnh OpenCv ngơn ngữ lập trình Python  Camera ảnh nhiệt  Arduino, Module ESP8266 NodeMCU ứng dụng blynk Nội dung phƣơng pháp nghiên cứu 4.1 Nội dung Bảng 3 Bảng kết phân tích thân nhiệt thỏ bị nhiễm khuẩn Listeria vào thời điểm ngày STT Thời Nhiệt độ môi Thời gian điểm đo trƣờng (độ C) đáp ứng (s) 6:00 AM 18 0.85 Giá trị nhiệt độ (độ C) Đo đƣợc Thực tế (x) (x0) 40.1 40.4 Sai số Gửi sms cảnh (%) báo 0.74% Có dấu hiệu bất thƣờng nhiệt 12:30 PM 28 0.87 40.6 40.9 0.73% Có dấu hiệu bất thƣờng nhiệt 9:00 PM 20 0.83 40.4 40.7 0.74% Có dấu hiệu bất thƣờng nhiệt Nhận xét: Chƣơng trình hoạt động tƣơng đối tốt, xác định đƣợc vị trí cá thể có nhiệt độ bất thƣờng, đƣa nhiệt độ cao vùng đồng thời gửi cảnh báo ảnh có vùng nhiệt độ bất thƣờng Qua q trình phân tích thực tế cho thấy hệ thống có độ tin cậy cao, không bị ảnh hƣởng yếu tố thời tiết Khi phân tích ảnh chƣơng trình xác định giá trị nhiệt độ cao có sai lệch với nhiệt độ thực tế nhiên sai lệch không 0.4°C (0.8%) 3.5 Kết đạt đƣợc - Thiết kế hoàn thiện đƣợc hệ thống nhận diện phân loại số bệnh thông thƣờng thỏ nuôi công nghệ xử lý ảnh thân nhiệt đảm bảo yêu cầu đề - Có thêm kiến thức kỹ thuật, thuật toán - Tạo ứng dụng có tính thiết thực nhu cầu sử dụng cao tƣơng lai 3.6 Kết chƣa đạt đƣợc - Giao diện đơn giản, cần thể rõ sử dụng với ứng dụng - Tính thẩm mĩ chƣa cao 3.7 Đánh giá - Hệ thống hoạt động yêu cầu 56 - Hệ thống nhận dạng nhanh, xác 57 3.8 Kết luận chƣơng Kết thúc chƣơng 3, ta hoàn thiện toàn hệ thống từ phần cứng, phần mềm điều khiển để thu đƣợc hệ thống tự động nhận diện phân loại số loại bệnh thơng thƣờng lồi thỏ thông qua xử lý ảnh thân nhiệt 58 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ĐỀ TÀI Thiết kế hệ nhận diện phân loại số bệnh thông thƣờng thỏ nuôi công nghệ xử lý ảnh thân nhiệt đề tài thú vị có tính thực tiễn cao Hệ thống phát bệnh cho vật nuôi tự động, không cần tiếp xúc trực tiếp bƣớc tiến lớn cho ngành chăn nuôi đƣợc áp dụng rộng rãi, phổ biến Nó giúp ngƣời ni sớm phát bệnh có phƣơng án chữa trị kịp thời, giảm việc lây lan bệnh cho đàn nhƣ nhiều thiệt hại phát sinh không mong muốn Ngồi ngăn chặn đƣợc nguy số loại bệnh vật ni lây lan sang ngƣời qua tiếp xúc Với ƣu điểm lợi ích mà hệ thống mang lại cho ngành chăn ni, em mong có nhiều hệ thống tƣơng tự sớm đƣợc ứng dụng vào thực tế để hỗ trợ cho bà Trong tƣơng lai, em mở rộng nghiên cứu hệ thống không giới hạn số loại bệnh thơng thƣờng qua thân nhiệt mà phát đƣợc nhiều loại bệnh khác Trong q trình thực đồ án em gặp khơng khó khăn việc cài đặt thiết bị, lên ý tƣởng thực hiện…nhƣng với nhiệt tình giúp đỡ sinh viên thầy Nguyễn Thái Học em hoàn thành đồ án tốt nghiệp Em xin gửi lời cảm ơn chân thành đến thầy thầy cô ban hội đồng hƣớng dẫn tạo điều kiện cho em hoàn thiện đồ án cách tốt 59 TÀI LIỆU THAM KHẢO Phạm Cơng Ngơ, “Lập trình C# từ đến nâng cao”, Nhà xuất giáo dục Pgs Ts Nguyễn Linh Giang, "Giáo trình xử lý ảnh", Trƣờng Đại học Bách khoa Hà Nội https://intech-group.vn/huong-dan-phan-loai-cac-he-thong-iot-bv181.htm https://phuongviethcm.com/vi/9-uu-diem-noi-bat-cua-camera-than-nhiet/ https://yeupet.vn/topic/benh-bai-huyet-va-xuat-huyet-truyen-nhiem-o-tho.874/ https://nongnghiep.vn/6-benh-o-tho-d42975.html https://thuoctrangtrai.com/benh-cau-trung-tren-tho-nd87118.html Nguồn ảnh: https://ohtech.vn/all-courses/tat-tan-tat-ve-iot/lessons/giai-phap-iot-hoan-chinh/ https://anhvientham.com/song-dien-tu-tim-hieu-ve-cac-loai-buc-xa-dien-tu/ https://canhbaothongminhtmh.com/camera-anh-nhiet-nd8 https://nuoitrong123.com/dac-diem-sinh-truong-phat-trien-cua-tho.html https://benh.edu.vn/benh-bai-huyet-o-tho/ https://etech5s.com/camera-anh-nhiet-flir-tg267 https://hocarm.org/giao-tiep-esp8266-nodemcu-voi-arduino-uno-mega/ https://thigiacmaytinh.com/khong-gian-mau-color-space/ 60 PHỤ LỤC #Code giao dien xu ly anh using OpenCvSharp.Extensions; namespace QuangHuanFinal { public partial class Home : MetroFramework.Forms.MetroForm { Mat m_mBgrImage,m_mBwMask; List m_lHSV; ImageProcessing m_ipMain; string m_sSettingFile = "settingFile.txt"; double m_dTemperature; public Home() { InitializeComponent(); this.ControlBox = false; m_mBgrImage = new Mat(); m_mBwMask = new Mat(); m_dTemperature = 0; m_lHSV = new List(); 61 btnCheckTemperature.Enabled = false; m_ipMain = new ImageProcessing(); readSettingValueFromTextFile(m_sSettingFile); } private void btnCheckTemperature_Click(object sender, EventArgs e) { try { for(int i=0; i< m_lHSV.Count(); i++) { // Processing here if (m_ipMain.CheckImage(m_mBgrImage, m_lHSV[i].Item1, m_lHSV[i].Item2, ref m_mBwMask)) { m_dTemperature = m_lHSV[i].Item3; tbxInfor.AppendText(DateTime.Now.ToString() + " Nhiet Do: " + m_dTemperature.ToString() + Environment.NewLine); ptbMask.Image = BitmapConverter.ToBitmap(m_mBwMask); updateTemperature((float)m_dTemperature); break; } } } 62 catch (Exception ex) { Console.WriteLine("Error inside btnCheckTemperature_Click( ) " + ex.Message); } } private void btnGetImage_Click(object sender, EventArgs e) { try { OpenFileDialog fl = new OpenFileDialog(); fl.Filter = "Image(bmp,png,jpg)|*.bmp;*.jpg;*png"; if(fl.ShowDialog() == DialogResult.OK) { m_mBgrImage = new Mat(fl.FileName,ImreadModes.Color); ptbMainImage.Image = BitmapConverter.ToBitmap(m_mBgrImage); updateMainImage(m_mBgrImage); btnCheckTemperature.Enabled = true; } } 63 catch(Exception ex) { Console.WriteLine("Error inside btnGetImage_Click( ) " + ex.Message); } } private void readSettingValueFromTextFile(string filePath) { try { if (File.Exists(filePath)) { List HSVValues = File.ReadAllLines(filePath).ToList(); // just take Scalar LowHSV, UpHSV; double temperature; LowHSV = UpHSV = new Scalar(); foreach (var Content in HSVValues) { List HSVValue = Content.Substring(Content.IndexOf('=')).Split(',').ToList(); double.TryParse(HSVValue[0], out LowHSV.Val0); // Hue value Low 64 double.TryParse(HSVValue[1], out LowHSV.Val1); // S value Low double.TryParse(HSVValue[2], out LowHSV.Val2); // V value Low double.TryParse(HSVValue[3], out UpHSV.Val0); // Hue value up double.TryParse(HSVValue[4], out UpHSV.Val1); // S value up double.TryParse(HSVValue[5], out UpHSV.Val2); // V value up double.TryParse(HSVValue[6], out temperature); m_lHSV.Add(new Tuple(LowHSV, UpHSV, temperature)); } sortHsvValueBasedOnTemperature(ref m_lHSV); } } catch (Exception ex) { Console.WriteLine("Error from readSettingValueFromTextFile( ) function.\nDetail: " + ex.Message); } } 65 private void sortHsvValueBasedOnTemperature(ref List lHSV) { Tuple temp = lHSV[0]; for (int i = 0; i < lHSV.Count() - 1; i++) { for (int j = i + 1; j < lHSV.Count(); j++) { if (lHSV[j].Item3 < lHSV[i].Item3) { temp = lHSV[i]; lHSV[i] = lHSV[j]; lHSV[j] = temp; } } } } public delegate void UpdateMainImageCallback(Mat image); public UpdateMainImageCallback updateMainImage; public delegate void UpdateTemperatureCallBack(float temperature); public UpdateTemperatureCallBack updateTemperature; 66 public delegate void UpdateHSVCallBack(float temperature); public UpdateHSVCallBack updateHSVList; } } Code Arduino // Fill-in information from your Blynk Template here #define BLYNK_TEMPLATE_ID "TMPL5y2i_k1H" #define BLYNK_DEVICE_NAME "Rabbit" #define BLYNK_FIRMWARE_VERSION "0.1.0" #define BLYNK_PRINT Serial //#define BLYNK_DEBUG #define USE_NODE_MCU_BOARD #define APP_DEBUG #include "BlynkEdgent.h" #include #include LiquidCrystal_I2C lcd(0x27,16,2); // LCD library // set the LCD address to 0x27 for a 16 chars and line display void printLCD(char* line1, char* line2); String m_sTemperatureInfo, m_fStatusInfo, m_sCommand; float m_fTemperature; int m_nMode, count; void setup() { 67 Serial.begin(115200); delay(100); BlynkEdgent.begin(); // put your setup code here, to run once: // KHOI TAO GIA TRI BAN DAU CHO CAC BIEN m_fTemperature = 0; m_nMode =0; } void loop() { // put your main code here, to run repeatedly: BlynkEdgent.run(); if(Serial.available()) { m_sCommand = Serial.readString(); m_nMode = getValue(m_sCommand,'-',0).toFloat(); } if(m_nMode==1) { printLCD("DO AN TOT NGHIEP","CONNECT SUCCESS"); m_nMode=0; } else if(m_nMode == 2) { 68 m_fTemperature = getValue(m_sCommand,'',1).toFloat(); // update data m_sTemperatureInfo = "Nhiet Do: "+String(float(m_fTemperature))+ "C"; m_fStatusInfo = "DO NHIET DO THO"; // send to blynk printLCD(m_fStatusInfo.c_str(),m_sTemperatureInfo.c_str()); Blynk.virtualWrite(V0,m_fTemperature); // gui nhiet len Blynk // Blynk.virtualWrite(V1,totalLitres); // gui the tich m_nMode=0; } } void printLCD(const char line1[], const char line2[]) { lcd.init(); lcd.backlight(); lcd.setCursor(0,0); lcd.print(line1); lcd.setCursor(0,1); lcd.print(line2); } String getValue(String data, char separator, int index) 69 { int found = 0; int strIndex[] = {0, -1}; int maxIndex = data.length()-1 for( count=0; count

Ngày đăng: 17/10/2023, 22:35

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w