娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

首頁 > 控制電路 >自動(dòng)控制 > 利用ATtiny85實(shí)現(xiàn)植物澆水自主系統(tǒng)的設(shè)計(jì)

利用ATtiny85實(shí)現(xiàn)植物澆水自主系統(tǒng)的設(shè)計(jì)

來源:互聯(lián)網(wǎng)發(fā)布者:jikai233 關(guān)鍵詞: 濕度傳感器 澆水裝置 更新時(shí)間: 2024/12/31

你是否有想實(shí)現(xiàn)的下列之一的功能:

收到警告(警報(bào)聲、短信等)并去給植物澆水?

一段時(shí)間后(通常是幾天),計(jì)時(shí)機(jī)器會(huì)倒一些水。也許你的工廠當(dāng)時(shí)不這樣做!

完全依賴濕度傳感器。大錯(cuò)!局部濕度可能會(huì)誤導(dǎo)鍋的平均濕度!

您的設(shè)備正在監(jiān)控植物,在需要時(shí)澆水。您只需不時(shí)訪問它,并在需要時(shí)重新填充水容器。

這個(gè)項(xiàng)目中選擇了最后一個(gè)選項(xiàng)。

這是顯示含羞草表情符號的中央單元:快樂 :) 正常 :| 或不滿意 :( ,然后是土壤濕度 (%)、自上次抽水以來的天數(shù)和小時(shí)數(shù)。當(dāng)然,您可以使用任何其他顯示器。這個(gè)顯示器是從另一塊板上重復(fù)使用的 (Pololu A-Star Prime)。

poYBAGMoI3WAdD75AAJBLXVAYbM060.png

pYYBAGMoI3qACC89AASCZwMdG-M424.png

濕度傳感器

它是一種基于電阻率的傳感器,不會(huì)被腐蝕。如果您每次只打開幾毫秒的電源,剛好足以讀取濕度,它就可以正常工作。正好我展示的這個(gè),也工作了多年,沒有任何腐蝕跡象。只需使用附帶的軟件。

但是可能會(huì)出現(xiàn)其他問題:濕泥附著在傳感器上,因此表明局部濕度與其余部分不同!同時(shí)如果傳感器離水管太遠(yuǎn),讀數(shù)會(huì)有很大的延遲:需要水在鍋中擴(kuò)散所需的時(shí)間。把它放在離水管較近的地方停止抽水,以免水分太多。根據(jù)您的工廠要求更改軟件中的濕度閾值。這個(gè)抽水低于 95% 的濕度(在用我的含羞草做了一些測試后,我將此閾值更改為 75%),持續(xù)一定的秒數(shù),具體取決于底池大小。然后,在讀取時(shí)間(10-15 分鐘)之后,如果指示的濕度沒有超過閾值,則泵送新的水量,但迭代次數(shù)有限。

這種方法可以讓水有時(shí)間在鍋中擴(kuò)散。在給定的時(shí)間間隔(8-12 小時(shí))內(nèi)只允許澆水兩次,以避免在擴(kuò)散之前灑水,避免一些可能的傳感器臨時(shí)錯(cuò)誤。建議每隔幾個(gè)月重新校準(zhǔn)濕度傳感器:在軟件中調(diào)整閾值:傳感器在空氣中的值(0% 濕度)和傳感器短路的值(100% 濕度)。

作為微控制器,我們建議使用 AtTiny85:它有必要的 IO 引腳,剛好夠用,并且相比其他微控制器便宜。

整個(gè)設(shè)備(包括泵)由 220V 電源適配器持續(xù)供電,提供 9V/0.5A。如果發(fā)生電源故障(希望持續(xù)不到幾天,否則植物會(huì)變干!),這不是問題。如果需要,系統(tǒng)將重新啟動(dòng),讀取濕度和抽水,然后將重置小時(shí)和天數(shù)計(jì)數(shù)器。

為泵供電由 Mosfet 模塊完成,但也可以通過其他方式(例如繼電器)完成。顯示器可以是任何其他帶有 I2C 接口的顯示器。這個(gè)有一個(gè)并行接口,所以需要一個(gè)I2C適配器。

使用一年后

該項(xiàng)目的運(yùn)行時(shí)間超過 18 個(gè)月。不過有一次,突然遇到濕度傳感器停止工作的情況。幸運(yùn)的是,在此期間并沒有什么和濕度有關(guān)的環(huán)境需求,該軟件每 2 天抽一次水。現(xiàn)在它已被替換并且一切正常。

注:必須在代碼中測試和設(shè)置新的濕度閾值,從 95% 到 75%!產(chǎn)品和土壤鹽度的可變性!

poYBAGMoI42AEglmAAV4aYUma0w043.png
pYYBAGMoI5WAQ24qAAjNbye1Q6g366.png

Arduino code for Attiny-plant-care:

/* Sketch for ATtiny85. Based on the Digispark (Use Digispark Default 16.5 MHz), no port select.
* Compile, Upload and then coonect ATtiny85 to USB.
* {ATtiny85 alone pins: 1=PB5, 2=PB3,ADC3, 3=PB4,ADC2, 4=GND, 5=PB0,MOSI,SDA, 6=PB1,MISO, 7=PB2,SCK,SCL, 8=VCC}
* ATtiny Pin 5 = PB0 (P0 on ATTiny board) = SDA
* ATtiny Pin 7 = PB2 (P2 on ATTiny board) = SCK=SCL
* ATtiny PB1 = to SWITCH power of a POLOLU MOSFET: power the Pump (6-12V)
* ATtiny PB3 = Humidity sensor output= analog read
* ATtiny PB4 = Power for the sensor (pin: 20mA = sufficient)
*  Uses 26 mA for CPU, Sensor + Mosfet on + Display
* Uses 20 mA for CPU + Display (between readings)
* Uses 8 mA in deep sleep (Display on only)
* Between reads: deep sleep. Protection against over-watering by humidity sensor.
*/


#include

#define LED_BUILTIN PB5      // Change PB5 to PB1 only for testing delays
#define powsen PB4        // PB4 provides 4.1V to power the humidity sensor
#define sensor PB3        // Sensor data pin for analog read
#define pump PB1         // Pin for LED & MOSFET feeding the Pump


// Reading humidity once in 30min...1hour is sufficient:
int D, H, nr=100;         // Attiny85 will sleep nr*9 (sec.) (E.g. 200=>30min; 400=>1h))
unsigned long psec, corr=nr*300; // time counter since start or watering

//This runs each time the watch dog wakes us up from sleep
ISR(WDT_vect) {
//Don’t do anything. This is just here for wake up.
}

void setup() {
lcd.init(); lcd.backlight(); lcd.clear();
pinMode(powsen,OUTPUT);   // Power to the sensor by powsen PIN
pinMode(sensor, INPUT);   // Sensor read value from sensor PIN
pinMode(pump, OUTPUT);    // Pump control PIN
pinMode(LED_BUILTIN, OUTPUT);

set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
sleep_enable();          // enables the sleep bit in the mcucr register, so sleep is possible
psec=0;               // Starting moment
}

void loop() {
adc_enable();
digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)  
digitalWrite(powsen,HIGH);      // Power on the sensor
int humidity=analogRead(sensor);   // Read sensor data
delay(200);             // A short time, just to read the sensor!
digitalWrite(powsen,LOW);      // Power off the humidity sensor
digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
// Convert analog values from sensor to humidity. Tested: free and short-circuit.
humidity = constrain(humidity, 85, 660);  // accept values between these limits for 4.8V on sensor
humidity = map(humidity, 85, 660, 0, 100); // and map them between 0 and 100%

// The pump is started if humidity drops below a level determined for each plant!
// Then, the pump cannot restart before ’pause’, waiting for water to diffuse in the pot.
// Set below the DRY Limit for Your Plant (E.G.: 95):
if (humidity<=95) {                   
 digitalWrite(pump,HIGH);    // Power the pump through a Pololu-LV-MOSFET
 delay(15000);          // Time [ms] to pump the tested REQUIRED volume of WATER to the plant!!
 digitalWrite(pump,LOW);     // Power down the pump through the MOSFET
 delay(1000);
 psec=0;            // Reset timer of water pumping.
 // Test that after [nr*9] seconds (15min in this case), water was absorbed and sensor is above threshold.
 // Otherwise, the pump will start again after. Warning: too much water can be bad for your plant!
}

// Show the results on the screen
lcd.setCursor(0, 0); lcd.print("Mimosa:");
if (humidity>95)
 if (humidity>97)
  lcd.print(")");
 else
  lcd.print("|");
else
 lcd.print("(");

lcd.setCursor(0, 1);
lcd.print(humidity); lcd.print("%");   // Write on LCD the humidity (%) and
D=psec/86400;              // days since last watering/reset ...
H=(psec%86400)/3600;           //  and hours
lcd.print(D); lcd.print("d");
lcd.print(H); lcd.print("h ");

// Most of the time, go to sleep for ’nr’ multiples of 8 seconds + opp. time    
adc_disable(); // ADC uses ~320uA
for (int i=0; i

// ===================================================================
void setup_watchdog(int timerPrescaler) {
 //Sets the watchdog timer to wake up, but not reset
 //0=16ms, 1=32ms, 2=64ms, 3=128ms, 4=250ms, 5=500ms
 //6=1sec, 7=2sec, 8=4sec, 9=8sec
 //From: http://interface.khm.de/index.php/lab/experiments/sleep_watchdog_battery/
if (timerPrescaler > 9 ) timerPrescaler = 9; //Limit incoming amount to legal settings
byte bb = timerPrescaler & 7;
if (timerPrescaler > 7) bb |= (1<<5); //Set the special 5th bit if necessary
//This order of commands is important and cannot be combined
MCUSR &= ~(1<

提問/討論

這里還沒有內(nèi)容,您有什么問題嗎?

我要提問/討論

電子電路資源推薦

推薦帖子 最新更新時(shí)間:2025-04-09 15:00

發(fā)一個(gè)很全的封裝尺寸文件
需要的看附件 發(fā)一個(gè)很全的封裝尺寸文件 看看是什么 謝謝 感謝分享! 回復(fù)
 dengnianPCB設(shè)計(jì)
VHDL syntax error 請各位朋友幫忙找一下錯(cuò)誤[謝謝各位,已解決]
Error (10500): VHDL syntax error at bell.vhd(80) near text process ; expecting if 在下剛剛學(xué)習(xí)cpld,下面的代碼是我根據(jù)教程輸進(jìn)去的,編譯不了,提示上面的錯(cuò)誤信息,實(shí)在找不到是那里不對,請各
 吳下阿蒙FPGA/CPLD
【好書推薦】STM32自學(xué)筆記
中文名 :STM32 自學(xué)筆記 作者 : 蒙博宇 圖書分類 : 硬件 資源格式 :PDF 版本 : 掃描版 出版社 : 北京航空航天大學(xué)出版社
 qinkaiabcstm32/stm8
【MSP430共享】MSP5438無線語音開發(fā)板資料
這些資料足夠大家做個(gè)無線對講機(jī)了 【MSP430共享】MSP5438無線語音開發(fā)板資料 不錯(cuò)不錯(cuò) 學(xué)習(xí)了 支持 hao 支持 GOOD 支持!GOOD 馬克吐溫,學(xué)習(xí)了 不錯(cuò)不錯(cuò) 學(xué)習(xí)了
 fengzhang2002微控制器 MCU
電磁繼電器電路接出MOS管后部分
電磁繼電器電路接出MOS管后部分,為何右側(cè)要接兩個(gè)24V電源,而且反接二極管。C:\\Users\\liangyu\\Desktop\\模塊.JPG 電磁繼電器電路接出MOS管后部分 電磁閥等含有線圈的設(shè)備,開關(guān)的時(shí)候線圈會(huì)產(chǎn)生反向感生電壓,電磁閥電源被斷開時(shí),線圈自感產(chǎn)生的
 fenglanzimo2014模擬電子
Possible IDATA stack overflow detected為什么?
自己做的ZIGBEE(cc2530)板子,程序下載好之后,調(diào)試會(huì)出現(xiàn)如下錯(cuò)誤: Sun Jan 25 22:34:32 2015: Warning: Possible IDATA stack overflow detected. Reset target to re-enable
 342785896無線連接

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

About Us 關(guān)于我們 客戶服務(wù) 聯(lián)系方式 器件索引 網(wǎng)站地圖 最新更新 手機(jī)版 版權(quán)聲明

EEWORLD 電路圖 站點(diǎn)相關(guān): 下載中心 Datasheet 參考設(shè)計(jì)

北京市海淀區(qū)中關(guān)村大街18號B座15層1530室 電話:(010)82350740 郵編:100190

電子工程世界版權(quán)所有 京B2-20211791 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 福州市| 桃园县| 吴堡县| 社旗县| 宣武区| 麻江县| 宁阳县| 武定县| 松原市| 博乐市| 从化市| 和政县| 凤庆县| 离岛区| 东源县| 乌兰县| 罗源县| 新建县| 威信县| 清原| 焦作市| 安塞县| 杭锦后旗| 柘城县| 阜南县| 会同县| 岑溪市| 西乡县| 尉犁县| 嘉义市| 吉木乃县| 昌乐县| 磐安县| 舞阳县| 濮阳县| 忻州市| 镶黄旗| 泽州县| 娱乐| 西安市| 武鸣县|