Neu: Die KI-Firewall überwacht die gesamte Plattform und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

Arduino Mega + RFM95 alıcı birkaç paketten sonra susuyor, resetleyince yine birkaç tane alıyor

Arduino Mega + RFM95 alıcı birkaç paketten sonra susuyor, resetleyince yine birkaç tane alıyor

Gelöst 4 3

Merhaba. Bahçedeki toprak nem sensöründen eve noktadan noktaya LoRa ile veri taşıyorum. Verici: Arduino Pro Mini 3.3 V + RFM95, 868 MHz, SF9, 30 saniyede bir paket. Alıcı: Arduino Mega 2560 + RFM95 modülü, sandeep mistry’nin LoRa kütüphanesi, onReceive callback’i ile.

Alıcı açılınca 2-4 paket alıyor, sonra hiçbir şey gelmiyor. Reset atınca yine 2-4 paket. Verici çalışıyor, yanına ikinci bir alıcı koyunca o almaya devam ediyor.

void onReceive(int size) {
  String s = "";
  while (LoRa.available()) s += (char)LoRa.read();
  Serial.print("RX: "); Serial.print(s);
  Serial.print(" RSSI "); Serial.println(LoRa.packetRssi());
  gonderHermetry(s);   // Ethernet shield ile MQTT publish
}

Modülü Mega’ya doğrudan bağladım: 5V pinlerden SPI, besleme 3.3 V.

♥ 2

RFM95 5 V’a dayanıklı mı? Bizim laboratuvarda biri böyle bir modülü yakmıştı.

♥ 1

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.

Akzeptierte Lösung♥ 5

Haklısınız, ikisi birden. Seviye dönüştürücü taktım, callback’i bayrağa çevirdim. İlk modül gerçekten bozulmuş, yenisini takınca iki gündür hiç kesilmeden alıyor. CS konusunu da kontrol ettim, shield 10 numarayı, LoRa 53’ü kullanıyor. Teşekkürler Derya Hanım.

♥ 0

Tahminim tuttu sevindim 🙂 Bu arada bahçe tek sensörse sorun yok ama ileride çoğalırsa LoRaWAN’a geçmek mantıklı olabilir, Hermetry’nin kendi ağ sunucusu var, 868’lik bir gateway ile bu RFM95’ler LMIC’le LoRaWAN cihazı olarak da kullanılabilir.

♥ 0
Ansicht von 5 Beiträgen – 1 bis 5 (von insgesamt 5)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.

Mitdiskutieren

Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

Teilen