โปรเจกต์ Kitty bank
กระปุกออมสินที่ปลอดภัยสำหรับ coins ทั้งหมดของคุณ!
กระปุกออมสินที่ปลอดภัยสำหรับ coins ทั้งหมดของคุณ!
ผมกำลังจะมีงานนิทรรศการวิทยาศาสตร์เร็วๆ นี้ และผมต้องการโปรเจกต์ที่เจ๋งสุดๆ! ทันใดนั้นไอเดียนี้ก็ผุดขึ้นมาในหัวตอนที่ผมเห็น Module RC522 ที่ไม่ได้ใช้งานวางทิ้งไว้จนฝุ่นเกาะ
สรุปสั้นๆ คือ "กระปุกออมสินแมว" นี้ทำงานโดยเริ่มจากการปลดล็อกด้วยบัตร RFID จากนั้นเมื่อคุณวางเหรียญลงบนฝาเปิด มันจะทำให้วงจรครบถ้วนและไปกระตุ้น Servo motor ให้เปิดฝาออก ทันทีที่ฝาเปิด เหรียญจะตกลงไปในกล่องและวงจรก็จะขาดออกจากกัน ทำให้ฝาปิดลงอีกครั้ง
คำอธิบายCode:
#include
#include
#include
การนำเข้า Library ของ Servo, MFRC22 และ SPI
int SS_PIN = 10;
int RST_PIN = 9;
int green = 7;
int red = 6;
bool permission = false;
int reading_pin = A0;
int button_pin = 2;
int button_state = 0;
Variable แบบ Global รวมถึงการกำหนด Pins ต่างๆ
MFRC522 mfrc522 (SS_PIN, RST_PIN);
Servo servo;
Variable สำหรับ Library ภายนอก
void setup() {
pinMode(green, OUTPUT);
pinMode(red, OUTPUT);
pinMode(reading_pin, INPUT);
pinMode(button_pin, INPUT);
Serial.begin(9600); // Initiate serial monitor
mfrc522.PCD_Init(); // Initiate MFRC522
SPI.begin(); // Initiate SPI bus
servo.attach(8); //servo pin
servo.write(0); //servo start position
}
ฟังก์ชัน setup() สำหรับ Arduino ซึ่งรวมถึงการตั้งค่าโหมดของ Pins ทั้งหมด, ตำแหน่งเริ่มต้นของ Servo motor, Serial monitor และอื่นๆ
void loop() {
ตรงนี้คือจุดเริ่มต้นของฟังก์ชัน loop()!
if (permission == true) {
if (analogRead(reading_pin) >= 1000) {
servo.write(180);
delay(1000);
servo.write(0);
}
}
ส่วนนี้จะเปิดฝาออกหากตรวจพบว่าวงจรทำงานครบถ้วน (หมายเหตุ: Variable permission เป็นค่าแบบ boolean ที่บอกโปรแกรมว่ากระปุกออมสินถูกปลดล็อกแล้ว)
button_state = digitalRead(button_pin);
if (button_state == HIGH) {
permission = false;
digitalWrite(red, HIGH);
delay(1000);
digitalWrite(red, LOW);
}
ส่วนนี้อธิบายการทำงานในตัวมันเองอยู่แล้ว หลักๆ คือเมื่อมีการกดปุ่ม มันจะส่งสัญญาณแรงดันไฟฟ้าไปยัง Board Arduino Uno จากนั้นมันจะตอบสนองด้วยการล็อกกระปุกออมสินโดยเปลี่ยนค่า Variable permission ให้เป็น false.
// Check if new card is present
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
Code สำหรับการเริ่มต้นใช้งาน Module RC522 ตามปกติ
//Show UID on serial monitor
Serial.print("UID tag :");
String content= ";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
ดึงค่า UID ของบัตรที่ถูกสแกนโดย Module RC522
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "THE CORRECT CARD'S UID") {
Serial.println("Authorized access");
Serial.println();
digitalWrite(green, HIGH);
delay(1000);
digitalWrite(green, LOW);
permission = true;
delay(500);
}
Code ส่วนนี้จะตรวจสอบว่าค่า UID ตรงกับที่กำหนดไว้หรือไม่ หากตรงกัน มันจะเปิดไฟสีเขียวเป็นเวลา 1 วินาที และตามด้วยการเปลี่ยนค่า Variable permission ให้เป็น true.
else if (content.substring(1) != "THE CORRECT CARD'S UID") {
Serial.println(" Access denied");
permission = false;
digitalWrite(red, HIGH);
delay(1000);
digitalWrite(red, LOW);
delay(500);
}
ในทำนองเดียวกัน หากเป็นบัตรที่ไม่ถูกต้อง มันจะเปิดไฟ LED สีแดงเป็นเวลา 1 วินาที และเปลี่ยนค่า Variable permission ให้เป็น false.
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้