37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验四:震动传感器模块SW-420/520D SW-18010P灵敏常开常闭报警感应振动
3、实验模块接口说明(3 线制)
VCC 外接 3.3V-5V 电压(可以直接与 5v 单片机和 3.3v 单片机相连)
GND 外接 GND
DO 小板数字量输出接口(0 和 1)
注意:正确接线!切勿将正负接反,使板子电子器件烧毁!
4、模块使用说明:
(1)模块不震动时,震动开关呈闭合导通状态,输出端输出低电平,绿色指示灯亮;
(2)发生震动时,震动开关瞬间断开,输出端输出高电平,绿色指示灯不亮;
(3)输出端可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境是否有震动,起到报警作用。
5、实验程序一:测试常闭型SW-420震动开关传感器
(1)参考开源代码(Arduino):
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序一:测试常闭型SW-420震动开关传感器模块
*/
void setup() {
pinMode(2, INPUT); //设置引脚D2为输入模式
pinMode(13, OUTPUT); //设置引脚D13为输出模式(接LED)
}
void loop() {
if (digitalRead(2)) { //当震动开关触发时
digitalWrite(13, HIGH); // 引脚13输出高电平,LED点亮
delay(1000); //延时1秒
}
else {
digitalWrite(13, LOW); // 否则,引脚13输出低电平,LED熄灭
}
}
(2)实验场景图
2、实验程序二:测试常闭型SW-420震动开关传感器
实验开源仿真编程(Linkboy V4.63)
二、SW-520D倾斜震动传感器模块
1、模块特色:
(1)采用高灵敏角度开关SW-520D作为震动传感器.
(2)比较器输出,信号干净,波形好,驱动能力强,超过15mA。
(3)工作电压3.3V-5V
(4)输出形式 :数字开关量输出(0和1)
(5)设有固定螺栓孔,方便安装
(6)小板PCB尺寸:3.2cm x 1.4cm
(7)使用宽电压LM393比较器
2、模块电原理图
3、实验程序三:通过串口查看SW-520D倾斜模块的状态
(1)实验开源图形编程(Mind+、Mixly、编玩边学)
(2)实验串口返回情况
4、实验程序四:SW-520D倾斜模块控制LED灯和蜂鸣器
(1)实验开源仿真编程(Linkboy V4.63)
(2)实验场景图
三、KY-031敲击(晃动)传感器模块
1、有机玻璃外壳的敲击头和振动开关类似,只是能感受较小振幅的振动,更灵敏一些,余振的时间能维持稍微久一点点。这个模块简单些,相关资料非常少。模块参数:
(1)工作电压:3.3V-5V(DC)
(2)模块接口:3PIN
(3)输出信号:数字开关信号
2、模块接线
(1)GND 接电源负极(板示-)
(2)VCC 接电源正极3.3-5V
(3)DO TTL开关信号输出(板示S)
3、实验说明:
敲击传感器模块和数字13 接口自带LED 搭建简单电路,制作敲击闪光器。利用数字13 接口自带的LED,将敲击传感器接入数字2接口,当敲击传感器感测到有敲击信号时,LED 闪烁发光。
4、实验程序五:测试KY-031敲击(晃动)传感器模块
(1)参考开源代码(Arduino):
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验程序五:测试KY-031敲击(晃动)传感器模块
*/
const int switchPin = 2; // 敲击模块S连接引脚D2
const int redLedPin = 13; // 引脚13板载LED灯
void setup() {
pinMode(switchPin, INPUT); // 设置引脚2为输入模式
pinMode(redLedPin, OUTPUT); //设置引脚13为输出模式
}
void loop() {
int switchValue = 0; //定义变量并赋初值为0
switchValue = digitalRead(switchPin); //读取引脚2的值
if (switchValue == 0) { //判断键值等于0,执行下面的程序
digitalWrite(redLedPin, HIGH); //点亮LED
delay(1000);
}
else { //判断键值不为0,将执行下面的语句
digitalWrite(redLedPin, LOW); //熄灭LED
}
}
5、实验场景图