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