电子说
第1步:组件
NodeMCU
AH180霍尔效应传感器
磁铁
LED
面包板。 (我们使用了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。
全部0条评论
快来发表一下你的评论吧 !