الاثنين، 6 مايو 2019

عرض في ورقة Excel باستخدام RFID-RC522

RFID-RC522 مع Arduino UNO وحفظ المعلومات حول البطاقات في ملف Excel.

المواد المستخدمة

اردوينو اونو او جينون

R fid tags

يعتمد هذا المشروع على حضور RFID ، وقد استعملت هنا Arudino uno كوحدة تحكم. ويمكن استخدام هذا لضمان وصول جميع الموظفين في الشركة في الوقت المناسب يوميًا وحفظ ملف Excel حيث يتم تخزين الأسماء وكل رقم فريد عند تخزين جميع الموظفين لقد حضروا


الربط
يتم الاتصال وفقا للرسم البياني معين.

الآن فتح Arudino IDE ، وتشمل ملفات المكتبة

include <SPI.h>

include <MFRC522.h>

#include <TimeLib.h>

بعد ذلك open-> مثال -> MFRC522 -> rfid قراءة البيانات الشخصية

بعد تشغيل الشفرة أعلاه ، افتح الشاشة التسلسلية وإظهار العلامة rfid للقارئ ، ثم يوفر معرف كل العلامات.




في المرفقات التي حمّلتها الكود المصدري ، أضف معرّف البطاقة إليه.

قم بتشغيل الكود وافتح الشاشة التسلسلية

سيتم الكشف عن معرف البطاقة ، ثم إغلاق الشاشة التسلسلية

انتقل إلى PLX-DAQ (الحصول على البيانات لـ excel) ، قم بتوصيل منفذ COMB ، والآن قم بإظهار علامة RFID ، سيتم طباعة تفاصيل الموظفين.


كود البرمجة

#include <SPI.h>
#include <MFRC522.h>
#include <TimeLib.h>

#define SS_PIN 10 
#define RST_PIN 9

MFRC522 mfrc522(SS_PIN, RST_PIN); 
String card_ID=""; 

//Add as many cards you want 
String Name1="89 48 C9 2F";
String Name2="12122112947";
String Name3="15353114169";
String Name4="13937143185";
String Name5="79 DD 81 2F";
String Name6="89 48 C9 2F";

int NumbCard[6];
int j=0;  
int statu[6];
int s=0;  

int const RedLed=6;
int const GreenLed=5;
int const Buzzer=8;

String Log;
String Name;
long Number;
int n ;
int ID=1;
void setup() {
  setTime(20,0,0,3,30,2019);
  Serial.begin(9600);
  SPI.begin();  
  mfrc522.PCD_Init(); 
  
  Serial.println("CLEARSHEET");                
  Serial.println("LABEL,ID,Date,Name,Number,Card ID,Time IN,Time OUT");
  pinMode(RedLed,OUTPUT);
  pinMode(GreenLed,OUTPUT);
  pinMode(Buzzer,OUTPUT);
  setTime(20,0,0,3,30,2019);
  

  delay(200);
   }
   
