简易无线运动传感器设备的制作

电子说

1.2w人已加入

描述

第1步:材料

运动传感器

我从墨西哥的sparkfun发行订购我的资料,因为这是我的住所,但是如果您在美国居住,您几乎无法从Sparkfun订购所有材料。

1个Pir传感器

http://www.sparkfun.com/products/8630

9.95 d olar

1 rf接收器315mhz

http://www.sparkfun.com/products/10533

4.95 dolar

1 rf发射器315mhz

http://www.sparkfun.com/products/10535

3.95 dolar

1 attiny85

http://www.sparkfun.com/products/9378

2.84 dolar

1 arduino uno

1开关

4电阻180ohm

1电阻10k欧姆

常开按钮(可选)

1 8欧姆扬声器(可选)

1 ic 8引脚基座

1pnp晶体管(您可以使用2n2222,只需检查一下集电极和发射极引脚在正确的位置)

1 lm7805(5V稳压器)

3个电解电容器10uf 50v

步骤2:硬件

运动传感器

运动传感器

运动传感器

运动传感器

正如您在图像中看到的那样,电路中的所有电路都可在5V电压下工作,而pir传感器可在9至12V电压下工作。要解决此问题并节省将电路连接到2种不同电压的工作和花费的时间,我使用lm7805(即5V稳压器),并将所有电路都连接到9V(方形)电池。

如果要制作一个pcb以更干净的方式包含所有连接,我将在下面放置一个pdf文件,以便您可以打印它并使用所需的方法进行传输。

2连接不适合设计,因此请用电线放置它们。 (第二个连接中的两个连接是黄色的)。对于接收器,我也打算使用attiny85设备,但是时间很短,所以我最终用扬声器制作了arduino屏蔽。 (如果有人要购买attiny85接收器的PCB,我已经处于半生产阶段,稍后我将上载。感谢您的理解。)

如果打印arduino接收器护罩,请务必小心,底部铜质端在顶部向上,引脚也放置在底部,并通过PCB上的孔进行焊接,但是所有其他组件都是从上部直接将引脚弯曲的焊料。您可以在5到8张图像中拥有更好的外观。

步骤3:软件

运动传感器

