Mục lục:

Hiển thị nhiệt độ và độ ẩm và thu thập dữ liệu với Arduino và xử lý: 13 bước (có hình ảnh)
Hiển thị nhiệt độ và độ ẩm và thu thập dữ liệu với Arduino và xử lý: 13 bước (có hình ảnh)

Video: Hiển thị nhiệt độ và độ ẩm và thu thập dữ liệu với Arduino và xử lý: 13 bước (có hình ảnh)

Video: Hiển thị nhiệt độ và độ ẩm và thu thập dữ liệu với Arduino và xử lý: 13 bước (có hình ảnh)
Video: #android #nhom1 #IOTs Giám sát nhiệt độ và độ ẩm thông qua Firebase sử dụng ESP32 và cảm biến DHT11 2024, Tháng bảy
Anonim
Hiển thị nhiệt độ và độ ẩm và thu thập dữ liệu với Arduino và xử lý
Hiển thị nhiệt độ và độ ẩm và thu thập dữ liệu với Arduino và xử lý

Giới thiệu: Đây là một Dự án sử dụng bảng Arduino, Bộ cảm biến (DHT11), máy tính Windows và chương trình Xử lý (có thể tải xuống miễn phí) để hiển thị dữ liệu Nhiệt độ, Độ ẩm ở dạng biểu đồ số và thanh, hiển thị thời gian và ngày tháng và chạy số hẹn giờ lên trong suốt chương trình và ghi lại tất cả dữ liệu ở định dạng.csv khi chương trình bị đóng.

Nguồn cảm hứng:

Đầu tiên tôi PHẢI nói rằng tôi là một người mới bắt đầu hoàn toàn và tôi đã học được rất nhiều điều từ dự án này. Vì vậy, tôi đang cố gắng viết cuốn Có thể hướng dẫn này để người mới bắt đầu hoàn toàn có thể đọc và hiểu được.

Tôi đã thấy nhiều dự án Arduino khác nhau để đo nhiệt độ và độ ẩm nhưng tôi muốn có một chương trình:

1) Nhiệt độ và độ ẩm đo được

2) Được hiển thị dữ liệu ở cả dạng biểu đồ (tôi đã chọn biểu đồ thanh) và dạng kỹ thuật số

3) Có chức năng đồng hồ

4) Có bộ đếm thời gian "Thời gian chạy" đếm ngược

5) Lưu dữ liệu này thành định dạng tệp.csv (excel).

Tôi có cảm hứng từ các chương trình do Sowmith Mandadi, R-B và aaakash3 tạo ra, nhưng không có chương trình nào trong số này chính xác là những gì tôi muốn. Vì vậy, tôi đã học cách viết một số mã cơ bản và thực hiện những gì tôi muốn.

Bước 1: Những gì bạn sẽ cần:

Những gì bạn sẽ cần
Những gì bạn sẽ cần
Những gì bạn sẽ cần
Những gì bạn sẽ cần

Bộ phận và Vật liệu: * Máy tính - Tôi đã sử dụng máy tính Windows hệ điều hành Windows 10

(Tôi chắc chắn có thể sử dụng Linux hoặc Mac, chỉ là tôi không có nên tôi sẽ không trình bày cách sử dụng các hệ điều hành này)

* Bảng Arduino - Tôi đã sử dụng Bảng Arduino Uno, nhưng bất kỳ bảng Arduino nào có USB sẽ làm được

* Cáp USB - Cáp A / B USB - gọi là "cáp máy in" loại cũ (thường đi kèm với Bảng Arduino)

* Cảm biến nhiệt độ / độ ẩm DHT 11- không đắt từ 4 đến 8 đô la

(Lưu ý: có 2 phiên bản tôi đã sử dụng phiên bản 3 chân, phiên bản 4 chân sẽ yêu cầu sử dụng bảng mạch và điện trở 10K, chân 3 có bảng mạch in bao gồm điện trở 10K) xem sơ đồ Fritzing trong các bước tiếp theo

* Dây kết nối

Dây Dupont (hai đầu cái) nếu kết nối với 3 chân DHT11 không có breadboard

Dây nhảy tiêu chuẩn M / F (một đầu nam một đầu nữ) và dây nhảy M / M (cả hai đầu nam) để kết nối 4 chân DHT11 - xem bước 2 để biết thêm thông tin

