สารบัญ:
- ขั้นตอนที่ 1: การตั้งค่า Arduino และ RFID RC-522 (การเชื่อมต่อทางกายภาพ)
- ขั้นตอนที่ 2: รหัส Arduino.,
- ขั้นตอนที่ 3: การตั้งค่า MySQL
- ขั้นตอนที่ 4: การตั้งค่าการประมวลผล IDE
- ขั้นตอนที่ 5: ดำเนินการโปรแกรม
- ขั้นตอนที่ 6: บทสรุป
วีดีโอ: แอปซูเปอร์มาร์เก็ตอย่างง่ายโดยใช้ RFID RC-522 และ Arduino Mega: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
ยินดีที่ได้พบพวกคุณอีกครั้งในบทช่วยสอนอื่นของฉัน ที่นี่ฉันจะช่วยคุณสร้างแอปพลิเคชันซูเปอร์มาร์เก็ตอย่างง่ายโดยใช้ RFID RC-522 และ Arduino พร้อมการประมวลผลเพื่อสร้าง GUI อย่างง่าย
หมายเหตุ: ห้ามใช้มอนิเตอร์อนุกรม Arduino ขณะรันโค้ดเนื่องจากพอร์ตจะขัดแย้งกัน เนื่องจากทั้งคู่ต้องใช้พอร์ตเดียวกัน
คุณต้องการ:
- Arduino Mega หรือ Arduino Uno (ฉันใช้ Mega)
- RFID-RC522
- สายจัมเปอร์ตัวผู้ถึงตัวเมีย 7 เส้น
- บัตรประจำตัวประชาชนบางส่วน (ไม่บังคับ)
- ห้องสมุด RFID (ต้องมี, ลิงค์ด้านล่าง)
- เซิร์ฟเวอร์ Wamp
- กำลังประมวลผล IDE 2.2.1 (อย่าใช้มากกว่านั้น)
- ไลบรารี BezierSQLib-0.2.0 สำหรับการประมวลผล (ลิงค์ดาวน์โหลดด้านล่าง)
จากนั้นดาวน์โหลดไลบรารี Below RFID และเพิ่มลงใน Arduino IDE ของคุณโดยคลิก Sketch->Include Library-> Add. Zip Library ในเมนูไฟล์
ขั้นตอนที่ 1: การตั้งค่า 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
- ติดตั้งเซิร์ฟเวอร์ Wamp สำหรับ MySQL และกำหนดค่าให้จัดเก็บข้อมูล (
- รัน wamp serveropen MySQL console
- เลือกฐานข้อมูล
- จากนั้นสร้างตารางสำหรับข้อมูลของคุณ
สร้างตาราง 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 การประมวลผล 2.2.1
- แยก ZIP ที่ระบุข้างต้นไปยัง MyDocuments/Processing/Libraries
- ตอนนี้เปิดการประมวลผล IDE และตรวจสอบว่าติดตั้งไลบรารีอย่างถูกต้องหรือไม่เหมือนในภาพด้านบน
- จากนั้นคัดลอกรหัสด้านล่างเพื่อประมวลผลและตั้งชื่อของคุณเอง
นำเข้า 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…
แนะนำ:
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน
ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): 25 ขั้นตอน (พร้อมรูปภาพ)
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): นี่คือบทแนะนำเกี่ยวกับวิธีการสร้าง Quadcopter โดยใช้มอเตอร์ NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS & วิทยุ 3DR ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