步驟1:組件
NodeMCU
AH180霍爾效應(yīng)傳感器
磁鐵
傾卸桶(見(jiàn)下文)
一些連接線
面包板(我們已使用Adafruit Perma-Proto面包板)
外殼和電纜密封套
4 x AA電池座和電池
步驟2:建造一個(gè)傾倒桶
傾倒桶是用于測(cè)量降雨量的相當(dāng)普遍的工具。這是一個(gè)簡(jiǎn)單的設(shè)備,由一個(gè)將水引導(dǎo)到水桶中的漏斗組成。桶裝滿后,它會(huì)提示您啟動(dòng)開(kāi)關(guān),傾倒水,并開(kāi)始在另一側(cè)裝滿桶。 -有關(guān)更多信息,請(qǐng)參見(jiàn)Wikipedia
對(duì)于您自己的雨量計(jì),最簡(jiǎn)單的選擇是購(gòu)買一個(gè)。像這樣或類似的東西將適用于我們的設(shè)置。如果您要購(gòu)買一個(gè),則無(wú)需擔(dān)心霍爾效應(yīng)傳感器或磁鐵。如果您正在尋找一些更農(nóng)業(yè)的產(chǎn)品,則可以從本地硬件商店中挑選零件,然后一起購(gòu)買。從這些人那里檢查設(shè)計(jì)
在我們的案例中,我們已經(jīng)3D打印了一個(gè)。我們基于BulldogLowell撰寫(xiě)的這篇文章。我們已對(duì)其進(jìn)行了少許修改以適合我們的傳感器和磁體。
每次在存儲(chǔ)桶中都可以在我們的Github存儲(chǔ)庫(kù)中找到STL文件
校準(zhǔn)
提示,開(kāi)關(guān)記錄一個(gè)計(jì)數(shù),我們可以將其轉(zhuǎn)換為降雨的高度。降雨的高度可以通過(guò)收集的雨水量與收集面積之比來(lái)確定:
降雨高度(cm)=收集水量(mL)/收集面積(cm2)
對(duì)于我們的收集器,我們的收集區(qū)域?yàn)?.5厘米x 3.5厘米(19.25平方厘米),每個(gè)鏟斗尖端的收集量為2.5毫升。
安裝
安裝單元時(shí)的幾點(diǎn)注意事項(xiàng)
確保每個(gè)提示的降雨高度為0.1298cm或1.298mm。裝置完全處于水平狀態(tài)-否則,鏟斗不會(huì)為每個(gè)吸頭收集相同的體積-并且結(jié)果將不準(zhǔn)確
將其安裝在離地面至少一米的地方。這是為了減少任何東西意外倒入的可能性(例如灰塵)。
確保沒(méi)有超出規(guī)格的范圍??雌饋?lái)似乎很明顯,但重要的是在它的幾英尺內(nèi)沒(méi)有任何樹(shù)枝或樹(shù)葉,以確保沒(méi)有任何東西可以干擾雨水。 (記住,樹(shù)枝會(huì)隨著時(shí)間而增長(zhǎng)。)
步驟3:接線
設(shè)備的基本接線圖。您可以在此說(shuō)明的最后看到最終版本,以及如何將其連接到小費(fèi)桶。
不一定需要LED和按鈕,但對(duì)于發(fā)布手冊(cè)很有用
步驟4:源代碼
對(duì)于雨量計(jì),我們將每隔30分鐘發(fā)布一次數(shù)據(jù),以備就緒。 io服務(wù)。我們將使用readiness.io庫(kù)來(lái)管理wifi和服務(wù)連接。我們還在一個(gè)單獨(dú)的.h文件中拆分了所有配置變量。
在RainGauge.ino代碼中,我們有三個(gè)執(zhí)行關(guān)鍵功能的中斷
Rain中斷-檢測(cè)鏟斗何時(shí)傾斜,并將其添加到收集的雨高
計(jì)時(shí)器中斷-定期(我們已經(jīng)使用了30分鐘)獲取雨高并將其發(fā)送到readiness.io服務(wù)器,然后重置高度。
按鈕中斷-手動(dòng)執(zhí)行與計(jì)時(shí)器相同的功能(我們主要用于測(cè)試是可選的)
您可以下載完整的源代碼此處
《圖id =“ rich-embed-files” class =“ ible-files”》
config.h
const 字符串CHANNEL_ID = ” XXXXXXXXXXXXXX “ ; // Readiness.io頻道ID
const 字符串SENSOR_ID = ” XXXXXXXXXXXXXXX “ ; //您的AgriWebb或組成的傳感器ID
const 字符串主題= ” rain-gauge “ ; //傳感器的類型或您發(fā)送的數(shù)據(jù)的名稱
const 字符串VERSION = ” 1 “ ;
const 字符串格式= “ ” ;
const char * WIFI_SSID = ” XXXXXXX “ ; //您的WiFi SSID/名稱
const char * WIFI_PASS = ” XXXXXXX “ 跨度》 ; //您的WiFi密碼
const uint16_t UPDATE_RATE = 120 ; //發(fā)送數(shù)據(jù)之間的等待時(shí)間(以秒為單位)
const uint8_t TIMEZONE_OFFSET = 10 ; //傳感器所在的時(shí)區(qū)(例如GMT為10)
const double BUCKETTIP_HEIGHT = 0.1298 ; //不要忘記為您自己的小費(fèi)桶進(jìn)行更改。
//單個(gè)鏟斗尖端收集的雨水高度(以毫米為單位)
//由單個(gè)桶尖中的集水量(mL
//除以收集區(qū)域
查看GitHub托管于?的rawconfig.h
rainGauge.ino
# include 《 readiness_io。 ?》
# include 《 Ticker.h 》
# include ” config.h “
const int LED_PIN = 0 ; //連接LED的引腳(D3)
const int INTERRUPT_PIN = 14 ; //該引腳連接測(cè)試按鈕(D5)
揮發(fā) double RAIN_HEIGHT = 0 ; //變量,用于存儲(chǔ)rain_height
易失性字節(jié)中斷= 0 ;
readiness_io 客戶端(CHANNEL_ID,TOPIC,SENSOR_ID,VERSION,F(xiàn)ORMAT);
股票行情計(jì)時(shí)器;
/* 中斷c安裝雨量計(jì) */
無(wú)效 rainInterrupt (){
RAIN_HEIGHT + = BUCKETTIP_HEIGHT; //取當(dāng)前的雨高度并添加水桶的數(shù)量
序列號(hào)。打?。?” 當(dāng)前雨水收集高度(mm): “ );
串行。 println (RAIN_HEIGHT);
}
void handleInterrupt (){
中斷++;
}
/* 中斷計(jì)時(shí)器,用于將數(shù)據(jù)發(fā)送到Readiness.io服務(wù)器 */
void writeToServer (){
interrupt ++;
}
void 設(shè)置(){
pinMode (LED_PIN,輸出);
pinMode (BUILTIN_LED,輸出);
digitalWrite (BUILTIN_LED,高); //內(nèi)部LED處于低電平時(shí)會(huì)亮起-因此我們必須將其關(guān)閉/
串行。開(kāi)始( 115200 );
串行。 setTimeout ( 2000 );
同時(shí) (!Serial){} //等待序列初始化。
序列號(hào)。 println ( ” 設(shè)備已啟動(dòng)“ );
序列號(hào)。打?。?“ 連接到“ );
串行。 println (WIFI_SSID);
客戶端。 wifiConnection (WIFI_SSID,WIFI_PASS);
pinMode (INTERRUPT_PIN,INPUT_PULLUP); //設(shè)置簧片/霍爾效應(yīng)的中斷引腳
attachInterrupt ( digitalPinToInterrupt (INTERRUPT_PIN),rainInterrupt,RISING); //附加中斷。
計(jì)時(shí)器。附加(UPDATE_RATE,writeToServer);
客戶端。 testConnection ();
}
void loop (){
如果(中斷》 0 ){
客戶端。 publishData (RAIN_HEIGHT);
RAIN_HEIGHT = 0 ;
interrupt = 0 ;
digitalWrite (LED_PIN,高);
delay ( 250 );
digitalWrite (LED_PIN,LOW);
}
}
查看GitHub托管的?托管的rawrainGauge.ino
步驟5:成品
這是最終的雨量計(jì)。 nodeMCU放在外殼中,傾卸桶的電線通過(guò)電纜密封套進(jìn)入,以確保其防水性并可以安全地安裝在外部。我們的電線是應(yīng)該的,但您可以根據(jù)需要制作它們。
您還可以看到自卸斗的內(nèi)部。傳感器固定在墻壁上,而磁鐵則固定在翻斗的擺臂上,因此每次裝滿并翻倒時(shí)都會(huì)記錄讀數(shù)。組裝翻斗的最困難的部分是正確放置傳感器和磁鐵。只需足夠接近即可讀取讀數(shù),而無(wú)需工具即可始終保持打開(kāi)狀態(tài)。
-
NODEMCU
+關(guān)注
關(guān)注
13文章
289瀏覽量
21403
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論