Mục lục:

Arduino Datalogger: 8 bước (có hình ảnh)
Arduino Datalogger: 8 bước (có hình ảnh)

Video: Arduino Datalogger: 8 bước (có hình ảnh)

Video: Arduino Datalogger: 8 bước (có hình ảnh)
Video: Lưu log dữ liệu cảm biến nhiệt độ, độ ẩm DHT11 theo thời gian | Logging data from Arduino to Excel 2024, Tháng bảy
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

Trong hướng dẫn này, chúng ta sẽ tạo một bộ ghi dữ liệu đơn giản bằng Arduino. Vấn đề là tìm hiểu những điều cơ bản về cách sử dụng Arduino để nắm bắt thông tin và in ra thiết bị đầu cuối. Chúng tôi có thể sử dụng thiết lập cơ bản này để hoàn thành một loạt nhiệm vụ.

Để bắt đầu:

Bạn sẽ cần một tài khoản Tinkercad (www.tinkercad.com). Đi đầu và đăng ký bằng email hoặc tài khoản mạng xã hội của bạn.

Đăng nhập sẽ đưa bạn đến Trang tổng quan Tinkercad. Nhấp vào "Mạch" ở bên trái và chọn "Tạo mạch mới". Bắt đầu nào!

Bạn có thể tìm thấy toàn bộ tệp trên TInkercad Circuits - Cảm ơn bạn đã xem qua!

Bước 1: Thêm một số thành phần

Thêm một số thành phần
Thêm một số thành phần
Thêm một số thành phần
Thêm một số thành phần
Thêm một số thành phần
Thêm một số thành phần

Bạn sẽ cần một số thành phần cơ bản. Bao gồm các:

  • Bảng Arduino
  • Breadboard

Thêm chúng bằng cách tìm kiếm chúng và nhấp và kéo chúng vào khu vực giữa.

Đặt breadboard trên Arduino. Nó giúp bạn xem các kết nối sau này dễ dàng hơn.

Bước 2: Lưu ý về Breadboards

Lưu ý về Breadboards
Lưu ý về Breadboards

Breadboard là một thiết bị siêu hữu ích để tạo mẫu nhanh. Chúng tôi sử dụng nó để kết nối các thành phần. Một số điều cần lưu ý.

  1. Các dấu chấm được kết nối theo chiều dọc, nhưng dòng ở giữa ngăn cách kết nối này với cột trên cùng và dưới cùng.
  2. Các cột không được kết nối từ trái sang phải, như trên hàng. Điều này có nghĩa là tất cả các thành phần phải được kết nối qua các cột thay vì xuống chúng theo chiều dọc.
  3. Nếu bạn cần sử dụng các nút hoặc công tắc, hãy kết nối chúng qua phần ngắt ở giữa. Chúng tôi sẽ truy cập điều này trong một hướng dẫn sau.

Bước 3: Thêm hai cảm biến

Thêm hai cảm biến
Thêm hai cảm biến

Hai cảm biến chúng tôi đang sử dụng là cảm biến Cảm quang và cảm biến Nhiệt độ.

Các cảm biến này đánh giá ánh sáng và nhiệt độ. Chúng tôi sử dụng Arduino để đọc giá trị và hiển thị nó trong màn hình nối tiếp trên Arduino.

Tìm kiếm và thêm hai cảm biến. Đảm bảo rằng chúng được định vị trên các cột trên breadboard. Đặt đủ không gian giữa chúng để giúp bạn nhìn thấy chúng dễ dàng hơn.

Bước 4: Cảm biến nhạy sáng

Cảm biến nhạy sáng
Cảm biến nhạy sáng
Cảm biến cảm quang
Cảm biến cảm quang
Cảm biến cảm quang
Cảm biến cảm quang
Cảm biến cảm quang
Cảm biến cảm quang
  1. Đối với cảm biến quang, hãy thêm dây từ chân 5V trên Arduino vào cùng cột với chân phải trên phần trong breadboard. Thay đổi màu dây thành màu đỏ.
  2. Kết nối chân trái qua chân trong cùng cột với chân A0 (A-zero) trên Arduino. Đây là chân analog, chúng ta sẽ sử dụng để đọc giá trị từ cảm biến. Màu dây này là màu vàng hoặc màu gì đó khác với màu đỏ hoặc đen.
  3. Đặt một điện trở (tìm kiếm và nhấp-kéo) trên bảng. Điều này hoàn thành mạch và bảo vệ cảm biến và chân.

    • Xoay nó lại để nó đi qua các cột.
    • Kết nối một chân với cột chân phải trên breadboard
    • Đặt một dây từ đầu kia của điện trở xuống đất

      Thay đổi màu dây thành màu đen

  4. Kiểm tra kỹ tất cả các kết nối. Nếu một cái gì đó không ở đúng vị trí, nó sẽ không hoạt động chính xác.

