Send RF22

Dependencies:   RF22 mbed-rtos mbed

Committer:
MLev
Date:
Wed Mar 30 14:08:44 2016 +0000
Revision:
0:734a54fe523f
hop !

Who changed what in which revision?

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