Cách hiệu quả nhất về năng lượng để liên tục tiết kiệm 2 kilobyte dữ liệu mỗi giây


7

Tôi muốn liên tục lưu dữ liệu đến từ các cảm biến (đối với trình theo dõi hoạt động) trong khi tiêu thụ ít pin nhất có thể (tôi muốn có quyền tự chủ 4/5 ngày trên pin 3000 mAh) nhưng tôi không thể tìm thấy tốt nhất cách tiết kiệm khoảng 2 kBytes / s trên bộ nhớ đủ lớn để chứa vài ngày dữ liệu.

Các cảm biến sẽ được đọc với tốc độ 20 lần mỗi giây và tạo ra khoảng 100 byte mỗi lần.

Tôi có những lựa chọn nào để:

  • lưu trữ một lượng dữ liệu như vậy (phần cứng)?
  • Đảm bảo hệ thống có thể hoạt động đúng với quyền tự chủ cần thiết?

2
Những lựa chọn bạn đã khám phá? Ngoài ra, 2KB / s là rất nhiều dữ liệu. Bạn có chắc chắn tất cả đều cần thiết và không có dư thừa?
asheeshr

1
Bạn cần làm rõ nhu cầu của mình hơn nữa: bạn sử dụng bo mạch Arduino nào, có những loại cảm biến nào, bạn cần gì để tiết kiệm 2KB / s này? Điều quan trọng là phải hiểu rằng không có Arduino một mình sẽ có đủ bộ nhớ để lưu trữ 2KB / s trong nhiều ngày.
jfpoilpret

1
@AsheeshR Chà, tôi đã tính toán rằng tất cả dữ liệu tới 20 lần mỗi giây sẽ là về điều đó (2KB / giây), vâng, đúng vậy, vì sẽ rất khó để nhận ra hoạt động, Arduino có thể sẽ không có sức mạnh tính toán như vậy, vì vậy tôi cần phải làm điều đó sau, trên máy tính.
Trevor

1
Thẻ SD ở khắp mọi nơi với mức tiêu thụ hiện tại. 5mA trong khi viết là mức thấp nhất tôi từng thấy, 100mA cao nhất, nhưng thông số kỹ thuật cho phép 200mA. Điển hình có thể là 30-50mA. Chúng sử dụng khá nhiều năng lượng khi sử dụng giao diện SPI.
Cybergibbons

1
Tôi nghĩ rằng điều quan trọng là phải trả lời câu hỏi được gợi ý bởi jfpoilpret , đó là: Dữ liệu bạn đang lưu trữ là gì? Có cách nào để tiêu thụ số lượng chu kỳ tính toán tối thiểu trên Arduino để đóng gói dữ liệu này gọn hơn một chút. 2kB / s là một lượng dữ liệu hợp lý để vi điều khiển thu thập và gửi đến bộ lưu trữ. Và vâng, để ghi dữ liệu, thẻ SD là lựa chọn tốt nhất, nếu chỉ thực tế là thẻ có thể được chuyển sang máy tính để phân tích dữ liệu phù hợp.
WineSoaken 16/03 '

Câu trả lời:


4

Có hai ràng buộc ở đây và tôi nghĩ nó có thể đưa bạn vào một góc. Kích thước và sau đó sức mạnh.

2Kbyte / s là 2 * 60 * 60 * 24/1024 = 168,75Mbyte / ngày. Điều này là rất nhiều. Công nghệ duy nhất có sẵn có thể được sử dụng với một bộ vi xử lý nhỏ có thể lưu trữ khối lượng dữ liệu này là thẻ SD. Không có EEPROM nối tiếp hoặc chip flash lớn như vậy và Arduino, theo như tôi biết, không thể đối phó với đèn flash NAND được sử dụng trong thẻ nhớ USB và thẻ SD.

Tuy nhiên, thẻ SD có thể tương đối đói điện. Họ vẽ giữa 5mA và 100mA khi viết, thường là khoảng 30-50mA. Thông số kỹ thuật SD cho biết tối đa là 200mA. Viết cũng khá dài vì chúng hoạt động trên các khối dữ liệu chứ không phải các ô riêng lẻ. Tôi chưa bao giờ thực hiện một phân tích đầy đủ về việc họ sử dụng bao nhiêu năng lượng, nhưng nó không đáng kể và nhiều, nhiều hơn nhiều so với EEPROM nối tiếp hoặc flash.

Vì vậy, lựa chọn duy nhất của bạn, nếu bạn phải lưu trữ nhiều như vậy, là đi với thẻ SD.

Tôi sẽ điều tra nén dữ liệu. Ngay cả các chương trình rất cơ bản có thể tạo ra một sự khác biệt rất lớn.


Cảm ơn bạn vì câu trả lời ! Bạn nghĩ gì về việc lưu dữ liệu trên một bộ nhớ flash công suất thấp nhỏ (như thế này: adafbean.com/products/1564 ) và sau đó, khi bộ nhớ này đầy, lưu nó vào thẻ SD? Nó sẽ không tiết kiệm điện?
Trevor 17/03/2016

Có, có tiềm năng để tiết kiệm điện. Sẽ tốt hơn nhiều khi ghi vào thẻ SD trong các khối lớn vì ngay cả khi bạn thay đổi một byte đơn, nó vẫn phải cập nhật toàn bộ khối. Khối đó lớn đến mức nào, tôi không nhớ lại.
Cyberg Ribbon 17/03/2016

Trên thực tế, tôi nghĩ rằng một Arduino có thể có thể đối phó với đèn flash NAND trần (ít nhất là nếu một vài trong số các chân đã được sử dụng, hoặc người ta sẵn sàng thêm một chốt bên ngoài để làm bộ khử nhiễu), nhưng người ta sẽ phải tham khảo các bảng dữ liệu để xem mức tiêu thụ năng lượng sẽ thấp hơn thẻ SD được chọn cẩn thận.
Chris Stratton

1

Điều này sẽ có thể với một thẻ SD tiêu chuẩn.

Sức chứa

Sử dụng một số tính toán đơn giản, tôi có thể thấy rằng viết ở tốc độ 2kB / giây trong 5 ngày sẽ chỉ tiêu tốn 0,8 GB. Bạn có thể nhận được bằng thẻ 1 hoặc 2 GB.

Tốc độ

Tôi đã tìm thấy điểm chuẩn này , cho biết có thể ghi dữ liệu thẻ SD từ Arduino với tốc độ 192 kB / s, mức này là quá đủ cho nhu cầu của bạn.

Có rất nhiều hướng dẫn và ví dụ tuyệt vời về việc sử dụng thẻ SD với Arduino. Các tài liệu chính thức luôn là một nơi tốt để bắt đầu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.