Bước 5: Bắt đầu mã

Bắt đầu mã
Bắt đầu mã
Bắt đầu mã
Bắt đầu mã
Bắt đầu mã
Bắt đầu mã

Hãy xem mã cho thành phần này.

Đầu tiên, hãy nhìn vào hình ảnh thứ ba trong bước này. Nó chứa một số mã với hai chức năng:

void setup ()

void loop ()

Trong C ++, tất cả các hàm đều cung cấp kiểu trả về của chúng, sau đó là tên, sau đó là hai dấu ngoặc nhọn có thể được sử dụng để chuyển vào các đối số, thường là dưới dạng biến. Trong trường hợp này, kiểu trả về là void hoặc không có gì. Tên được thiết lập và hàm không có đối số.

Chức năng thiết lập chạy một lần khi Arduino khởi động (khi bạn cắm hoặc gắn pin).

Hàm vòng lặp chạy trong một vòng lặp liên tục từ phần nghìn giây mà hàm thiết lập hoàn thành.

Mọi thứ bạn đặt trong hàm vòng lặp sẽ chạy khi Arduino chạy. Mọi thứ bên ngoài sẽ chỉ chạy khi được gọi. Giống như nếu chúng ta đã định nghĩa và gọi một hàm khác bên ngoài vòng lặp.

Nhiệm vụ

Mở bảng Mã bằng nút trong Tinkercad. Thay đổi trình đơn thả xuống Khối thành Văn bản. Đồng ý với hộp cảnh báo bật lên. Bây giờ, xóa mọi thứ bạn thấy ngoại trừ văn bản trong hình ảnh thứ ba trong bước này.

Biến

Để bắt đầu, chúng ta cần gán một số biến để chúng ta làm cho mã của mình thực sự hiệu quả.

Các biến giống như các thùng chỉ có thể chứa một đối tượng (C ++ là cái mà chúng ta gọi là hướng đối tượng). Có, chúng ta có mảng, nhưng đây là các biến đặc biệt và chúng ta sẽ nói về chúng sau. Khi chúng ta gán một biến, chúng ta cần cho nó biết kiểu của nó, sau đó cung cấp cho nó một giá trị. Nó trông như thế này:

int someVar = A0;

Vì vậy, chúng tôi đã gán một biến và cho nó kiểu int. Một int là một số nguyên hoặc một số nguyên.

"Nhưng bạn đã không sử dụng một số nguyên!", Tôi nghe bạn nói. Đúng.

Arduino làm điều gì đó đặc biệt cho chúng tôi để chúng tôi có thể sử dụng A0 như một số nguyên, vì trong một tệp khác, nó định nghĩa A0 là một số nguyên, vì vậy chúng tôi có thể sử dụng hằng số A0 để tham chiếu đến số nguyên này mà không cần biết nó là gì. Nếu chúng tôi chỉ nhập 0, chúng tôi sẽ tham chiếu đến chân kỹ thuật số ở vị trí 0, chân này sẽ không hoạt động.

Vì vậy, đối với mã của chúng tôi, chúng tôi sẽ viết một biến cho cảm biến mà chúng tôi đã gắn vào. Mặc dù tôi khuyên bạn nên đặt cho nó một cái tên đơn giản, điều đó tùy thuộc vào bạn.

Mã của bạn sẽ trông như thế này:

int lightSensor = A0;

void setup () {} void loop () {}

Bây giờ, hãy cho Arduino biết cách xử lý cảm biến trên chân đó. Chúng tôi sẽ chạy một chức năng bên trong thiết lập để đặt chế độ ghim và cho Arduino biết vị trí cần tìm.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {}

hàm pinMode cho Arduino biết rằng chân (A0) sẽ được sử dụng làm chân INPUT. Lưu ý camelCaseUsed (xem mỗi chữ cái đầu tiên là viết hoa, vì trong nó có các bướu, do đó… camel…!) Cho các biến và tên hàm. Đây là một quy ước và tốt để làm quen.

