IoT - Kubus / Mbed 2 deprecated Kubus

Dependencies:   mbed nRF24L01P

Committer:
pannaanna
Date:
Thu Jan 05 11:31:12 2017 +0100
Revision:
2:6541a391bdbd
Child:
4:aa25f65395e3
Initial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pannaanna 2:6541a391bdbd 1 #include "common.h"
pannaanna 2:6541a391bdbd 2 #include "mbed.h"
pannaanna 2:6541a391bdbd 3 #include "nRF24L01P.h"
pannaanna 2:6541a391bdbd 4
pannaanna 2:6541a391bdbd 5 // ***** SETTINGS START *****
pannaanna 2:6541a391bdbd 6
pannaanna 2:6541a391bdbd 7 const unsigned long long RX_ADDRESS = MASTER_ADDRESS;
pannaanna 2:6541a391bdbd 8 const unsigned long long TX_ADDRESS = PIR1_ADDRESS;
pannaanna 2:6541a391bdbd 9 const double SEND_INTERVAL = 5.0;
pannaanna 2:6541a391bdbd 10 const uint8_t SENSOR_ID = PIR1;
pannaanna 2:6541a391bdbd 11
pannaanna 2:6541a391bdbd 12 // ***** SETTINGS END *****
pannaanna 2:6541a391bdbd 13
pannaanna 2:6541a391bdbd 14 Serial pc(USBTX, USBRX); // tx, rx
pannaanna 2:6541a391bdbd 15 nRF24L01P radio(PB_15, PB_14, PB_13, PB_12, PB_1, PB_2); // mosi, miso, sck, csn, ce, irq
pannaanna 2:6541a391bdbd 16 DigitalIn sensor(PA_10);
pannaanna 2:6541a391bdbd 17
pannaanna 2:6541a391bdbd 18 Ticker sender;
pannaanna 2:6541a391bdbd 19 bool send_acc_results = false;
pannaanna 2:6541a391bdbd 20
pannaanna 2:6541a391bdbd 21 void set_send() {
pannaanna 2:6541a391bdbd 22 send_acc_results = true;
pannaanna 2:6541a391bdbd 23 }
pannaanna 2:6541a391bdbd 24
pannaanna 2:6541a391bdbd 25 void init() {
pannaanna 2:6541a391bdbd 26 sensor.mode(PullDown);
pannaanna 2:6541a391bdbd 27 pc.baud(115200);
pannaanna 2:6541a391bdbd 28 sender.attach(&set_send, SEND_INTERVAL);
pannaanna 2:6541a391bdbd 29 radio_init(&radio, RX_ADDRESS, TX_ADDRESS);
pannaanna 2:6541a391bdbd 30 }
pannaanna 2:6541a391bdbd 31
pannaanna 2:6541a391bdbd 32 int main() {
pannaanna 2:6541a391bdbd 33 init();
pannaanna 2:6541a391bdbd 34
pannaanna 2:6541a391bdbd 35 // Display the (default) setup of the nRF24L01+ chip
pannaanna 2:6541a391bdbd 36 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", radio.getRfFrequency() );
pannaanna 2:6541a391bdbd 37 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", radio.getRfOutputPower() );
pannaanna 2:6541a391bdbd 38 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", radio.getAirDataRate() );
pannaanna 2:6541a391bdbd 39 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", radio.getTxAddress() );
pannaanna 2:6541a391bdbd 40 pc.printf( "nRF24L01+ RX0 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P0) );
pannaanna 2:6541a391bdbd 41 pc.printf( "nRF24L01+ RX1 Address : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P1) );
pannaanna 2:6541a391bdbd 42
pannaanna 2:6541a391bdbd 43 uint8_t count_changes;
pannaanna 2:6541a391bdbd 44 int last_state;
pannaanna 2:6541a391bdbd 45
pannaanna 2:6541a391bdbd 46 while (1) {
pannaanna 2:6541a391bdbd 47 int state;
pannaanna 2:6541a391bdbd 48 if (sensor.read()) {
pannaanna 2:6541a391bdbd 49 state = 1;
pannaanna 2:6541a391bdbd 50 } else {
pannaanna 2:6541a391bdbd 51 state = 0;
pannaanna 2:6541a391bdbd 52 }
pannaanna 2:6541a391bdbd 53
pannaanna 2:6541a391bdbd 54 if (last_state != state) {
pannaanna 2:6541a391bdbd 55 last_state = state;
pannaanna 2:6541a391bdbd 56 count_changes++;
pannaanna 2:6541a391bdbd 57 }
pannaanna 2:6541a391bdbd 58
pannaanna 2:6541a391bdbd 59 if (send_acc_results) {
pannaanna 2:6541a391bdbd 60 Data data(SENSOR_ID, count_changes);
pannaanna 2:6541a391bdbd 61 std::string serialized_data = data.serialize();
pannaanna 2:6541a391bdbd 62 pc.printf("string data '%s', len %d\r\n", serialized_data.c_str(), serialized_data.size());
pannaanna 2:6541a391bdbd 63
pannaanna 2:6541a391bdbd 64 char message[TRANSFER_SIZE];
pannaanna 2:6541a391bdbd 65 memcpy(message, serialized_data.c_str(), serialized_data.length());
pannaanna 2:6541a391bdbd 66 int tx_bytes = radio.write(NRF24L01P_PIPE_P0, message, TRANSFER_SIZE);
pannaanna 2:6541a391bdbd 67
pannaanna 2:6541a391bdbd 68 if (tx_bytes > 0) {
pannaanna 2:6541a391bdbd 69 pc.printf("Counter: %d\r\n", count_changes);
pannaanna 2:6541a391bdbd 70 pc.printf("RETR: %d\r\n", radio.getRetrCount());
pannaanna 2:6541a391bdbd 71 count_changes = 0;
pannaanna 2:6541a391bdbd 72 send_acc_results = false;
pannaanna 2:6541a391bdbd 73 }
pannaanna 2:6541a391bdbd 74 if(tx_bytes < 0)
pannaanna 2:6541a391bdbd 75 pc.printf("TX ERROR\r\n");
pannaanna 2:6541a391bdbd 76 }
pannaanna 2:6541a391bdbd 77
pannaanna 2:6541a391bdbd 78 }
pannaanna 2:6541a391bdbd 79 }
pannaanna 2:6541a391bdbd 80