老 姚
/
LoRaTest
Lora interface demo
modular2 is an modular computer run Mbed OS ,this is LoRa LM005A test demo
main.cpp@0:4c0aba0c6eb1, 2018-04-19 (annotated)
- Committer:
- yao6116601
- Date:
- Thu Apr 19 13:18:02 2018 +0000
- Revision:
- 0:4c0aba0c6eb1
new LoRa
Who changed what in which revision?
User | Revision | Line number | New 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 | } |