資料介紹
描述
我需要一個溫度和濕度傳感器來顯示記錄的最高和最低水平,以便我可以監控溫室中的水平。我在溫室里沒有任何電源,所以目的是盡可能減少功耗,以便它可以長時間使用可充電電池。
對此的解決方案是讓 Arduino 進入低功耗狀態一段時間,然后喚醒并獲取新的讀數,然后重復循環。為了實現這一點,我使用了rocketscream 低功耗庫讓處理器進入睡眠狀態,每24 秒喚醒一次以檢查溫度和濕度,這需要不到一秒的時間。
(注意:我已經創建了這個項目溫度和濕度監視器的變體,帶有圖表和電池監視器,您可能還想查看它。不使用省電但電池仍然持續 5 天,電池監視器會告訴您何時需要充電。)
我的第一個版本使用帶有 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 可充電電池,系統應在兩次充電之間持續長達 7 天 - 頻繁打開背光顯然會減少這種情況。事實上,我的版本已經運行了 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 可充電電池,系統應在兩次充電之間持續使用長達 12 天 - 經常打開顯示器會減少這種情況,但它的消耗量很低,因此不會被注意到。
我已經包含了兩個版本的原理圖和代碼。任何一個版本都應該在大多數 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
代碼中主要感興趣的領域是loop()
使處理器進入睡眠狀態的領域。
// 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);
}
}
我們首先檢查系統是否在最后一個按鈕被按下后保持清醒的時間長于設置的保持清醒的時間。timeWoken
在millis()
按下按鈕的那一刻經過。
if ((millis() - timeWoken) > (keepAwakeFor * 1000))...
如果這個時間已經過去,那么我們循環 3 次,每次在隨機位置顯示貪睡圖標以避免燒機,并使處理器休眠 8 秒。在進入睡眠之前啟用引腳 2 上的中斷。如果通過按下模式按鈕引腳變為低電平,這將喚醒處理器并繼續運行代碼。如果此時處于最后一個循環中,則后續的睡眠循環將失敗,因為它們會在按鈕釋放之前很快發生。
在 3 次循環 24 秒后,系統會運行 3 次循環以檢查傳感器讀數并更新最小值和最大值。(注意:僅檢查一次并不能成功讀取,但循環 3 次更正了此問題)。它還檢查處理器是否處于喚醒狀態,以及是否顯示設置。枚舉模式跟蹤是否要顯示溫度或濕度。
最后,如果系統處于喚醒狀態,則檢查按鈕是否已按下:
模式按鈕(引腳 2)將在溫度和濕度之間切換顯示
重置按鈕(引腳 3)將重置最小和最大讀數的值
中斷
如果系統處于睡眠狀態并且按下模式按鈕,則調用中斷:
void wakeUp()
{
// Handler for the pin interrupt.
timeWoken = millis(); // Reset so remains awake for awake period
awake = true;
justWoken = true;
}
這只是設置系統被喚醒的時間,設置awake
標志并設置justWoken
用于默認顯示溫度(在 中loop()
),并在下一次檢查按鈕之前調用延遲。
代碼(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()
菜單中,如果背光燈也被檢查并關閉,如果它已在 中設置的時間段內打開lightTimeOut
。
// Check if need to turn backlight off
if (lightOn && ((millis() - timeLightTurnedOn) > (lightTimeOut * 1000)))
TurnBacklightOff();
按下模式按鈕時背光打開。
開/關
如果您想添加一個開/關開關,請將其插入從充電器模塊 OUT+ 到 Arduino 板的電線中。這將允許您在設備關閉的情況下為電池充電。
調節電池充電
所使用的 TP4056 充電器包括一個 1.1K 歐姆的調節電阻,可提供 1,000mAh 的充電速率。這對于使用的 1,000mAh 電池來說實在是太高了,它應該以最大 500mAh 充電。這很繁瑣,但您可以卸下板上安裝的電阻器(R3),或者我發現用刀刮過它更容易打破它,因為這會使柱子焊接到,并焊接在外部電阻器上以減少電流。下表顯示了電阻值和產生的電流。(用儀表檢查您是否仍在讀取連接上的正確電阻,因為很容易將它們短路,這可能會造成損壞。)
?
- 使用Blynk應用程序的物聯網溫度和濕度監控器
- 帶有圖表和電池監控器的溫度和濕度監控器
- AD629A SPICE宏模型最小值
- CN0398 帶溫度補償功能的土壤濕度和pH值測量系統
- 超低功耗穩壓器、監控器和PMIC
- AD8677:130最大的V最大值Office Office Opp在TSOT數據Sheet
- AD629A SPICE宏模型最小值
- CN0326:具有溫度補償的隔離式低功耗PH值測試系統
- 基于MCP6V81/1U下的5 MHz、 0.5 mA 零漂移運放
- 有溫度補償的隔離式低功耗PH值測試系統 9次下載
- 具有溫度補償的隔離式低功耗PH值測試系統 12次下載
- 排除最大最小值后求平均值 11次下載
- 數字溫度計程序 7次下載
- C語言教程之求數組元素中的最小值 0次下載
- CDMA1X功率控制介紹-功控的數據配置
- 正弦交流電的瞬時值、最大值、有效值 3256次閱讀
- 運放參數講解:最對最大值和推薦工作條件 947次閱讀
- 西門子博途中如何讀取其它類型數組的最大值及索引 1526次閱讀
- 西門子PLC獲取最小值指令的工作原理 2175次閱讀
- CMOS圖像傳感器的動態范圍 1315次閱讀
- 無毛刺電壓監控器的基礎知識 581次閱讀
- SIMATIC S7-1500 PLC獲取最大值與最小值指令簡述 6443次閱讀
- 用SCL編寫數據排序的程序 1000次閱讀
- 如何確認LTM8065的電壓變動值 795次閱讀
- 基于MSP430F449單片機和MAX1270芯片實現峰值表設備應用系統的設計 2353次閱讀
- 基于AT89S52單片機和LTM8901實現智能環境溫濕度控制系統的設計 1247次閱讀
- 如何計算電源IC的損耗 3448次閱讀
- 電源反饋光耦CTR值的影響 5938次閱讀
- FPGA上如何求32個輸入的最大值和次大值:分治 8321次閱讀
- ADuC7061和外部RTD構建的基于USB的溫度監控器 2922次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 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十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多