Cuối cùng, hãy sử dụng hàm analogRead để lấy một số dữ liệu.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {int read = analogRead (lightSensor); }

Bạn sẽ thấy chúng tôi đã lưu trữ bài đọc trong một biến. Điều này rất quan trọng vì chúng ta cần in nó. Hãy sử dụng thư viện Serial (một thư viện là mã mà chúng ta có thể thêm vào mã của mình để giúp chúng ta viết mọi thứ nhanh hơn, chỉ bằng cách gọi nó theo định nghĩa của nó) để in nó ra màn hình nối tiếp.

int lightSensor = A0;

void setup () {// Đặt chế độ ghim pinMode (lightSensor, INPUT); // Thêm thư viện nối tiếp Serial.begin (9600); } void loop () {// Đọc cảm biến int read = analogRead (lightSensor); // In giá trị ra màn hình Serial.print ("Light:"); Serial.println (đang đọc); // trì hoãn vòng lặp tiếp theo 3 giây delay (3000); }

Một vài điều mới! Đầu tiên, bạn sẽ thấy những điều sau:

// Đây là một bình luận

Chúng tôi sử dụng nhận xét để cho người khác biết mã của chúng tôi đang làm gì. Bạn nên sử dụng chúng thường xuyên. Trình biên dịch sẽ không đọc chúng và chuyển đổi chúng thành mã.

Bây giờ, chúng tôi cũng đã thêm thư viện Serial với dòng

Serial.begin (9600)

Đây là một ví dụ về một hàm nhận đối số. Bạn đã gọi thư viện Serial sau đó chạy một hàm (chúng ta biết đó là một hàm vì dấu ngoặc tròn) và chuyển vào một số nguyên làm đối số, đặt hàm Serial hoạt động ở 9600baud. Đừng lo lắng tại sao - chỉ cần biết nó hoạt động, bây giờ.

Điều tiếp theo chúng tôi làm là in ra màn hình nối tiếp. Chúng tôi đã sử dụng hai chức năng:

// Cái này in ra nối tiếp không có ngắt dòng (nhập ở cuối)

Serial.print ("Light:"); // Cái này đặt dấu ngắt dòng nên mỗi lần chúng ta đọc và ghi, nó sẽ ở một dòng mới Serial.println (reading);

Điều quan trọng cần thấy là mỗi người có một mục đích riêng biệt. Đảm bảo rằng các chuỗi của bạn sử dụng dấu ngoặc kép và bạn để khoảng trắng sau dấu hai chấm. Điều đó giúp người dùng dễ đọc.

Cuối cùng, chúng tôi sử dụng chức năng trì hoãn, để làm chậm vòng lặp của chúng tôi và làm cho nó chỉ đọc ba giây một lần. Điều này được viết trong hàng nghìn giây. Thay đổi nó thành chỉ đọc 5 giây một lần.

Tuyệt vời! Đi thôi!

Bước 6: Mô phỏng

Mô phỏng
Mô phỏng
Mô phỏng
Mô phỏng
Mô phỏng
Mô phỏng

Luôn kiểm tra mọi thứ hoạt động bằng cách chạy mô phỏng. Đối với mạch này, bạn cũng sẽ cần mở trình mô phỏng để kiểm tra xem nó hoạt động và kiểm tra các giá trị của bạn.

Bắt đầu mô phỏng và kiểm tra màn hình nối tiếp. Thay đổi giá trị của cảm biến ánh sáng bằng cách nhấp vào nó và thay đổi giá trị bằng cách sử dụng thanh trượt. Bạn cũng sẽ thấy sự thay đổi giá trị trong màn hình nối tiếp. Nếu không, hoặc nếu khi bạn nhấn nút Bắt đầu mô phỏng, bạn gặp lỗi, hãy cẩn thận quay lại và kiểm tra tất cả mã của bạn.

  • Tập trung vào các dòng được chỉ ra trong cửa sổ gỡ lỗi màu đỏ sẽ được hiển thị cho bạn.
  • Nếu mã của bạn đúng và mô phỏng vẫn không hoạt động, hãy kiểm tra hệ thống dây điện của bạn.
  • Tải lại trang - bạn có thể gặp lỗi hệ thống / máy chủ không liên quan.
  • Lắc tay vào máy tính và kiểm tra lại. Tất cả các lập trình viên đều làm điều này. Tất cả các. Các. Thời gian.

Bước 7: Nối dây cảm biến nhiệt độ

Lên dây cho cảm biến nhiệt độ
Lên dây cho cảm biến nhiệt độ

Tôi sẽ cho rằng bây giờ bạn đang đi đúng hướng. Tiếp tục và nối dây cảm biến nhiệt độ như hình ảnh gợi ý. Lưu ý vị trí của dây 5V và GND trong cùng một không gian với dây của đèn. Điều này là ổn. Nó giống như một mạch song song và sẽ không gây ra sự cố trong trình mô phỏng. Trong một mạch thực tế, bạn nên sử dụng bảng ngắt hoặc tấm chắn để cung cấp khả năng quản lý nguồn và kết nối tốt hơn.

Bây giờ, hãy cập nhật mã.

Mã cảm biến nhiệt độ

Điều này khó hơn một chút, nhưng chỉ vì chúng ta phải thực hiện một số phép toán để chuyển đổi cách đọc. Nó không quá tệ.

int lightSensor = A0;

int tempSensor = A1; void setup () {// Đặt chế độ ghim pinMode (lightSensor, INPUT); // Thêm thư viện nối tiếp Serial.begin (9600); } void loop () {// Cảm biến tạm thời // Tạo hai biến trên một dòng - hiệu quả quá! // Float var để lưu trữ điện áp float thập phân, độC; // Đọc giá trị của chân và chuyển nó thành giá trị từ 0 - 5 // Thực chất là điện áp = (5/1023 = 0,004882814); điện áp = (analogRead (tempSensor) * 0,004882814); // Chuyển đổi sang Độ C độC = (điện áp - 0,5) * 100; // In ra màn hình nối tiếp Serial.print ("Temp:"); Serial.print (độC); Serial.println ("oC"); // Đọc cảm biến int read = analogRead (lightSensor); // In giá trị ra màn hình Serial.print ("Light:"); Serial.println (đang đọc); // trì hoãn vòng lặp tiếp theo 3 giây delay (3000); }

Tôi đã thực hiện một số cập nhật cho mã. Hãy đi qua chúng một cách riêng lẻ.

Đầu tiên, tôi đã thêm dòng

int tempSensor = A1;

Cũng giống như lightSensor, tôi cần lưu trữ giá trị trong một biến để làm cho nó dễ dàng hơn sau này. Nếu tôi phải thay đổi vị trí của cảm biến này (như tua lại bảng) thì tôi chỉ phải thay đổi một dòng mã, không phải tìm kiếm trong toàn bộ cơ sở mã để thay đổi A0 hoặc A1, v.v.

Sau đó, chúng tôi thêm một dòng để lưu trữ số đọc và nhiệt độ trong một phao. Lưu ý hai biến trên một dòng.

điện áp nổi, độC;

Điều này thực sự hữu ích vì nó cắt giảm số dòng tôi phải viết và tăng tốc mã. Tuy nhiên, có thể khó tìm ra lỗi hơn.

Bây giờ, chúng ta sẽ đọc và lưu trữ nó, sau đó chuyển nó thành giá trị đầu ra của chúng ta.

điện áp = (analogRead (tempSensor) * 0,004882814);

độC = (điện áp - 0,5) * 100;

Hai dòng đó trông có vẻ khó khăn, nhưng trong lần đầu tiên chúng tôi lấy số đọc và nhân nó với 0,004… bởi vì nó chuyển đổi 1023 (phép đọc tương tự trả về giá trị này) thành số đọc trên 5.

Dòng thứ hai ở đó nhân số đọc đó với 100 để di chuyển dấu thập phân. Điều đó cung cấp cho chúng tôi nhiệt độ. Gọn gàng!

Bước 8: Thử nghiệm và kiểm tra

Kiểm tra và Kiểm tra
Kiểm tra và Kiểm tra

Tất cả mọi thứ sẽ có kế hoạch, bạn nên có một mạch hoạt động. Kiểm tra bằng cách chạy mô phỏng và sử dụng màn hình nối tiếp. Nếu bạn có sai sót, hãy kiểm tra, kiểm tra lại và lắc tay.

Bạn đã làm cho nó? Chia sẻ và cho chúng tôi biết câu chuyện của bạn!

Đây là mạch cuối cùng được nhúng cho bạn để bạn có thể chơi / kiểm tra tác phẩm cuối cùng. Cảm ơn bạn đã hoàn thành hướng dẫn!

Đề xuất: