如何将NodeMCU与AH180霍尔效应传感器配合使用

电子说

1.2w人已加入

描述

第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。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分