Мазмуну:

Жөнөкөй супермаркеттин колдонмосу RFID RC-522 жана Arduino Mega: 6 кадам
Жөнөкөй супермаркеттин колдонмосу RFID RC-522 жана Arduino Mega: 6 кадам

Video: Жөнөкөй супермаркеттин колдонмосу RFID RC-522 жана Arduino Mega: 6 кадам

Video: Жөнөкөй супермаркеттин колдонмосу RFID RC-522 жана Arduino Mega: 6 кадам
Video: Грант Амато камера модели үчүн үй-бүлөсүн өлтүргөн 2024, Июль
Anonim
Жөнөкөй супермаркеттин колдонмосу RFID RC-522 жана Arduino Mega менен
Жөнөкөй супермаркеттин колдонмосу RFID RC-522 жана Arduino Mega менен

Балдарымды бул жерде менин дагы бир окуу куралымда кайрадан көрүү жакшы, бул жерде мен сизге жөнөкөй GUI түзүү үчүн RFID RC-522 жана Arduino менен жөнөкөй супермаркет тиркемесин түзүүгө жардам берейин деп жатам.

Эскертүү: кодду иштетип жатканда Arduino сериялык мониторун иштетпеңиз, анткени порт конфликти пайда болот, анткени экөө тең бир портту колдонушу керек

Сизге керек:

  1. Arduino Mega же Arduino Uno (Мен Мега колдондум)
  2. RFID-RC522
  3. 7 эркектен аялга секирүүчү зымдар
  4. Кээ бир ID карталар (милдеттүү эмес)
  5. RFID китепканасы (Төмөндөгү шилтеме)
  6. Wamp сервер
  7. IDE 2.2.1 иштетилүүдө (андан чоңун колдонбоңуз)
  8. Иштетүү үчүн BezierSQLib-0.2.0 китепканасы (Төмөндөгү шилтемени жүктөп алуу)

Андан кийин Төмөндөгү RFID китепканасын жүктөп алып, Sketch-> Китепкананы кошуу-> Файл менюсунда. Zip Китепканасын кошуу менен Arduino IDEге кошуңуз.

1-кадам: Arduino жана RFID RC-522 орнотуу (Физикалык туташуу)

Arduino жана RFID RC-522 орнотуу (физикалык туташуу)
Arduino жана RFID RC-522 орнотуу (физикалык туташуу)

жөн гана ардуинону RFID-RC522 менен жогорудагы сүрөттө көрсөтүлгөндөй туташтырыңыз. Эскертүү: болгону 3.3В менен камсыз кылуу, антпесе модуль күйүп кетет

Uno/Nano жана Mega үчүн чыкылдатыңыз

RC522 MODULE 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 -кадам: 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

/* SDA (SS) жана RST (баштапкы абалга келтирүү) казыктары үчүн колдонулган DIOну аныктаңыз. */

#аныктоо SDA_DIO 9 #аныктоо RESET_DIO 8

/ * RFID китепканасынын нускасын түзүү */

