用Intel Edison自制简单好用的数码锁


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

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

这个教程中使用了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分钟的时间设置这个数码锁的密码,保护您其它项目的安全。

下载代码
via

坐沙发

发表评论

你的邮件地址不会公开


*