資料介紹
描述
我需要一個溫度和濕度傳感器來顯示記錄的最高和最低水平,以便我可以監(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è)置的保持清醒的時間。timeWoken
在millis()
按下按鈕的那一刻經(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)生的電流。(用儀表檢查您是否仍在讀取連接上的正確電阻,因為很容易將它們短路,這可能會造成損壞。)
?
- 使用Blynk應(yīng)用程序的物聯(lián)網(wǎng)溫度和濕度監(jiān)控器
- 帶有圖表和電池監(jiān)控器的溫度和濕度監(jiān)控器
- AD629A SPICE宏模型最小值
- CN0398 帶溫度補償功能的土壤濕度和pH值測量系統(tǒng)
- 超低功耗穩(wěn)壓器、監(jiān)控器和PMIC
- AD8677:130最大的V最大值Office Office Opp在TSOT數(shù)據(jù)Sheet
- AD629A SPICE宏模型最小值
- CN0326:具有溫度補償?shù)母綦x式低功耗PH值測試系統(tǒng)
- 基于MCP6V81/1U下的5 MHz、 0.5 mA 零漂移運放
- 有溫度補償?shù)母綦x式低功耗PH值測試系統(tǒng) 9次下載
- 具有溫度補償?shù)母綦x式低功耗PH值測試系統(tǒng) 12次下載
- 排除最大最小值后求平均值 11次下載
- 數(shù)字溫度計程序 7次下載
- C語言教程之求數(shù)組元素中的最小值 0次下載
- CDMA1X功率控制介紹-功控的數(shù)據(jù)配置
- 正弦交流電的瞬時值、最大值、有效值 3256次閱讀
- 運放參數(shù)講解:最對最大值和推薦工作條件 947次閱讀
- 西門子博途中如何讀取其它類型數(shù)組的最大值及索引 1526次閱讀
- 西門子PLC獲取最小值指令的工作原理 2175次閱讀
- CMOS圖像傳感器的動態(tài)范圍 1315次閱讀
- 無毛刺電壓監(jiān)控器的基礎(chǔ)知識 581次閱讀
- SIMATIC S7-1500 PLC獲取最大值與最小值指令簡述 6443次閱讀
- 用SCL編寫數(shù)據(jù)排序的程序 1000次閱讀
- 如何確認LTM8065的電壓變動值 795次閱讀
- 基于MSP430F449單片機和MAX1270芯片實現(xiàn)峰值表設(shè)備應(yīng)用系統(tǒng)的設(shè)計 2353次閱讀
- 基于AT89S52單片機和LTM8901實現(xiàn)智能環(huán)境溫濕度控制系統(tǒng)的設(shè)計 1247次閱讀
- 如何計算電源IC的損耗 3448次閱讀
- 電源反饋光耦CTR值的影響 5938次閱讀
- FPGA上如何求32個輸入的最大值和次大值:分治 8321次閱讀
- ADuC7061和外部RTD構(gòu)建的基于USB的溫度監(jiān)控器 2922次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多