Lora interface demo

Dependencies:   LM005A-driver

modular2 is an modular computer run Mbed OS ,this is LoRa LM005A test demo

Committer:
yao6116601
Date:
Thu Apr 19 13:18:02 2018 +0000
Revision:
0:4c0aba0c6eb1
new LoRa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yao6116601 0:4c0aba0c6eb1 1 #include "mbed.h"
yao6116601 0:4c0aba0c6eb1 2 #include "UDPSocket.h"
yao6116601 0:4c0aba0c6eb1 3 #include "LM005A.h"
yao6116601 0:4c0aba0c6eb1 4 DigitalOut myled(PF_12);
yao6116601 0:4c0aba0c6eb1 5 LM005A Lora(PB_6,PB_7,true);
yao6116601 0:4c0aba0c6eb1 6 DigitalOut Enable(PD_13);
yao6116601 0:4c0aba0c6eb1 7 DigitalOut RST(PD_12);
yao6116601 0:4c0aba0c6eb1 8 #define ECHO_SERVER_PORT 5683
yao6116601 0:4c0aba0c6eb1 9 #define SERVER_ADDR "180.101.147.115"
yao6116601 0:4c0aba0c6eb1 10 Thread recvThread;
yao6116601 0:4c0aba0c6eb1 11 Mutex s;
yao6116601 0:4c0aba0c6eb1 12 int mIndex=0;
yao6116601 0:4c0aba0c6eb1 13 void receive()
yao6116601 0:4c0aba0c6eb1 14 { char rbuf[32];
yao6116601 0:4c0aba0c6eb1 15 char sbuf[64];
yao6116601 0:4c0aba0c6eb1 16 int len;
yao6116601 0:4c0aba0c6eb1 17 bool result;
yao6116601 0:4c0aba0c6eb1 18 while(true)
yao6116601 0:4c0aba0c6eb1 19 {
yao6116601 0:4c0aba0c6eb1 20 s.lock();
yao6116601 0:4c0aba0c6eb1 21 len=Lora.recv(2,rbuf,2);
yao6116601 0:4c0aba0c6eb1 22 s.unlock();
yao6116601 0:4c0aba0c6eb1 23 if (len>0)
yao6116601 0:4c0aba0c6eb1 24 {
yao6116601 0:4c0aba0c6eb1 25 printf("receive %d :%0.*s\n",len,len,rbuf);
yao6116601 0:4c0aba0c6eb1 26
yao6116601 0:4c0aba0c6eb1 27 len= sprintf(sbuf,"Hello guodong Server %d\n",mIndex);mIndex++;
yao6116601 0:4c0aba0c6eb1 28 s.lock();
yao6116601 0:4c0aba0c6eb1 29 result= Lora.send(2,1,sbuf,len);
yao6116601 0:4c0aba0c6eb1 30 s.unlock();
yao6116601 0:4c0aba0c6eb1 31 if (result)
yao6116601 0:4c0aba0c6eb1 32 printf("Send successful\n");
yao6116601 0:4c0aba0c6eb1 33 else
yao6116601 0:4c0aba0c6eb1 34 printf("send error\n");
yao6116601 0:4c0aba0c6eb1 35 }
yao6116601 0:4c0aba0c6eb1 36 }
yao6116601 0:4c0aba0c6eb1 37 }
yao6116601 0:4c0aba0c6eb1 38 int main() {
yao6116601 0:4c0aba0c6eb1 39 char buffer[64];
yao6116601 0:4c0aba0c6eb1 40 int val;
yao6116601 0:4c0aba0c6eb1 41 int len;
yao6116601 0:4c0aba0c6eb1 42 bool result;
yao6116601 0:4c0aba0c6eb1 43 const char * ss;
yao6116601 0:4c0aba0c6eb1 44 char temp[4];
yao6116601 0:4c0aba0c6eb1 45 Enable=1;
yao6116601 0:4c0aba0c6eb1 46 RST=0;
yao6116601 0:4c0aba0c6eb1 47 RST=1;
yao6116601 0:4c0aba0c6eb1 48 printf("LM005A LoRa Demo Waiting For boot up ... \n");
yao6116601 0:4c0aba0c6eb1 49 Lora.setTimeout(55000);
yao6116601 0:4c0aba0c6eb1 50 result=Lora.init();
yao6116601 0:4c0aba0c6eb1 51 if (result)
yao6116601 0:4c0aba0c6eb1 52 printf("Lora Modular BootUp\n");
yao6116601 0:4c0aba0c6eb1 53 ss=Lora.get_firmware_version();
yao6116601 0:4c0aba0c6eb1 54 printf("firmware version =%s\n",ss);
yao6116601 0:4c0aba0c6eb1 55 ss=Lora.getDeviceAddress();
yao6116601 0:4c0aba0c6eb1 56 printf("device address=%s\n",ss);
yao6116601 0:4c0aba0c6eb1 57 ss=Lora.getEUI(0);
yao6116601 0:4c0aba0c6eb1 58 printf("get DEVEUI=%s\n",ss);
yao6116601 0:4c0aba0c6eb1 59 ss=Lora.getEUI(1);
yao6116601 0:4c0aba0c6eb1 60 printf("get APPEUI=%s\n",ss);
yao6116601 0:4c0aba0c6eb1 61 val=Lora.set_mode(0);
yao6116601 0:4c0aba0c6eb1 62 printf("set Mode %d\n" ,val);
yao6116601 0:4c0aba0c6eb1 63 val=Lora.set_class(1);
yao6116601 0:4c0aba0c6eb1 64 printf("set class %d\n" ,val);
yao6116601 0:4c0aba0c6eb1 65 val=Lora.set_power(20);
yao6116601 0:4c0aba0c6eb1 66 printf("set power %d\n" ,val);
yao6116601 0:4c0aba0c6eb1 67 // val=Lora.set_band(0,4715);
yao6116601 0:4c0aba0c6eb1 68 // printf("set Fixed band %d\n" ,val);
yao6116601 0:4c0aba0c6eb1 69 // Lora.reset();
yao6116601 0:4c0aba0c6eb1 70 result=Lora.join();
yao6116601 0:4c0aba0c6eb1 71 if (result)
yao6116601 0:4c0aba0c6eb1 72 printf("join the network\n");
yao6116601 0:4c0aba0c6eb1 73 len= sprintf(buffer,"Hello guodong server " );
yao6116601 0:4c0aba0c6eb1 74 result= Lora.send(2,0,buffer,len);
yao6116601 0:4c0aba0c6eb1 75 if (result)
yao6116601 0:4c0aba0c6eb1 76 printf("send Data\n");
yao6116601 0:4c0aba0c6eb1 77 else
yao6116601 0:4c0aba0c6eb1 78 printf("send Data ERROR\n");
yao6116601 0:4c0aba0c6eb1 79 myled = 1;
yao6116601 0:4c0aba0c6eb1 80 recvThread.start(&receive);
yao6116601 0:4c0aba0c6eb1 81 while(1) {
yao6116601 0:4c0aba0c6eb1 82 wait(20);
yao6116601 0:4c0aba0c6eb1 83 /* buffer[0]=0x01;
yao6116601 0:4c0aba0c6eb1 84 float a=12.4;
yao6116601 0:4c0aba0c6eb1 85 memcpy(&temp[0],&a,4);
yao6116601 0:4c0aba0c6eb1 86 buffer[1]=temp[3];buffer[2]=temp[2];buffer[3]=temp[1];buffer[4]=temp[0];
yao6116601 0:4c0aba0c6eb1 87 buffer[5]=1;
yao6116601 0:4c0aba0c6eb1 88 a=2.22;
yao6116601 0:4c0aba0c6eb1 89 memcpy(&temp[0],&a,4);
yao6116601 0:4c0aba0c6eb1 90 buffer[6]=temp[3];buffer[7]=temp[2];buffer[8]=temp[1];buffer[9]=temp[0];
yao6116601 0:4c0aba0c6eb1 91 buffer[10]=2;
yao6116601 0:4c0aba0c6eb1 92 Lora.send(0x00,0x00,buffer,10);*/
yao6116601 0:4c0aba0c6eb1 93 // LED is ON
yao6116601 0:4c0aba0c6eb1 94 /* s.lock();
yao6116601 0:4c0aba0c6eb1 95 sprintf(buffer,"HeartBeat\n");
yao6116601 0:4c0aba0c6eb1 96 result= Lora.send(2,0,buffer,10);
yao6116601 0:4c0aba0c6eb1 97 s.unlock();
yao6116601 0:4c0aba0c6eb1 98 if (result)
yao6116601 0:4c0aba0c6eb1 99 printf("send Data\n");
yao6116601 0:4c0aba0c6eb1 100 else
yao6116601 0:4c0aba0c6eb1 101 printf("send Data ERROR\n"); */
yao6116601 0:4c0aba0c6eb1 102 myled = !myled; // LED is OFF
yao6116601 0:4c0aba0c6eb1 103
yao6116601 0:4c0aba0c6eb1 104 }
yao6116601 0:4c0aba0c6eb1 105 }