void loop() {
  
   if ( ! mfrc522.PICC_IsNewCardPresent()) {
  return;
 }
 
 if ( ! mfrc522.PICC_ReadCardSerial()) {
  return;
 }

 for (byte i = 0; i < mfrc522.uid.size; i++) {
     card_ID += mfrc522.uid.uidByte[i];
 }
 
 Serial.println(card_ID);
 
       if(card_ID==Name1){
       Name="First employee";
       Number="79 DD 81 2F";
       j=0;
       s=0;
      }
      else if(card_ID==Name2){
       Name="Second employee";
       Number=789101;
       j=1;
       s=1;
      }
      else if(card_ID==Name3){
       Name="Third employee";
       Number=789101;
       j=2;
       s=2;
      }
      else if(card_ID==Name4){
       Name="Fourth employee";
       Number=789101;
       j=3;
       s=3;
      }
      else if(card_ID==Name5){
       Name="Fiveth employee";
       Number=789101;
       j=4;
       s=4;
      }
      else if(card_ID==Name6){
       Name="Sixth employee";
       Number=789101;
       j=5;
       s=5;
      }
      else{
          digitalWrite(GreenLed,LOW);
          digitalWrite(RedLed,HIGH);
          goto cont;
     }

      if(NumbCard[j] == 1 && statu[s] == 0){
      statu[s]=1;
    
      Serial.print("DATA,");
      Serial.print(ID);
      Serial.print(",");
      Serial.print("DATE");
      Serial.print(",");
      Serial.print(Name);
      Serial.print(",");
      Serial.print(Number); 
      Serial.print(",");
      Serial.print(card_ID); 
      Serial.print(",");
      Serial.print("");
      Serial.print(",");
      Serial.println("TIME");
      ID=ID+1;
      digitalWrite(GreenLed,HIGH);
      digitalWrite(RedLed,LOW);
      digitalWrite(Buzzer,HIGH);
      delay(30);
      digitalWrite(Buzzer,LOW);
      }
      else if(NumbCard[j] == 0){
      NumbCard[j] = 1;
      
      n++;
    
      Serial.print("DATA,");
      Serial.print(ID);
      Serial.print(",");
      Serial.print("DATE");
      Serial.print(",");
      Serial.print(Name);
      Serial.print(",");
      Serial.print(Number); 
      Serial.print(",");
      Serial.print(card_ID); 
      Serial.print(",");
      Serial.print("TIME");
      Serial.print(",");
      Serial.println("");
      digitalWrite(GreenLed,HIGH);
      digitalWrite(RedLed,LOW);
      digitalWrite(Buzzer,HIGH);
      delay(30);
      digitalWrite(Buzzer,LOW);
      ID=ID+1;
      }
      else if(statu[s] == 1){
     
      }
      delay(1000);
     
cont:
delay(2000);
digitalWrite(GreenLed,LOW);
digitalWrite(RedLed,LOW);
card_ID="";

}
    void printTime() {
  Serial.print(hour());
  Serial.print(":");
  Serial.print(minute());
  Serial.print(":");
  Serial.print(second());
  Serial.print(",");

الخميس، 18 أبريل 2019

عرض سيريال مونتر عن طريق بلوتوث اردوينو - View Serial Monitor Over Bluetooth

المكونات
اردوينو اونو او جينون
HC-05 Bluetooth Module

تأكد من ضبط معدل البث بالباود على 9600
ستعمل أي تعليمات برمجية تقريبًا تستخدم أي اتصال تسلسلي للكمبيوتر ، ولكن هذا مجرد مثال بسيط.




بعد أن تم تحميل الكود على اللوحة ، افصل الطاقة. بعد ذلك ، قم بتوصيل وحدة Bluetooth بالدائرة كما هو موضح أعلاه:

GND إلى الأرض
VCC إلى دبوس 5V
TXD إلى دبوس 0
RXD إلى دبوس 1

في Arduino IDE ، اختر المنفذ التسلسلي لوحدة Bluetooth (خاصتي COM10)
افتح الشاشة التسلسلية كالمعتاد لعرض المعلومات الواردة

خطوات إضافية
إليك بعض الأشياء الاختيارية التي قد ترغب في تجربتها:

يمكنك استخدام المنافذ التسلسلية الافتراضية بدلاً من ذلك ، لكنني وجدت أن استخدام المنافذ الحقيقية يعمل بشكل أسرع كثيرًا (وهو أسهل عمومًا).
يمكنك أيضًا استخدام هذه العملية مع مثال Firmata القياسي للسماح بالتحكم اللاسلكي في المعالجة (اضبط السرعة على 9600 أولاً)



void setup() {

 Serial.begin(9600);

while (!Serial) {
   ; // wait for serial port to connect. Needed for native USB port only
 }

 Serial.println("ASCII Table ~ Character Map");
}

int thisByte = 33;

void loop() {

 Serial.write(thisByte);

 Serial.print(", dec: ");
 Serial.print(thisByte);

 Serial.print(", hex: ");
 Serial.print(thisByte, HEX);

 Serial.print(", oct: ");
 Serial.print(thisByte, OCT);

 Serial.print(", bin: ");
 Serial.println(thisByte, BIN);

 if (thisByte == 126) {   
   while (true) {
     continue;
   }
 }
 thisByte++;

}