Copy off node 1 to behave node 2

Dependencies:   mbed RF24Network RF24

Committer:
Giamarchi
Date:
Thu May 20 09:26:58 2021 +0000
Revision:
4:c6de6d47c54a
Parent:
3:d605536db315
Child:
5:48f3f58ebd13
Version 00

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akashvibhute 0:3982c0e9eda1 1 #include "mbed.h"
akashvibhute 0:3982c0e9eda1 2 #include <RF24Network.h>
akashvibhute 2:926b93a68399 3 #include <RF24.h>
akashvibhute 0:3982c0e9eda1 4
akashvibhute 0:3982c0e9eda1 5 Serial pc(USBTX, USBRX);
akashvibhute 0:3982c0e9eda1 6
Giamarchi 4:c6de6d47c54a 7 DigitalOut LED_V(PA_12);
Giamarchi 4:c6de6d47c54a 8 DigitalOut LED_J(PB_0);
Giamarchi 4:c6de6d47c54a 9 DigitalOut LED_R(PB_7);
Giamarchi 4:c6de6d47c54a 10
Giamarchi 4:c6de6d47c54a 11 DigitalIn BP(PA_0);
Giamarchi 4:c6de6d47c54a 12
Giamarchi 4:c6de6d47c54a 13 #define nrf_CE PA_8
Giamarchi 4:c6de6d47c54a 14 #define nrf_CSN PA_11
Giamarchi 4:c6de6d47c54a 15 #define spi_MOSI PB_5
Giamarchi 4:c6de6d47c54a 16 #define spi_MISO PB_4
Giamarchi 4:c6de6d47c54a 17 #define spi_SCK PB_3
akashvibhute 0:3982c0e9eda1 18
akashvibhute 3:d605536db315 19 RF24 radio(spi_MOSI, spi_MISO, spi_SCK, nrf_CE, nrf_CSN );
akashvibhute 0:3982c0e9eda1 20
akashvibhute 0:3982c0e9eda1 21 // Network uses that radio
akashvibhute 0:3982c0e9eda1 22 RF24Network network(radio);
akashvibhute 0:3982c0e9eda1 23
akashvibhute 0:3982c0e9eda1 24 // Address of our node
akashvibhute 3:d605536db315 25 const uint16_t this_node = 01;
akashvibhute 0:3982c0e9eda1 26
akashvibhute 0:3982c0e9eda1 27 // Address of the other node
akashvibhute 3:d605536db315 28 const uint16_t other_node = 00;
akashvibhute 0:3982c0e9eda1 29
akashvibhute 2:926b93a68399 30 // How often to send payload packet to the other unit
Giamarchi 4:c6de6d47c54a 31 const unsigned long interval = 1000; //ms
akashvibhute 0:3982c0e9eda1 32
akashvibhute 0:3982c0e9eda1 33 // When did we last send?
akashvibhute 0:3982c0e9eda1 34 unsigned long last_sent;
akashvibhute 1:5be48a9550c3 35 Timer t;
akashvibhute 0:3982c0e9eda1 36
akashvibhute 0:3982c0e9eda1 37 // How many have we sent already
akashvibhute 0:3982c0e9eda1 38 unsigned long packets_sent;
akashvibhute 1:5be48a9550c3 39 Timer t_packet;
akashvibhute 0:3982c0e9eda1 40
akashvibhute 0:3982c0e9eda1 41 // Structure of our payload
akashvibhute 2:926b93a68399 42 struct payload_t
akashvibhute 0:3982c0e9eda1 43 {
Giamarchi 4:c6de6d47c54a 44 uint8_t src; // Source du message
Giamarchi 4:c6de6d47c54a 45 uint8_t dest; // Destination du message
Giamarchi 4:c6de6d47c54a 46 uint8_t data; // Data du message
akashvibhute 0:3982c0e9eda1 47 };
akashvibhute 0:3982c0e9eda1 48
Giamarchi 4:c6de6d47c54a 49 struct _node
Giamarchi 4:c6de6d47c54a 50 {
Giamarchi 4:c6de6d47c54a 51 uint8_t src; // Source du message
Giamarchi 4:c6de6d47c54a 52 uint8_t dest; // Destination du message
Giamarchi 4:c6de6d47c54a 53 uint8_t del;
Giamarchi 4:c6de6d47c54a 54 };
akashvibhute 0:3982c0e9eda1 55
akashvibhute 2:926b93a68399 56 int main()
akashvibhute 0:3982c0e9eda1 57 {
Giamarchi 4:c6de6d47c54a 58 _node node;
Giamarchi 4:c6de6d47c54a 59
Giamarchi 4:c6de6d47c54a 60 BP.mode(PullUp); // Resist interne Pull up
Giamarchi 4:c6de6d47c54a 61 // pc.baud(9600);
akashvibhute 0:3982c0e9eda1 62 wait_ms(1000);
akashvibhute 2:926b93a68399 63
Giamarchi 4:c6de6d47c54a 64 pc.printf("mBed RF24Network node : 01\r\n");
akashvibhute 0:3982c0e9eda1 65 radio.begin();
akashvibhute 0:3982c0e9eda1 66 network.begin(/*channel*/ 90, /*node address*/ this_node);
akashvibhute 0:3982c0e9eda1 67 wait_ms(2000);
akashvibhute 1:5be48a9550c3 68 t.start();
akashvibhute 1:5be48a9550c3 69 t_packet.start();
Giamarchi 4:c6de6d47c54a 70
Giamarchi 4:c6de6d47c54a 71
akashvibhute 2:926b93a68399 72 while(1)
akashvibhute 0:3982c0e9eda1 73 {
Giamarchi 4:c6de6d47c54a 74 // Refresh Dels
Giamarchi 4:c6de6d47c54a 75 LED_R = node.del & 0x01;
Giamarchi 4:c6de6d47c54a 76 LED_J = (node.del & 0x02)>>1;
Giamarchi 4:c6de6d47c54a 77 LED_V = (node.del & 0x04)>>2;
Giamarchi 4:c6de6d47c54a 78
akashvibhute 0:3982c0e9eda1 79 // Pump the network regularly
akashvibhute 0:3982c0e9eda1 80 network.update();
akashvibhute 2:926b93a68399 81
akashvibhute 1:5be48a9550c3 82 /* If it's time to send a message, send it! */
Giamarchi 4:c6de6d47c54a 83 /* unsigned long now = t.read_ms();
akashvibhute 2:926b93a68399 84 if ( now >= interval )
akashvibhute 1:5be48a9550c3 85 {
akashvibhute 1:5be48a9550c3 86 t.reset();
akashvibhute 1:5be48a9550c3 87
Giamarchi 4:c6de6d47c54a 88 pc.printf("Envoi...");
akashvibhute 1:5be48a9550c3 89 payload_t payload_tx;
Giamarchi 4:c6de6d47c54a 90 if(!BP)
Giamarchi 4:c6de6d47c54a 91 payload_tx.num = 01;
Giamarchi 4:c6de6d47c54a 92 else
Giamarchi 4:c6de6d47c54a 93 payload_tx.num = 00;
Giamarchi 4:c6de6d47c54a 94
Giamarchi 4:c6de6d47c54a 95 payload_tx.del++;
akashvibhute 2:926b93a68399 96
akashvibhute 2:926b93a68399 97
Giamarchi 4:c6de6d47c54a 98 RF24NetworkHeader header_tx(other_node); // vers node "other_node"
akashvibhute 1:5be48a9550c3 99 bool ok = network.write(header_tx,&payload_tx,sizeof(payload_tx));
akashvibhute 1:5be48a9550c3 100 if (ok)
Giamarchi 4:c6de6d47c54a 101 pc.printf("ok.\r\n");
akashvibhute 1:5be48a9550c3 102 else
Giamarchi 4:c6de6d47c54a 103 pc.printf("erreur.\r\n");
Giamarchi 4:c6de6d47c54a 104
Giamarchi 4:c6de6d47c54a 105
akashvibhute 2:926b93a68399 106 }
Giamarchi 4:c6de6d47c54a 107 */
Giamarchi 4:c6de6d47c54a 108 while ( network.available() )
Giamarchi 4:c6de6d47c54a 109 {
Giamarchi 4:c6de6d47c54a 110 // If so, grab it and print it out
Giamarchi 4:c6de6d47c54a 111 RF24NetworkHeader header_rx;
Giamarchi 4:c6de6d47c54a 112 payload_t payload_rx;
Giamarchi 4:c6de6d47c54a 113 network.read(header_rx,&payload_rx,sizeof(payload_rx));
akashvibhute 2:926b93a68399 114
Giamarchi 4:c6de6d47c54a 115 pc.printf("Node 01 recu de node %d, data : %d\r\n",payload_rx.src,payload_rx.data);
Giamarchi 4:c6de6d47c54a 116
Giamarchi 4:c6de6d47c54a 117 node.del = payload_rx.data;
Giamarchi 4:c6de6d47c54a 118 }
Giamarchi 4:c6de6d47c54a 119 if(!BP)
Giamarchi 4:c6de6d47c54a 120 {
Giamarchi 4:c6de6d47c54a 121 payload_t payload_tx;
Giamarchi 4:c6de6d47c54a 122 payload_tx.src = this_node;
Giamarchi 4:c6de6d47c54a 123 payload_tx.dest = 02;
Giamarchi 4:c6de6d47c54a 124 payload_tx.data = node.del%5;
Giamarchi 4:c6de6d47c54a 125 pc.printf("Envoi...");
akashvibhute 2:926b93a68399 126
Giamarchi 4:c6de6d47c54a 127 RF24NetworkHeader header_tx(other_node); // vers node "other_node"
Giamarchi 4:c6de6d47c54a 128 bool ok = network.write(header_tx,&payload_tx,sizeof(payload_tx));
Giamarchi 4:c6de6d47c54a 129 if (ok)
Giamarchi 4:c6de6d47c54a 130 pc.printf("ok.\r\n");
Giamarchi 4:c6de6d47c54a 131 else
Giamarchi 4:c6de6d47c54a 132 pc.printf("erreur.\r\n");
Giamarchi 4:c6de6d47c54a 133 wait_ms(2000);
Giamarchi 4:c6de6d47c54a 134 }
akashvibhute 0:3982c0e9eda1 135 }
akashvibhute 0:3982c0e9eda1 136 }