RFID RC522 (SDA_DIO, RESET_DIO); int reader = 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. MySQL үчүн Wamp серверин орнотуңуз жана маалыматты сактоо үчүн конфигурациялаңыз (
  2. Wamp сервисин иштетүү MySQL консолун иштетүү
  3. маалымат базасын тандоо
  4. Андан кийин маалыматыңыз үчүн стол түзүңүз

стол rfid түзүү (ID int (8), токен int (1), Name varchar (20), Сумма int (4));

Эми бул шилтемени көрүп, RFID тегиңиздин баасын кантип алуу керектигин билиңиз, андан кийин маалыматтарды киргизүү үчүн төмөнкү кодду колдонуңуз. Документтин идентификаторунун маанисин RFID тегинин мааниси менен алмаштырууну унутпаңыз.

rfid маанилерине киргизүү (3756178, 1, 'Pencil', 20);

токендин маанисин 1 катары колдонуңуз, ошондо тегдин маанисин биринчи жолу окугандан кийин ал автоматтык түрдө 2 болуп өзгөрөт, ДБга киргизилбеген картаны окуп жатканда токендин мааниси үчүн 0 колдонбоңуз, ал 0ду дайындайт, андан кийин аны Белгисиз карта катары көрсөтөт..

4 -кадам: IDE иштетүүнү орнотуу

IDE иштетилүүдө
IDE иштетилүүдө
  1. Processing IDE 2.2.1ди жүктөп алып, орнотуңуз
  2. Жогорудагы ZIPти MyDocuments/Processing/Librariesке бөлүп алыңыз
  3. Эми IDE иштетүүнү ачыңыз жана китепкананын жогорудагы сүрөттөгүдөй туура же туура эмес орнотулганын текшериңиз
  4. Андан кийин иштетүү үчүн төмөнкү кодду көчүрүп алып, өзүңүздүн атыңызды бериңиз

импорт de.bezier.data.sql.*; импорттоо иштетүү.сериал.*; // java.math. BigInteger импорттоо;

// fjenett тарабынан 2005-05-10 түзүлгөн

// жаңыртылган fjenett 20080605

MySQL dbconnection;

String s = ""; int Wheight = 700; int Wwidth = 1200; узун ID; int token; int суммасы; int Total = 0;

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

int end = 10; // 10 саны linefeed үчүн ASCII болуп саналат (serial.println аягы), кийинчерээк муну жеке билдирүүлөрдү үзүү үчүн издейбиз String serial; // "сериялык" деп аталган жаңы сапты жарыялоо. Сап - символдордун ырааттуулугу (маалыматтын түрү "char" катары белгилүү) Сериялык порт; String Curr, prev, Name; PFont f;

жараксыз орнотуу ()

{// өлчөмү (Width, Wheight); өлчөмү (700, 500); f = createFont ("Arial", 24, true); // бул мисал // mysql серверин жергиликтүү түрдө иштетип жатканыңызды болжолдойт ("localhost" боюнча). // // mysql-аккаунтуңуз менен --username--, --password-- алмаштырыңыз. // String user = "root"; String pass = ""; // колдонула турган маалымат базасынын аты // String database = "IOT_Database"; // түзүлө турган таблицанын аты String table = ""; // "localhost" серверинин маалымат базасына туташуу dbconnection = new MySQL (бул, "localhost", маалымат базасы, колдонуучу, өтмөк); порт = жаңы Сериал (бул, Serial.list () [0], 9600); // портту жана берүү ылдамдыгын дайындоо менен объектти инициализациялоо (Arduino менен дал келиши керек) port.clear (); // функциясы сериялык китепканадан, биринчи окууну ыргытып жиберет, эгерде биз Arduino serial = port.readStringUntil (аягында) сабынын ортосунда окуй баштасак; // функциясы сапты сериялык порттон println ге чейин окуп, андан кийин саптын өзгөрмөсүнө сапты дайындайт ('serial' деп аталат) serial = null; } void draw () {background (255); textFont (f, 24); толтуруу (0); текст ("Жалпы сумма Rs:", 400, 400); текст (Бардыгы, 585, 400); маалыматтар (); while (port.available ()> 0) {// сериялык порттон келген маалыматтар бар болсо, аны окуп, аны сериал = port.readStringUntil (аягында) сактаңыз; } if (serial! = null) {prev = Curr; Curr = a [1]; a = бөлүнүү (сериялык, ','); // баалуулуктарды өзүнчө уячаларга сактай турган жаңы массив ("а" деп аталат) ((Arduino программаңызда үтүр менен ажыратылган) if ((Curr). equals (prev)) {//} else {// println ("Curr ", Curr); // println ("Мурунку", мурунку); function (); }}}

боштук функциясы ()

{if (dbconnection.connect ()) {// эми кайра окуп чыккыла // dbconnection.query ("SEFE * rfidден ID ="+a [0]+""); while (dbconnection.next ()) {ID = dbconnection.getInt ("ID"); токен = dbconnection.getInt ("токен"); Сумма = dbconnection.getInt ("Сумма"); } if (токен == 0) {println ("Ok"); textFont (f, 54); толтуруу (255, 0, 0, 160); текст ("Белгисиз пункт аныкталды", 50, 300); кечигүү (2000); } else if (токен == 1) {Бардыгы = Бардыгы+Сумма; dbconnection.query ("update rfid set token = 2 where ID ="+a [0]+""); println ("Ok"); textFont (f, 24); толтуруу (255, 0, 0, 160); // текст ("пункт кошулду", 10, 30); кечигүү (1000); } else if (token == 2) {Total = Total-Amount; dbconnection.query ("update rfid set token = 1 where ID ="+a [0]+""); println ("Ok"); textFont (f, 24); толтуруу (255, 0, 0, 160); // текст ("Элемент алынып салынды", 10, 30); кечигүү (1000); } else {} dbconnection.close (); } башка {// туташуу ишке ашкан жок! }}

жараксыз маалыматтар ()

{int position = 100; if (dbconnection.connect ()) {dbconnection.query ("SELECT * rfidден кайда токен = 2"); while (dbconnection.next ()) {Name = dbconnection.getString ("Аты"); Сумма = dbconnection.getInt ("Сумма"); textFont (f, 24); толтуруу (0, 0, 255, 160); текст (Аты, 10, орду); толтуруу (0, 0, 0, 160); текст (Сумма, 215, позиция); позиция = позиция+30; }} dbconnection.close (); }

5 -кадам: Программаны аткаруу

Программаны аткаруу
Программаны аткаруу
Программаны аткаруу
Программаны аткаруу
Программаны аткаруу
Программаны аткаруу
Программаны аткаруу
Программаны аткаруу

Программаны иштетүү баскычын чыкылдатуу менен иштетүү, калкып чыкма терезени жаппоо, аткарууну токтотот жана MySQLде сакталган маалыматтарды көрүү үчүн төмөнкү сурам …

6 -кадам: Жыйынтык

Окутуу куралымды окуганыңыз үчүн сизге рахмат айткым келет. Эгер сиз муну пайдалуу деп тапсаңыз жана жактырууну (сүйүктүү) калтырсаңыз же менден бир нерсе сурасаңыз, мен ыраазы болом, анткени ал мага бул көрсөтмөлөрдү кылууга түрткү берет. билишиңиз керек болгон суроолорду берүүдөн тартынбаңыз …

Бактылуу коддоо Arduino…

Сунушталууда: