สารบัญ:

แอปซูเปอร์มาร์เก็ตอย่างง่ายโดยใช้ RFID RC-522 และ Arduino Mega: 6 ขั้นตอน
แอปซูเปอร์มาร์เก็ตอย่างง่ายโดยใช้ RFID RC-522 และ Arduino Mega: 6 ขั้นตอน

วีดีโอ: แอปซูเปอร์มาร์เก็ตอย่างง่ายโดยใช้ RFID RC-522 และ Arduino Mega: 6 ขั้นตอน

วีดีโอ: แอปซูเปอร์มาร์เก็ตอย่างง่ายโดยใช้ RFID RC-522 และ Arduino Mega: 6 ขั้นตอน
วีดีโอ: Barcode : เข้าใจการทำงานของบาร์โค๊ดใน 8 นาที 2024, พฤศจิกายน
Anonim
แอพซูเปอร์มาร์เก็ตอย่างง่ายโดยใช้ RFID RC-522 และ Arduino Mega
แอพซูเปอร์มาร์เก็ตอย่างง่ายโดยใช้ RFID RC-522 และ Arduino Mega

ยินดีที่ได้พบพวกคุณอีกครั้งในบทช่วยสอนอื่นของฉัน ที่นี่ฉันจะช่วยคุณสร้างแอปพลิเคชันซูเปอร์มาร์เก็ตอย่างง่ายโดยใช้ RFID RC-522 และ Arduino พร้อมการประมวลผลเพื่อสร้าง GUI อย่างง่าย

หมายเหตุ: ห้ามใช้มอนิเตอร์อนุกรม Arduino ขณะรันโค้ดเนื่องจากพอร์ตจะขัดแย้งกัน เนื่องจากทั้งคู่ต้องใช้พอร์ตเดียวกัน

คุณต้องการ:

  1. Arduino Mega หรือ Arduino Uno (ฉันใช้ Mega)
  2. RFID-RC522
  3. สายจัมเปอร์ตัวผู้ถึงตัวเมีย 7 เส้น
  4. บัตรประจำตัวประชาชนบางส่วน (ไม่บังคับ)
  5. ห้องสมุด RFID (ต้องมี, ลิงค์ด้านล่าง)
  6. เซิร์ฟเวอร์ Wamp
  7. กำลังประมวลผล IDE 2.2.1 (อย่าใช้มากกว่านั้น)
  8. ไลบรารี BezierSQLib-0.2.0 สำหรับการประมวลผล (ลิงค์ดาวน์โหลดด้านล่าง)

จากนั้นดาวน์โหลดไลบรารี Below RFID และเพิ่มลงใน Arduino IDE ของคุณโดยคลิก Sketch->Include Library-> Add. Zip Library ในเมนูไฟล์

ขั้นตอนที่ 1: การตั้งค่า Arduino และ RFID RC-522 (การเชื่อมต่อทางกายภาพ)

การตั้งค่า Arduino และ RFID RC-522 (การเชื่อมต่อทางกายภาพ)
การตั้งค่า Arduino และ RFID RC-522 (การเชื่อมต่อทางกายภาพ)

เพียงเชื่อมต่อ Arduino กับ RFID-RC522 ตามที่แสดงในภาพด้านบน คำเตือน: จ่ายไฟเพียง 3.3V มิฉะนั้นโมดูลจะไหม้

ปักหมุดสำหรับ Uno/Nano และ Mega

RC522 โมดูล Uno/Nano MEGASDA D10 D9 SCK D13 D52 MOSI D11 D51 MISO D12 D50 IRQ ไม่มี/ไม่มี GND GND GND RST D9 D8 3.3V 3.3V 3.3V

ขั้นตอนที่ 2: รหัส Arduino.,

คัดลอกโค้ดด้านล่างแล้วอัปโหลดลงใน Arduino. ของคุณ

/*PINOUT: RC522 MODULE Uno/Nano MEGA SDA D10 D9 SCK D13 D52 MOSI D11 D51 MISO D12 D50 IRQ N/AN/A GND GND GND RST D9 D8 3.3V 3.3V 3.3V */ /* รวมไลบรารี Arduino SPI มาตรฐาน */ #include /* รวมห้องสมุด RFID */ #include

/* กำหนด DIO ที่ใช้สำหรับพิน SDA (SS) และ RST (รีเซ็ต) */

#define SDA_DIO 9 #define RESET_DIO 8

/* สร้างตัวอย่างห้องสมุด RFID */

RFID RC522 (SDA_DIO, RESET_DIO); ตัวอ่าน int=0;

การตั้งค่าเป็นโมฆะ ()

{ Serial.begin(9600); /* เปิดใช้งานอินเทอร์เฟซ SPI */ SPI.begin(); /* เริ่มต้นเครื่องอ่าน RFID */ RC522.init(); }

วงเป็นโมฆะ ()

