Mundarija:

RFID RC-522 va Arduino Mega-dan foydalanadigan oddiy supermarket ilovasi: 6 qadam
RFID RC-522 va Arduino Mega-dan foydalanadigan oddiy supermarket ilovasi: 6 qadam

Video: RFID RC-522 va Arduino Mega-dan foydalanadigan oddiy supermarket ilovasi: 6 qadam

Video: RFID RC-522 va Arduino Mega-dan foydalanadigan oddiy supermarket ilovasi: 6 qadam
Video: Объяснение адреса I2C LCD1602 для Arduino 2024, Iyul
Anonim
RFID RC-522 va Arduino Mega-dan foydalanadigan oddiy supermarket ilovasi
RFID RC-522 va Arduino Mega-dan foydalanadigan oddiy supermarket ilovasi

Sizni yana bir darsimda ko'rishim yaxshi, men sizga oddiy GUI yaratish uchun RFID RC-522 va Arduino protsessorlari yordamida oddiy supermarket ilovasini yaratishda yordam beraman.

Eslatma: ishlov berish kodini ishlatayotganda Arduino ketma -ket monitorini ishga tushirmang, chunki port ziddiyatlari yuzaga keladi, chunki ikkalasi ham bitta portdan foydalanishlari kerak

Senga kerak:

  1. Arduino Mega yoki Arduino Uno (men Mega ishlatganman)
  2. RFID-RC522
  3. Erkak -ayol 7 ta o'tish simlari
  4. Ba'zi shaxsiy guvohnomalar (ixtiyoriy)
  5. RFID kutubxonasi (majburiy, havola quyida)
  6. Wamp server
  7. IDE 2.2.1ni qayta ishlash (bundan kattaroq ishlatmang)
  8. Qayta ishlash uchun BezierSQLib-0.2.0 kutubxonasi (Quyidagi havolani yuklab oling)

Keyin RFID kutubxonasini yuklab oling va Arduino IDE-ga Sketch-> Kutubxonani qo'shish-> Zip kutubxonasini qo'shish-ni bosing.

1-qadam: Arduino va RFID RC-522 ni sozlash (jismoniy ulanish)

Arduino va RFID RC-522 ni sozlash (jismoniy ulanish)
Arduino va RFID RC-522 ni sozlash (jismoniy ulanish)

yuqoridagi rasmda ko'rsatilgandek arduino-ni RFID-RC522 ga ulang. Ogohlantirish: faqat 3.3V etkazib bering, aks holda modul yonib ketadi.

Uno/Nano va Mega uchun ajratib oling

RC522 MODULI Uno/Nano MEGASDA D10 D9 SCK D13 D52 MOSI D11 D51 MISO D12 D50 IRQ N/A GND GND GND RST D9 D8 3.3V 3.3V 3.3V

2 -qadam: Arduino kodi

Quyidagi kodni nusxa ko'chiring va Arduino -ga yuklang

/*PINOUT: RC522 MODULI 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 standart kutubxonasini o'z ichiga oladi. */ #include/ *RFID kutubxonasini qo'shing */ #include

/* SDA (SS) va RST (qayta o'rnatish) pinlari uchun ishlatiladigan DIO ni aniqlang. */

#SDA_DIO 9ni belgilang #RESET_DIO 8 ni aniqlang

/ * RFID kutubxonasining namunasini yarating */

RFID RC522 (SDA_DIO, RESET_DIO); int o'quvchi = 0;

bo'sh o'rnatish ()

