相信同学们都用过数码锁,没见过的同学也不用着急,上面的图片这就是数码锁了。
今天的项目是制作电子锁,它的原理类似我们上面提到的数码锁。下面就是作电子锁的教程。当电子锁完成后,只有知道密码的人才能打开电子锁。
这个教程中使用了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分钟的时间设置这个数码锁的密码,保护您其它项目的安全。
发表评论