attiny85可以将arduino uno用作isp程序员。您可以查看此链接(http://hlt.media.mit.edu/?p=1706),以获取有关此过程的更多信息,但您无需这样做,因为我将详细解释所有内容。

我使用attiny是因为它比使用arduino便宜。您可以以2.84USD的价格购买attiny85,相比之下,arduino的价格约为38美元。使用attiny通过rf链接进行通信代表了一个挑战,因为attiny默认情况下没有rx或tx串行通信。我要感谢这个博客(http://mchr3k-arduino.blogspot.mx/)制作的程序,可以与attiny进行通讯。

好。因此,请逐步进行编程。

1。转到arduino官方网站并下载arduino-0022软件。 (不要使用arduino 1.0,它不起作用)。解压缩文件。您应该看到一个文件夹名称arduino-0022。

2。转到此链接。

http://mchr3k-arduino.blogspot.mx/2012/01/wireless-sensor-node-part-2.html?showComment=1338749638806#c853067277980266192

下载 attiny45_85 .zip 和 manchester.zip 文件。结果3。解压缩attiny45_85.zip文件。复制文件夹。

打开arduino-0022文件夹。打开硬件,然后将attiny45_85文件夹粘贴到其中。

4.解压缩manchester.zip文件。打开那个曼彻斯特文件夹,您应该看到另外两个文件夹。核心和MANCHESTER。

复制DE MANCHESTER文件夹。

再次打开arduino-0022文件夹。但这次打开库文件夹。将MANCHESTER文件夹粘贴到此处。

现在,您可以进行编程了。

5。启动arduino-0022程序。单击弹出箭头(打开),然后打开ArduinoISP示例。单击工具》面板》 arduino uno。 (现在您已经拥有了所有的权限)。

上载程序。

6。将attiny85放置在原型板(面包板)中,并将所有图像都连接到arduino。请确保以正确的方式放置Attin,否则将要烧掉它。 (发生在我身上:P)。

7。在arduino程序上,转到“工具”》“板”》“ attiny85”(使用Arduino作为ISP)。再次单击工具》刻录引导程序》带Arduino的ISP。 (您可能会看到一个错误,但是没关系)。

好,让我们为发送器编写程序。

第4步:发送器

运动传感器

运动传感器

运动传感器

这是发送器的程序。如果您现在按顺序进行最后一步,则只需将代码放在arduino程序中并上传它即可。

#include//包括用于通信的库

#define TxPin 2//使用的引脚发送数据

unsigned int Tdata = 0;//从0

int TRANSISTOR_PIN = 1开始数据;//将晶体管导通和截止的引脚

int PIR_SENSOR_PIN = 0;//运动传感器引脚

void setup()

{

MANCHESTER.SetTxPin(TxPin);//设置通信的引脚

pinMode(TRANSISTOR_PIN,OUTPUT);

pinMode(PIR_SENSOR_PIN,INPUT);

}

无效循环()

{

int pirVal = digitalRead(PIR_SENSOR_PIN);//读取运动传感器的状态

if(pirVal == LOW)//如果运动传感器检测到运动,则

{/*动作,在这种情况下,将晶体管导通以给发射器供电,然后发送消息,关闭晶体管*/

digitalWrite(TRANSISTOR_PIN,HIGH);//打开晶体管

delay(1000);

Tdata = 50;//我使用50作为sensor1警报编号,但是您可以使用所需的编号

//请确保在发送方和接收方中使用相同的编号

MANCHESTER.Transmit(Tdata);//发送信号

delay(100);

digitalWrite(TRANSISTOR_PIN,LOW);//关闭晶体管以节省电池

}

delay(2000);

}

第5步:接收器

运动传感器

运动传感器

《对于接收器,您只需要对arduino进行编程。因此,转到“工具”》“主板”,然后选择“ arduino uno”。

复制此代码。并上传。

#include//包含通信库

#define RxPin 6//定义接收器引脚

#define扬声器9

#define sensor1alarm 12

#define sensor2alarm 11

#define sensor3alarm 10 void setup()

{ MANCHESTER.SetRxPin(RxPin);//用户将rx引脚设置为默认值6

MANCHESTER.SetTimeOut(1000);//用户设置超时默认块

Serial.begin(9600);//仅调试

//在arduino中设置引脚

pinMode(sensor1alarm,OUTPUT);

digitalWrite(sensor1alarm,LOW);

pinMode(sensor2alarm,OUTPUT);

digitalWrite(sensor2alarm) ,LOW);

pinMode(sensor3alarm,OUTPUT);

digitalWrite(sensor3alarm,LOW);

pinMode(speaker,OUTPUT);

digitalWrite(speaker,LOW);

}//设置结束

void loop()

{

unsigned int data = MANCHESTER.Receive();

if(data == 50)//将此数字与传感器编号匹配

{

digitalWrite(sensor1alarm,HIGH);//打开sensor1alarm led

for(int i = 0; i 《500; i ++){//产生1KHz音频持续1/2秒

digitalWrite(speaker,HIGH);

delayMicroseconds( 500);

digitalWrite(speaker,LOW);

delayMicroseconds(500);

}//扬声器的结尾

digitalWrite(sensor1alarm,LOW);//关闭sensor1警报led

delay(500);

}//如果结束

//如果有另一个变送器,请粘贴到此处

}//循环结束

/*如果您有多个发送器,则只需给发送器提供一个不同的编号,然后将其从if(data == 50)复制到if的末尾,然后将其粘贴到指示中。并将数字50更改为另一个发射机中的数字。*/

步骤6:结论

您可以在每种情况下放置传感器。我把我的饮料放在汽水罐中,因为我认为没有人会检查汽水罐是否有问题。而且您可以放置在任何地方,而且看起来并不奇怪。因此,享受成为秘密间谍的乐趣,或在夜间保护您的房子不受陌生人的侵害。使用无止境,您只需要稍微发挥自己的创造力即可。

p.d. (您可以更改运动传感器,而对于其他许多传感器,只要在设计上稍作改动,就可以以低廉的价格获得温度传感器,声音传感器,超声波传感器,气体传感器,红外线传感器以及许多其他传感器可以从安全距离感知事物)。

我希望您喜欢这个可指导的方法:),抱歉,如果我的英语不是最好的话。

步骤7:如何在一个接收器上使用3个发射器

这是使用一个接收器使用3个运动传感器的代码:

//将其用于接收器

//************* ************************************************** ************************************

#include//包括通讯库

#define RxPin 6//定义接收器引脚

#define扬声器9

#define sensor1alarm 12

#define sensor2alarm 11