{ /* ตัวนับลูปชั่วคราว */ ไบต์ i;

/* ตรวจพบการ์ดหรือไม่? */

if (RC522.isCard()) { /* ถ้าใช่ ให้หาหมายเลขประจำเครื่อง */ RC522.readCardSerial();

/* ส่งออกหมายเลขซีเรียลไปที่ UART */ for(i = 0; i <= 2; i++) { Serial.print(RC522.serNum, DEC); //Serial.print(RC522.serNum, HEX); } Serial.print(", "); Serial.print(ผู้อ่าน++); Serial.println(); } ล่าช้า (1000); }

ขั้นตอนที่ 3: การตั้งค่า MySQL

การตั้งค่า MySQL
การตั้งค่า MySQL
  1. ติดตั้งเซิร์ฟเวอร์ Wamp สำหรับ MySQL และกำหนดค่าให้จัดเก็บข้อมูล (
  2. รัน wamp serveropen MySQL console
  3. เลือกฐานข้อมูล
  4. จากนั้นสร้างตารางสำหรับข้อมูลของคุณ

สร้างตาราง rfid(ID int(8), token int(1), Name varchar(20), Amount int(4));

ตอนนี้ดูลิงค์นี้เพื่อเรียนรู้วิธีรับค่าแท็ก RFID จากนั้นใช้โค้ดด้านล่างเพื่อแทรกข้อมูล อย่าลืมแทนที่ค่า ID ด้วยค่าแท็ก RFID ของคุณ

แทรกลงในค่า rfid (3756178, 1, 'Pencil', 20);

ใช้ค่าโทเค็นเป็น 1 เพื่อที่ว่าหลังจากอ่านค่าแท็กเป็นครั้งแรกแล้ว ค่าจะเปลี่ยนเป็น 2 โดยอัตโนมัติ อย่าใช้ 0 สำหรับค่าโทเค็นเมื่ออ่านการ์ดที่ไม่ได้ใส่ใน DB มันจะกำหนด 0 แล้วแสดงเป็น Unknown Card.

ขั้นตอนที่ 4: การตั้งค่าการประมวลผล IDE

การตั้งค่าการประมวลผล IDE
การตั้งค่าการประมวลผล IDE
  1. ดาวน์โหลดและติดตั้ง IDE การประมวลผล 2.2.1
  2. แยก ZIP ที่ระบุข้างต้นไปยัง MyDocuments/Processing/Libraries
  3. ตอนนี้เปิดการประมวลผล IDE และตรวจสอบว่าติดตั้งไลบรารีอย่างถูกต้องหรือไม่เหมือนในภาพด้านบน
  4. จากนั้นคัดลอกรหัสด้านล่างเพื่อประมวลผลและตั้งชื่อของคุณเอง

นำเข้า de.bezier.data.sql.*; import processing.serial.*; //นำเข้า java.math. BigInteger;

// สร้าง 2005-05-10 โดย fjenett

// อัปเดต fjenett 20080605

การเชื่อมต่อฐานข้อมูล MySQL;

สตริง s=" "; น้ำหนักสุทธิ=700; int ความกว้าง=1200; รหัสยาว; โทเค็น int; จำนวนเต็ม; รวมทั้งหมด=0;

สตริง a={"NULL", "NULL"};

int end = 10; // หมายเลข 10 คือ ASCII สำหรับการป้อนบรรทัด (ส่วนท้ายของ serial.println) หลังจากนั้นเราจะมองหาสิ่งนี้เพื่อแยกข้อความแต่ละข้อความ สตริงอนุกรม; // ประกาศสตริงใหม่ที่เรียกว่า 'ซีเรียล' สตริงคือลำดับของอักขระ (ชนิดข้อมูลเรียกว่า "ถ่าน") พอร์ตอนุกรม สตริงเคอร์, ก่อนหน้า, ชื่อ; PFont ฉ;

การตั้งค่าเป็นโมฆะ ()

{//ขนาด(กว้าง, สูง); ขนาด (700, 500); f=createFont("Arial", 24, จริง); // ตัวอย่างนี้ถือว่าคุณกำลังเรียกใช้เซิร์ฟเวอร์ // mysql ในเครื่อง (บน "localhost") // // แทนที่ --username--, --password-- ด้วยบัญชี mysql ของคุณ // ผู้ใช้สตริง = "รูท"; สตริงผ่าน = ""; // ชื่อของฐานข้อมูลที่จะใช้ // ฐานข้อมูลสตริง = "IOT_Database"; // ชื่อของตารางที่จะสร้าง String table = ""; // เชื่อมต่อกับฐานข้อมูลของเซิร์ฟเวอร์ "localhost" dbconnection = MySQL ใหม่ (นี่, "localhost", ฐานข้อมูล, ผู้ใช้, ผ่าน); port = ใหม่ Serial(นี่, Serial.list()[0], 9600); // เริ่มต้นวัตถุโดยกำหนดพอร์ตและอัตรารับส่งข้อมูล (ต้องตรงกับ Arduino) port.clear(); // ฟังก์ชันจากไลบรารีอนุกรมที่แสดงการอ่านครั้งแรก ในกรณีที่เราเริ่มอ่านที่อยู่ตรงกลางของสตริงจาก Arduino serial = port.readStringUntil(end); // ฟังก์ชั่นที่อ่านสตริงจากพอร์ตอนุกรมจนถึง println จากนั้นกำหนดสตริงให้กับตัวแปรสตริงของเรา (เรียกว่า 'ซีเรียล') serial = null; } วาดเป็นโมฆะ () { พื้นหลัง (255); textFont(f, 24); เติม(0); text("ยอดรวม Rs:", 400, 400); ข้อความ (รวม 585, 400); ข้อมูล(); while (port.available() > 0) { //ตราบใดที่มีข้อมูลที่มาจากพอร์ตอนุกรม ให้อ่านและจัดเก็บ serial = port.readStringUntil(end); } if (serial != null) { ก่อนหน้า=curr; curr=a[1]; a = แยก (ซีเรียล, ', '); // อาร์เรย์ใหม่ (เรียกว่า 'a') ที่เก็บค่าไว้ในเซลล์แยกกัน (คั่นด้วยเครื่องหมายจุลภาคที่ระบุในโปรแกรม Arduino ของคุณ) if((curr).equals(prev)) { // } else { //println("curr ", สกุลเงิน); //println("ก่อนหน้า", ก่อนหน้า); การทำงาน(); } } }

ฟังก์ชั่นเป็นโมฆะ ()

{ if (dbconnection.connect()) { // ตอนนี้อ่านมันกลับออกมา // dbconnection.query("SELECT * from rfid where ID="+a[0]+""); ในขณะที่ (dbconnection.next ()) { ID = dbconnection.getInt ("ID"); โทเค็น = dbconnection.getInt ("โทเค็น"); จำนวน = dbconnection.getInt ("จำนวนเงิน"); } if(token==0) { println("ตกลง"); textFont(f, 54); กรอก (255, 0, 0, 160); text("ตรวจพบรายการที่ไม่รู้จัก", 50, 300); ล่าช้า (2000); } อื่น ๆ if(token==1) { Total=Total+Amount; dbconnection.query("update rfid set token=2 where ID="+a[0]+""); println("ตกลง"); textFont(f, 24); กรอก (255, 0, 0, 160); //text("เพิ่มรายการแล้ว", 10, 30); ล่าช้า (1000); } อื่น ๆ if(token==2) { Total=Total-Amount; dbconnection.query("update rfid set token=1 where ID="+a[0]+""); println("ตกลง"); textFont(f, 24); กรอก (255, 0, 0, 160); //text("รายการถูกลบ", 10, 30); ล่าช้า (1000); } อื่น ๆ { } dbconnection.close(); } else { // การเชื่อมต่อล้มเหลว ! } }

ข้อมูลเป็นโมฆะ ()

{ ตำแหน่ง int = 100; ถ้า (dbconnection.connect ()) { dbconnection.query ("เลือก * จาก rfid โดยที่โทเค็น = 2"); ในขณะที่ (dbconnection.next ()) { ชื่อ = dbconnection.getString ("ชื่อ"); จำนวน = dbconnection.getInt("จำนวนเงิน"); textFont(f, 24); เติม(0, 0, 255, 160); ข้อความ(ชื่อ, 10, ตำแหน่ง); เติม(0, 0, 0, 160); ข้อความ(จำนวน 215 ตำแหน่ง); ตำแหน่ง=ตำแหน่ง+30; } } dbconnection.close(); }

ขั้นตอนที่ 5: ดำเนินการโปรแกรม

กำลังดำเนินการโปรแกรม
กำลังดำเนินการโปรแกรม
กำลังดำเนินการโปรแกรม
กำลังดำเนินการโปรแกรม
กำลังดำเนินการโปรแกรม
กำลังดำเนินการโปรแกรม
กำลังดำเนินการโปรแกรม
กำลังดำเนินการโปรแกรม

เรียกใช้โปรแกรมโดยคลิกปุ่มเรียกใช้อย่าปิดหน้าต่างป๊อปอัปที่ปิดอยู่จะหยุดการทำงานและด้านล่างแบบสอบถามเพื่อดูข้อมูลที่เก็บไว้ใน MySQL…

ขั้นตอนที่ 6: บทสรุป

ฉันอยากจะขอบคุณสำหรับการอ่านกวดวิชาของฉัน ฉันจะขอบคุณถ้าคุณพบว่ามีประโยชน์และชอบ (รายการโปรด) หรือถามอะไรฉันเพราะมันทำให้ฉันมีแรงจูงใจที่จะทำตามคำแนะนำเหล่านี้ อย่าลังเลที่จะถามคำถามใด ๆ ที่คุณจำเป็นต้องรู้ …

แฮปปี้โค้ดดิ้ง Arduino…

แนะนำ: