Chọn một vi điều khiển cho dự án thu thập dữ liệu chạy bằng pin


17

Tôi đang lên kế hoạch đo mực nước trong giếng, sâu khoảng 10 m với mực nước tối đa lên tới 5 m. Kế hoạch của tôi là sử dụng cảm biến siêu âm HC SR04 để đo độ sâu, truyền nó qua ZigBee đến Raspberry Pi trong nhà tôi.

Như đã thảo luận trong câu hỏi trước của tôi, tôi cần chọn một bộ điều khiển vi mô để kết nối cảm biến siêu âm và mô-đun ZigBee với nhau.

Các tham số để lựa chọn là:

  1. Công suất thấp: Tôi đang dự định chạy cái này trên pin, vì vậy việc sử dụng năng lượng thấp là ưu tiên hàng đầu. Cho đến bây giờ tôi không có bất kỳ mục tiêu nào cho việc sử dụng năng lượng hoặc ngày giữa các lần thay pin hoặc thậm chí sử dụng pin nào. Vì đây là một dự án học tập và nó ở nhà tôi, tôi linh hoạt, nhưng sử dụng năng lượng thấp hơn sẽ tốt hơn.

  2. Chi phí thấp: Đây là một dự án học tập đối với tôi và tôi không muốn chi một số tiền quá lớn cho việc này, vì vậy chi phí thấp hơn sẽ tốt hơn.

  3. Làm việc bên trong một cái giếng: Toàn bộ dự án sẽ được làm việc từ bên trong một cái giếng và sẽ được tiếp xúc với ánh nắng mặt trời và mưa. Tôi sẽ cung cấp một trường hợp tốt và bảo vệ mặc dù.

  4. Dễ dàng để lập trình.

Tôi đã chọn ZigBee vì nó đơn giản, đáp ứng trường hợp sử dụng của tôi và công suất thấp. Nhưng yêu cầu của tôi là vận chuyển dữ liệu cảm biến và tôi mở cho các phương tiện vận chuyển khác. Khoảng cách từ giếng của tôi đến Raspberry Pi là khoảng 6 mét với một bức tường ở giữa. Tôi dự định đo độ sâu của nước cứ sau 10 phút và hai lần một phút khi máy bơm nước hoạt động (khoảng 20 phút mỗi ngày).


2
Điều này cảm thấy khá rộng, hoặc có thể lạc đề. Bất kỳ MCU nhỏ trên bảng sẽ phù hợp. Nếu bạn chưa quyết định sử dụng Zigbee, tôi khuyên bạn nên xem BBC micro: bit, có BLE trên bo mạch và đầu nối pin.
Sean Houlihane

2
Nếu bạn muốn có một đài phát thanh zigbee, ít nhất bạn nên đánh giá các bộ phận kết hợp nó với CPU MCU (điển hình là ARM Cortex-M). Không có nghĩa là bạn phải đi theo con đường đó, nhưng nếu bạn quyết định không đi thì đó là một lý do chính đáng.
Chris Stratton

2
Bạn có ý nghĩa gì bởi "bên trong một cái giếng"? Vụ án sẽ ở dưới nước? Đừng mong đợi bất kỳ truyền hoặc nhận từ các mô-đun Xbee dưới nước. Nhiều người hoạt động trên băng tần 2,4 GHz, được hấp thụ tốt bởi nước; một số khác hoạt động khoảng 900 MHz, có lẽ không thể xuyên qua nước rất tốt. Nếu trường hợp không ở dưới nước, tường 6m + sẽ ổn với xbees.
Jonas Schäfer

"bên trong giếng" có nghĩa là thiết bị sẽ được đặt bên trong giếng, nhưng trên mặt nước.
Raj

Câu trả lời:


19

