pedro neto
/
testepedro2
Test program for RFM69 library. Sends time,temperature and RSSI to "RFM69_listener"
Sender.cpp@4:55cfd0071af9, 2019-07-29 (annotated)
- Committer:
- pedroneto1209
- Date:
- Mon Jul 29 19:59:18 2019 +0000
- Revision:
- 4:55cfd0071af9
- Parent:
- 3:450e37e0ffd6
mangue baja
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
br549 | 0:43464f6d23ee | 1 | // Code from TNode/TGateway @ Anarduino.com |
br549 | 0:43464f6d23ee | 2 | // NOTE: code sample was inspired from ideas gained from: https://github.com/aanon4/RFM69 |
br549 | 0:43464f6d23ee | 3 | // |
br549 | 0:43464f6d23ee | 4 | // Sender - periodically send time(millis), radio temperature, RSSI to listener... |
br549 | 0:43464f6d23ee | 5 | // 2014 - anarduino.com |
br549 | 0:43464f6d23ee | 6 | // |
pedroneto1209 | 4:55cfd0071af9 | 7 | #include "RFM69.h" |
pedroneto1209 | 4:55cfd0071af9 | 8 | #include "mbed.h" |
br549 | 0:43464f6d23ee | 9 | |
br549 | 0:43464f6d23ee | 10 | #define GATEWAY_ID 1 |
pedroneto1209 | 4:55cfd0071af9 | 11 | #define NODE_ID 41 // node ID |
br549 | 0:43464f6d23ee | 12 | #define NETWORKID 101 //the same on all nodes that talk to each other |
br549 | 0:43464f6d23ee | 13 | #define MSG_INTERVAL 100 |
br549 | 0:43464f6d23ee | 14 | |
br549 | 0:43464f6d23ee | 15 | // Uncomment only one of the following three to match radio frequency |
br549 | 0:43464f6d23ee | 16 | //#define FREQUENCY RF69_433MHZ |
br549 | 0:43464f6d23ee | 17 | //#define FREQUENCY RF69_868MHZ |
br549 | 0:43464f6d23ee | 18 | #define FREQUENCY RF69_915MHZ |
br549 | 0:43464f6d23ee | 19 | |
br549 | 2:2143c1d1f460 | 20 | #define IS_RFM69HW //NOTE: uncomment this ONLY for RFM69HW or RFM69HCW |
pedroneto1209 | 4:55cfd0071af9 | 21 | #define ENCRYPT_KEY "EncryptKey123456" |
pedroneto1209 | 4:55cfd0071af9 | 22 | #define ACK_TIME 50 |
pedroneto1209 | 4:55cfd0071af9 | 23 | #define LED PC_13 |
br549 | 0:43464f6d23ee | 24 | #define SERIAL_BAUD 115200 |
br549 | 0:43464f6d23ee | 25 | #define VERSION "1.0" |
br549 | 0:43464f6d23ee | 26 | |
pedroneto1209 | 4:55cfd0071af9 | 27 | #define MSGBUFSIZE 64 |
pedroneto1209 | 4:55cfd0071af9 | 28 | |
br549 | 0:43464f6d23ee | 29 | char msgBuf[MSGBUFSIZE]; |
br549 | 0:43464f6d23ee | 30 | |
pedroneto1209 | 4:55cfd0071af9 | 31 | Serial pc(PA_2, PA_3); |
pedroneto1209 | 4:55cfd0071af9 | 32 | DigitalOut myled(PC_13); //"Moteino Half Shield" has LED on D9 |
br549 | 0:43464f6d23ee | 33 | //RFM69::RFM69(PinName PinName mosi, PinName miso, PinName sclk,slaveSelectPin, PinName int) |
pedroneto1209 | 4:55cfd0071af9 | 34 | RFM69 radio(PB_15, PB_14, PB_13, PB_12, PA_8); |
br549 | 0:43464f6d23ee | 35 | |
br549 | 0:43464f6d23ee | 36 | bool promiscuousMode = false; // set 'true' to sniff all packets on the same network |
pedroneto1209 | 4:55cfd0071af9 | 37 | bool requestACK = false; |
br549 | 0:43464f6d23ee | 38 | Timer tmr; |
br549 | 0:43464f6d23ee | 39 | |
br549 | 0:43464f6d23ee | 40 | main() { |
br549 | 0:43464f6d23ee | 41 | memset(msgBuf,0,sizeof(msgBuf)); |
br549 | 0:43464f6d23ee | 42 | int i=1; |
br549 | 0:43464f6d23ee | 43 | long l; |
br549 | 0:43464f6d23ee | 44 | tmr.start(); |
br549 | 0:43464f6d23ee | 45 | |
br549 | 0:43464f6d23ee | 46 | pc.baud(SERIAL_BAUD); |
br549 | 0:43464f6d23ee | 47 | pc.printf("Sender %s startup at %d Mhz...\r\n",VERSION,(FREQUENCY==RF69_433MHZ ? 433 : FREQUENCY==RF69_868MHZ ? 868 : 915)); |
br549 | 0:43464f6d23ee | 48 | wait(2); |
br549 | 0:43464f6d23ee | 49 | radio.initialize(FREQUENCY, NODE_ID, NETWORKID); |
br549 | 0:43464f6d23ee | 50 | radio.encrypt(0); |
br549 | 2:2143c1d1f460 | 51 | radio.setPowerLevel(20); |
br549 | 0:43464f6d23ee | 52 | radio.promiscuous(promiscuousMode); |
br549 | 0:43464f6d23ee | 53 | #ifdef IS_RFM69HW |
br549 | 0:43464f6d23ee | 54 | radio.setHighPower(); //uncomment #define ONLY if radio is of type: RFM69HW or RFM69HCW |
br549 | 0:43464f6d23ee | 55 | #endif |
br549 | 0:43464f6d23ee | 56 | msgBuf[0] = (uint8_t)NODE_ID; // load NODEID |
br549 | 0:43464f6d23ee | 57 | |
br549 | 0:43464f6d23ee | 58 | while(1) { |
br549 | 0:43464f6d23ee | 59 | uint8_t tempC = radio.readTemperature(-1); // -1 = user cal factor, adjust for correct ambient |
br549 | 0:43464f6d23ee | 60 | uint8_t tempF = 1.8 * tempC + 32; // 9/5=1.8 |
br549 | 0:43464f6d23ee | 61 | |
br549 | 0:43464f6d23ee | 62 | l = tmr.read_ms(); // load time |
br549 | 0:43464f6d23ee | 63 | |
br549 | 0:43464f6d23ee | 64 | sprintf((char*)msgBuf,"#%d, t=%Lu, temp=%dF, RSSI=%d ",i,l,tempF,radio.RSSI); |
br549 | 0:43464f6d23ee | 65 | if(radio.sendWithRetry((uint8_t)GATEWAY_ID, msgBuf,strlen(msgBuf),true)) |
br549 | 0:43464f6d23ee | 66 | pc.printf("Packet %d sent, Ack ok!\r\n",i++); |
br549 | 0:43464f6d23ee | 67 | else pc.printf("Packet %d sent, no Ack!\r\n",i++); |
br549 | 0:43464f6d23ee | 68 | wait_ms(MSG_INTERVAL); |
br549 | 0:43464f6d23ee | 69 | myled = !myled; |
br549 | 0:43464f6d23ee | 70 | } |
br549 | 0:43464f6d23ee | 71 | } |