Với tư cách là Kỹ sư / Nhà phát triển, chúng tôi luôn dựa vào dữ liệu thu thập được để thiết kế hoặc cải tiến hệ thống. Ghi dữ liệu và phân tích chúng là một thực tế phổ biến trong hầu hết các ngành công nghiệp, ở đây chúng tôi đang xây dựng Dự án ghi dữ liệu Arduino, nơi chúng tôi sẽ tìm hiểu cách chúng tôi có thể ghi dữ liệu vào một khoảng thời gian cụ thể. Chúng tôi sẽ sử dụng bảng Arduino để đọc một số dữ liệu (ở đây là nhiệt độ, độ ẩm, ngày và giờ) và lưu chúng trên thẻ SD và máy tính đồng thời.
Có thể dễ dàng mở dữ liệu đã lưu trong Trang tính Excel để phân tích thêm. Để duy trì ngày và giờ, chúng tôi sẽ sử dụng mô-đun RTC nổi tiếng DS3231 và để lấy Nhiệt độ và Độ ẩm, chúng tôi sẽ sử dụng Cảm biến DHT11. Vào cuối dự án, bạn sẽ học
- Cách đăng nhập dữ liệu vào thẻ SD với các giá trị Ngày, Giờ và cảm biến.
- Cách ghi dữ liệu trực tiếp vào Trang tính Excel trên PC thông qua giao tiếp nối tiếp.
Vật liệu thiết yếu:
- Breadboard
- Arduino UNO (bất kỳ bảng Arduino nào)
- DHT11 Cảm biến nhiệt độ
- Mô-đun RTC DS3231
- Mô-đun thẻ SD
- thẻ SD
- Kết nối dây
- Máy tính / Máy tính xách tay
Sơ đồ mạch:
Sơ đồ mạch cho Dự án ghi nhiệt độ Arduino này được hiển thị bên dưới.
Như được hiển thị trong sơ đồ mạch, các kết nối rất đơn giản vì chúng tôi đã sử dụng chúng làm mô-đun, chúng tôi có thể trực tiếp xây dựng chúng trên bảng mạch. Các kết nối được phân loại thêm trong bảng dưới đây
Pin Arduino |
Pin mô-đun |
Cảm biến nhiệt độ - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
Ngoài |
Pin 7 |
Mô-đun RTC DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Pin A5 |
SDA |
Ghim A4 |
Mô-đun thẻ SD |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
Pin 12 |
MOSI |
Pin 11 |
SCK |
Pin 13 |
CS |
Pin 4 |
Bạn có thể thay thế cảm biến nhiệt độ DHT11 bằng bất kỳ cảm biến nào mà từ đó bạn cần ghi lại các giá trị. Bạn có thể kiểm tra LM35 bằng Arduino để đọc nhiệt độ.
Mô-đun RTC DS3231 được giao tiếp với Arduino bằng giao tiếp I2C (SCL, SDA) và mô-đun thẻ SD được giao tiếp bằng Giao tiếp SPI (MISO, MOSI, SCK, CS). Các chân 4 và 7 được xác định là chân CS và chân ra bằng chương trình Arduino, bạn có thể thay đổi chúng thành bất kỳ chân nào khác nếu được yêu cầu. Trước đây chúng tôi đã giao tiếp thẻ SD với Arduino trong dự án Trình phát nhạc.
Giải thích chương trình Arduino:
Chúng ta phải viết chương trình Arduino có thể làm những việc sau.
- Đọc dữ liệu từ Cảm biến DTH11 (hoặc bất kỳ dữ liệu nào khác mà bạn muốn ghi lại).
- Khởi tạo bus I2C để đọc dữ liệu từ mô-đun RTC.
- Khởi tạo bus SPI để giao tiếp mô-đun thẻ SD với Arduino.
- Lưu ngày, giờ, nhiệt độ và độ ẩm vào thẻ SD.
- Lưu trữ Ngày, Giờ, Nhiệt độ và Độ ẩm trên Trang tính Excel chạy trên máy tính / Máy tính xách tay.
Các bước trên nghe có vẻ phức tạp nhưng chúng rất dễ dàng vì chúng tôi có các thư viện để thực hiện công việc khó khăn cho chúng tôi. Bạn phải tải xuống hai thư viện sau
- Thư viện cảm biến DHT11 từ GitHub
- Thư viện mô-đun DS3231 RTC từ Rinky-Dink Electronics
Khi bạn đã tải xuống thư viện, hãy thêm chúng vào IDE Arduino của bạn bằng cách làm theo
Sketch-> Bao gồm Thư viện -> Thêm Thư viện.ZIP
Để cung cấp dữ liệu từ Arduino sống động vào trang tính Excel trên máy tính, chúng tôi cũng sẽ cần cài đặt phần mềm có tên PLX-DAQ do Parallax Inc. cung cấp. Hãy nhấp vào liên kết để tải xuống tệp và cài đặt chúng dựa trên hệ điều hành của bạn. Điều này nên tạo một thư mục có tên PLS-DAQ trên màn hình của bạn. Chúng tôi sẽ giải quyết nó sau trong phần làm việc của chúng tôi.
Bây giờ sau khi thêm cả hai thư viện và sau khi cài đặt phần mềm, bạn có thể sử dụng Mã hoàn chỉnh (được cung cấp ở cuối hướng dẫn) và tải chúng lên Arduino của bạn. Tôi đã cố gắng hết sức để giữ cho mã đơn giản nhất có thể và các giải thích cũng được đưa ra thông qua các phần bình luận. Hơn nữa, tôi sẽ giải thích các phân đoạn quan trọng bên dưới.
1. Đọc dữ liệu từ DS3231:
DS3231 là một mô-đun RTC (Đồng hồ thời gian thực). Nó được sử dụng để duy trì ngày và giờ cho hầu hết các dự án Điện tử. Mô-đun này có nguồn điện di động đồng xu của riêng nó, sử dụng nó để duy trì ngày và giờ ngay cả khi nguồn điện chính bị ngắt hoặc MCU đã hoạt động sau khi khôi phục cài đặt gốc. Vì vậy, một khi chúng tôi đặt ngày và giờ trong mô-đun này, nó sẽ luôn theo dõi.
Sử dụng mô-đun này rất dễ dàng vì thư viện được cung cấp bởi Arduino.
// Init DS3231 bằng giao diện phần cứng DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Khởi tạo đối tượng rtc rtc.begin (); // #### các dòng sau có thể được bỏ ghi chú để đặt ngày và giờ lần đầu tiên ### / * rtc.setDOW (FRIDAY); // Đặt Ngày trong tuần thành CHỦ NHẬT rtc.setTime (18, 46, 45); // Đặt thời gian thành 12:00:00 (định dạng 24hr) rtc.setDate (6, 30, 2017); // Đặt ngày thành ngày 1 tháng 1 năm 2014 * /}
Lưu ý: Khi sử dụng mô-đun này lần đầu tiên, bạn phải đặt ngày và giờ. Nó có thể được thực hiện bằng cách đơn giản loại bỏ các bình luận như đã đề cập ở trên và ghi ngày và giờ. Hãy chắc chắn rằng bạn nhận xét lại họ và tải nó lên, nếu không mỗi lần bạn chạy bảng, ngày và giờ sẽ được thiết lập lại. Bạn cũng có thể sử dụng IC RTC DS1307 để đọc thời gian với Arduino.
2. Đọc dữ liệu từ DHT11:
DHT11 là một cảm biến Nhiệt độ đến Độ ẩm. Nó gửi các giá trị nhiệt độ và độ ẩm dưới dạng dữ liệu 8 bit nối tiếp nhau thông qua chân đầu ra của mô-đun. Thư viện đọc dữ liệu này bằng cách sử dụng chức năng nối tiếp phần mềm của Arduino.
#define DHT11_PIN 7 // Chân đầu ra của cảm biến được kết nối với chân 7 dht DHT; // Đối tượng cảm biến có tên là DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Ở đây tôi đã kết nối chân đầu ra với chân 7, ví dụ bạn có thể chọn bất kỳ chân nào hỗ trợ Software Serial. Đang gọi DHT.read (số pin); sẽ đọc giá trị của nhiệt độ và độ ẩm và lưu nó trong tham số DHT.tempe Heat và DHT.Humidity tương ứng. Đồng thời kiểm tra Đo nhiệt độ Arduino dựa trên DHT11 này.
3. Khởi tạo mô-đun thẻ SC:
void Initialize_SDcard () {// xem thẻ hiện có và có thể được khởi tạo hay không: if (! SD.begin (chipSelect)) {Serial.println ("Thẻ bị lỗi, hoặc không có"); // không làm gì thêm: return; } // Mở tập tin. lưu ý rằng chỉ có thể mở một tệp tại một thời điểm, // vì vậy bạn phải đóng tệp này trước khi mở tệp khác. File dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // nếu tệp có sẵn, hãy ghi vào tệp: if (dataFile) {dataFile.println ("Ngày, Giờ, Nhiệt độ, Độ ẩm"); // Ghi dòng đầu tiên của tệp excel dataFile.close (); }}
Sử dụng thẻ SD với Arduino rất dễ dàng vì thư viện thẻ SD sẽ được thêm vào Arduino IDE theo mặc định. Trong chức năng khởi tạo thẻ SD, chúng tôi sẽ tạo một tệp văn bản có tên “LoggerCD.txt” và viết hàng đầu tiên của nội dung của chúng tôi. Ở đây chúng tôi phân tách các giá trị bằng cách sử dụng “,” làm dấu phân cách. Có nghĩa là khi dấu phẩy được đặt có nghĩa là chúng ta phải di chuyển đến ô tiếp theo trong trang tính Excel.
4. Ghi dữ liệu vào thẻ SD
void Write_SDcard () {// mở tệp. lưu ý rằng chỉ có thể mở một tệp tại một thời điểm, // vì vậy bạn phải đóng tệp này trước khi mở tệp khác. File dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // nếu tệp có sẵn thì ghi vào tệp đó: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Lưu trữ ngày tháng trên thẻ SD dataFile.print (","); // Di chuyển đến cột tiếp theo bằng cách sử dụng "," dataFile.print (rtc.getTimeStr ()); // Lưu trữ ngày tháng trên thẻ SD dataFile.print (","); // Di chuyển đến cột tiếp theo bằng cách sử dụng "," dataFile.print (DHT.tempeosystem); // Lưu trữ ngày tháng trên thẻ SD dataFile.print (","); // Di chuyển đến cột tiếp theo bằng cách sử dụng "," dataFile.print (DHT.humidity); // Lưu trữ ngày tháng trên thẻ SD dataFile.print (","); // Di chuyển đến cột tiếp theo bằng cách sử dụng "," dataFile.println (); // Cuối Hàng di chuyển đến hàng tiếp theo dataFile.close ();// Đóng tệp} else Serial.println ("OOPS !! Ghi thẻ SD không thành công"); }
Như đã nói trước đó, mục đích của chúng tôi là lưu Ngày, Giờ, Nhiệt độ và Độ ẩm vào thẻ SD. Với sự trợ giúp của thư viện DS3231 và thư viện DHT11, Arduino của chúng tôi sẽ có khả năng đọc tất cả bốn tham số này và lưu trữ chúng thành các tham số sau như được hiển thị trong bảng bên dưới
Ngày |
rtc.getDateStr ()); |
Thời gian |
rtc.getTimeStr ()); |
Nhiệt độ |
DHT. Nhiệt độ |
Độ ẩm |
DHT. độ ẩm |
Bây giờ chúng ta có thể sử dụng trực tiếp các thông số này để lưu trữ chúng trên thẻ SD bằng cách sử dụng dòng in
dataFile.print (tham số);
Bạn có thể nhận thấy rằng mỗi tham số được phân tách bằng dấu phẩy để làm cho nó trông dễ đọc và dataFile.println (); được sử dụng để chỉ cuối dòng.
5. Ghi dữ liệu vào PLX-DAQ
PLX-DAQ là phần mềm Microsoft Excel Plug-in giúp chúng ta ghi các giá trị từ Arduino vào trực tiếp tệp Excel trên Máy tính xách tay hoặc PC của mình. Đây là sở thích cá nhân của tôi vì hai lý do:
1.Bạn có thể ghi và theo dõi dữ liệu cùng một lúc và cung cấp cho chúng tôi cách vẽ chúng dưới dạng đồ thị.
2. Bạn không cần Mô-đun RTC như DS3231 để theo dõi ngày và giờ. Bạn có thể chỉ cần sử dụng ngày và giờ chạy trên Máy tính xách tay / máy tính của mình và lưu chúng trực tiếp trên Excel.
Để sử dụng phần mềm này với Arduino, chúng ta phải gửi dữ liệu tuần tự theo một mẫu cụ thể giống như hiển thị giá trị trên màn hình nối tiếp. Các dòng chính được giải thích bên dưới:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // xóa mọi dữ liệu còn sót lại từ các dự án trước Serial.println ("LABEL, Ngày, Giờ, Nhiệt độ, Độ ẩm"); // luôn ghi LABEL, để chỉ ra nó ở dòng đầu tiên} void Write_PlxDaq () {Serial.print ("DATA"); // luôn ghi "DATA" để Inidicate sau đây là Data Serial.print (","); // Di chuyển đến cột tiếp theo bằng dấu "," Serial.print ("DATE"); // Lưu trữ ngày tháng trên Excel Serial.print (","); // Di chuyển đến cột tiếp theo bằng dấu "," Serial.print ("TIME"); // Lưu trữ ngày tháng trên Excel Serial.print (","); // Di chuyển đến cột tiếp theo bằng dấu "," Serial.print (DHT.tempeosystem); // Lưu trữ ngày tháng trên Excel Serial.print (","); // Di chuyển đến cột tiếp theo bằng dấu "," Serial.print (DHT.humidity);// Lưu trữ ngày tháng trên Excel Serial.print (","); // Di chuyển đến cột tiếp theo bằng dấu "," Serial.println (); // Cuối hàng chuyển sang hàng tiếp theo}
Phần mềm có thể nhận ra các từ khóa như LABEL, DATA, TIME, DATE, v.v. Như được hiển thị trong chức năng Khởi tạo, từ khóa “LABEL” được sử dụng để viết ROW đầu tiên của trang tính Excel. Sau đó trong chức năng Viết, chúng tôi sử dụng từ khóa “DATA” để chỉ ra rằng thông tin sau đây nên được coi là DỮ LIỆU. Để chỉ ra rằng chúng ta phải chuyển sang hàng tiếp theo, chúng ta phải sử dụng dấu phẩy (“,”). Để chỉ ra cuối hàng, chúng ta phải gửi một Serial.println ();.
Như đã nói trước đó, chúng ta có thể viết ngày và giờ hệ thống bằng cách gửi các từ khóa “DATE” và “TIME” tương ứng như hình trên.
Lưu ý: Không sử dụng màn hình nối tiếp khi sử dụng phần mềm PLX_DAQ này.
Giải thích làm việc:
Hoạt động của Trình ghi dữ liệu Arduino rất đơn giản. Khi phần cứng và phần mềm đã sẵn sàng, đã đến lúc ghi chương trình vào Bảng Arduino của bạn. Ngay sau khi chương trình của bạn được tải lên, các giá trị nhiệt độ và độ ẩm sẽ bắt đầu được lưu trữ trong thẻ SD của bạn. Bạn phải làm theo các bước dưới đây để cho phép PLX-DAQ đăng nhập vào trang tính Excel trong máy tính.
Bước 1: Mở tệp “Bảng tính Plx-Daq” được tạo trên màn hình của bạn trong khi cài đặt.
Bước 2: Nếu có khối Bảo mật, bạn bấm vào Tùy chọn-> Bật nội dung -> Kết thúc -> OK để ra màn hình sau.
Bước 3: Bây giờ chọn tốc độ truyền là “9600” và cổng mà Arduino của bạn được kết nối và nhấp vào Kết nối. Các giá trị của bạn sẽ bắt đầu được ghi lại như thể hiện trong hình bên dưới.
Bạn có thể để trang tính excel này mở và theo dõi các giá trị khi chúng được ghi lại. Vì điều này đang xảy ra, thẻ SD của chúng tôi cũng sẽ lưu các giá trị tương tự. Để kiểm tra xem nó có hoạt động hay không, chỉ cần tháo thẻ SD và mở nó trên Máy tính của bạn. Bạn sẽ tìm thấy một tệp văn bản có tên “LoggerCD.txt” trong đó. Khi mở ra, nó sẽ trông giống như thế này.
Tệp này có dữ liệu, nhưng sẽ khó phân tích chúng trên sổ ghi chú. Do đó, chúng tôi có thể mở nó trên Excel dưới dạng tệp CSV (các giá trị được phân tách bằng dấu phẩy), do đó làm cho nó hiệu quả hơn. Để mở trong excel
1.Mở Excel. Nhấp vào Tệp-> Mở và chọn “Tất cả tệp” ở góc dưới cùng bên phải và chọn tệp “LoggerCD” từ thẻ SD. Thao tác này sẽ mở trình hướng dẫn nhập văn bản.
2. nhấp vào “Tiếp theo” và chọn dấu phẩy làm dấu phân cách. Nhấp vào “Tiếp theo” một lần nữa. Sau đó Kết thúc.
3.Bây giờ các giá trị của bạn sẽ được mở trong tệp Excel như hình dưới đây
Tôi đã ghi lại các giá trị cho mỗi 5 giây; bạn có thể ghi lại chúng vào bất kỳ thời gian mong muốn nào bằng cách thay đổi chức năng trì hoãn trong chương trình. Để hiểu chi tiết về công việc, vui lòng xem video dưới đây.
Hy vọng bạn thích dự án, nếu bạn có bất kỳ nghi ngờ nào, hãy viết chúng trong phần bình luận bên dưới và tôi sẽ giúp bạn.
Cải tiến phần thưởng- Ghi nhật ký dữ liệu không dây bằng Arduino:
Khi bạn đã thành công cho đến thời điểm này, thì với một vài cải tiến và chỉ cần thêm một vài dòng mã, bạn có thể ghi dữ liệu không dây.
Chỉ cần kết nối Thiết bị Bluetooth như HC-05 và ghi dữ liệu vào PLX-DAQ qua Bluetooth thay vì Serial. Đó là thay thế Serial.print (tham số); với BluetoothName.print (tham số); và kết nối Máy tính xách tay của bạn với Mô-đun Bluetooth, chọn cổng COM mà Máy tính xách tay Bluetooth của bạn được kết nối và Taadaaa…… Bạn có Hệ thống ghi dữ liệu không dây hoạt động nhanh chóng.