Một quá trình chung của lựa chọn vi điều khiển.

  1. Tổng hợp các yêu cầu của bạn đối với vi điều khiển. Ví dụ trong trường hợp này:

    • 1 bộ đếm thời gian phần cứng , để đo thời gian giữa các xung kích hoạt và tiếng vang.
    • 2 chân GPIO để giao tiếp với chân Echo và Trigger cảm biến.
    • Có thể UART để giao diện mô-đun truyền thông RF.
    • 1 đầu vào ADC để theo dõi điện áp pin.


    Bạn có thể kết hợp với bộ điều khiển 8 chân cho việc này, điều này có thể yêu cầu sử dụng các chân lập trình viên cho các mục đích chung.

  2. Quyết định hiệu suất CPU cần thiết và yêu cầu bộ nhớ . Có đủ để sử dụng MCU 8 bit hay bạn cần một 32 bit thay thế? Tốc độ xung nhịp CPU nào được chấp nhận hàng chục MHz hoặc 1 MHz là đủ? Cần bao nhiêu bộ nhớ chương trình, RAM và ROM?

    Với ứng dụng được mô tả, bạn không cần hiệu năng tính toán cao. Có lẽ bộ điều khiển 8 bit sẽ đủ (mặc dù sẽ không rẻ hơn bộ điều khiển 32 bit để bạn có thể quyết định ở đây bằng giá có thể).

  3. Công suất thấp . Khi nó không quan trọng, có lẽ bạn có thể kết hợp với hầu hết mọi loại bộ điều khiển sử dụng chế độ năng lượng thấp với điện áp cung cấp thấp nhất và tần số xung nhịp hệ thống. Nếu điều quan trọng hơn, bạn có thể bắt đầu thu hẹp danh sách tìm kiếm của mình bằng cách bắt đầu với các lõi MCU công suất thấp chuyên dụng như (lõi CPU ARM® Cortex®-M0 hoặc M0 +). Thông thường các bảng dữ liệu chứa các bảng cho hầu hết các chế độ năng lượng thấp / tần số VCC / SysClk , những bảng tốt hơn sẽ liệt kê mức tiêu thụ của từng thiết bị ngoại vi.

  4. Công cụ phát triển . Tôi coi đó là một khía cạnh rất quan trọng. Các công cụ lập trình phần cứng chuyên dụng có thể tiêu tốn nhiều tiền vì vậy tôi thường sử dụng MCU mà tôi đã có lập trình viên. Khi bạn chuyển sang một gia đình hoặc thương hiệu khác, tốt nhất là đầu tư vào một ban phát triển có một lập trình viên trên tàu có thể được sử dụng sau này để lập trình các bảng tùy chỉnh của bạn. Nói chung, luôn luôn kiểm tra trước xem chi phí bao nhiêu để có thể tải các chương trình xuống vi điều khiển.

Như @Sean đã chỉ ra trong các nhận xét, một giải pháp khả thi và hiệu quả về chi phí sẽ là tìm kiếm các mô-đun RF như vậy đi kèm với MCU ứng dụng được lập trình, tích hợp, có thể chạy phần sụn của bạn trong khi xử lý cả phần giao tiếp RF. Các mô-đun như vậy tồn tại cho BLE, WiFi và ZigBee và có thể cho nhiều công nghệ khác.

Ngoài ra, làm thế nào bất kỳ MCU sẽ tồn tại trong giếng. Tất cả sẽ xuất hiện trên vỏ bạn sẽ cung cấp cho thiết bị. Ví dụ, sẽ không có vấn đề gì với MCU mà bạn chọn nếu vỏ không chịu được 100% nước.