{Serial.begin (9600); / * SPI interfeysini yoqish */ SPI.begin (); / * RFID o'quvchisini ishga tushirish */ RC522.init (); }

bo'sh halqa ()

{ / * Vaqtinchalik halqa hisoblagichi * / bayt i;

/* Karta aniqlanganmi? */

if (RC522.isCard ()) { / * Agar shunday bo'lsa, uning seriya raqamini oling * / RC522.readCardSerial ();

/ * UARTga seriya raqamini kiriting */ for (i = 0; i <= 2; i ++) {Serial.print (RC522.serNum , DEC); //Serial.print(RC522.serNum , HEX); } Serial.print (","); Serial.print (o'quvchi ++); Serial.println (); } kechikish (1000); }

3 -qadam: MySQL -ni sozlash

MySQL -ni sozlash
MySQL -ni sozlash
  1. MySQL uchun Wamp serverini o'rnating va ma'lumotlarni saqlash uchun sozlang (
  2. MySQL konsolini ochish uchun wamp xizmatini ishga tushiring
  3. ma'lumotlar bazasini tanlang
  4. Keyin ma'lumotlaringiz uchun jadval yarating

rfid jadvalini yaratish (ID int (8), token int (1), Ism varchar (20), Miqdor int (4));

Endi RFID yorlig'i qiymatini qanday olishni bilib olish uchun ushbu havolani ko'ring, keyin ma'lumotlarni kiritish uchun quyidagi kodni ishlating. ID qiymatini RFID yorlig'i bilan almashtirishni unutmang.

rfid qiymatlarini kiritish (3756178, 1, "Qalam", 20);

token qiymatini 1 sifatida ishlating, shunda teg qiymatini birinchi marta o'qiganingizdan so'ng u avtomatik ravishda 2 ga o'zgaradi, JBga kiritilmagan kartani o'qishda token qiymati uchun 0 ishlatmang, u 0 ni belgilaydi va keyin uni noma'lum karta sifatida ko'rsatadi..

4 -qadam: IDE -ni qayta ishlashni sozlash

IDE ishlov berishni sozlash
IDE ishlov berishni sozlash
  1. Processing IDE 2.2.1 -ni yuklab oling va o'rnating
  2. Yuqoridagi ZIP -ni MyDocuments/Processing/Libraries -ga chiqaring
  3. Endi IDE protsessorini oching va kutubxonaning yuqoridagi rasmdagidek to'g'ri yoki to'g'ri o'rnatilmaganligini tekshiring
  4. Keyin quyidagi kodni qayta ishlash uchun nusxa ko'chiring va uni o'zingiz nomlang

import de.bezier.data.sql.*; importni qayta ishlash.serial.*; // import java.math. BigInteger;

// 2005-05-10 fjenett tomonidan yaratilgan

// yangilangan fjenett 20080605

MySQL db -ulanishi;

Satr s = ""; int Wheight = 700; int kengligi = 1200; uzoq identifikator; int token; int miqdori; int Jami = 0;

String a = {"NULL", "NULL"};

int end = 10; // 10 raqami lineFeed uchun ASCII (serial.println oxiri), keyinchalik biz buni individual xabarlarni uzish uchun qidiramiz String serial; // "ketma -ket" deb nomlangan yangi qatorni e'lon qiling. String - bu belgilar ketma -ketligi (ma'lumotlar turi "char" deb nomlanadi) Seriyali port; String Curr, prev, Name; PFont f;

bo'sh o'rnatish ()

{// o'lchami (kengligi, balandligi); hajmi (700, 500); f = createFont ("Arial", 24, to'g'ri); // bu misol // mysql serverini lokal ravishda ("localhost" da) ishlatayotganingizni taxmin qiladi. // // --username--, --password-- ni mysql-hisob qaydnomangiz bilan almashtiring. // String user = "root"; String pass = ""; // foydalaniladigan ma'lumotlar bazasi nomi // String ma'lumotlar bazasi = "IOT_Database"; // yaratiladigan jadval nomi String table = ""; // server "localhost" dbconnection = yangi MySQL ma'lumotlar bazasiga ulanish (bu, "localhost", ma'lumotlar bazasi, foydalanuvchi, o'tish); port = new Serial (this, Serial.list () [0], 9600); // port va bod tezligini belgilash orqali ob'ektni ishga tushirish (Arduino tezligiga mos kelishi kerak) port.clear (); // Arduino serial = port.readStringUntil (oxiri) dan satr o'rtasida o'qishni boshlagan bo'lsak, birinchi o'qishni tashlaydigan ketma -ket kutubxonadan funktsiya; // funktsiyani ketma -ket portdan printlngacha o'qiydi va keyin string o'zgaruvchisiga ('ketma -ket' deb nomlanadi) string belgilaydi serial = null; } void draw () {background (255); textFont (f, 24); to'ldirish (0); matn ("Umumiy miqdori:", 400, 400); matn (Jami, 585, 400); ma'lumotlar (); while (port.available ()> 0) {// ketma -ket portdan ma'lumotlar kelgan ekan, uni o'qing va saqlang serial = port.readStringUntil (oxiri); } if (serial! = null) {oldingi = oqim; oqim = a [1]; a = bo'linish (ketma -ket, ','); // qiymatlarni alohida kataklarga saqlaydigan ("a" deb nomlangan) yangi qator (Arduino dasturida ko'rsatilgan vergul bilan ajratilgan) if ((Curr). teng (oldingi)) {//} boshqa {// println ("Curr ", oqim); // println ("Oldingi", oldingi); funktsiya (); }}}

void funktsiyasi ()

{if (dbconnection.connect ()) {// endi uni qayta o'qing // dbconnection.query ("ID ="+a [0]+"" rfiddan "SELECT *"); while (dbconnection.next ()) {ID = dbconnection.getInt ("ID"); belgi = dbconnection.getInt ("belgi"); Miqdori = dbconnection.getInt ("Miqdori"); } if (token == 0) {println ("Ok"); textFont (f, 54); to'ldirish (255, 0, 0, 160); matn ("Noma'lum element aniqlandi", 50, 300); kechikish (2000); } if if (token == 1) {Total = Total+Miqdori; dbconnection.query ("rfid set token = 2 ni yangilang, bu erda ID ="+a [0]+""); println ("Ok"); textFont (f, 24); to'ldirish (255, 0, 0, 160); // matn ("Element qo'shilgan", 10, 30); kechikish (1000); } if if (token == 2) {Total = Total-Miqdori; dbconnection.query ("rfid set token = 1 yangilash ID ="+a [0]+""); println ("Ok"); textFont (f, 24); to'ldirish (255, 0, 0, 160); // matn ("Element o'chirildi", 10, 30); kechikish (1000); } boshqa {} dbconnection.close (); } boshqa {// ulanish muvaffaqiyatsiz tugadi! }}

bo'sh ma'lumotlar ()

{int pozitsiyasi = 100; if (dbconnection.connect ()) {dbconnection.query ("rfiddan SELECT *, bu erda token = 2"); while (dbconnection.next ()) {Name = dbconnection.getString ("Ism"); Miqdori = dbconnection.getInt ("Miqdori"); textFont (f, 24); to'ldirish (0, 0, 255, 160); matn (ism, 10, lavozim); to'ldirish (0, 0, 0, 160); matn (Miqdor, 215, pozitsiya); pozitsiya = pozitsiya+30; }} dbconnection.close (); }

5 -qadam: Dasturni bajarish

Dasturni bajarish
Dasturni bajarish
Dasturni bajarish
Dasturni bajarish
Dasturni bajarish
Dasturni bajarish
Dasturni bajarish
Dasturni bajarish

Dasturni ishga tushirish tugmachasini bosish orqali ishga tushiring, qalqib chiquvchi oynani yopmang, bajarishni to'xtatadi va MySQL -da saqlangan ma'lumotlarni ko'rish uchun so'rov ostida bo'ladi …

6 -qadam: Xulosa

Qo'llanmani o'qiganingiz uchun sizga rahmat aytmoqchiman. Agar siz buni foydali deb topsangiz va yoqtirishni yoqtirsangiz yoki menga biror narsa so'rasangiz, minnatdor bo'lardim, chunki bu menga ko'rsatmalarni bajarishga turtki beradi. bilishingiz kerak bo'lgan har qanday savolni berishingiz mumkin …

Baxtli kodlash Arduino …

Tavsiya: