Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[LoRaWan, ARM ] wysyłanie danych z GPS przez sieć LoRa.

RozgrzanyAndrzej 07 Wrz 2018 15:24 81 0
  • #1 07 Wrz 2018 15:24
    RozgrzanyAndrzej
    Poziom 3  

    Cześć!

    Biorąc do serca Wasze ostatnie podpowiedzi, by przesiąść się na inne kontrolery chciałem spróbować swoich sił z płytkami dostarczanymi przez Seeeduino wspierających technologię LoRa.

    Po dłuższej zabawie tymi urządzeniami natrafiłem na pewien problem. Rzecz w komunikacji drogą radiową. Chciałem przesłać między dwiema LoRaWan'ami string NEMA prosto z GPS NEO-7M( wyjście UART). Niestety nie wiem dlaczego odbiornik nie widzi łańcucha, który wysłałem.
    Inaczej się sprawy mają gdy wysyłam string z konsoli. Wiadomości dochodzą szybko i bez zakłóceń.

    Nie wiem w czym jest rzecz, bo jedyne co zmieniam to odbieranie z SerialaUSB na software Serial przypisany GPS.

    Code:

    //-----------------Nadajnik
    #include <LoRaWan.h>
    #include <SoftwareSerial.h>
    static const int RXPin = 9, TXPin = 8;
    static const uint32_t GPSBaud = 9600;

    SoftwareSerial ss(RXPin, TXPin);



    int i;
    bool o;
    char b;
    char buf[200];

    int lenght;
    void setup()
    {
      SerialUSB.begin(115200);
      ss.begin(GPSBaud);
      Serial.begin(GPSBaud);

      lora.init();

      lora.initP2PMode(433, SF12, BW125, 8, 8, 20);
      i = 0;
    }

    void loop()
    {
      while (ss.available()) {
        b = ss.read();
        if (!(b ==  '\n')) {
          buf[i] = b;
          i++;
          lenght = i;

        }


        if (b == '\n') {
          i = 0;



          lora.transferPacketP2PMode(&b);

          SerialUSB.println(&buf[0]);
          for (int x = 0; x < lenght; x++) {
            buf[x] = 0;
          }
        }
      }
    }




    Code:

    //-----------Odbiornik

    #include <LoRaWan.h>


    unsigned char buffor[200] = {0, };


    void setup(void)
    {
        SerialUSB.begin(115200);
       
        lora.init();
       
        lora.initP2PMode(433, SF12, BW125, 8, 8, 20);
    }

    void loop(void)
    {
        short length = 0;
        short rssi = 0;
       
        memset(buffor, 0, 200);
        length = lora.receivePacketP2PMode(buffor, 200,  &rssi, 1);
       
        if(length)
        {
            SerialUSB.print("Length is: ");
            SerialUSB.println(length);
            SerialUSB.print("RSSI is: ");
            SerialUSB.println(rssi);
            SerialUSB.print("Data is: ");
            for(int a=0;a<=length;a++){
              char z=buffor[a];
              SerialUSB.print(z);
            }
           
            SerialUSB.println();
           
        }
    }


    Macie jakieś doświadczenie, lub wiecie coś na ten temat?

    Pozdrawiam, RA.

    0 0