資料介紹
描述
我需要一個(gè)溫度和濕度傳感器來(lái)顯示記錄的最高和最低水平,以便我可以監(jiān)控溫室中的水平。我在溫室里沒有任何電源,所以目的是盡可能減少功耗,以便它可以長(zhǎng)時(shí)間使用可充電電池。
對(duì)此的解決方案是讓 Arduino 進(jìn)入低功耗狀態(tài)一段時(shí)間,然后喚醒并獲取新的讀數(shù),然后重復(fù)循環(huán)。為了實(shí)現(xiàn)這一點(diǎn),我使用了rocketscream 低功耗庫(kù)讓處理器進(jìn)入睡眠狀態(tài),每24 秒喚醒一次以檢查溫度和濕度,這需要不到一秒的時(shí)間。
(注意:我已經(jīng)創(chuàng)建了這個(gè)項(xiàng)目溫度和濕度監(jiān)視器的變體,帶有圖表和電池監(jiān)視器,您可能還想查看它。不使用省電但電池仍然持續(xù) 5 天,電池監(jiān)視器會(huì)告訴您何時(shí)需要充電。)
我的第一個(gè)版本使用帶有 16x2 背光 LCD 顯示屏的 Ardino Nano R3。這運(yùn)行良好,功耗如下:
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ù)長(zhǎng)達(dá) 7 天 - 頻繁打開背光顯然會(huì)減少這種情況。事實(shí)上,我的版本已經(jīng)運(yùn)行了 8 多天,并且仍在運(yùn)行。
第二個(gè)版本使用帶有 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ù)使用長(zhǎng)達(dá) 12 天 - 經(jīng)常打開顯示器會(huì)減少這種情況,但它的消耗量很低,因此不會(huì)被注意到。
我已經(jīng)包含了兩個(gè)版本的原理圖和代碼。任何一個(gè)版本都應(yīng)該在大多數(shù) Arduinos 上運(yùn)行。
代碼(OLED版)
該代碼使用以下庫(kù):
#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
這些來(lái)自 Adafruit 圖形核心庫(kù)的字體:
#include
#include
代碼中主要感興趣的領(lǐng)域是loop()
使處理器進(jìn)入睡眠狀態(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)是否在最后一個(gè)按鈕被按下后保持清醒的時(shí)間長(zhǎng)于設(shè)置的保持清醒的時(shí)間。timeWoken
在millis()
按下按鈕的那一刻經(jīng)過(guò)。
if ((millis() - timeWoken) > (keepAwakeFor * 1000))...
如果這個(gè)時(shí)間已經(jīng)過(guò)去,那么我們循環(huán) 3 次,每次在隨機(jī)位置顯示貪睡圖標(biāo)以避免燒機(jī),并使處理器休眠 8 秒。在進(jìn)入睡眠之前啟用引腳 2 上的中斷。如果通過(guò)按下模式按鈕引腳變?yōu)榈碗娖剑@將喚醒處理器并繼續(xù)運(yùn)行代碼。如果此時(shí)處于最后一個(gè)循環(huán)中,則后續(xù)的睡眠循環(huán)將失敗,因?yàn)樗鼈儠?huì)在按鈕釋放之前很快發(fā)生。
在 3 次循環(huán) 24 秒后,系統(tǒng)會(huì)運(yùn)行 3 次循環(huán)以檢查傳感器讀數(shù)并更新最小值和最大值。(注意:僅檢查一次并不能成功讀取,但循環(huán) 3 次更正了此問(wèn)題)。它還檢查處理器是否處于喚醒狀態(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í)間,設(shè)置awake
標(biāo)志并設(shè)置justWoken
用于默認(rèn)顯示溫度(在 中loop()
),并在下一次檢查按鈕之前調(diào)用延遲。
代碼(LCD 16x2 版本)
LCD 16x2 顯示版本的代碼非常相似,僅在顯示處理和控制背光時(shí)需要更改。
需要更少的庫(kù):
// 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è)置的時(shí)間段內(nèi)打開lightTimeOut
。
// Check if need to turn backlight off
if (lightOn && ((millis() - timeLightTurnedOn) > (lightTimeOut * 1000)))
TurnBacklightOff();
按下模式按鈕時(shí)背光打開。
開/關(guān)
如果您想添加一個(gè)開/關(guān)開關(guān),請(qǐng)將其插入從充電器模塊 OUT+ 到 Arduino 板的電線中。這將允許您在設(shè)備關(guān)閉的情況下為電池充電。
調(diào)節(jié)電池充電
所使用的 TP4056 充電器包括一個(gè) 1.1K 歐姆的調(diào)節(jié)電阻,可提供 1,000mAh 的充電速率。這對(duì)于使用的 1,000mAh 電池來(lái)說(shuō)實(shí)在是太高了,它應(yīng)該以最大 500mAh 充電。這很繁瑣,但您可以卸下板上安裝的電阻器(R3),或者我發(fā)現(xiàn)用刀刮過(guò)它更容易打破它,因?yàn)檫@會(huì)使柱子焊接到,并焊接在外部電阻器上以減少電流。下表顯示了電阻值和產(chǎn)生的電流。(用儀表檢查您是否仍在讀取連接上的正確電阻,因?yàn)楹苋菀讓⑺鼈兌搪罚@可能會(huì)造成損壞。)

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