หน้าแรก ดูโปรเจกต์ทั้งหมด
Easy

โปรเจกต์ Kitty bank

กระปุกออมสินที่ปลอดภัยสำหรับ coins ทั้งหมดของคุณ!

โปรเจกต์ Kitty bank

รายการอุปกรณ์และเครื่องมือ

1x Resistor 10k ohm
-
1x Soldering iron (generic)
-
1x SG90 Micro-servo motor
🛒 สั่งซื้อ
1x Push button (Generic)
🛒 สั่งซื้อ
1x RFID-RC522 module
🛒 สั่งซื้อ
1x RGB Diffused Common Cathode
-

รายละเอียดและวิธีทำ

ผมกำลังจะมีงานนิทรรศการวิทยาศาสตร์เร็วๆ นี้ และผมต้องการโปรเจกต์ที่เจ๋งสุดๆ! ทันใดนั้นไอเดียนี้ก็ผุดขึ้นมาในหัวตอนที่ผมเห็น 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.

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: kitty-bank-9eb522
2450 บาท
PromptPay QR Code