Ayşe’nin sorusu birinci sorun, kodunuz da ikinci. İkisini de geçen yıl aynı kurulumda yaşadım.
1. Gerilim: RFM95 3.3 V çipi, SPI pinleri 5 V’a toleranslı değil. Mega’nın MOSI, SCK, NSS ve RESET çıkışları 5 V. Modül bir süre “çalışıyor gibi” yapıyor, sonra kilitleniyor. Araya bir seviye dönüştürücü koyun (74LVC245 ya da en azından MOSI/SCK/NSS’de dirençli bölücü). Modül hasar görmüş olabilir, yenisiyle deneyin. Daha basiti 3.3 V çalışan bir kart.
2. onReceive bir kesmeden çağrılıyor. İçinde Serial.print, String birleştirme ve hele MQTT publish yaparsanız kesme çok uzun sürer, Ethernet shield de SPI’yi kullandığı için LoRa ile aynı hatta çakışıyorlar. Kesmede sadece bayrak kaldırın, işi loop()’ta yapın:
volatile int rxSize = 0;
void onReceive(int size) { rxSize = size; }
void loop() {
if (rxSize) {
char buf[64]; int n = 0;
while (LoRa.available() && n < 63) buf[n++] = (char)LoRa.read();
buf[n] = 0; rxSize = 0;
gonderHermetry(buf);
LoRa.receive(); // tekrar alma moduna al
}
mqtt.loop();
}
Ethernet shield ile RFM95’in CS pinleri ayrı olsun, birini seçerken öbürü HIGH kalsın.

