Send RF22
Dependencies: RF22 mbed-rtos mbed
main.cpp@0:734a54fe523f, 2016-03-30 (annotated)
- Committer:
- MLev
- Date:
- Wed Mar 30 14:08:44 2016 +0000
- Revision:
- 0:734a54fe523f
hop !
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MLev | 0:734a54fe523f | 1 | #include "mbed.h" |
MLev | 0:734a54fe523f | 2 | #include <time.h> |
MLev | 0:734a54fe523f | 3 | #include <stdlib.h> |
MLev | 0:734a54fe523f | 4 | #include <RF22.h> |
MLev | 0:734a54fe523f | 5 | #include <RF22ReliableDatagram.h> |
MLev | 0:734a54fe523f | 6 | //#include "SDFileSystem.h" |
MLev | 0:734a54fe523f | 7 | |
MLev | 0:734a54fe523f | 8 | // Sample programm for ReliableDatagramm Sending |
MLev | 0:734a54fe523f | 9 | // Uses address 1 and sends to RF22 with address 2 |
MLev | 0:734a54fe523f | 10 | // See notebook http://mbed.org/users/charly/notebook/rfm22/ for connecting RFM22 to mbed |
MLev | 0:734a54fe523f | 11 | |
MLev | 0:734a54fe523f | 12 | int check_sw3(); |
MLev | 0:734a54fe523f | 13 | int init(); |
MLev | 0:734a54fe523f | 14 | void affichage(uint8_t val); |
MLev | 0:734a54fe523f | 15 | void send_loop(); |
MLev | 0:734a54fe523f | 16 | |
MLev | 0:734a54fe523f | 17 | Serial pc(USBTX, USBRX); |
MLev | 0:734a54fe523f | 18 | |
MLev | 0:734a54fe523f | 19 | RF22ReliableDatagram rf22(0,D10,D11,D12,D13,D2); |
MLev | 0:734a54fe523f | 20 | |
MLev | 0:734a54fe523f | 21 | DigitalOut led_red(LED_RED); |
MLev | 0:734a54fe523f | 22 | DigitalOut led_green(LED_GREEN); |
MLev | 0:734a54fe523f | 23 | |
MLev | 0:734a54fe523f | 24 | DigitalIn sw3(SW3); |
MLev | 0:734a54fe523f | 25 | |
MLev | 0:734a54fe523f | 26 | float frequency = 869.85; // frequency |
MLev | 0:734a54fe523f | 27 | |
MLev | 0:734a54fe523f | 28 | const uint8_t sender_adress = 1; // address of sender |
MLev | 0:734a54fe523f | 29 | const uint8_t receiver_adress = 2; // address of receiver |
MLev | 0:734a54fe523f | 30 | |
MLev | 0:734a54fe523f | 31 | int counter = 0; // message counter |
MLev | 0:734a54fe523f | 32 | |
MLev | 0:734a54fe523f | 33 | int check_sw3(void) |
MLev | 0:734a54fe523f | 34 | { |
MLev | 0:734a54fe523f | 35 | if (sw3 == 0) |
MLev | 0:734a54fe523f | 36 | { |
MLev | 0:734a54fe523f | 37 | printf("SW3 button pressed. \n"); |
MLev | 0:734a54fe523f | 38 | return 1; |
MLev | 0:734a54fe523f | 39 | } else return 0; |
MLev | 0:734a54fe523f | 40 | } |
MLev | 0:734a54fe523f | 41 | |
MLev | 0:734a54fe523f | 42 | int init() |
MLev | 0:734a54fe523f | 43 | { |
MLev | 0:734a54fe523f | 44 | // initialize the device |
MLev | 0:734a54fe523f | 45 | if (!rf22.init()) |
MLev | 0:734a54fe523f | 46 | { |
MLev | 0:734a54fe523f | 47 | pc.printf("RF22 init failed\n\r"); |
MLev | 0:734a54fe523f | 48 | return 1; |
MLev | 0:734a54fe523f | 49 | } |
MLev | 0:734a54fe523f | 50 | // set to 19.2 |
MLev | 0:734a54fe523f | 51 | if (!rf22.setModemConfig(RF22::OOK_Rb9_6Bw335)) |
MLev | 0:734a54fe523f | 52 | { |
MLev | 0:734a54fe523f | 53 | pc.printf("setModemConfig failed"); |
MLev | 0:734a54fe523f | 54 | return 1; |
MLev | 0:734a54fe523f | 55 | } |
MLev | 0:734a54fe523f | 56 | if (!rf22.setFrequency(frequency)) |
MLev | 0:734a54fe523f | 57 | { |
MLev | 0:734a54fe523f | 58 | pc.printf("setFrequency failed"); |
MLev | 0:734a54fe523f | 59 | return 1; |
MLev | 0:734a54fe523f | 60 | } |
MLev | 0:734a54fe523f | 61 | rf22.setTxPower(RF22_TXPOW_8DBM); |
MLev | 0:734a54fe523f | 62 | |
MLev | 0:734a54fe523f | 63 | rf22.setModeTx(); |
MLev | 0:734a54fe523f | 64 | |
MLev | 0:734a54fe523f | 65 | pc.printf("I am sending with address %i to adress %i ...\n\r",sender_adress,receiver_adress ); |
MLev | 0:734a54fe523f | 66 | rf22.setThisAddress(sender_adress); // sender-adress |
MLev | 0:734a54fe523f | 67 | |
MLev | 0:734a54fe523f | 68 | return 0; |
MLev | 0:734a54fe523f | 69 | |
MLev | 0:734a54fe523f | 70 | } |
MLev | 0:734a54fe523f | 71 | |
MLev | 0:734a54fe523f | 72 | |
MLev | 0:734a54fe523f | 73 | void affichage(uint8_t val) |
MLev | 0:734a54fe523f | 74 | { |
MLev | 0:734a54fe523f | 75 | uint8_t mask; |
MLev | 0:734a54fe523f | 76 | mask = 0x80; |
MLev | 0:734a54fe523f | 77 | int i; |
MLev | 0:734a54fe523f | 78 | |
MLev | 0:734a54fe523f | 79 | for(i=0 ; i<8 ; i++) |
MLev | 0:734a54fe523f | 80 | { |
MLev | 0:734a54fe523f | 81 | if((val & mask) == 0) pc.printf("0"); |
MLev | 0:734a54fe523f | 82 | else pc.printf("1"); |
MLev | 0:734a54fe523f | 83 | mask = mask >> 1; |
MLev | 0:734a54fe523f | 84 | } |
MLev | 0:734a54fe523f | 85 | } |
MLev | 0:734a54fe523f | 86 | |
MLev | 0:734a54fe523f | 87 | // send messages |
MLev | 0:734a54fe523f | 88 | void send_loop(){ |
MLev | 0:734a54fe523f | 89 | |
MLev | 0:734a54fe523f | 90 | led_green = 0; |
MLev | 0:734a54fe523f | 91 | led_red = 1; |
MLev | 0:734a54fe523f | 92 | |
MLev | 0:734a54fe523f | 93 | uint8_t data[32] = ""; |
MLev | 0:734a54fe523f | 94 | |
MLev | 0:734a54fe523f | 95 | uint8_t tab1; |
MLev | 0:734a54fe523f | 96 | |
MLev | 0:734a54fe523f | 97 | int value1; |
MLev | 0:734a54fe523f | 98 | |
MLev | 0:734a54fe523f | 99 | srand(time(NULL)); |
MLev | 0:734a54fe523f | 100 | value1 = (rand() % 31); |
MLev | 0:734a54fe523f | 101 | |
MLev | 0:734a54fe523f | 102 | tab1 = (uint8_t)value1; |
MLev | 0:734a54fe523f | 103 | |
MLev | 0:734a54fe523f | 104 | pc.printf("value1 : %d, binaire : ",value1); |
MLev | 0:734a54fe523f | 105 | affichage(tab1); |
MLev | 0:734a54fe523f | 106 | pc.printf("\n\r"); |
MLev | 0:734a54fe523f | 107 | |
MLev | 0:734a54fe523f | 108 | while (counter != 1000) { |
MLev | 0:734a54fe523f | 109 | counter++; |
MLev | 0:734a54fe523f | 110 | sprintf((char*)data,"%d",counter); |
MLev | 0:734a54fe523f | 111 | |
MLev | 0:734a54fe523f | 112 | pc.printf("\n\n\rStart sending ..."); |
MLev | 0:734a54fe523f | 113 | if (rf22.sendtoWait(data, sizeof(data), receiver_adress)) |
MLev | 0:734a54fe523f | 114 | { |
MLev | 0:734a54fe523f | 115 | pc.printf("\n\rSend to %i ACK: >>%s<<", receiver_adress,(char*)data); |
MLev | 0:734a54fe523f | 116 | } |
MLev | 0:734a54fe523f | 117 | else |
MLev | 0:734a54fe523f | 118 | { |
MLev | 0:734a54fe523f | 119 | pc.printf("\n\rSend to %i NOT ACK: >>%s<<", receiver_adress,(char*)data); |
MLev | 0:734a54fe523f | 120 | } |
MLev | 0:734a54fe523f | 121 | } |
MLev | 0:734a54fe523f | 122 | |
MLev | 0:734a54fe523f | 123 | led_red = 0; // on |
MLev | 0:734a54fe523f | 124 | led_green = 1; // off |
MLev | 0:734a54fe523f | 125 | } |
MLev | 0:734a54fe523f | 126 | |
MLev | 0:734a54fe523f | 127 | int main() { |
MLev | 0:734a54fe523f | 128 | |
MLev | 0:734a54fe523f | 129 | int b = 2; |
MLev | 0:734a54fe523f | 130 | |
MLev | 0:734a54fe523f | 131 | pc.baud(9600); |
MLev | 0:734a54fe523f | 132 | |
MLev | 0:734a54fe523f | 133 | pc.printf("\n\rConnected to mbed\n\r"); |
MLev | 0:734a54fe523f | 134 | |
MLev | 0:734a54fe523f | 135 | pc.printf ("RF22-Test-Reliable-Send V1.0\n\r"); |
MLev | 0:734a54fe523f | 136 | |
MLev | 0:734a54fe523f | 137 | // initialisation communication |
MLev | 0:734a54fe523f | 138 | if(init() == 0) b = 1; |
MLev | 0:734a54fe523f | 139 | |
MLev | 0:734a54fe523f | 140 | if (b == 1) |
MLev | 0:734a54fe523f | 141 | { |
MLev | 0:734a54fe523f | 142 | led_green = 1; |
MLev | 0:734a54fe523f | 143 | led_red = 0; |
MLev | 0:734a54fe523f | 144 | while(1) { |
MLev | 0:734a54fe523f | 145 | if(check_sw3() == 1) { |
MLev | 0:734a54fe523f | 146 | send_loop(); |
MLev | 0:734a54fe523f | 147 | } |
MLev | 0:734a54fe523f | 148 | wait(1); |
MLev | 0:734a54fe523f | 149 | } |
MLev | 0:734a54fe523f | 150 | } |
MLev | 0:734a54fe523f | 151 | else |
MLev | 0:734a54fe523f | 152 | { |
MLev | 0:734a54fe523f | 153 | pc.printf("Probleme lors de l'initialisation"); |
MLev | 0:734a54fe523f | 154 | } |
MLev | 0:734a54fe523f | 155 | |
MLev | 0:734a54fe523f | 156 | return 0; |
MLev | 0:734a54fe523f | 157 | |
MLev | 0:734a54fe523f | 158 | } |
MLev | 0:734a54fe523f | 159 |