步驟1:組件
NodeMCU
DHT22傳感器
10K歐姆電阻器
220歐姆電阻器
按鈕
面包板。 (我們使用了Adafruit Perma-Proto BreadBoards)
外殼和電纜接頭
4x AA電池座和電池
步驟2:將其連線
以下是設(shè)備的基本接線圖。你可以在這個(gè)教程的最后看到最終版本的樣子。
雖然不需要,但我們已經(jīng)包含了按鈕以發(fā)布手冊(cè)閱讀。
步驟3:源代碼
對(duì)于我們的天氣傳感器,我們將向READiness.io服務(wù)發(fā)布數(shù)據(jù)。為此,我們創(chuàng)建了一個(gè)READiness.io庫(kù)來(lái)處理wifi和服務(wù)連接。我們還將所有配置變量拆分為單獨(dú)的.h文件。
您可以在此處下載完整的源代碼
#包括 “ DHT.h ”
# include 《 readiness_io.h 》
#包括 《 Ticker.h 》
# include “ config.h “
const int LED_PIN = 0 ; //連接LED的引腳(D3)
const 字節(jié)INTERRUPT_PIN = 12 ; //引腳連接測(cè)試按鈕(D6)
volatile 字節(jié)中斷= 0 ;
#定義 DHTPIN 4 //傳感器連接的數(shù)字引腳(D2)
#定義 DHTTYPE DHT22 //指定DHT傳感器的類型
DHT dht (DHTPIN,DHTTYPE);
readiness_io client (CHANNEL_ID,TOPIC,SENSOR_ID,VERSION,F(xiàn)ORMAT);
Ticker timer;
void setup (){
pinMode (LED_PIN,OUTPUT);
pinMode (BUILTIN_LED ,OUTPUT);
digitalWrite (BUILTIN_LED,HIGH);
pinMode (INTERRUPT_PIN,INPUT_PULLUP);
Serial。 開始( 115200 );
Serial。 setTimeout ( 2000 );
while (!Serial){} //等待串口初始化。
Serial。 println ( ”設(shè)備已啟動(dòng)“ );
串行。打印( ”連接到“ );
Serial。 println (WIFI_SSID);
client。 wifiConnection (WIFI_SSID,WIFI_PASS);
attachInterrupt ( digitalPinToInterrupt (INTERRUPT_PIN),buttonInterrupt,F(xiàn)ALLING);
timer。 attach (UPDATE_RATE,writeToServer);
client。 testConnection ();
}
void buttonInterrupt (){
interrupt ++;
}
/* 用于發(fā)送的中斷計(jì)時(shí)器數(shù)據(jù)到Readiness.io服務(wù)器 */
void writeToServer (){
interrupt ++;
}
void 循環(huán)(){
if (中斷》 0 ){
/* 讀取DHT22傳感器 */
float h = dht。 readHumidity ();
float t = dht。 readTemperature ();
/* 將數(shù)據(jù)寫入json字符串并發(fā)送到服務(wù)器。 */
字符串天氣= ” \“濕度 \”:“ + 字符串(h)+ “,” ;
weather + = “ \” 溫度 \“:” + 字符串(t);
/* 將數(shù)據(jù)發(fā)布到readiness_io網(wǎng)絡(luò) */
client。 publishCustom (天氣);
/* 重置中斷變量,直到定時(shí)器中斷或按鈕將其關(guān)閉 */
interrupt = 0 ;
}
}
查看rawweatherSensor.ino由?通過GitHub主持
config.h
cons t 字符串CHANNEL_ID = “ XXXXXXXXXXXX ” ; // Readiness.io通道ID
const 字符串SENSOR_ID = ” XXXXXXXXXXXXX “ ; //您的AgriWebb或組成的傳感器ID
const 字符串TOPIC = ” XXXXXXX “ ; //傳感器的類型或發(fā)送數(shù)據(jù)的名稱
const 字符串VERSION = ” 1 “ ;
const 字符串格式= “ ” ; //將此處留空,除非您需要特定的就緒格式。
//即agriwebb
const char * WIFI_SSID = ” XXXXXXX “ ; //您的WiFi SSID/名稱
const char * WIFI_PASS = ” XXXXXXX “ ; //您的WiFi密碼
const uint16_t UPDATE_RATE = 30 ; //在發(fā)送數(shù)據(jù)之間等待多長(zhǎng)時(shí)間(以秒為單位)
const uint8_t TIMEZONE_OFFSET = 10 ; //傳感器所在的時(shí)區(qū)(例如GMT為10)
查看由GitHub承載?的rawconfig.h
第4步:成品
以下是成品的樣子。我們實(shí)際上已將傳感器包含在外部分線板上,這樣我們就可以保持外殼完全密封,并讓傳感器暴露在外。
-
傳感器
+關(guān)注
關(guān)注
2552文章
51283瀏覽量
755081 -
led
+關(guān)注
關(guān)注
242文章
23320瀏覽量
661863 -
NODEMCU
+關(guān)注
關(guān)注
13文章
289瀏覽量
21479
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論