TL; DR; Ở đây có phần cụ thể của sản phẩm.

  1. Bạn có thể chọn ATtiny25 có giá 0,87 $ / 1 chiếc trên Farnell. 8 bit, 8 pin nên sẽ không tốn nhiều dung lượng. Trong chế độ Tắt nguồn, nó tiêu thụ 0,2 A với bộ giám sát bị vô hiệu hóa, ở mức 3 V. 2-4 A nếu bật bộ giám sát. Nó tương thích với Arduino nên việc lập trình sẽ không tốn nhiều tiền (lập trình viên USBasp hoặc AVRdude có giá khoảng 2 đô la trên eBay). ( Lưu ý rằng : bạn nên sử dụng thư viện Arduino Software serial để giao tiếp với mô-đun giao tiếp RF, vì MCU này chỉ có SPI bằng phần cứng.) Tất cả đều nhỏ, rẻ, với mức tiêu thụ điện tương đối thấp, nhưng UART có thể đập làm phức tạp nó mặc dù. Nó có bộ nhớ chương trình 2 kB là đủ cho bạn.

  2. Hoặc đi với ARM Cortex M0, tiêu thụ 2 A ở chế độ Chờ và 5 A ở chế độ Dừng. MCU như vậy là ví dụ STM32F030F4 có giá 1,09 $ / 1 mảnh . Nó là bộ điều khiển 32 bit mạnh hơn với tần số xung nhịp hệ thống tối đa 48 MHz, nhưng như bạn chỉ có thể thấy với giá + 0,2 $. Nó đi kèm với bộ nhớ chương trình 16 kB, quá đủ cho nhiệm vụ đơn giản này. Nó có SPI, UART, I2C và nhiều thiết bị ngoại vi khác. Lập trình nó sẽ có giá cao hơn, lập trình viên chuyên dụng có giá 20 đô la tại Farnell. Theo tôi, không đáng Thay vào đó, bạn có thể đầu tư vào một ban phát triển cho gia đình F0 có lập trình viên trên tàu (ST-LINK) . STM32F0 Khám phá bảng chi phí ~ 10 $. Bạn có thể bắt đầu tạo mẫu với bảng này và sử dụng nó như một lập trình viên sau này.


3
Lưu ý rằng ST-LINK của bảng khám phá và bảng nhân thường có thể được sử dụng cho các MCU khác ngoài các bảng trên bảng. Không chắc chắn về bảng cụ thể đó, nhưng từ vẻ ngoài của nó, nó sử dụng SWD và có thể được ngắt kết nối bằng cách sử dụng các nút nhảy bên phải. Những điều tốt về điều đó là ST-LINK không chỉ là lập trình viên, nhưng trong mạch gỡ rối , giảm bớt sự phát triển rất nhiều .
Jonas Schäfer

3
Ngoài ra, nếu bạn không quan tâm đến các câu trả lời từ XBEE, bạn có thể sử dụng Giao diện nối tiếp chung của ATtiny để nhận UART nhanh hơn so với triển khai phần mềm bit-banged.
Jonas Schäfer

3
Đáng lưu ý rằng các mô-đun radio thường đi kèm với tài nguyên MCU không chuyên dụng (và các mô-đun tồn tại để đơn giản hóa việc phê duyệt kiểu). CPU thường được chia sẻ với ngăn xếp RF, vì vậy bạn cần chấp nhận các ngắt định kỳ, v.v.
Sean Houlihane

3
ULPBENCH là một tài nguyên tốt khi hoạt động năng lượng thấp (pin) là quan trọng.
neemonyon

5

Nhìn vào sự dễ dàng của lập trình và chi phí thấp, tôi có thể sẽ bắt đầu với một số loại mô-đun Arduino (hoặc bản sao chi phí thấp). Mã cho cảm biến siêu âm của bạn đã tồn tại, cũng như mã ví dụ cho ZigBee, ví dụ sử dụng các mô-đun Digi XBee. Về sau, bạn kết nối XBee với một cổng nối tiếp và sau khi thực hiện kết nối với giao diện lệnh "AT" cũ đáng kính, sau đó bạn có một kênh điểm-điểm mà bạn có thể gửi bất kỳ văn bản nào xuống (đến Raspberry Pi của bạn ). ZigBee không phải là loại truyền thông tầm ngắn rẻ nhất, nhưng các mô-đun XBee đã giảm giá theo giá thực tế trong 5 năm qua.

Tôi biết rằng một số người có vấn đề với ngôn ngữ dựa trên C / C ++ được sử dụng trên Arduino, nhưng trong trường hợp này, bạn phần lớn sẽ hợp nhất với các tập lệnh đã có từ những người dùng khác.

Nếu bạn tìm kiếm "Chế độ ngủ Arduino", bạn sẽ tìm thấy các ví dụ về cách bạn có thể đưa Arduino vào chế độ năng lượng thấp và thức dậy một cách rời rạc để đọc, giao tiếp, sau đó vào lại chế độ ngủ.


1
Mặc dù có thể quản lý năng lượng tốt với chip ATmega, nhưng một bo mạch Arduino điển hình có các cống năng lượng ký sinh sẽ hạn chế mạnh mẽ thời lượng pin.
Chris Stratton
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.