* Arduino IDE - một chương trình viết các chương trình Arduino (được gọi là bản phác thảo) miễn phí @

www.arduino.cc/en/Main/Software

* Xử lý - một chương trình để viết các bản phác thảo xử lý miễn phí @

processing.org/download/

* "DHTLib" tệp-một tệp thư viện (đây là tệp đi vào chương trình Arduino IDE trong thư mục có tên "Thư viện", tệp này sẽ cần được thêm vào bản phác thảo Arduino trước khi Arduino có thể đọc dữ liệu từ DHT11 -see bước 5 để tải xuống tệp và hướng dẫn

Bước 2: Kết nối Arduino với DHT11

Kết nối Arduino với DHT11
Kết nối Arduino với DHT11
Kết nối Arduino với DHT11
Kết nối Arduino với DHT11
Kết nối Arduino với DHT11
Kết nối Arduino với DHT11
Kết nối Arduino với DHT11
Kết nối Arduino với DHT11

Đầu tiên xác định DHT11 bạn có

Tôi đã sử dụng chân 3 vì nó đã có điện trở 10K cần thiết.

Nếu bạn có chân 4, bạn sẽ cần một điện trở 10K và một breadboard

Kết nối DHT11 với Bảng Arduino. Chương trình này yêu cầu chân tín hiệu DHT 11 được kết nối với chân # 7 của Arduino, chân Pos (+) được kết nối với 5V trên Arduino và Neg (-) với GND trên Arduino.

Tham khảo Sơ đồ và Sơ đồ Fritzing

Bước 3: Tải xuống Arduino IDE

Tải xuống Arduino IDE
Tải xuống Arduino IDE

Tải xuống Arduino IDE và cài đặt trên máy tính

www.arduino.cc/en/Main/Software

Bước 4: Kết nối Arduino với máy tính

Kết nối Arduino với máy tính
Kết nối Arduino với máy tính

Cài đặt Arduino IDE trước tiên nó có trình điều khiển cho kết nối USB Arduino.

Kết nối Arduino với máy tính qua USB.

Chờ máy tính nhận ra bảng Arduino và cài đặt bất kỳ trình điều khiển nào.

Mở chương trình IDE và kiểm tra kết nối nối tiếp.

Nếu bảng Arduino không hiển thị trong cổng Tools> (vòng tròn màu đỏ), hãy đóng IDE và mở lại.

* Quan trọng * khi IDE được mở và bảng Arduino được kết nối qua USB. Bảng Arduino phải được kết nối với đúng cổng nối tiếp. Trên máy tính Windows, cổng này được gọi là Cổng COM. Để thực hiện việc này trong IDE, hãy đi tới Công cụ> Cổng:> Cổng nối tiếp. Như đã thấy trong Sơ đồ, cổng nối tiếp (vòng tròn màu đỏ) phải khớp với cổng được liệt kê ở góc dưới cùng bên phải của chương trình IDE (vòng tròn màu vàng).

Bước 5: Tải thư viện

Tải thư viện
Tải thư viện
Tải thư viện
Tải thư viện
Tải thư viện
Tải thư viện
Tải thư viện
Tải thư viện

Tải thư viện cho DHT11. Điều này khiến tôi bối rối lúc đầu nhưng thực sự khá đơn giản.

Tải xuống tệp có tên “DHTLib” và giải nén. Sao chép tệp “DHTLib” đã giải nén.

Tham khảo về thư viện này có thể được tìm thấy tại:

playground.arduino.cc/Main/DHTLib

(Nó được viết bởi Rob Tillaart dựa trên tác phẩm của những người khác)

Tìm thư mục Arduino trên máy tính của bạn và mở nó. (Nó sẽ ở bất cứ nơi nào bạn tải xuống IDE và cài đặt nó trên máy tính)

Xem sơ đồ

Tìm tệp có tên “thư viện” và mở tệp, sau đó dán thư mục “DHTLib” vào tệp “thư viện”. Đóng nó và sau đó khởi động lại IDE.

Xem sơ đồ

Khi IDE đã mở lại, bạn có thể kiểm tra xem thư viện DHT đã được cài đặt hay chưa. Phác thảo> Bao gồm Thư viện.

Xem sơ đồ

Lưu ý Nhấp vào DHTLib trong tab "bao gồm thư viện" sẽ đặt thư viện vào mã Arduino là "#include dht.h".

Bạn không cần phải làm điều này vì nó đã có trong mã mà bạn sẽ tải xuống trong bước tiếp theo.

Bước 6: Lấy mã Arduino

Nhận mã Arduino
Nhận mã Arduino

Tải xuống tệp Temp_Hum_Instructable.zip và giải nén. Mở Temp_Hum_Instructable.ino bằng Arduino IDE.

Thay vào đó, hãy xem đoạn mã sau và sao chép và dán hoặc nhập chính xác vào Arduino IDE:

#bao gồm

dht DHT; #define DHT11PIN 7 // đặt chân 7 cho kết nối tín hiệu DHT11 void setup () {Serial.begin (9600); // mở serial} void loop () {int chk = DHT.read11 (DHT11PIN); // đọc DHT11 Serial.print (DHT.tempether, 0); // in temp in serial Serial.print (","); // in dấu phẩy trong serial Serial.print (DHT.humidity, 0); // in ra độ ẩm trong serial Serial.println (); // trễ xuống dòng (2000); // đợi 2 giây}

Khi bạn hoàn thành, nó sẽ giống như Sơ đồ ở trên

Bước 7: Nạp mã vào Arduino

Nạp mã vào Arduino
Nạp mã vào Arduino
Nạp mã vào Arduino
Nạp mã vào Arduino
Nạp mã vào Arduino
Nạp mã vào Arduino
Nạp mã vào Arduino
Nạp mã vào Arduino

Đầu tiên Lưu bản phác thảo vào vị trí và với một cái tên mà bạn sẽ nhớ, Ví dụ: Temp_Hum.

Tiếp theo, bạn cần tải bản phác thảo lên bảng Arduino bằng cách nhấn nút Mũi tên trỏ phải (tải lên).

Xem sơ đồ

Quá trình này sẽ mất vài giây; bạn sẽ thấy một thanh tiến trình ở phía dưới bên phải.

Sau đó, bạn sẽ thấy: Đã hoàn tất tải lên thông báo ở phía dưới bên trái và văn bản màu trắng ở cuối IDE cho bạn biết về bộ nhớ

Xem sơ đồ

Nếu bạn nhận được mã lỗi (văn bản màu cam ở cuối IDE) thì đó phải là một trong những mã sau

  1. Thư viện "DHTlib" không được sao chép chính xác
  2. Cổng COM không được đặt đúng
  3. Cảm biến không được kết nối đúng cách
  4. Mã không được tải vào IDE một cách chính xác. Văn bản màu cam có thể được cuộn qua và nó sẽ đưa ra manh mối về điều gì là sai. Quay lại và kiểm tra nó có lẽ là một sai lầm đơn giản.

Sau khi hoàn thành việc này, hãy nhìn kỹ vào bảng Arduino của bạn. Cứ sau vài giây, đèn LED nhỏ bên cạnh các chữ cái “TX” sẽ nhấp nháy. Đây là Arduino gửi thông tin trở lại máy tính. Để kiểm tra điều này, hãy nhấp vào biểu tượng kính lúp nhỏ ở góc trên bên phải của IDE.

Xem sơ đồ

Thao tác này sẽ mở màn hình nối tiếp và hiển thị dữ liệu nhiệt độ và độ ẩm được phân tách bằng dấu phẩy. Bạn sẽ lưu ý rằng dữ liệu nhiệt độ được liệt kê bằng độ C. Được rồi, chúng tôi sẽ chuyển đổi sang độ F sau đó (hoặc không nếu bạn đã chọn).

Xem sơ đồ

Tiếp theo, đóng màn hình nối tiếp và sau đó đóng IDE. (Bạn đã nhớ lưu nó, phải không?). Bây giờ, hãy nhìn lại bảng Arduino (không ngắt kết nối nó khỏi USB, nơi nó đang lấy điện và gửi dữ liệu đến cổng nối tiếp trên máy tính). Nó vẫn đang nhấp nháy? Vâng, tuyệt vời. Sau khi chương trình được tải vào Arduino, nó sẽ chạy miễn là nó có nguồn.

Lưu ý về mã: nếu bạn nhìn vào mã Arduino bắt đầu bằng “void loop ();”. 5 dòng mã tiếp theo yêu cầu Arduino đọc dữ liệu từ DHT và in nó ra bus nối tiếp được phân tách bằng dấu phẩy. Dòng tiếp theo "delay (2000);" yêu cầu Arduino đợi 2 giây (2000 mili giây) để dữ liệu được nhận sau mỗi 2 giây. Sau đó, nó quay trở lại “void loop ();" - một lệnh yêu cầu Arduino thực hiện lại. Thay đổi giá trị trong dòng trễ sẽ thay đổi tần suất nhận dữ liệu. Ví dụ: thay đổi thành (600000) sẽ thay đổi còn 10 phút (600000 mili giây = 10 phút). Việc nhận dữ liệu sau mỗi 2 giây sẽ có rất nhiều dữ liệu, vì vậy, bây giờ bạn biết cách thay đổi tần suất đọc dữ liệu. Chỉ cần nhớ nếu bạn thay đổi giá trị sau này, bạn sẽ cần tải lên chương trình mới.

Được rồi, ngồi lại và hít thở, bạn đã đi được hơn nửa chặng đường. Vâng!!

Bước 8: Tải xuống và cài đặt Xử lý

Xử lý tải xuống và cài đặt
Xử lý tải xuống và cài đặt
Xử lý tải xuống và cài đặt
Xử lý tải xuống và cài đặt

processing.org/download/

Khá thẳng thắn chọn chương trình tương ứng với máy tính của bạn cho windows 64bit so với 32 bit. Nếu bạn không biết, hãy mở Bảng điều khiển trên máy tính của bạn (chế độ xem biểu tượng không phải chế độ xem danh mục) và vào hệ thống, nó sẽ được liệt kê ở đó.

Xem sơ đồ

Tải xuống và sau đó cài đặt chương trình.

Lần đầu tiên bạn mở và chạy quá trình xử lý, bạn có thể sẽ nhận được một thông báo bảo mật Java. Nhấp vào "cho phép" đối với các mạng riêng tư. Java là ngôn ngữ máy tính được sử dụng bởi Process (và Arduino IDE). Điều thú vị là tôi chưa bao giờ có thông báo bảo mật với Arduino IDE, chỉ là Đang xử lý.

Bước 9: Mã xử lý

Mã xử lý
Mã xử lý

OK bây giờ cho mã Xử lý.

Đây là phần thử thách nhất đối với tôi, nhưng cũng là cơ hội học hỏi nhiều nhất. Trong khi mã Arduino có 20 dòng hoặc lâu hơn thì mã này có +/- 270 dòng trong mã chính và hơn 70 dòng khác trong các lớp.

Bây giờ điều đầu tiên bạn nên hỏi là “Lớp học là gì?”. Câu hỏi hay. Điều này đề cập đến lập trình hướng đối tượng. Tóm lại, có rất nhiều thứ đang diễn ra trong mã chính: xác định kích thước và màu sắc của màn hình, đồng hồ, bộ đếm thời gian, mã hiển thị vị trí con trỏ, mã để lưu dữ liệu vào tệp.csv và một vài dòng đối phó với mã hiển thị biểu đồ thanh. Trong khi Arduino IDE có tất cả mã trên một trang, mã xử lý này có ba tab. Đầu tiên là mã chính và hai mã tiếp theo là mã hiển thị biểu đồ thanh. (Mã này thực sự được lưu trữ trong ba tệp riêng biệt trong thư mục Mã xử lý.) Các tab riêng biệt được gọi là “lớp” và được xác định trong các dòng 48 và 56, sau đó được hiển thị bởi các dòng 179-182 của mã chính. Những người viết chương trình Xử lý gọi đây là lập trình hướng đối tượng. (xem: https://processing.org/tutorials/objects/ để biết mô tả ngắn gọn).

Về cơ bản những gì các lớp (Recta1, Recta2) trong mã này làm là tạo ra các hình chữ nhật di chuyển lên và xuống dựa trên dữ liệu nhận được từ DHT11 qua nối tiếp. Hãy nghĩ nhiệt kế kiểu cũ càng lên cao thủy ngân càng nóng, nhưng điều này được thực hiện với dữ liệu không phải thủy ngân. Trên thực tế, các lớp tạo ra bốn hình chữ nhật, hai hình chữ nhật tĩnh đại diện cho nền của nhiệt kế và hai hình chữ nhật động phản hồi dữ liệu và di chuyển lên xuống. Ngoài việc di chuyển các hình chữ nhật, mã thay đổi màu của hình chữ nhật động và màu của màn hình kỹ thuật số Nhiệt độ và Độ ẩm dựa trên dữ liệu nhận được theo nối tiếp.

Bước 10: Xử lý tệp mã

Chỉ một số điều cơ bản về Mã xử lý:

Tôi thực sự khuyên bạn nên đọc Make: Bắt đầu vớiProcessing của Casey Reas và Ben Fry những người sáng lập của Chế biến.

processing.org/books/#reasfry2

Tôi sẽ không cố gắng giải thích tất cả các khía cạnh của Xử lý hoặc viết mã để xử lý. Như tôi đã nói trước đó, tôi là người mới bắt đầu và tôi nghĩ rằng có nhiều người tốt hơn để học hỏi. Tuy nhiên, tôi hiểu mã tôi đã viết (thử và sai là những giáo viên tốt).

1. Đầu tiên phải bao gồm các thư viện (giống như trong Arduino) và khai báo các biến (Dòng 1-25)

2. Tiếp theo thiết lập bảng hiển thị (Dòng 27-63)

3. Chạy một phần lặp lại của mã - ý tôi là phần này của mã sẽ lặp lại miễn là chương trình đang chạy. Bạn sẽ nhớ Trong Arduino “void loop ();” (Bước 6). Trong Xử lý, bây giờ là "void draw ();" (Dòng 65-184)

4. Tiếp theo là lấy dữ liệu từ cổng nối tiếp và gán nó cho các biến (int, float, String)

NS-

trôi nổi-

Dây-

(Dòng 185-245)

4. Là cách cuối cùng để đóng chương trình và lưu dữ liệu (Dòng 246-271)

Ok: Tải xuống tệp Temp_Hum_F_3_2 (cho độ F)

Hoặc Temp_Hum_C_3_1 (dành cho Centigrade)

và giải nén tệp. Mở bằng Xử lý.

Bước 11: Phông chữ trong xử lý

Phông chữ đang được xử lý
Phông chữ đang được xử lý

Quan trọng: Tôi kêu gọi sự chú ý của bạn đến các dòng 36-37

36 font = loadFont ("SourceCodePro-Bold-48.vlw"); // tải phông chữ được lưu trữ trong dữ liệu

thư mục 37 textFont (phông chữ);

Thư viện phông chữ này "SourceCodePro-Bold-48.vlw" được bao gồm trong phần tải xuống tệp Xử lý và không cần phải thay đổi chức năng.

Tuy nhiên, để thay đổi phông chữ thành một cái gì đó khác, bạn sẽ cần phải tải phông chữ mới vào phác thảo Xử lý VÀ thay thế "SourceCodePro-Bold-48.vlw" bằng phông chữ mới.

. May mắn thay, Chế biến đã làm cho phần đầu tiên rất dễ dàng.

Đầu tiên, hãy mở bản phác thảo, sau đó nhấp vào:

Công cụ> Tạo phông chữ

cái này mở ra một cửa sổ

Xem sơ đồ

Cuộn xuống phông chữ mới mà bạn muốn, Bấm vào nó và sau đó bấm OK. Phông chữ hiện đã được tải vào thư mục phác thảo.

Tiếp theo, thay thế văn bản "SourceCodePro-Bold-48.vlw" bằng tên chính xác của phông chữ mới (bao gồm cả định dạng tệp.vlw)

Nếu điều này không được thực hiện, phông chữ mới sẽ không tải vào mã và mã sẽ xuất hiện lỗi (Giống như lỗi trong Arduino- trong hộp đen ở cuối chương trình).

Bước 12: Hoàn thiện

Kết thúc
Kết thúc
Kết thúc
Kết thúc
Kết thúc
Kết thúc
Kết thúc
Kết thúc

Để bắt đầu chương trình Xử lý, hãy nhấp vào mũi tên, bạn có thể nhận được cảnh báo Java, Nhấp vào: Cho phép truy cập.

Xem sơ đồ

OK, chương trình đã hoạt động chưa? Nếu vậy, bạn sẽ nhận được một màn hình như trong sơ đồ.

(Không? Xem cách khắc phục sự cố trong bước tiếp theo)

Đúng? Bây giờ, hãy thử giữ DHT11 trong lòng bàn tay khép kín của bạn hoặc đặt dưới luồng không khí ấm của máy sấy tóc. Các con số sẽ thay đổi. Đúng? Tuyệt vời. điều đó có nghĩa là mọi thứ đang hoạt động tốt.

Để đóng chương trình và lưu dữ liệu, hãy nhấp vào hộp có nội dung "Nhấp vào đây để đóng và lưu dữ liệu".

Bây giờ để tìm dữ liệu đã lưu, hãy chuyển đến thư mục Temp_Hum_F_3_1 hoặc Temp_Hum_C_3_1 Xử lý (bạn có thể tự tìm thấy dữ liệu này ngay bây giờ) mở nó và tìm thư mục Dữ liệu. Mở tệp này và bạn sẽ thấy tệp.csv được đặt tên theo ngày và giờ bạn đóng chương trình (Ví dụ 1-10-18--22-30-16.csv có nghĩa là ngày 10 tháng 1 năm 2018 10:30:16 CH). Mở tệp này bằng Excel (hoặc bảng tính Open office tương đương). Bạn sẽ thấy một cái gì đó giống như sơ đồ. Các cột cho Ngày, Giờ, thời gian chạy, nhiệt độ và độ ẩm với dữ liệu. Bây giờ bạn có thể vẽ biểu đồ dữ liệu bằng excel hoặc bất cứ điều gì bạn muốn làm với nó. (Lưu ý: nếu bạn nhìn vào mục nhập dữ liệu đầu tiên, dữ liệu Nhiệt độ và Độ ẩm không chính xác, điều này là bình thường và chỉ là lỗi khi chương trình bắt đầu lần đầu tiên)

Được rồi !!!!!!

Bạn làm được rồi

Nếu bạn có bất kỳ câu hỏi nào, vui lòng đăng và tôi sẽ cố gắng hết sức để trả lời và giúp đỡ.

Cảm ơn vì đã ở lại với điều này và chúc may mắn. Tôi hy vọng đây chỉ là một sự khởi đầu…..

Tiếp theo cho tôi Bluetooth và có thể là Android….

Bước 13: Khắc phục sự cố

Xử lý sự cố
Xử lý sự cố
Xử lý sự cố
Xử lý sự cố

Vấn đề về Arduino

Nếu bạn nhận được mã lỗi (văn bản màu cam ở cuối IDE) thì đó phải là một trong những mã sau Thư viện "DHTlib" không được sao chép chính xác

Cổng COM không được đặt đúng

Cảm biến không được kết nối đúng cách

Mã không được tải vào IDE một cách chính xác

Nếu tất cả Arduino có vẻ ổn, hãy nhớ mở Serial Monitor và xem dữ liệu có được hiển thị hay không

Nếu bạn thấy dữ liệu chính xác, điều này có nghĩa là phía Arduino đang hoạt động - Hãy nhớ Đóng Serial Monitor trước khi bắt đầu Xử lý, nếu Serial Monitor đang mở Xử lý không thể đọc dữ liệu.

Sự cố xử lý:

Chúng sẽ được hiển thị ở phần dưới cùng của chương trình Xử lý.

Nếu bạn gặp lỗi mô tả "phông chữ", hãy quay lại bước 11 và tải phông chữ như mô tả.

Nếu bạn gặp lỗi giống như: Lỗi, vô hiệu hóa serialEvent () cho COM4 null- chỉ cần khởi động lại phác thảo Xử lý bằng cách nhấp vào mũi tên như trong bước 12

Nếu bạn gặp lỗi cho biết: Lỗi khi mở cổng nối tiếp- hãy thử thay đổi các dòng 32-34 thành dòng nào đó như trong đó "COM4" khớp với cổng COM trong bản phác thảo Arduino của bạn

myPort = newSerial (this, "COM4", 9600); // Cổng myPort.bufferUntil ('\ n') // đợi cho đến khi nối tiếp có dữ liệu

Đề xuất: