電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>具有最小值和最大值的極低功耗溫度和濕度監(jiān)控器

具有最小值和最大值的極低功耗溫度和濕度監(jiān)控器

2022-11-17 | zip | 0.42 MB | 次下載 | 免費

資料介紹

描述

我需要一個溫度和濕度傳感器來顯示記錄的最高和最低水平,以便我可以監(jiān)控溫室中的水平。我在溫室里沒有任何電源,所以目的是盡可能減少功耗,以便它可以長時間使用可充電電池。

對此的解決方案是讓 Arduino 進入低功耗狀態(tài)一段時間,然后喚醒并獲取新的讀數(shù),然后重復(fù)循環(huán)。為了實現(xiàn)這一點,我使用了rocketscream 低功耗庫讓處理器進入睡眠狀態(tài),每24 秒喚醒一次以檢查溫度和濕度,這需要不到一秒的時間。

(注意:我已經(jīng)創(chuàng)建了這個項目溫度和濕度監(jiān)視器的變體,帶有圖表和電池監(jiān)視器,您可能還想查看它。不使用省電但電池仍然持續(xù) 5 天,電池監(jiān)視器會告訴您何時需要充電。)

我的第一個版本使用帶有 16x2 背光 LCD 顯示屏的 Ardino Nano R3。這運行良好,功耗如下:

Asleep:                               24 seconds    5.6mA
    Checking temp./humid. between sleeps  <1 second     14mA
                                          So on average 6.0mA
    With backlight on                                   28.5mA

使用 1, 000 mAh 可充電電池,系統(tǒng)應(yīng)在兩次充電之間持續(xù)長達 7 天 - 頻繁打開背光顯然會減少這種情況。事實上,我的版本已經(jīng)運行了 8 多天,并且仍在運行。

第二個版本使用帶有 OLED 128*64 顯示屏的 Arduino Pro Mini。顯示器不需要背光,在明亮的日光下更容易閱讀。其功耗為:

Asleep:                               24 seconds    3.23mA
    Checking temp./humid. between sleeps  <1 second     6.8mA
                                          So on average 3.4mA 
    Awake - displaying

使用 1, 000 mAh 可充電電池,系統(tǒng)應(yīng)在兩次充電之間持續(xù)使用長達 12 天 - 經(jīng)常打開顯示器會減少這種情況,但它的消耗量很低,因此不會被注意到。

我已經(jīng)包含了兩個版本的原理圖和代碼。任何一個版本都應(yīng)該在大多數(shù) Arduinos 上運行。

代碼(OLED版)

該代碼使用以下庫:

#include             // This is the DHT sensor library by Adafruit
	#include "LowPower.h"       // Low-Power library from rocketscream
		  		     // required for the OLED display 
	#include             // Synchronous serial data protocol library
	#include            // IC2 communications library
	#include    // Adafruit Graphics Core Library
	#include   // SSD1306 library for Monochrome 128x64 and 128x32 OLEDs

這些來自 Adafruit 圖形核心庫的字體:

#include  
	#include 

代碼中主要感興趣的領(lǐng)域是loop()使處理器進入睡眠狀態(tài)的領(lǐng)域。

// Check to see if has been awake for the keepAwakeFor period
 // if so allow to go to sleep
 if ((millis() - timeWoken) > (keepAwakeFor * 1000)) {
   awake = false;
   // Sleep for 24 seconds
   for (int i = 0; i < 3; i++){
     display.clearDisplay(); 
     display.drawBitmap(random(10, 110), random(10, 48), snooze, 16, 16, WHITE);
     display.display();
     // Allow wake up pin to trigger interrupt on low.
     attachInterrupt(0, wakeUp, LOW);
     // Enter power down state with ADC and BOD module disabled.
     // Wake up when wake up pin is low or after 8 seconds.
     // If wake up button pressed then as long as button held down for more
     // than a few milliseconds it will fall through any remaining sleep loops      
     LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
     // Disable external pin interrupt on wake up pin.
     detachInterrupt(0);
   }
 }

