MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI SAMARQAND FILIALI
"KOMPYUTER INJINIRING" FAKULTETI
“O’rnatilgan tizimlar ” fanidan
MUSTAQIL ISHI
Tayyorladi: 106-19-guruh talabasi Hamroyev Dilshod
Qabul qildi: Primova X.
SAMARQAND 2022
Loyiha 52 biror narsani boshqarish uchun RFIDdan qanday foydalanishni ko'rsatgan bo'lsa-da,yorug'lik yoki elektr eshik qulfi kabi, biz hech narsa bo'lmaydi deb taxmin qilishimiz kerak edi.Agar tizim qayta o'rnatilgan bo'lsa yoki quvvat o'chirilgan bo'lsa, eslab qoling. Masalan,agar chiroq yoqilgan bo'lsa va elektr quvvati o'chgan bo'lsa, unda chiroq bir marta o'chadi kuch qaytdi. Biroq, quvvat qaytsa, siz buni xohlaysiz Arduino elektr o'chirilishidan oldin nima bo'lganini eslash va bu holatga qaytish. Keling, bu muammoni hozir hal qilaylik.Ushbu loyihada oxirgi harakat EEPROMda saqlanadi (masalan,"qulflangan" yoki "qulflanmagan"). Elektr uzilishidan keyin eskiz qayta boshlanganda yoki Arduino qayta o'rnatilsa, tizim saqlangan oldingi holatga qaytadi EEPROM.
Eskiz
Quyidagi eskizni kiriting va yuklang. Shunga qaramay, har bir massivdagi xs ni almashtiring 1 va 2 da ikkita RFID tegining har birining raqamlari bilan Loyiha 52.
#include
int data1 = 0;
int ok = -1;
int lockStatus = 0;
// Teg raqamlaringizni topish uchun 16-1 ro'yxatidan foydalaning
1 int tag1[14] = {x, x, x, x, x, x, x, x, x, x, x, x, x, x};
2 int tag2[14] = {x, x, x, x, x, x, x, x, x, x, x, x, x, x};
int newtag[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // used for read comparisons
void setup()
{
Serial.flush();
Serial.begin(9600);
pinMode(13, OUTPUT);
3 checkLock();
}
// solishtirma ikkita massivni solishtiradi va agar bir xil bo'lsa, true qiymatini qaytaradi
// Bu teglarni solishtirish uchun yaxshi
mantiqiy taqqoslash yorlig'i (int aa[14], int bb[14])
{
boolean ff = false;
int fg = 0;
for (int cc = 0; cc < 14; cc++)
{
if (aa[cc] == bb[cc])
{
fg++;
} }
if (fg == 14)
{
ff = true;
}
return ff;
}
void checkmytags()
// har bir tegni o'qilgan teg bilan solishtiradi
{
ok = 0;
if (comparetag(newtag, tag1) == true)
{
ok++;
}
if (comparetag(newtag, tag2) == true)
{
ok++;
} }
4 void checkLock()
{
Serial.print("System Status after restart ");
lockStatus = EEPROM.read(0);
if (lockStatus == 1)
{
Serial.println("- locked");
digitalWrite(13, HIGH);
}
if (lockStatus == 0)
{
Serial.println("- unlocked");
digitalWrite(13, LOW);
}
if ((lockStatus != 1) && (lockStatus != 0))
{
Serial.println("EEPROM fault - Replace Arduino hardware");
} }
void loop()
{
ok = -1;
if (Serial.available() > 0)
// agar o'qishga harakat qilingan bo'lsa
{
// seriyali RX da kiruvchi raqamni o'qing
delay(100);
for (int z = 0; z < 14; z++) // read the rest of the tag
{
data1 = Serial.read();
newtag[z] = data1;
}
Serial.flush(); // bir nechta o'qishni oldini oladi
// Endi teglarni moslashtirish uchun
checkmytags();
}
5 if (ok > 0)
// agar bizda o'yin bo'lsa
{
lockStatus = EEPROM.read(0);
if (lockStatus == 1)
// agar qulflangan bo'lsa, uni qulfdan chiqaring
6 {
Serial.println("Status - unlocked");
digitalWrite(13, LOW);
EEPROM.write(0, 0);
}
if (lockStatus == 0)
7 {
Serial.println("Status - locked");
digitalWrite(13, HIGH);
EEPROM.write(0, 1);
}
if ((lockStatus != 1) && (lockStatus != 0))
8 {
Serial.println("EEPROM fault - Replace Arduino hardware");
} }
else if (ok == 0)
// agar o'yinimiz bo'lmasa
{
Serial.println("Incorrect tag");
ok = -1;
}
delay(500);
}
Qanday ishlashi:
Ushbu eskiz 52-loyihaning modifikatsiyasidir. Biz bortdagi LED dan foydalanamiz biz har safar yoqmoqchi yoki o'chirmoqchi bo'lgan narsaning holatini simulyatsiya qilish qabul qilinadigan RFID yorlig'i o'qiladi. Teg o'qilgan va moslashtirilgandan so'ng, qulf holati 5 da o'zgartiriladi. Biz qulfning holatini saqlaymiz
EEPROM ning birinchi pozitsiyasi. Holat raqam bilan ifodalanadi: 0 is
qulfdan chiqarilgan va 1 qulflangan. Bu holat o'zgaradi (qulflangandan qulfdan ochilganga). 6 yoki 7 da o‘qilgan har bir muvaffaqiyatli tegdan keyin qulflangan holatiga qayting. EEPROM eskirgan bo'lsa, biz, shuningdek, ishlamay qolishi mumkin bo'lgan seyfni ham taqdim etdik. Agar EEPROMni o'qishdan qaytarilgan qiymat 0 yoki 1 emas, biz bo'lishimiz kerak 8 da xabar qilingan. Bundan tashqari, eskiz qayta boshlanganda holat tekshiriladi 1, 2, 3 va 4 da checkLock() funksiyasi yordamida qayta o'rnatishdan so'ng EEPROM qiymati, oxirgi holatni aniqlaydi va keyin qulfni o'rnatadi bu holat (qulflangan yoki qulfdan chiqarilgan).
Xulosa
Yana bir bor biz Arduino platasidan oddiy narsani qayta yaratish uchun foydalandik juda murakkab loyiha bo'ladi. Endi sizda RFID boshqaruvini qo'shish uchun asos bor professional sifatli kirish tizimlarini yaratish va raqamli nazorat qilish loyihalari RFID kartani surish orqali chiqadi. Buni qachon yana bir bor namoyish qilamiz.Biz 18-bobda RFIDni qayta ko'rib chiqamiz.
Do'stlaringiz bilan baham: |