第1步:組件
NodeMCU
AH180霍爾效應傳感器
磁鐵
面包板。 (我們使用了Adafruit Perma-Proto面包板)
步驟2:將其接線
接線該圖顯示了如何連接傳感器和LED。首先,我們將數字霍爾效應傳感器連接到D5,并在Vcc和傳感器信號引腳之間連接10K電阻。對于LED,它通過1K電阻連接到D3。
但是,如果您使用的是霍爾效應傳感器(如我們在組件列表中鏈接的傳感器),則已經包含了LED和電阻器,因此您只需將三個引腳接地即可(-引腳),Vcc(中間引腳)和D5(S引腳)。
第3步:源代碼
我們將發布到每當我們在傳感器上看到狀態變化時,都可以使用readiness.io服務。我們將使用readiness.io庫來管理wifi和服務連接。
為了減少誤報的數量-我們提供了一個帶有200ms窗口的軟件防反跳功能,您可以
要讀取霍爾效應傳感器更改狀態時的讀數,我們將D5作為中斷連接起來,以使循環免于任何不必要的工作。一旦檢測到更改,我們就在INTERRUPT變量中設置一個標志,然后將狀態發送回readiness.io服務。
將數據發送回readiness.io服務應該在循環內部而不是在中斷函數中進行,因為它在有機會完成操作之前會超時。
您可以在此處找到完整的源代碼
《圖id =“ rich-embed-files” class =“ ible-files”》
config.h
const 字符串CHANNEL_ID = ” XXXXXX “ 跨度》 ; // Readiness.io頻道ID
const 字符串SENSOR_ID = ” XXXXXX “ ; //您的AgriWebb或組成的傳感器ID
const 字符串主題= ” switch-generic “ ; //傳感器的類型或您發送的數據的名稱
const 字符串VERSION = ” 1 “ ;
const 字符串格式= “ ” ;
const char * WIFI_SSID = ” XXXXXX “ ; //您的WiFi SSID/名稱
const char * WIFI_PASS = ” XXXXXX “ 跨度》 ; //您的WiFi密碼
const uint8_t TIMEZONE_OFFSET = 10 ; //傳感器所在的時區(例如GMT為10)
const uint16_t DEBOUNCE_TIME = 200 ; //下一次門讀取可以發生多長時間(毫秒)
查看GitHub托管于?的rawconfig.h
genericHallEffect.ino
《噸d class =“ blob-code blob-code-inner js-file-line” id =“ file-generichalleffect-ino-LC33”》 客戶端。 publishData (GATE_STATE);# include 《 readiness_io.h 》
# include “ config.h ”
const int LED_PIN = 4 ; //連接LED的引腳(D3)
const int INTERRUPT_PIN = 14 ; //該引腳連接測試按鈕(D5)
易失性字節中斷= 0 ;
靜態 無符號 長 last_interrupt_time = 0 ;
readiness_io client ( CHANNEL_ID,TOPIC,SENSOR_ID,VERSION,FORMAT);
/* 中斷,用于評估霍爾效應傳感器的變化(高低) */
void halleffectInterrupt (){
unsigned long interrupt_time = millis ();
如果(interrupt_time-last_interrupt_time》 DEBOUNCE_TIME)
{
中斷++;
}
last_interrupt_time = interrupt_time;
}
void 設置(){
pinMode (LED_PIN,輸出);
pinMode (BUILTIN_LED,OUTPUT);
digitalWrite (BUILTIN_LED,高); //內部LED處于低電平時會亮起-因此我們必須將其關閉/
序列號。開始( 115200 );
串行。 setTimeout ( 2000 );
同時 (!Serial){} //等待序列初始化。
序列號。 println ( “ 設備已啟動” );
序列。打印( ” 連接到“ );
Serial。 println (WIFI_SSID);
客戶端。 wifiConnection (WIFI_SSID,WIFI_PASS);
pinMode (INTERRUPT_PIN,INPUT_PULLUP); //設置簧片/霍爾效應的中斷引腳
attachInterrupt ( digitalPinToInterrupt (INTERRUPT_PIN),halleffectInterrupt,CHANGE); //附加中斷。
客戶端。 testConnection ();
}
void loop (){
如果(interrupt》 0 ){
中斷= 0 ;
// GATE_STATE 0 =打開1 =關閉
布爾 GATE_STATE =! digitalRead (INTERRUPT_PIN);
digitalWrite (LED_PIN,GATE_STATE);
}
}
view rawgenericHallEffect .ino由GitHub托管?
步驟4:成品
這是最終的木板。如您所見,我們已經使用了一個霍爾效應傳感器,該傳感器連接到一個分線板上-包括LED和電阻。您只需要將磁鐵抬高至傳感器,就會看到LED亮起。然后它將狀態傳輸到readiness.io。
-
霍爾效應傳感器
+關注
關注
1文章
248瀏覽量
15593 -
AH1806
+關注
關注
0文章
2瀏覽量
6687 -
NODEMCU
+關注
關注
13文章
289瀏覽量
21426
發布評論請先 登錄
相關推薦
評論