我們首先檢查系統(tǒng)是否在最后一個按鈕被按下后保持清醒的時間長于設(shè)置的保持清醒的時間。timeWokenmillis()按下按鈕的那一刻經(jīng)過。

if ((millis() - timeWoken) > (keepAwakeFor * 1000))...

如果這個時間已經(jīng)過去,那么我們循環(huán) 3 次,每次在隨機位置顯示貪睡圖標以避免燒機,并使處理器休眠 8 秒。在進入睡眠之前啟用引腳 2 上的中斷。如果通過按下模式按鈕引腳變?yōu)榈碗娖?,這將喚醒處理器并繼續(xù)運行代碼。如果此時處于最后一個循環(huán)中,則后續(xù)的睡眠循環(huán)將失敗,因為它們會在按鈕釋放之前很快發(fā)生。

在 3 次循環(huán) 24 秒后,系統(tǒng)會運行 3 次循環(huán)以檢查傳感器讀數(shù)并更新最小值和最大值。(注意:僅檢查一次并不能成功讀取,但循環(huán) 3 次更正了此問題)。它還檢查處理器是否處于喚醒狀態(tài),以及是否顯示設(shè)置。枚舉模式跟蹤是否要顯示溫度或濕度。

最后,如果系統(tǒng)處于喚醒狀態(tài),則檢查按鈕是否已按下:

模式按鈕(引腳 2)將在溫度和濕度之間切換顯示

重置按鈕(引腳 3)將重置最小和最大讀數(shù)的值

中斷

如果系統(tǒng)處于睡眠狀態(tài)并且按下模式按鈕,則調(diào)用中斷:

void wakeUp()
	{
		// Handler for the pin interrupt.
		timeWoken = millis();               // Reset so remains awake for awake period
		awake = true;
		justWoken = true;
	}

這只是設(shè)置系統(tǒng)被喚醒的時間,設(shè)置awake標志并設(shè)置justWoken用于默認顯示溫度(在 中loop()),并在下一次檢查按鈕之前調(diào)用延遲。

代碼(LCD 16x2 版本)

LCD 16x2 顯示版本的代碼非常相似,僅在顯示處理和控制背光時需要更改。

需要更少的庫:

// Include driver for the DHT
	// This is the DHT sensor library by Adafruit
	#include 
	// Include the library driver for display:
	#include 
	// Include Low-Power library from rocketscream
	#include "LowPower.h"

在主loop()菜單中,如果背光燈也被檢查并關(guān)閉,如果它已在 中設(shè)置的時間段內(nèi)打開lightTimeOut。

// Check if need to turn backlight off
   if (lightOn && ((millis() - timeLightTurnedOn) > (lightTimeOut * 1000)))
     TurnBacklightOff();

按下模式按鈕時背光打開。

開/關(guān)

如果您想添加一個開/關(guān)開關(guān),請將其插入從充電器模塊 OUT+ 到 Arduino 板的電線中。這將允許您在設(shè)備關(guān)閉的情況下為電池充電。

調(diào)節(jié)電池充電

所使用的 TP4056 充電器包括一個 1.1K 歐姆的調(diào)節(jié)電阻,可提供 1,000mAh 的充電速率。這對于使用的 1,000mAh 電池來說實在是太高了,它應(yīng)該以最大 500mAh 充電。這很繁瑣,但您可以卸下板上安裝的電阻器(R3),或者我發(fā)現(xiàn)用刀刮過它更容易打破它,因為這會使柱子焊接到,并焊接在外部電阻器上以減少電流下表顯示了電阻值和產(chǎn)生的電流。(用儀表檢查您是否仍在讀取連接上的正確電阻,因為很容易將它們短路,這可能會造成損壞。)

pYYBAGN0M_CAL_eVAABbRvVPx5I954.png
?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費