Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed RF24Network RF24
main.cpp@4:d7a0a07f21f3, 2021-05-20 (annotated)
- Committer:
- Giamarchi
- Date:
- Thu May 20 07:26:02 2021 +0000
- Revision:
- 4:d7a0a07f21f3
- Parent:
- 3:d605536db315
version 00
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| akashvibhute | 0:3982c0e9eda1 | 1 | #include "mbed.h" |
| akashvibhute | 0:3982c0e9eda1 | 2 | #include <RF24Network.h> |
| akashvibhute | 2:926b93a68399 | 3 | #include <RF24.h> |
| Giamarchi | 4:d7a0a07f21f3 | 4 | #include "isen32_board.h" |
| akashvibhute | 0:3982c0e9eda1 | 5 | |
| Giamarchi | 4:d7a0a07f21f3 | 6 | Serial pc(USBTX, USBRX); // 9600 baud par défaut |
| akashvibhute | 0:3982c0e9eda1 | 7 | |
| Giamarchi | 4:d7a0a07f21f3 | 8 | #define nrf_CE PB_3 // D3 sur connecteur Arduino |
| Giamarchi | 4:d7a0a07f21f3 | 9 | #define nrf_CSN PB_12 |
| Giamarchi | 4:d7a0a07f21f3 | 10 | #define spi_MOSI PB_15 |
| Giamarchi | 4:d7a0a07f21f3 | 11 | #define spi_MISO PB_14 |
| Giamarchi | 4:d7a0a07f21f3 | 12 | #define spi_SCK PB_13 |
| akashvibhute | 0:3982c0e9eda1 | 13 | |
| akashvibhute | 3:d605536db315 | 14 | RF24 radio(spi_MOSI, spi_MISO, spi_SCK, nrf_CE, nrf_CSN ); |
| akashvibhute | 0:3982c0e9eda1 | 15 | |
| akashvibhute | 0:3982c0e9eda1 | 16 | // Network uses that radio |
| akashvibhute | 0:3982c0e9eda1 | 17 | RF24Network network(radio); |
| akashvibhute | 0:3982c0e9eda1 | 18 | |
| akashvibhute | 0:3982c0e9eda1 | 19 | // Address of our node |
| akashvibhute | 3:d605536db315 | 20 | const uint16_t this_node = 01; |
| akashvibhute | 0:3982c0e9eda1 | 21 | |
| akashvibhute | 0:3982c0e9eda1 | 22 | // Address of the other node |
| akashvibhute | 3:d605536db315 | 23 | const uint16_t other_node = 00; |
| akashvibhute | 0:3982c0e9eda1 | 24 | |
| akashvibhute | 2:926b93a68399 | 25 | // How often to send payload packet to the other unit |
| Giamarchi | 4:d7a0a07f21f3 | 26 | const unsigned long interval = 1000; //ms |
| akashvibhute | 0:3982c0e9eda1 | 27 | |
| akashvibhute | 0:3982c0e9eda1 | 28 | // When did we last send? |
| akashvibhute | 0:3982c0e9eda1 | 29 | unsigned long last_sent; |
| akashvibhute | 1:5be48a9550c3 | 30 | Timer t; |
| akashvibhute | 0:3982c0e9eda1 | 31 | |
| akashvibhute | 0:3982c0e9eda1 | 32 | // How many have we sent already |
| akashvibhute | 0:3982c0e9eda1 | 33 | unsigned long packets_sent; |
| akashvibhute | 1:5be48a9550c3 | 34 | Timer t_packet; |
| akashvibhute | 0:3982c0e9eda1 | 35 | |
| akashvibhute | 0:3982c0e9eda1 | 36 | // Structure of our payload |
| akashvibhute | 2:926b93a68399 | 37 | struct payload_t |
| akashvibhute | 0:3982c0e9eda1 | 38 | { |
| Giamarchi | 4:d7a0a07f21f3 | 39 | // unsigned long ms; |
| Giamarchi | 4:d7a0a07f21f3 | 40 | // unsigned long counter; |
| Giamarchi | 4:d7a0a07f21f3 | 41 | uint8_t num; |
| Giamarchi | 4:d7a0a07f21f3 | 42 | uint8_t del; |
| akashvibhute | 0:3982c0e9eda1 | 43 | }; |
| akashvibhute | 0:3982c0e9eda1 | 44 | |
| Giamarchi | 4:d7a0a07f21f3 | 45 | struct _node |
| Giamarchi | 4:d7a0a07f21f3 | 46 | { |
| Giamarchi | 4:d7a0a07f21f3 | 47 | uint8_t num; |
| Giamarchi | 4:d7a0a07f21f3 | 48 | uint8_t del; |
| Giamarchi | 4:d7a0a07f21f3 | 49 | }; |
| akashvibhute | 0:3982c0e9eda1 | 50 | |
| akashvibhute | 2:926b93a68399 | 51 | int main() |
| akashvibhute | 0:3982c0e9eda1 | 52 | { |
| Giamarchi | 4:d7a0a07f21f3 | 53 | _node node; |
| Giamarchi | 4:d7a0a07f21f3 | 54 | |
| Giamarchi | 4:d7a0a07f21f3 | 55 | BTN1.mode(PullUp); // Resist interne Pull up |
| Giamarchi | 4:d7a0a07f21f3 | 56 | pc.baud(9600); |
| akashvibhute | 0:3982c0e9eda1 | 57 | wait_ms(1000); |
| akashvibhute | 2:926b93a68399 | 58 | |
| Giamarchi | 4:d7a0a07f21f3 | 59 | pc.printf("mBed RF24Network node : 01\r\n"); |
| akashvibhute | 0:3982c0e9eda1 | 60 | radio.begin(); |
| akashvibhute | 0:3982c0e9eda1 | 61 | network.begin(/*channel*/ 90, /*node address*/ this_node); |
| akashvibhute | 0:3982c0e9eda1 | 62 | wait_ms(2000); |
| akashvibhute | 1:5be48a9550c3 | 63 | t.start(); |
| akashvibhute | 1:5be48a9550c3 | 64 | t_packet.start(); |
| Giamarchi | 4:d7a0a07f21f3 | 65 | |
| akashvibhute | 2:926b93a68399 | 66 | while(1) |
| akashvibhute | 0:3982c0e9eda1 | 67 | { |
| Giamarchi | 4:d7a0a07f21f3 | 68 | // Refresh Dels |
| Giamarchi | 4:d7a0a07f21f3 | 69 | Set_8Dels(node.del); |
| Giamarchi | 4:d7a0a07f21f3 | 70 | |
| akashvibhute | 0:3982c0e9eda1 | 71 | // Pump the network regularly |
| akashvibhute | 0:3982c0e9eda1 | 72 | network.update(); |
| akashvibhute | 2:926b93a68399 | 73 | |
| akashvibhute | 1:5be48a9550c3 | 74 | /* If it's time to send a message, send it! */ |
| akashvibhute | 1:5be48a9550c3 | 75 | unsigned long now = t.read_ms(); |
| akashvibhute | 2:926b93a68399 | 76 | if ( now >= interval ) |
| akashvibhute | 1:5be48a9550c3 | 77 | { |
| akashvibhute | 1:5be48a9550c3 | 78 | t.reset(); |
| akashvibhute | 1:5be48a9550c3 | 79 | |
| Giamarchi | 4:d7a0a07f21f3 | 80 | pc.printf("Envoi..."); |
| akashvibhute | 1:5be48a9550c3 | 81 | payload_t payload_tx; |
| Giamarchi | 4:d7a0a07f21f3 | 82 | if(!BTN1) |
| Giamarchi | 4:d7a0a07f21f3 | 83 | payload_tx.num = 02; |
| Giamarchi | 4:d7a0a07f21f3 | 84 | else |
| Giamarchi | 4:d7a0a07f21f3 | 85 | payload_tx.num = 00; |
| Giamarchi | 4:d7a0a07f21f3 | 86 | |
| Giamarchi | 4:d7a0a07f21f3 | 87 | payload_tx.del++; |
| akashvibhute | 2:926b93a68399 | 88 | |
| akashvibhute | 2:926b93a68399 | 89 | |
| akashvibhute | 1:5be48a9550c3 | 90 | RF24NetworkHeader header_tx(/*to node*/ other_node); |
| akashvibhute | 1:5be48a9550c3 | 91 | bool ok = network.write(header_tx,&payload_tx,sizeof(payload_tx)); |
| akashvibhute | 1:5be48a9550c3 | 92 | if (ok) |
| Giamarchi | 4:d7a0a07f21f3 | 93 | pc.printf("%d ok.\r\n",payload_tx.del); |
| akashvibhute | 1:5be48a9550c3 | 94 | else |
| Giamarchi | 4:d7a0a07f21f3 | 95 | pc.printf("erreur.\r\n"); |
| Giamarchi | 4:d7a0a07f21f3 | 96 | |
| Giamarchi | 4:d7a0a07f21f3 | 97 | |
| akashvibhute | 2:926b93a68399 | 98 | } |
| Giamarchi | 4:d7a0a07f21f3 | 99 | while ( network.available() ) |
| Giamarchi | 4:d7a0a07f21f3 | 100 | { |
| Giamarchi | 4:d7a0a07f21f3 | 101 | // If so, grab it and print it out |
| Giamarchi | 4:d7a0a07f21f3 | 102 | RF24NetworkHeader header_rx; |
| Giamarchi | 4:d7a0a07f21f3 | 103 | payload_t payload_rx; |
| Giamarchi | 4:d7a0a07f21f3 | 104 | network.read(header_rx,&payload_rx,sizeof(payload_rx)); |
| Giamarchi | 4:d7a0a07f21f3 | 105 | // pc.printf("Received packet # %d at %d ms\r\n",payload_rx.counter,payload_rx.ms); |
| Giamarchi | 4:d7a0a07f21f3 | 106 | pc.printf("Node %d del %d\r\n",payload_rx.num,payload_rx.del); |
| Giamarchi | 4:d7a0a07f21f3 | 107 | |
| Giamarchi | 4:d7a0a07f21f3 | 108 | if (payload_rx.num == 01) |
| Giamarchi | 4:d7a0a07f21f3 | 109 | { |
| Giamarchi | 4:d7a0a07f21f3 | 110 | node.del = payload_rx.del; |
| Giamarchi | 4:d7a0a07f21f3 | 111 | } |
| Giamarchi | 4:d7a0a07f21f3 | 112 | } |
| akashvibhute | 0:3982c0e9eda1 | 113 | } |
| akashvibhute | 0:3982c0e9eda1 | 114 | } |