#define sensor3alarm 10 void setup()

{

MANCHESTER。 SetRxPin(RxPin);//用户将rx引脚设置为默认值6

MANCHESTER.SetTimeOut(1000);//用户设置超时默认块

Serial.begin(9600);//仅调试

//在arduino中设置引脚

pinMode(sensor1alarm,OUTPUT);

digitalWrite(sensor1alarm,LOW);

pinMode(sensor2alarm,OUTPUT);

digitalWrite(sensor2alarm) ,LOW);

pinMode(sensor3alarm,OUTPUT);

digitalWrite(sensor3alarm,LOW);

pinMode(speaker,OUTPUT);

digitalWrite(speaker,LOW);

}//设置结束

void loop()

{

unsigned int data = MANCHESTER.Receive();

if(data == 50)//将此数字与传感器编号匹配

{

digitalWrite(sensor1alarm,HIGH);//打开sensor1alarm led

for(int i = 0; i 《500; i ++){//产生1KHz音频持续1/2秒

digitalWrite(speaker,HIGH);

delayMicroseconds( 500);

digitalWrite(speaker,LOW);

delayMicroseconds(500);

}//扬声器的结尾

digitalWrite(sensor1alarm,LOW);//关闭sensor1alarm led

delay(500);

}//if if

else if(data == 100)的结尾//将此编号与传感器编号

{

digitalWrite(sensor2alarm,HIGH);//打开sensor1alarm led

for(int i = 0; i 《500; i ++){//产生1KHz音频持续1/2秒

digitalWrite(speaker,HIGH);

delayMicroseconds( 500);

digitalWrite(speaker,LOW);

delayMicroseconds(500);

}//扬声器的结尾

digitalWrite(sensor2alarm,LOW);//关闭sensor1alarm led

delay(500);

}

否则if(data == 150)//将此编号与传感器编号匹配

{

digitalWrite(sensor3alarm,高);//打开sensor1alarm led

for(int i = 0; i 《500; i ++){//产生1KHz音频持续1/2秒

digitalWrite(speaker,HIGH);

delayMicroseconds( 500);

digitalWrite(speaker,LOW);

delayMicroseconds(500);

}//扬声器的结尾

digitalWrite(sensor3alarm,LOW);//关闭sensor1警报指示灯

delay(500);

}

}//循环结束

//***************** ************************************************** **************************************

//将此用于发射器之一

//发射器1 。

#include//包括用于通信的库

#define TxPin 2//用于发送数据的引脚

unsigned int Tdata = 0;//从0

int TRANSISTOR_PIN = 1开始数据;//将晶体管导通和截止的引脚

int PIR_SENSOR_PIN = 0;//运动传感器引脚

void setup()

{

MANCHESTER.SetTxPin(TxPin);//设置通信的引脚

pinMode(TRANSISTOR_PIN,OUTPUT);

pinMode(PIR_SENSOR_PIN,INPUT);

}

void loop()

{

int pirVal = digitalRead( PIR_SENSOR_PIN);//读取运动传感器的状态

if(pirVal == LOW)//如果运动传感器检测到运动,则

{/*动作,在这种情况下,将晶体管导通以给发射器供电,然后发送消息,请关闭晶体管*/

digitalWrite(TRANSISTOR_PIN,HIGH);//将晶体管ON

delay(1000);

Tdata = 50;

MANCHESTER.Transmit( TDATA);//发送信号

delay(100);

digitalWrite(TRANSISTOR_PIN,LOW);//关闭晶体管以节省电池

}

delay(2000);

}

//********* ********************************************结果//使用

//发送器2。

#include//包含用于通信的库

#define TxPin 2//用于发送数据的引脚

unsigned int Tdata = 0;//从0

int TRANSISTOR_PIN = 1开始数据;//将晶体管导通和截止的引脚

int PIR_SENSOR_PIN = 0;//运动传感器引脚

void setup()

{

MANCHESTER.SetTxPin(TxPin);//设置通信的引脚

pinMode(TRANSISTOR_PIN,OUTPUT);

pinMode(PIR_SENSOR_PIN,INPUT);

}

void loop()

{

int pirVal = digitalRead( PIR_SENSOR_PIN);//读取运动传感器的状态

if(pirVal == LOW)//如果运动传感器检测到运动,则

{/*动作,在这种情况下,将晶体管导通以给发射器供电,然后发送消息,请关闭晶体管*/

digitalWrite(TRANSISTOR_PIN,HIGH);//将晶体管ON

delay(1000);

Tdata = 100;

MANCHESTER.Transmit( TDATA);//发送信号

delay(100);

digitalWrite(TRANSISTOR_PIN,LOW);//关闭晶体管以节省电池

}

delay(2000);

}

