Test program for RFM69 library. Sends time,temperature and RSSI to "RFM69_listener"

Dependencies:   mbed RFM69

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?

UserRevisionLine numberNew 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 }