我们都知道一般小区门岗那里都有Di一下就抬起来的栏杆用于车辆进出管理,小孩有段时间总跟我玩Di一下的游戏,于是想着做个这样的玩具给他,因而有了这个简易作品。

  • 硬件:3D打印机,Arduino Uno板,微型伺服马达,MFRC522射频组件
  • 软件:SW,Arduino IDE

SW设计图:

打印预览图:

安装

打印后安装上Arduino板子,蜂鸣器,RF读卡模块,伺服电机,连接上对应主控板引脚,加上一个USB移动电源,最终结果:

Arduino编程:

#define SS_PIN 10  
#define RST_PIN 9  
#define Buzz_PIN 8
#define Servo_PIN 6

Servo myservo;
MFRC522 rfid(SS_PIN, RST_PIN); //实例化类  
  
// 初始化数组用于存储读取到的NUID   
byte nuidPICC[4];  
  
void setup() {   
  //Buzz
  pinMode(Buzz_PIN, OUTPUT);
  digitalWrite(Buzz_PIN, LOW); 

  //Servo
  myservo.attach(Servo_PIN);
  myservo.write(90);
  
  //Serial port
  Serial.begin(9600);  
  SPI.begin(); // 初始化SPI总线  

  //RFID
  rfid.PCD_Init(); // 初始化 MFRC522  
  Serial.println("初始化完成");   
}  
   
void loop() {  
  
  // 找卡  
  if ( ! rfid.PICC_IsNewCardPresent())  {
    //Serial.println("无卡"); 
    return;  
  }
  
  // 验证NUID是否可读  
  if ( ! rfid.PICC_ReadCardSerial())  {
    //Serial.println("UUID不可读"); 
    return;  
  }
  
  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);  
  
  // 检查是否MIFARE卡类型  
  if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&    
    piccType != MFRC522::PICC_TYPE_MIFARE_1K &&  
    piccType != MFRC522::PICC_TYPE_MIFARE_4K) {  
    //Serial.println("不支持读取此卡类型");  
    return;  
  }  

  digitalWrite(Buzz_PIN, HIGH);
  delay(200); 
  digitalWrite(Buzz_PIN, LOW); 
  delay(50);
  digitalWrite(Buzz_PIN, HIGH);
  delay(50); 
  digitalWrite(Buzz_PIN, LOW); 
 
  // 使放置在读卡区的IC卡进入休眠状态,不再重复读卡  
  rfid.PICC_HaltA();  
  
  // 停止读卡模块编码  
  rfid.PCD_StopCrypto1();  

  myservo.write(180);
  delay(3000);
  myservo.write(90);
}

然后就可以这样玩了:

分类: 3DToys

发表评论

电子邮件地址不会被公开。