//********* ***********************************************

//使用此用于发送器3

//发送器3。

//接收器2。#include//包括用于通信的库

#define TxPin 2//用于发送数据的引脚

unsigned int Tdata = 0;//从0

int TRANSISTOR_PIN = 1开始数据;//将晶体管导通和截止的引脚

int PIR_SENSOR_PIN = 0;//运动传感器引脚

void setup()

{

MANCHESTER.SetTxPin(TxPin);//设置通信的引脚

pinMode(TRANSISTOR_PIN,OUTPUT);

pinMode(PIR_SENSOR_PIN,INPUT);

}

void loop()

{

int pirVal = digitalRead( PIR_SENSOR_PIN);//读取运动传感器的状态

if(pirVal == LOW)//如果运动传感器检测到运动,则

{/*动作,在这种情况下,将晶体管导通以给发射器供电,然后发送消息,请关闭晶体管*/

digitalWrite(TRANSISTOR_PIN,HIGH);//将晶体管ON

delay(1000);

Tdata = 150;

MANCHESTER.Transmit( TDATA);//发送信号

delay(100);

digitalWrite(TRANSISTOR_PIN,LOW);//关闭晶体管以节省电池

}

delay(2000);

}

第8步:接收器2.0

运动传感器

运动传感器

运动传感器

有些人问我是否可以上传接收器pcb,用于使接收器具有attiny85像发送器一样,以避免使用arduino uno。所以在这里,它们是使接收器便宜的文件。我希望您喜欢它们。

我将3个led灯保留为arduino版本,但不要放置扬声器,而是放置继电器,以便您可以激活任何喜欢的设备。例如,您的房屋照明灯,警报器或您喜欢的任何设备。

警告:确保您使用的继电器用于要用于电路的电压。如果您使用的是12V继电器,请确保在BAT1位置使用12v继电器。

代码如下:

/********************** ************************************************** ***********/

#include//包括通讯库

#define RxPin 0//定义接收器引脚

#define继电器4

#define sensor1alarm 1

#define sensor2alarm 2

#define sensor3alarm 3

void setup()

{ MANCHESTER.SetRxPin(RxPin);//用户将rx引脚设置为默认值6

MANCHESTER.SetTimeOut(1000);//用户设置超时默认块

Serial.begin(9600);//仅调试

//在arduino中设置引脚

pinMode(sensor1alarm,OUTPUT);

digitalWrite(sensor1alarm,LOW);

pinMode(sensor2alarm,OUTPUT);

digitalWrite(sensor2alarm) ,LOW);

pinMode(sensor3alarm,OUTPUT);

digitalWrite(sensor3alarm,LOW);

pinMode(relay,OUTPUT);

digitalWrite(relay,LOW);

}//设置结束

void loop()

{

unsigned int data = MANCHESTER.Receive();

if(data == 50)//将此数字与传感器编号匹配

{

for(int i = 0; i 《15; i ++)

{

digitalWrite(sensor1alarm,HIGH);//打开sensor1alarm led

delay(500);

digitalWrite(sensor1alarm,LOW);//关闭sensor1警报led

delay(500);

}

}//if

if(data == 100)的结尾//将此编号与传感器编号匹配

{(int i = 0; i 《15; i ++)

{

digitalWrite(sensor2alarm,HIGH);//打开sensor2alarm led

delay(500);

digitalWrite(sensor2alarm,LOW);//关闭sensor2alarm led

delay(500);

}

}//if

if(data == 150)的结尾//将此编号与传感器编号匹配

{(int i = 0; i 《15; i ++)

{

digitalWrite(sensor3alarm,HIGH);//打开sensor3alarm led

delay(500);

digitalWrite(sensor3alarm,LOW);//关闭sensor3alarm led

delay(500);

}

}//if

if(data == 200)的结尾//将此编号与传感器编号匹配

{(int i = 0; i 《15; i ++)

{

digitalWrite(relay,HIGH);//打开继电器

delay(500);

}

}//if

}的结束//循环结束

/********** ************************************************** ****************************/

责任编辑:wv

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

全部0条评论

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

×
20
完善资料,
赚取积分