Shop OBEX P1 Docs P2 Docs Learn Events
LORA — Parallax Forums

LORA

Hi,

I use a propeller C3 with a mdot of multitech. I use Rx and Tx pin for the communication.

The mdot's settings is attached (mdot's settings)

My code is the following :
CON

'//////////////////////////////////////////////////////////////////////////////
' PROP CHIP / SYSTEM DEFINES //////////////////////////////////////////////////
'//////////////////////////////////////////////////////////////////////////////

  ' These settings are for 5 MHZ XTALS
  _clkmode = xtal1 + pll16x         ' enable external clock and pll times 16
  _xinfreq = 5_000_000              ' set frequency to 5 MHZ
                                                                 
  rxPin = 0
  txPin = 2    
  mode = %0000  
  baudrate = 9600

  relaiRouge = 3
  relaiJaune = 1

  Temps_attente = 3000   

VAR

  byte char, char1, ptr, ptr1, ptr2, AT_Reponse[200], AT_Reponse1[200], RSSI[200], SNR[200], nombre_recu
  long data1, data2, data3


OBJ

  pst : "Parallax Serial Terminal"  
  LORA : "FullDuplexserial"


PUB main

  pst.Start(115200) 
  LORA.Start(rxPin, txPin, mode, baudrate)  

  data1 := 200
  data2 := 1200
  data3 := 2200 
  

  dira[relaiRouge] := 1
  dira[relaiJaune] := 1

  outa[relaiRouge] := 0
  outa[relaiJaune] := 0 

  waitcnt(clkfreq*2+cnt)

  pst.str(String("launching: ",9))

  LORA.str(String("at",13))
  repeat 3
    Rx(Temps_attente)
   
    pst.Str(String(13))  
    pst.str(String("at command: ",9))
    pst.str(@AT_Reponse)           
    pst.Str(String(13))

  waitcnt(clkfreq+cnt)

  LORA.str(String("at&v",13))
  repeat 49
    Rx(Temps_attente)
     
    pst.Str(String(13))  
    pst.str(String("at&v command: ",9))
    pst.Str(@AT_Reponse)           
    pst.Str(String(13))

  waitcnt(clkfreq+cnt)
  
    LORA.str(String("at+fsb=0",13))
  repeat 3   
    Rx(Temps_attente)
     
    pst.Str(String(13))  
    pst.str(String("at+fsb command: ",9))
    pst.Str(@AT_Reponse)           
    pst.Str(String(13))

  waitcnt(clkfreq+cnt)

    LORA.str(String("at+ni=1,conduit123",13))
  repeat 3   
    Rx(Temps_attente)
     
    pst.Str(String(13))  
    pst.str(String("at+ni command: ",9))
    pst.Str(@AT_Reponse)          
    pst.Str(String(13))

  waitcnt(clkfreq+cnt)
  
  LORA.str(String("at+nk=1,conduit123",13))
  repeat 3
    Rx(Temps_attente)
     
    pst.Str(String(13))  
    pst.str(String("at+nk command: ",9))
    pst.Str(@AT_Reponse)          
    pst.Str(String(13))

  waitcnt(clkfreq+cnt)

  LORA.str(String("at+join",13))
  repeat 3
    Rx(Temps_attente)
     
    pst.Str(String(13))  
    pst.str(String("at+join command: ",9))
    pst.Str(@AT_Reponse)          
    pst.Str(String(13))

  waitcnt(clkfreq+cnt)
  
  repeat
    repeat 5
        
      LORA.Str(String("at+send="))
      LORA.Dec(data1)
      LORA.Str(String("&RSSI="))
      LORA.Dec(data2) 
      LORA.Str(String("&SNR="))
      LORA.Dec(data3) 
      LORA.Str(String(13))
      repeat 3
        Rx(Temps_attente)
         
        pst.Str(String(13))  
        pst.str(String("at+send command: ",9))
        pst.Str(@AT_Reponse)          
        pst.Str(String(13))

        outa[relaiJaune] := 0
        outa[relaiRouge] := 0
        if (data1 > 1000)
          outa[relaiJaune] := 1
            if (data1 > 2000)
               outa[relaiRouge] :=1 
    repeat 5
      LORA.Str(String("at+send="))
      LORA.Dec(data2)
      LORA.Str(String(13))
      repeat 3
        Rx(Temps_attente)
         
        pst.Str(String(13))  
        pst.str(String("at+send command: ",9))
        pst.Str(@AT_Reponse)          
        pst.Str(String(13))
        
        outa[relaiJaune] := 0
        outa[relaiRouge] := 0
        if (data2 > 1000)
          outa[relaiJaune] := 1
            if (data2 > 2000)
               outa[relaiRouge] :=1
    repeat 5
      LORA.Str(String("at+send="))
      LORA.Dec(data3)
      LORA.Str(String(13))
      repeat 3
        Rx(Temps_attente)
         
        pst.Str(String(13))  
        pst.str(String("at+send command: ",9))
        pst.Str(@AT_Reponse)          
        pst.Str(String(13))
        
        outa[relaiJaune] := 0
        outa[relaiRouge] := 0
        if (data3 > 1000)
          outa[relaiJaune] := 1
            if (data3 > 2000)
               outa[relaiRouge] :=1
    repeat 5
      LORA.Str(String("at+send="))
      LORA.Dec(data2)
      LORA.Str(String(13))
      repeat 3
        Rx(Temps_attente)
         
        pst.Str(String(13))  
        pst.str(String("at+send command: ",9))
        pst.Str(@AT_Reponse)          
        pst.Str(String(13))
        
        outa[relaiJaune] := 0
        outa[relaiRouge] := 0
        if (data2 > 1000)
          outa[relaiJaune] := 1
            if (data2 > 2000)
               outa[relaiRouge] :=1
    repeat 5
      LORA.Str(String("at+send="))
      LORA.Dec(data1)
      LORA.Str(String(13))
      repeat 3
        Rx(Temps_attente)
         
        pst.Str(String(13))  
        pst.str(String("at+send command: ",9))
        pst.Str(@AT_Reponse)          
        pst.Str(String(13))

        outa[relaiJaune] := 0
        outa[relaiRouge] := 0
        if (data1 > 1000)
          outa[relaiJaune] := 1
            if (data1 > 2000)
               outa[relaiRouge] :=1        
        
         
  '    waitcnt(clkfreq+cnt)
  

PUB Rx(timeout)

  Rx_LORA(timeout)



Pub Rx_LORA(timeout)   

    ptr := 0
    if (nombre_recu == 0 OR nombre_recu == 2)
      LORA.RxFlush
      repeat
        char := LORA.Rx
        AT_Reponse[ptr++] := Char  
      while (char <> 13)
       
      AT_Reponse[--ptr] := 0

    elseif (nombre_recu ==1)   
      LORA.RxFlush
      repeat
        char := LORA.Rx
        AT_Reponse1[ptr++] := Char  
      while (char <> 13)
       
      AT_Reponse1[--ptr] := 0
    else
      abort  
          

In the first time, I don't understand why I not receive the first character of my response and sometimes the first two characters (three image that is attached (first, second and third part)) .

If anyone has a hint, I would appreciate

483 x 709 - 23K
1119 x 917 - 33K
1123 x 921 - 32K
1123 x 582 - 21K

Comments

Sign In or Register to comment.