版主: wanchong , wangyu , eepwwp , firedom

分享到:
共1条 1/1 1   

简单几步教您用Intel Edison自制数码锁

    [您是本帖的第1960位阅读者]
09120581
我是MM
普通会员

最后登陆时间:2015-01-13 22:07:21

直达楼层
1# 发表于 2015-07-23 23:25:09

相信同学们都用过数码锁,没见过的同学也不用着急,上面的图片这就是数码锁了。

今天的项目是制作电子锁,它的原理类似我们上面提到的数码锁。下面就是作电子锁的教程。当电子锁完成后,只有知道密码的人才能打开电子锁。

这个教程中使用了Grove 旋转角度传感器模块,用作电子锁的旋转中心。而教程中的代码只做测试时使用,当电子锁测试成功后,您可以自定义开锁密码。好了,那我们现在就开始吧!

第一步:准备材料(非常重要的一步)

Intel Edison开发板和扩展板(用Arduino uno开发板也可)

Grove Motor Shield电机驱动模块(方便安装,同时保护开发板免受伤害)

Grove LED(测试时用)

Grove 旋转角度传感器模块

USB转Mini USB线

Motor Shield电机驱动模块连接线

第二步:编译和组装(有趣的部分)

如果您已遵照Intel Edison入门指南的说明操作,那么现在将Edison开发板接入电脑,双击打开Arduino IDE,将代码载入。

const int pinLed    = 7;                        // pin of led define here

const int potentiometer = A0;                    // rotary angle sensor connect to A0

int minfirst =0;              //minimum value of first value

int maxfirst=30;//maximum value of first value

int minsecond=1000;//minimum value of second value

int maxsecond= 1030;//maximum value of second value

int minthird=300;//minimum value of third value

int maxthird=650;//maximum value of third value

int count=0;//number of correct values

void setup()

{

Serial.begin(9600);                         // set the serial communication frequency at 9600 bits per sec

pinMode(potentiometer, INPUT);

pinMode(pinLed, OUTPUT);                    // set led OUTPUT

}

void loop()

{  

 while (count<3){//just to stop the loop once success has been achieved

 delay(3000);

Serial.println("Starting in 3 seconds");

delay(3000);    // wait 3s before printing next value

Serial.println("First Value:-");

delay(1000);  // wait 1.5s before printing next value

int value = analogRead(potentiometer);

count = 0;

Serial.println(value);    // pirnt the value on the serial monitor screen

delay(1000);                                  // wait 1s before printing next value

if (value>=minfirst & value<maxfirst) {

 count = 1;

}

Serial.println("Second Value:-");

delay(3000);

value = analogRead(potentiometer);

Serial.println(value);    // pirnt the value on the serial monitor screen

 // wait 1000ms before printing next value

if (value>=minsecond & value<maxsecond) {

 count = count+1;

}

Serial.println("Third Value Trial:-");

delay(3000);    

value = analogRead(potentiometer);

Serial.println(value);    // pirnt the value on the serial monitor screen

Serial.println("Third Value Final:-");

delay(3000);                                  // wait 1000ms before printing next value

value = analogRead(potentiometer);

Serial.println(value);    // pirnt the value on the serial monitor screen

 // wait 1000ms before printing next value

if (value>=minthird & value<maxthird) {

 count = count+1;

}

if (count == 3) { //what you want to unlock once all 3 values are correct

 Serial.println("Success!!!");

 digitalWrite(pinLed,HIGH);

 delay(3000);

}

else {

 Serial.println("Fail! Please try again.");

}

}

}

您现在可以运行这个程序了,当熟悉了旋转角度传感器模块,您可以缩小变量(last value)的范围。当然您也可以增加开锁步骤(当前是3步开锁)和改变开锁密码。

硬件的组装部分比较简单,LED灯连接D7,Grove 旋转角度传感器模块连接A0,具体安装见上面照片,在此就不在赘述。

第三步:完善数码锁

如果您觉得上面的数码锁还不够精致,那么您可以用3D打印机给数码锁打印一个外壳,这样方便携带。现在您可以用不到1分钟的时间设置这个数码锁的密码,保护您其它项目的安全。

共1条 1/1 1   
快速回复主题
  • 匿名不能发帖!请先 [ 登陆 注册 ]