Hello, I am facing an issue when running an RFID card with LoRa Heltec (ESP32 with LoRa and screen). It works perfectly, reading the card and displaying the result on the screen. However, when I add the functionality to send this data via LoRa, it fails to send and does not even read the card.
I used this code:
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <LoRa.h> // إضافة مكتبة LoRa
// OLED Display Configuration
#define OLED_SDA 4
#define OLED_SCL 15
#define OLED_RST 16
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// RFID Configuration
#define SS_PIN 5
#define RST_PIN 22
MFRC522 mfrc522(SS_PIN, RST_PIN);
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RST);
// LoRa Configuration
#define LORA_SS 18
#define LORA_RST 14
#define LORA_DIO0 26
void setup() {
Serial.begin(115200); // بدء الاتصال التسلسلي
// Initialize SPI for both RFID and OLED
SPI.begin();
// Initialize RFID
mfrc522.PCD_Init();
// Initialize OLED Display
pinMode(OLED_RST, OUTPUT);
digitalWrite(OLED_RST, LOW);
delay(20);
digitalWrite(OLED_RST, HIGH);
Wire.begin(OLED_SDA, OLED_SCL);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("OLED Initialization Failed!");
while (true);
}
// Display initial message
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(20, 25);
display.print("No Card");
display.display();
}
void loop() {
display.clearDisplay();
display.setCursor(20, 25);
display.setTextSize(2);
// عرض "No Card" إذا لم تكن هناك بطاقة
display.print("No Card");
// التحقق من وجود بطاقة جديدة
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
Serial.println("Card Detected"); // عرض "Card Detected" في Serial Monitor
display.clearDisplay();
display.setCursor(20, 25);
display.print("Card Detected");
// تفعيل LoRa بعد اكتشاف البطاقة فقط
LoRa.setPins(LORA_SS, LORA_RST, LORA_DIO0);
if (!LoRa.begin(915E6)) { // تأكد من التردد المناسب (915 MHz في هذا الكود)
Serial.println("LoRa Initialization Failed!");
while (true);
}
Serial.println("LoRa Initialized");
// إرسال البيانات عبر LoRa
LoRa.beginPacket();
LoRa.print("Card Detected");
LoRa.endPacket();
Serial.println("Sent via LoRa");
} else {
Serial.println("No Card"); // عرض "No Card" في Serial Monitor إذا لم تكن هناك بطاقة
}
display.display(); // تحديث الشاشة
delay(1000); // تحديث كل ثانية
}
And this is the error message :
11:56:12.129 -> No Card
11:56:13.197 -> No Card
11:56:14.221 -> No Card
11:56:15.248 -> Card Detected
11:56:15.284 -> LoRa Initialization Failed!