Mundarija:
- 1-qadam: Arduino va RFID RC-522 ni sozlash (jismoniy ulanish)
- 2 -qadam: Arduino kodi
- 3 -qadam: MySQL -ni sozlash
- 4 -qadam: IDE -ni qayta ishlashni sozlash
- 5 -qadam: Dasturni bajarish
- 6 -qadam: Xulosa
Video: RFID RC-522 va Arduino Mega-dan foydalanadigan oddiy supermarket ilovasi: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
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:
- Arduino Mega yoki Arduino Uno (men Mega ishlatganman)
- RFID-RC522
- Erkak -ayol 7 ta o'tish simlari
- Ba'zi shaxsiy guvohnomalar (ixtiyoriy)
- RFID kutubxonasi (majburiy, havola quyida)
- Wamp server
- IDE 2.2.1ni qayta ishlash (bundan kattaroq ishlatmang)
- 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)
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 uchun Wamp serverini o'rnating va ma'lumotlarni saqlash uchun sozlang (
- MySQL konsolini ochish uchun wamp xizmatini ishga tushiring
- ma'lumotlar bazasini tanlang
- 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
- Processing IDE 2.2.1 -ni yuklab oling va o'rnating
- Yuqoridagi ZIP -ni MyDocuments/Processing/Libraries -ga chiqaring
- Endi IDE protsessorini oching va kutubxonaning yuqoridagi rasmdagidek to'g'ri yoki to'g'ri o'rnatilmaganligini tekshiring
- 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 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:
Telegram ilovasi yordamida oddiy IOTni qanday qilish kerak: 5 qadam
Telegram ilovasi yordamida oddiy IOT -ni qanday qilish kerak: Hozirgi avlod Internetida hamma narsa bor. Zamonaviy dunyoda narsalar Interneti katta rol o'ynaydi. Ko'p vaqtni behuda sarflamasdan, biz IOTning amaliy ishiga o'tishimiz mumkin. Bu erda biz LEDni boshqaramiz, shuningdek
Lityum -ionli batareyalar to'plamini yaratish uchun avtomobil akkumulyatoridan foydalanadigan oddiy nuqta payvandchi: 6 qadam
Lityum-ionli akkumulyator to'plamini yaratish uchun avtomobil akkumulyatoridan foydalanadigan oddiy nuqta payvandchi: Lityum-ionli (Li-ionli) akkumulyatorlar to'plamini yaratish uchun foydali bo'lgan avtomobil akkumulyatorli nuqta bilan payvandlagichni men shunday qildim. Men 3S10P to'plamini va ko'plab payvand choklarini mana shu payvandchi yordamida qurishga muvaffaq bo'ldim
Oddiy uy avtomatizatsiyasi (maxsus Bluetooth ilovasi): 6 qadam
Oddiy uy avtomatizatsiyasi (maxsus Bluetooth ilovasi): bu darslikda men sizga oddiy uy avtomatizatsiyasini qanday qurishni ko'rsatmoqchiman (ya'ni biz uy jihozlarini o'z smartfonimiz bilan boshqarishimiz mumkin)
Qayta ishlangan materialdan foydalanadigan "Oddiy" Digilog soati (Raqamli analog)!: 8 qadam (rasmlar bilan)
Qayta ishlangan materialdan foydalanadigan "Oddiy" Digilog Soati (Raqamli analog) !: Hammaga salom! Shunday qilib, men ko'rsatma berishda, men arzon materiallardan foydalanib, bu raqamli + analog soatni qanday yasashni aytib beraman! Agar siz bu loyihani "yomon" deb o'ylasangiz, Siz ketishingiz mumkin va bu ko'rsatmalarni o'qishni davom ettirmaysiz. Tinchlik! Kechirasiz, agar bo'lmasa
Arzon modullardan foydalanadigan oddiy RPM o'lchagich: 8 qadam
Arzon modullardan foydalangan holda oddiy RPM o'lchagichi: Bu juda qiziq loyiha va juda kam harakat qiladi, shuning uchun juda oddiy RPM o'lchagichini bajaradi (mening holatimda har bir tur uchun)