Mục lục:
- Bước 1: Lựa chọn thành phần
- Bước 2: Thi công
- Bước 3: Mã - Thư viện cảm biến công suất thấp, Giao diện người dùng và Phác thảo Arduino
- Bước 4: Đo dòng điện cung cấp
- Bước 5: Tổng nguồn cung cấp hiện tại và tuổi thọ pin
- Bước 6: Cung cấp các giải pháp thay thế - Hỗ trợ năng lượng mặt trời, Chỉ pin, Chỉ năng lượng mặt trời
- Bước 7: Kết luận
Video: Dễ dàng BLE công suất rất thấp trong Arduino Phần 2 - Theo dõi nhiệt độ / độ ẩm - Rev 3: 7 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:30
Cập nhật: 23 tháng 11 năm 2020 - Thay thế lần đầu tiên 2 x pin AAA kể từ ngày 15 tháng 1 năm 2019, tức là 22 tháng cho 2xAAA Alkaline dữ liệu
Cập nhật: ngày 24 tháng 3 năm 2019 - Phiên bản 2 của lp_BLE_TempHumidity, thêm nhiều tùy chọn cốt truyện và i2c_ClearBus
Hướng dẫn này, Màn hình độ ẩm nhiệt độ công suất rất thấp, là Phần 2 của 3.
Phần 1 - Xây dựng các thiết bị BLE công suất rất thấp dễ dàng với nắp đậy Arduino thiết lập Arduino để mã hóa các thiết bị công suất thấp nRF52, mô-đun lập trình và đo dòng điện cung cấp. Nó cũng bao gồm các bộ định thời và so sánh công suất thấp chuyên dụng và các đầu vào được gỡ lỗi và sử dụng pfodApp để kết nối và điều khiển thiết bị nRF52.
Phần 2 - Màn hình độ ẩm nhiệt độ công suất rất thấp, phần này bao gồm việc sử dụng mô-đun Redbear Nano V2 và cảm biến nhiệt độ / độ ẩm Si7021 để tạo pin năng lượng thấp / màn hình năng lượng mặt trời. Nó cũng bao gồm việc sửa đổi thư viện Si7021 thành công suất thấp, điều chỉnh thiết bị BLE để giảm mức tiêu thụ hiện tại xuống <25uA và thiết kế màn hình hiển thị nhiệt độ / độ ẩm tùy chỉnh cho điện thoại di động của bạn.
Phần 3 - Vỏ thay thế Redbear Nano V2 sử dụng các mô-đun dựa trên nRF52 khác thay vì Nano V2. Nó bao gồm việc lựa chọn các thành phần cung cấp, xây dựng, loại bỏ bảo vệ lập trình chip nRF52, sử dụng các chân NFC như GPIO thông thường và xác định một bo mạch nRF52 mới trong Arduino.
Tài liệu hướng dẫn này là một ứng dụng thực tế của Phần 1 Xây dựng các thiết bị BLE công suất rất thấp được thực hiện dễ dàng với Arduino bằng cách xây dựng Màn hình nhiệt độ và độ ẩm BLE công suất rất thấp. Màn hình sẽ chạy trong nhiều năm trên Coin Cell hoặc 2 x pin AAA, thậm chí lâu hơn với hỗ trợ năng lượng mặt trời. Hướng dẫn này bao gồm việc điều chỉnh các thông số BLE để tiêu thụ điện năng thấp và cách cấp nguồn cho thiết bị của bạn từ pin HOẶC pin + năng lượng mặt trời HOẶC chỉ bằng năng lượng mặt trời.
Cũng như hiển thị nhiệt độ và độ ẩm hiện tại, màn hình lưu trữ các số đọc trong 36 giờ trong 10 phút cuối cùng và 10 ngày cuối cùng của các số đọc hàng giờ. Chúng có thể được lập biểu đồ trên điện thoại di động Android của bạn và các giá trị được lưu vào tệp nhật ký. Không cần lập trình Android, pfodApp xử lý tất cả những điều đó. Màn hình và biểu đồ Android được kiểm soát hoàn toàn bởi bản phác thảo Arduino của bạn, do đó bạn có thể tùy chỉnh theo yêu cầu.
Bo mạch Redbear Nano V2 được sử dụng cho thành phần BLE nRF52832 và bo mạch đột phá Sparkfun Si7021 được sử dụng cho Cảm biến nhiệt độ / độ ẩm. Một thư viện công suất thấp đã sửa đổi được sử dụng với Si7021. Một PCB nhỏ được thiết kế để chứa NanoV2 và cung cấp các thành phần. Tuy nhiên, vì không có các thành phần gắn trên bề mặt được sử dụng, bạn có thể dễ dàng xây dựng nó trên bo mạch chủ. Ba phiên bản cung cấp điện được bảo hiểm. i) Pin cộng với hỗ trợ năng lượng mặt trời, ii) Chỉ pin, iii) Chỉ năng lượng mặt trời. Tùy chọn Solar Only không có bất kỳ bộ lưu trữ pin nào và vì vậy sẽ chỉ chạy khi có ánh sáng. Đèn phòng sáng hoặc đèn bàn là đủ.
Đề cương
Dự án này có 4 phần độc lập tương đối: -
- Lựa chọn và xây dựng thành phần
- Mã - Thư viện cảm biến công suất thấp, Giao diện người dùng và Phác thảo Arduino
- Đo dòng điện cung cấp và tuổi thọ pin
- Cung cấp các giải pháp thay thế - Hỗ trợ năng lượng mặt trời, Chỉ pin, Chỉ năng lượng mặt trời
Bước 1: Lựa chọn thành phần
Lựa chọn thành phần
Như đã đề cập trong Phần 1 - Mẹo để có được một giải pháp điện năng thực sự thấp là hầu hết thời gian không làm gì cả, giảm thiểu dòng điện qua các điện trở kéo lên / kéo xuống bên ngoài trên đầu vào và không có bất kỳ thành phần phụ nào. Dự án này sẽ sử dụng từng thủ thuật đó để có được giải pháp điện năng thấp.
Thành phần nRF52832
Chip nRF52832 có thể chạy với nguồn điện từ 1,7V đến 3,6V (điện áp tối đa tuyệt đối 3,9V). Điều này có nghĩa là bạn có thể cấp nguồn trực tiếp cho chip từ một ô đồng xu hoặc 2 x pin AAA. Tuy nhiên, cần thận trọng khi thêm bộ điều chỉnh điện áp để bảo vệ chip khỏi quá volt. Thành phần bổ sung này đi kèm với chi phí điện năng, nhưng trong trường hợp của bo mạch NanoV2, bộ điều chỉnh trên bo mạch, TLV704, tiêu thụ tối đa ít hơn 5,5uA, thường chỉ 3,4uA. Đối với mức sử dụng năng lượng bổ sung nhỏ này, bạn sẽ được bảo vệ cho đầu vào nguồn cung cấp lên đến 24V.
Thành phần Si7021
Bản thân cảm biến Si7021 thường rút ra <1uA khi không thực hiện phép đo, tức là ở chế độ Chờ và lên đến 4mA khi truyền dữ liệu qua I2C. Vì chúng tôi không thực hiện phép đo liên tục, 4mA không phải là một phần đáng kể của dòng cung cấp trung bình. Đọc chỉ trong 30 giây sẽ cộng thêm ít hơn 1uA vào dòng điện cung cấp trung bình, hãy xem các phép đo dòng điện cung cấp bên dưới.
Có sẵn hai bảng đột phá Si7021. Một từ Adafruit và một từ Sparkfun. Nhìn lướt qua hai bảng sẽ cho bạn biết rằng bảng Adafruit có nhiều thành phần hơn so với bảng Sparkfun, vì vậy bạn sẽ có xu hướng chọn bảng Sparkfun. Nhìn vào sơ đồ cho mỗi bảng cho thấy rằng bảng Sparkfun chỉ là cảm biến trần và hai điện trở lại kéo lên 4k7, trong khi bảng Adafruit có bộ điều chỉnh trên bo mạch, MIC5225, thường sử dụng 29uA mọi lúc. Điều này có ý nghĩa khi dòng điện trên tất cả các phần còn lại của mạch <30uA. Vì chúng tôi đã có bộ điều chỉnh cho chip nRF52832, thành phần bổ sung này không cần thiết và Si7021 có thể được cấp nguồn từ nguồn cung cấp 3,3V đó. Vì vậy, dự án này sẽ sử dụng bảng đột phá Si7021 từ Sparkfun.
giảm thiểu dòng điện thông qua các điện trở kéo lên / kéo xuống bên ngoài trên các đầu vào
Điện trở kéo lên 4K7 I2C không có giá trị đặc biệt cao và sẽ rút ra 0,7mA khi kéo xuống thấp. Đây sẽ là một vấn đề nếu họ đặt đầu vào công tắc được nối đất trong thời gian dài. Tuy nhiên trong dự án này, dòng điện qua các điện trở này được giảm thiểu bằng cách chỉ sử dụng giao diện I2C không thường xuyên và chỉ trong một thời gian ngắn. Hầu hết thời gian các dòng I2C không được sử dụng và ở trạng thái cao / tri-thức nên không có dòng điện nào chạy qua các điện trở này.
Bước 2: Thi công
Dự án được xây dựng trên một PCB nhỏ, nhưng vì không có các thành phần SMD, nó có thể dễ dàng được xây dựng bằng cách sử dụng bo mạch chủ. PCB được sản xuất bởi pcbcart.com từ các tệp Gerber này, TempHumiditySensor_R1.zip PCB có mục đích chung là đủ để sử dụng cho các dự án BLE khác.
Sơ đồ được hiển thị ở trên. Đây là một phiên bản pdf.
Danh sách các bộ phận
Chi phí ước tính cho mỗi đơn vị tại thời điểm tháng 12 năm 2018, ~ US $ 62, không bao gồm phí vận chuyển và lập trình viên từ Phần 1
- Redbear NanoV2 ~ US $ 17
- Bảng đột phá Sparkfun Si7021 ~ US $ 8
- 2 x 53mm x 30mm 0,15W pin mặt trời 5V, ví dụ: Overfly ~ US $ 1,10
- 1 x PCB TempHumiditySensor_R1.zip ~ US $ 25 cho 5 lần giảm giá www.pcbcart.com HOẶC bo mạch Vero (dải đồng), ví dụ: Jaycar HP9540 ~ AUD $ 5
- 2 x 1N5819 điốt schottky, ví dụ: Digikey 1N5819FSCT-ND ~ US $ 1
- 1 x 470R 0,4W 1% điện trở ví dụ: Digikey BC3274CT-ND ~ US $ 0,25
- Các chân tiêu đề nam 6 x 6 pin, ví dụ: Sparkfun PRT-00116 ~ US $ 1,5
- vận động viên nhảy từ nữ sang nữ, ví dụ: ID Adafruit: 1950 ~ US $ 2
- Vít nylon 3mm x 12mm, ví dụ: Jaycar HP0140 ~ AUD $ 3
- Hạt nylon 3mm x 12mm, ví dụ: Jaycar HP0146 ~ AUD $ 3
- Scotch Permanent Mounting Tape Cat 4010, ví dụ: từ Amazon ~ US $ 6,6
- Giá đỡ pin AAA x 2, ví dụ: Sparkfun PRT-14219 ~ US $ 1,5
- 2 x pin kiềm AAA 750mA, ví dụ: Sparkfun PRT-09274 ~ US $ 1,0 Những pin này sẽ có tuổi thọ> 2yrs. Pin Energizer Alkaline có dung lượng cao hơn
- Hộp nhựa (ABS) 83mm x 54mm x 31mm, ví dụ: Jaycar HB6005 ~ AUD $ 3
- pfodApp ~ US $ 10
- 1 x 22uF 63V Tụ ESR Thấp (Tùy chọn), ví dụ: Jaycar RE-6342 ~ AUD $ 0,5 hoặc Digikey P5190-ND ~ US $ 0,25
Việc xây dựng là thẳng về phía trước. Giá đỡ pin và pin mặt trời được cố định vào hộp nhựa bằng băng keo hai mặt chịu lực.
Lưu ý dây liên kết Gnd từ CLK đến GND trong phần đã hoàn thiện. Điều này được cài đặt SAU KHI lập trình để ngăn nhiễu trên đầu vào CLK kích hoạt chip nRF52 vào chế độ gỡ lỗi hiện tại cao
Bước 3: Mã - Thư viện cảm biến công suất thấp, Giao diện người dùng và Phác thảo Arduino
Tải xuống mã đã nén, lp_BLE_TempHumidity_R3.zip và giải nén nó vào thư mục Arduino Sketches của bạn. Bạn cũng cần cài đặt thư viện lp_So7021 từ tệp zip này và cũng cài đặt thư viện pfodParser.
Thư viện cảm biến năng lượng thấp, lp_Si7021
Cả Adafruit và Sparkfun đều cung cấp các thư viện hỗ trợ để truy cập vào cảm biến Si7021, tuy nhiên cả hai thư viện đó đều không phù hợp để sử dụng điện năng rất thấp. Cả hai đều sử dụng độ trễ (25) trong mã để trì hoãn việc đọc cảm biến trong khi nó đang thực hiện phép đo. Như đã lưu ý trong Phần 1 Sự chậm trễ là điều xấu xa. Độ trễ Arduino () chỉ giữ cho bộ vi xử lý hoạt động bằng cách sử dụng năng lượng trong khi nó đợi độ trễ hết thời gian. Điều này phá vỡ quy tắc đầu tiên của BLE công suất thấp, không làm gì trong hầu hết thời gian. Thư viện lp_Si7021 thay thế, thay thế tất cả sự chậm trễ bằng lp_timers, đặt bộ vi xử lý vào trạng thái ngủ trong khi chờ cảm biến kết thúc quá trình đo của nó.
Thư viện lp_Si7021 tạo ra sự khác biệt bao nhiêu? Sử dụng thư viện hỗ trợ SparkFun Si7021 ban đầu và đọc một lần trong một giây mà không có bất kỳ bản in Serial nào, rút ra mức trung bình ~ 1,2mA. Việc thay thế thư viện Sparkfun bằng thư viện lp_Si7021 làm giảm dòng điện trung bình xuống còn ~ 10uA, tức là ít hơn 100 lần. Trong dự án này, tốc độ đo nhanh nhất là 30 giây một lần khi thiết bị di động được kết nối, dẫn đến dòng cảm biến trung bình nhỏ hơn 1uA. Khi không có kết nối BLE, tốc độ đo là 10 phút một lần và dòng điện cung cấp cảm biến trung bình là không đáng kể.
Giao diện người dùng
Phía trên là màn hình chính hiển thị và phóng to lịch sử 10 ngày theo giờ. Các lô có thể được thu phóng và xoay theo cả hai hướng, sử dụng hai ngón tay.
Giao diện người dùng được mã hóa trong bản phác thảo Arduino và sau đó được gửi đến pfodApp trên kết nối đầu tiên, nơi nó được lưu vào bộ nhớ đệm để sử dụng nhiều lần và cập nhật. Màn hình đồ họa được xây dựng từ bản vẽ sơ khai. Xem Điều khiển Arduino tùy chỉnh dành cho Android để biết hướng dẫn về cách tạo điều khiển của riêng bạn. Các tệp Thermometer, RHGauge và Button chứa các lệnh vẽ cho các mục đó.
Lưu ý: Không có nếu màn hình này được tích hợp vào pfodApp. Toàn bộ màn hình được điều khiển hoàn toàn bằng mã trong bản phác thảo Arduino của bạn
Phương thức sendDrawing_z () trong bản phác thảo lp_BLE_TempHumidity_R3.ino xác định giao diện người dùng.
void sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // background mặc định là WHITE nếu bị bỏ qua, tức là start (50, 60); parser.sendRefreshAndVersion (30000); // yêu cầu lại dwg sau mỗi 30 giây. điều này bị bỏ qua nếu không có phiên bản phân tích cú pháp nào được đặt // chạm vào các nút phía trên để buộc các bản cập nhật hiển thị dwgs.touchZone (). cmd ('u'). size (50, 39).send (); dwgs.pushZero (35, 22, 1.5); // di chuyển 0 đến tâm của dwg thành 35, 22 và chia tỷ lệ lên 1,5 lần rhGauge.draw (); // vẽ điều khiển dwgs.popZero (); dwgs.pushZero (18, 33); // di chuyển 0 đến tâm của dwg thành 18, 33 thang đo là 1 (mặc định) thermometer.draw (); // vẽ điều khiển dwgs.popZero ();
dwgs.pushZero (12,5, 43, 0,7); // di chuyển 0 đến trung tâm của dwg thành 12,5, 43 và chia tỷ lệ 0,7
hrs8PlotButton.draw (); // vẽ điều khiển dwgs.popZero (); dwgs.pushZero (37,5, 43, 0,7); // di chuyển 0 đến trung tâm của dwg thành 37,5, 43 và chia tỷ lệ 0,7 days1PlotButton.draw (); // vẽ điều khiển dwgs.popZero ();
dwgs.pushZero (12,5, 54, 0,7); // di chuyển 0 đến trung tâm của dwg thành 12,5, 54 và chia tỷ lệ 0,7
days3PlotButton.draw (); // vẽ điều khiển dwgs.popZero (); dwgs.pushZero (37,5, 54, 0,7); // di chuyển 0 đến tâm của dwg thành 37,5, 54 và chia tỷ lệ 0,7 ngày10PlotButton.draw (); // vẽ điều khiển dwgs.popZero (); dwgs.end (); }
Các lệnh pushZero thay đổi điểm gốc và tỷ lệ để vẽ thành phần tiếp theo. Điều này cho phép bạn dễ dàng thay đổi kích thước và vị trí của các nút và đồng hồ đo.
Trong lần kết nối đầu tiên, màn hình ban đầu mất 5 hoặc 6 giây để tải xuống ~ 800 byte xác định màn hình. pfodApp lưu vào bộ nhớ cache của màn hình để các bản cập nhật trong tương lai chỉ cần gửi các thay đổi, đánh giá vị trí và số liệu đọc. Các bản cập nhật này chỉ mất vài giây để gửi 128 byte cần thiết để cập nhật màn hình.
Có năm (5) vùng cảm ứng hoạt động được xác định trong màn hình. Mỗi nút có một nút được xác định trong phương thức draw () của nó, vì vậy bạn có thể nhấp vào nút đó để mở biểu đồ tương ứng và nửa trên của màn hình được định cấu hình làm vùng cảm ứng thứ ba
dwgs.touchZone (). cmd ('u'). size (50, 39).send ();
Khi bạn nhấp vào màn hình phía trên các nút, lệnh 'u' dwg sẽ được gửi đến bản phác thảo của bạn để buộc thực hiện một phép đo mới và cập nhật màn hình. Thông thường khi được kết nối, các bản cập nhật chỉ diễn ra sau mỗi 30 giây. Mỗi lần nhấp hoặc làm mới bản vẽ buộc một phép đo mới. Phản hồi từ bản phác thảo Arduino tới pfodApp bị trì hoãn cho đến khi hoàn thành phép đo mới (~ 25mS) để giá trị mới nhất có thể được gửi trong bản cập nhật.
Phác thảo Arduino
Bản phác thảo Arduino, lp_BLE_TempHumidity_R3.ino, là phiên bản nâng cao của bản phác thảo ví dụ được sử dụng trong Phần 1. Bản phác thảo lp_BLE_TempHumidity_R3.ino thay thế menu bằng bản vẽ được hiển thị ở trên. Nó cũng bổ sung hỗ trợ cảm biến lp_Si7021 và mảng dữ liệu để lưu trữ các phép đo lịch sử 10 phút và hàng giờ.
Sự phức tạp chính trong bản phác thảo lp_BLE_TempHumidity_R3.ino là xử lý việc gửi dữ liệu cốt truyện. Khi các phép đo được thực hiện, readRHResults () xử lý việc thu thập các kết quả và lưu chúng vào các mảng lịch sử. Mảng dài 120 nhưng khi dữ liệu được gửi đi thì 30 điểm dữ liệu đầu tiên dành cho một khoảng thời gian nhỏ hơn.
Có một số điểm cần lưu ý khi gửi 200 điểm âm mưu lẻ để hiển thị: -
- Mỗi điểm dữ liệu dài ~ 25 byte, ở định dạng văn bản CSV. Vì vậy, 150 điểm là 3750 byte dữ liệu. Lớp lp_BLESerial có bộ đệm 1536 byte, 1024 trong số đó đủ lớn cho thông báo pfod lớn nhất. 512 byte khác được dành để gửi dữ liệu. Khi dữ liệu lịch sử đã lấp đầy 512 byte, việc gửi thêm dữ liệu sẽ bị trì hoãn cho đến khi có khoảng trống trong bộ đệm.
- Để tránh dữ liệu lô làm chậm cập nhật màn hình chính, dữ liệu lô chỉ được gửi trong khi màn hình lô được hiển thị. Sau khi người dùng quay lại màn hình chính, việc gửi dữ liệu cốt truyện sẽ bị tạm dừng. Việc gửi dữ liệu ô được tiếp tục khi người dùng nhấp vào nút ô để hiển thị lại ô.
- Các âm mưu lịch sử bắt đầu từ 0 (bây giờ) và quay ngược thời gian. Nếu không có phép đo mới nào kể từ khi biểu đồ cuối cùng được hiển thị, dữ liệu trước đó đã được tải xuống sẽ được hiển thị lại ngay lập tức. Nếu có một phép đo mới, thì nó được thêm vào dữ liệu lô trước đó.
- Khi màn hình được bật nguồn lần đầu tiên, không có giá trị đọc lịch sử nào và 0 được lưu trữ trong các mảng dưới dạng giá trị đọc không hợp lệ. Khi cốt truyện được hiển thị, các bài đọc không hợp lệ sẽ bị bỏ qua, dẫn đến một cốt truyện ngắn hơn.
Độ C và độ F
Bản phác thảo lp_BLE_TempHumidity_R3.ino hiển thị và vẽ biểu đồ dữ liệu theo độ C. Để chuyển đổi kết quả sang độ F, hãy thay thế tất cả các lần xuất hiện của
parser.print (sensor. Temp_RawToFloat (..
với
parser.print (sensor. CtoF (sensor. Temp_RawToFloat (…
Và thay thế biểu tượng degC unicode trong Octal / 342 / 204 / 203 bằng biểu tượng degF / 342 / 204 / 211
pfodApp sẽ hiển thị bất kỳ Unicode nào mà điện thoại di động của bạn có thể hiển thị.
Xem Sử dụng ký tự không phải ASCII trong Arduino để biết thêm chi tiết. Đồng thời thay đổi cài đặt MIN_C, MAX_C trong Thermometer.h. Cuối cùng điều chỉnh các giới hạn cốt truyện như bạn muốn, ví dụ: thay đổi | Nhiệt độ C ~ 32 ~ 8 ~ độ C |
để nói
| Nhiệt độ F ~ 90 ~ 14 ~ độ F |
Bước 4: Đo dòng điện cung cấp
Sử dụng thư viện lp_Si7021, ngay cả khi thực hiện phép đo nhiệt độ / độ ẩm sau mỗi 10 giây cũng chỉ đóng góp ~ 1uA vào dòng điện cung cấp trung bình, vì vậy yếu tố chính trong dòng điện cung cấp và do đó tuổi thọ pin là dòng điện được sử dụng bởi quảng cáo BLE và kết nối và truyền dữ liệu.
Kết nối bảng Nhiệt độ / Độ ẩm với Bộ lập trình được mô tả trong Phần 1 như hình trên.
Với các tế bào năng lượng mặt trời và pin được rút ra, Vin và Gnd được kết nối với Vdd và Gnd của lập trình viên (các dây dẫn Màu vàng và Xanh lục) và SWCLK và SWDIO được kết nối với Clk và SIO của bảng tiêu đề lập trình viên (các dây dẫn Màu xanh lam và Màu hồng)
Bây giờ bạn có thể lập trình NanoV2 và đo dòng điện cung cấp như được mô tả trong Phần 1.
Cài đặt thư viện Si7021 công suất thấp từ tệp zip này, lp_Si7021.zip và cài đặt thư viện pfodParser và giải nén lp_BLE_TempHumidity_R3.zip vào thư mục phác thảo Arduino của bạn và lập trình bảng Temp / Humditiy với lp_BLE_TempHumidity_R3.ino
Như đã đề cập ở trên, đóng góp của cảm biến là <1uA, trung bình, ở tốc độ đo cao nhất được sử dụng trong dự án này, vì vậy quảng cáo BLE và các thông số kết nối là yếu tố quyết định tuổi thọ pin.
Các thông số kết nối và quảng cáo BLE ảnh hưởng đến mức tiêu thụ hiện tại là: -Tx Công suất, Khoảng thời gian quảng cáo, Khoảng kết nối tối đa và tối thiểu, và Độ trễ nô lệ.
Lưu ý: Sử dụng các kết nối ở trên, có hai (2) bộ điều chỉnh trong nguồn cung cấp, một trên bo mạch NanoV2 thông qua Vin và MAX8881 trên nguồn cung cấp của lập trình viên. Điều này có nghĩa là dòng cung cấp đo được sẽ cao hơn ~ 5uA so với thực tế, do bộ điều chỉnh thứ hai. Các giá trị được trích dẫn dưới đây là dòng điện đo được trừ đi 5uA bổ sung này.
Năng lượng TX
Tx Hiệu ứng nguồn cung cấp dòng điện cả khi kết nối và khi quảng cáo (không kết nối). Dự án này sử dụng cài đặt công suất tối đa (+4) và cung cấp phạm vi tốt nhất và khả năng chống ồn lớn nhất cho các kết nối đáng tin cậy nhất. Bạn có thể sử dụng phương thức lp_BLESerial setTxPower () để thay đổi cài đặt nguồn. Các giá trị hợp lệ là -40, -30, -20, -16, -12, -8, -4, 0 +4. Bạn phải gọi phương thức begin () lp_BLESerial TRƯỚC KHI bạn gọi setTxPower (). Xem bản phác thảo lp_BLE_TempHumidity_R3.ino.
Bạn có thể thử nghiệm với việc giảm Tx Power, nhưng thỏa hiệp là phạm vi ngắn hơn và kết nối nhiều hơn do nhiễu. Trong dự án này, Tx Power được để ở giá trị mặc định, +4. Như bạn sẽ thấy bên dưới, ngay cả với cài đặt này, dòng điện cung cấp rất thấp vẫn có thể xảy ra.
Khoảng thời gian quảng cáo
Đối với Công suất Tx nhất định, khi không có kết nối, Khoảng thời gian quảng cáo đặt mức tiêu thụ hiện tại trung bình. Phạm vi được khuyến nghị là 500 đến 1000mS. Ở đây 2000mS đã được sử dụng. Sự thỏa hiệp là khoảng thời gian quảng cáo dài hơn có nghĩa là thiết bị di động của bạn tìm thấy thiết bị và thiết lập kết nối chậm hơn. Nội bộ, khoảng thời gian quảng cáo được đặt theo bội số của 0,625mS trong phạm vi 20mS đến 10,24 giây. Phương thức lp_BLESerial setAdvertisingInterval () lấy mS làm đối số, để thuận tiện. Đối với khoảng thời gian quảng cáo +4 TxPower và 2000mS, mức tiêu thụ hiện tại là ~ 18uA. Đối với khoảng thời gian quảng cáo 1000mS, nó là ~ 29uA. Rev 2 sử dụng khoảng thời gian quảng cáo 2000mS nhưng điều này dẫn đến kết nối chậm. Rev 3 đã thay đổi khoảng thời gian quảng cáo 1000mS để giúp kết nối nhanh hơn.
Khoảng thời gian kết nối tối đa và tối thiểu
Sau khi kết nối được thiết lập, khoảng thời gian kết nối sẽ xác định tần suất liên lạc của điện thoại di động với thiết bị. Lp_BLESerial setConnectionInterval () cho phép bạn đặt giá trị tối đa và tối thiểu được đề xuất, tuy nhiên thiết bị di động sẽ kiểm soát khoảng thời gian kết nối thực sự là bao nhiêu. Để thuận tiện, các đối số cho setConnectionInterval () ở trong mS, nhưng bên trong các khoảng kết nối là bội số của 1,25mS, trong khoảng 7,5mS đến 4 giây.
Cài đặt mặc định là setConnectionInterval (100, 150) tức là tối thiểu 100mS đến tối đa 150mS. Việc tăng các giá trị này sẽ làm giảm dòng điện cung cấp trong khi kết nối, nhưng thỏa hiệp là truyền dữ liệu chậm hơn. Mỗi lần cập nhật màn hình cần khoảng 7 tin nhắn BLE, trong khi đo đầy đủ 36 giờ trong 10 phút cần khoảng 170 tin nhắn BLE. Vì vậy, việc tăng khoảng thời gian kết nối sẽ làm chậm quá trình cập nhật màn hình và hiển thị cốt truyện.
Lớp lp_BLESerial có bộ đệm gửi 1536 byte và chỉ gửi một khối 20 byte từ bộ đệm này, mỗi khoảng thời gian kết nối tối đa để tránh làm ngập liên kết BLE với dữ liệu. Ngoài ra khi gửi dữ liệu lô, bản phác thảo chỉ gửi dữ liệu cho đến khi 512 byte đang chờ được gửi, sau đó trì hoãn việc gửi thêm dữ liệu cho đến khi một số dữ liệu đã được gửi. Điều này tránh làm tràn bộ đệm gửi. Việc điều chỉnh việc gửi này làm cho việc truyền dữ liệu đến thiết bị di động trở nên đáng tin cậy, nhưng nó không được tối ưu hóa để đạt được mức tối đa.
Trong dự án này, các khoảng kết nối được để làm giá trị mặc định.
Độ trễ nô lệ
Khi không có dữ liệu để gửi đến điện thoại di động, thiết bị có thể tùy chọn bỏ qua một số thông báo kết nối từ điện thoại di động. Điều này giúp tiết kiệm Tx Power và cung cấp dòng điện. Cài đặt Độ trễ Nô lệ là số lượng thông báo kết nối cần bỏ qua. Giá trị mặc định là 0. Phương thức lp_BLESerial setSlaveLatency () có thể được sử dụng để thay đổi cài đặt này.
Độ trễ Slave mặc định là 0 cung cấp dòng điện cung cấp ~ 50uA, bỏ qua các cập nhật màn hình sau mỗi 30 giây, nhưng bao gồm các thông báo keepAlive rất 5 giây. Đặt Độ trễ nô lệ thành 2 cho dòng điện cung cấp được kết nối trung bình là ~ 25uA. Cài đặt Độ trễ nô lệ là 4 cho ~ 20uA. Cài đặt cao hơn dường như không làm giảm dòng điện cung cấp vì vậy cài đặt Độ trễ Slave là 4 đã được sử dụng.
Khi được kết nối, cứ sau 30 giây pfodApp sẽ yêu cầu một bản cập nhật hiển thị. Điều này buộc một phép đo cảm biến và gửi lại dữ liệu để cập nhật màn hình đồ họa. Bản cập nhật này dẫn đến thêm ~ 66uA trong 2 giây mỗi 30 giây. Đó là mức trung bình 4,4uA trong 30 giây. Thêm điều này vào 20uA, cung cấp dòng điện cung cấp kết nối trung bình là ~ 25uA
Bước 5: Tổng nguồn cung cấp hiện tại và tuổi thọ pin
Sử dụng các cài đặt ở trên, như đã đặt trong lp_BLE_TempHumidity_R3.ino, Tổng nguồn cung cấp khi Kết nối và cập nhật màn hình cứ sau 30 giây, xấp xỉ 25uA. Khi không kết nối, nó là khoảng 29uA.
Để tính toán tuổi thọ pin, dòng điện liên tục được giả định là ~ 29uA.
Nhiều loại pin có dung lượng và đặc tính điện áp khác nhau. Các loại pin được xem xét ở đây là pin đồng xu CR2032, pin đồng xu CR2450 (N), 2 x AAA Alkaline, 2 x AAA Lithium và LiPo.
Tóm tắt về pin
Nếu sử dụng Hỗ trợ năng lượng mặt trời thì hãy cộng thêm 50% vào các con số thời lượng pin này (giả sử 8 giờ sáng một ngày)
Lưu ý: Tụ 22uF LowESR (C1), ngoài tụ điện NanoV2 22uF trên bo mạch, lưu trữ dòng điện Pin mặt trời và sau đó cung cấp cho các xung dòng TX. Điều khôn ngoan khác là pin cung cấp một số dòng TX. 22uF LowESR bổ sung này bổ sung thêm khoảng 10% dòng điện cho pin khi pin mặt trời không phải là nguồn cung cấp, đồng thời kéo dài tuổi thọ của pin bằng cách bù đắp cho điện trở bên trong pin tăng lên khi pin hết tuổi thọ. Các phép đo dưới đây được thực hiện KHÔNG có tụ điện 22uF bổ sung.
CR2032 - 235mAHr - tuổi thọ pin 10 thángCR2450 (N) - 650mAHr (540mAHr) - tuổi thọ pin 2,3 năm (2 năm) 2 x AAA Alkaline - 1250mAHr - tuổi thọ pin 3,8yrs2 x AAA Lithium - 1200mAHr - tuổi thọ pin 4,7 năm LiPo có thể sạc lại - không khuyến nghị do tự phóng điện cao.
CR2032
Tế bào tiền xu này có dung lượng thường là 235mAHr (Pin Energizer), điện áp danh định là 3V và điện áp phóng điện xác định là 2V. Điều này có nghĩa là thời lượng pin là 8100 giờ hoặc ~ 0,9yr. Tuy nhiên, điện trở bên trong tế bào tăng lên khi pin hết tuổi thọ và do đó có thể không cung cấp được xung dòng điện Tx cao nhất. Tụ điện lớn hơn có thể được sử dụng để giảm hiệu ứng này, nhưng giả sử tuổi thọ là 10 tháng.
CR2450 (N)
Tế bào tiền xu này có dung lượng thường là 620mAHr (540mAHr cho CR2450N), điện áp danh định là 3V và điện áp phóng điện xác định là 2V. Điều này có nghĩa là thời lượng pin là 22, 400 giờ hoặc ~ 2 năm 6 phút (18600 giờ ~ 2 năm 2 phút cho CR2450N). Tuy nhiên, điện trở bên trong tế bào tăng lên khi pin hết tuổi thọ và do đó có thể không cung cấp được xung dòng điện Tx cao nhất. Tụ điện cung cấp lớn hơn có thể được sử dụng để giảm ảnh hưởng này, nhưng giả sử tuổi thọ 2yr 4m (2yr N).
Lưu ý: Phiên bản CR2450N có môi dày hơn giúp tránh việc lắp sai vào giá đỡ CR2450N. Bạn có thể lắp ô CR2450N và CR2450 vào giá đỡ CR2450 nhưng bạn không thể lắp ô CR2450 vào giá đỡ CR2450N
2 x tế bào kiềm AAA
Các loại pin này có dung lượng khoảng 1250mAHr (Pin Energizer) cho dòng điện rất thấp, điện áp danh định 2x1,5V = 3V và điện áp phóng điện xác định là 2x0,8V = 1,6V. Nhưng điện áp phóng điện được chỉ định này nhỏ hơn điện áp hoạt động của cảm biến Si7021 (1.9V) nên pin chỉ có thể được sử dụng xuống ~ 1V mỗi pin. Điều này làm giảm công suất khoảng 10% đến 15%, tức là ~ 1000mAHr.
Điều này có nghĩa là thời lượng pin là 34, 500 giờ hoặc ~ 4 năm. Tuy nhiên, điện trở bên trong tế bào tăng lên khi pin hết tuổi thọ và do đó có thể không cung cấp được xung dòng điện Tx cao nhất. Tụ điện cung cấp lớn hơn có thể được sử dụng để giảm ảnh hưởng này, nhưng giả sử tuổi thọ 3yr 10m. Lưu ý Pin Alkaline có mức tự xả từ 2% đến 3% mỗi năm.
2 x tế bào Lithium AAA
Các loại pin này có dung lượng khoảng 1200mAHr (Pin Energizer), điện áp danh định là 2x1,7V = 3,4V, ở dòng điện thấp và điện áp phóng ra là 2x1,4V = 2,4V. Điều này có nghĩa là thời lượng pin là 41, 400 giờ hoặc 4 năm 8 phút.
Pin có thể sạc lại LiPo
Các loại pin này có nhiều dung lượng từ 100mAHr đến 2000mAHr, ở định dạng phẳng và có điện áp sạc là 4,2V và điện áp phóng ra> 2,7V. Tuy nhiên, chúng có mức tự xả cao từ 2% -3% / tháng (tức là 24% đến 36% mỗi năm) và do đó không phù hợp cho ứng dụng này như các loại pin khác.
Bước 6: Cung cấp các giải pháp thay thế - Hỗ trợ năng lượng mặt trời, Chỉ pin, Chỉ năng lượng mặt trời
Pin cộng với Hỗ trợ năng lượng mặt trời
Việc xây dựng ở trên sử dụng nguồn cung cấp Pin và Hỗ trợ năng lượng mặt trời. Khi các tấm pin mặt trời tạo ra nhiều điện áp hơn điện áp của pin, các pin mặt trời sẽ cung cấp năng lượng cho màn hình, do đó kéo dài tuổi thọ của pin. Thông thường, thời lượng pin có thể được kéo dài thêm 50%.
Các tấm pin mặt trời được sử dụng có kích thước nhỏ, 50mm x 30mm, giá rẻ, ~ $ 0,50 và công suất thấp. Trên danh nghĩa, chúng là tấm nền 5V, nhưng cần ánh sáng mặt trời trực tiếp đầy đủ để tạo ra 5V. Trong dự án này, hai bảng điều khiển được nối nối tiếp với nhau sao cho việc đặt một số màn hình ở nơi gần cửa sổ, tránh ánh nắng trực tiếp, là đủ để thay thế nguồn pin. Ngay cả một căn phòng đủ ánh sáng, hoặc một chiếc đèn bàn, cũng đủ để các tế bào năng lượng mặt trời tạo ra> 3,3V ở> 33uA và tiếp quản từ pin.
Một bảng thử nghiệm đơn giản đã được xây dựng để xác định vị trí có thể đặt Màn hình nhiệt độ / độ ẩm, tránh ánh nắng mặt trời và vẫn sử dụng năng lượng mặt trời. Như bạn có thể thấy từ bức ảnh trên, hai tấm kết nối với điện trở 100K đang tạo ra 5,64V trên 100K, tức là dòng điện 56uA ở 5,64V. Điều này là quá đủ để cấp nguồn cho màn hình từ pin. Bất kỳ giá trị điện áp nào cao hơn điện áp danh định của pin là 3V có nghĩa là các tế bào năng lượng mặt trời sẽ cung cấp năng lượng cho màn hình thay vì pin.
Hai điốt trong mạch Theo dõi độ ẩm nhiệt độ cách ly các tế bào năng lượng mặt trời và pin khỏi nhau và bảo vệ không kết nối chúng theo cực tính ngược. Điện trở 10V 1W zener và 470R bảo vệ bộ điều chỉnh trên bo mạch của NanoV2 khỏi quá điện áp từ hai pin mặt trời dưới ánh nắng mặt trời đầy đủ, đặc biệt nếu pin 12V được sử dụng thay vì pin 5V. Trong hoạt động bình thường ở <5V, zener 10V chỉ rút ra ~ 1uA.
Chỉ pin
Đối với Nguồn cung cấp chỉ dành cho pin, chỉ cần bỏ qua R1, D1 và D3 và các tế bào năng lượng mặt trời. Bạn cũng có thể thay thế D1 bằng một đoạn dây nếu bạn không muốn bảo vệ phân cực ngược.
Chỉ năng lượng mặt trời
Chỉ cấp nguồn cho màn hình từ Pin mặt trời, không cần pin, yêu cầu một mạch cấp nguồn khác. Vấn đề là trong khi màn hình sẽ hoạt động trên 29uA, khi bật nguồn, nRF52 rút ra ~ 5mA trong 0,32 giây. Mạch hiển thị ở trên (phiên bản pdf) giữ bộ điều chỉnh MAX8881 tắt cho đến khi các tụ điện đầu vào, 2 x 1000uF, sạc lên đến 4,04V. Sau đó, MAX6457 giải phóng đầu vào MAX8881 SHDN để cấp nguồn cho nRF52 (NanoV2) Các tụ điện 2 x 1000uF cung cấp dòng khởi động cần thiết.
Điều này cho phép màn hình bật nguồn ngay khi có đủ năng lượng mặt trời để giữ cho nó hoạt động ở 29uA.
Bước 7: Kết luận
Hướng dẫn này đã trình bày Màn hình độ ẩm nhiệt độ chạy bằng pin / năng lượng mặt trời như một ví dụ về dự án BLE công suất rất thấp trong Arduino cho chip nRF52832. Dòng cung cấp ~ 29uA đạt được bằng cách điều chỉnh các thông số kết nối. Điều này dẫn đến tuổi thọ của pin đồng xu CR2032 vượt quá 10 tháng. Dài hơn cho các tế bào tiền xu và pin dung lượng cao hơn. Thêm hai pin mặt trời giá rẻ dễ dàng kéo dài tuổi thọ pin lên 50% hoặc hơn. Đèn phòng sáng hoặc đèn bàn là đủ để cung cấp năng lượng cho màn hình từ pin mặt trời.
Một mạch nguồn đặc biệt đã được giới thiệu để cho phép màn hình chạy hoàn toàn từ pin mặt trời công suất thấp.
PfodDesigner miễn phí cho phép bạn thiết kế menu / menu phụ, vẽ biểu đồ theo ngày / giờ và dữ liệu nhật ký, sau đó tạo bản phác thảo Arduino công suất thấp cho bạn. Ở đây, một giao diện tùy chỉnh đã được mã hóa bằng cách sử dụng các bản vẽ ban đầu của pfodApp. Kết nối với pfodApp hiển thị giao diện người dùng và cập nhật các kết quả đọc trong khi màn hình đang sử dụng ~ 29uA
Không cần lập trình Android. pfodApp xử lý tất cả những điều đó.
Đề xuất:
Hệ thống tự động hóa tại nhà bằng WiFi công suất cực thấp: 6 bước (có hình ảnh)
Hệ thống tự động hóa tại nhà bằng WiFi công suất cực thấp: Trong dự án này, chúng tôi chỉ ra cách bạn có thể xây dựng một hệ thống tự động hóa gia đình cục bộ cơ bản trong một vài bước. Chúng tôi sẽ sử dụng Raspberry Pi sẽ hoạt động như một thiết bị WiFi trung tâm. Trong khi đối với các nút cuối, chúng tôi sẽ sử dụng IOT Cricket để tạo ra nguồn pin
Dễ dàng BLE công suất rất thấp trong Arduino Phần 3 - Thay thế Nano V2 - Bước 3: 7 (kèm Hình ảnh)
Dễ dàng BLE công suất rất thấp trong Arduino Phần 3 - Thay thế Nano V2 - Phiên bản 3: Cập nhật: Ngày 7 tháng 4 năm 2019 - Phiên bản 3 của lp_BLE_TempHumidity, thêm các ô Ngày / Giờ, sử dụng pfodApp V3.0.362 + và tự động điều chỉnh khi gửi dữ liệu Cập nhật: 24 tháng 3 2019 - Rev 2 của lp_BLE_TempHumidity, thêm nhiều tùy chọn cốt truyện hơn và i2c_ClearBus, thêm GT832E_
Đèn ngủ cầu thang - Công suất rất thấp và 2 cảm biến: 5 bước
Đèn ngủ cầu thang - Công suất rất thấp và 2 cảm biến: Tôi đã chế tạo đèn ngủ cầu thang công suất thấp này với hai cảm biến chuyển động hồng ngoại để tôi có thể lắp đặt một thiết bị duy nhất ở nửa cầu thang và có người đi lên hoặc đi tới kích hoạt. xuống cầu thang. Tôi cũng đã làm cho thiết kế của mình rất thấp
Trạm thời tiết công suất cực thấp Arduino: 5 bước
Trạm thời tiết công suất cực thấp Arduino: Hướng dẫn này sẽ chỉ cho bạn cách xây dựng trạm thời tiết công suất siêu thấp bằng cách sử dụng arduino nano, bme 280 và mô-đun radio rf433, sẽ tồn tại khoảng 1,5 đến 2 năm trên 2 LiPo 18650 và khả năng để mở rộng nó thêm nhiều cảm biến hơn và năng lượng mặt trời p
Màn hình nhiệt độ Arduino công suất thấp: 4 bước
Màn hình nhiệt độ Arduino công suất thấp: Trong phần Có thể hướng dẫn này, chúng tôi xây dựng một màn hình nhiệt độ khác sử dụng cảm biến nhiệt độ DS18B20. Nhưng dự án này thì khác. Nó có thể sử dụng pin trong gần 1,5 năm! Đúng! Sử dụng thư viện công suất thấp Arduino, chúng tôi có thể có dự án này chạy trong