![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Mangue Baja Box
Diff: main.cpp
- Revision:
- 0:0dee8840a1c0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Jul 29 20:38:00 2019 +0000 @@ -0,0 +1,92 @@ +// Listener - print sender messages +// From Tnode/Tsender @ anarduino.com +// 2014 - anarduino.com +// +#include "mbed.h" +#include "RFM69.h" +#include "definitions.h" + +#define NETWORK_ID 101 +#define BOXRADIO_ID 69 +#define NODE_ID 55 +#define FREQUENCY_915MHZ 91 + +// Uncomment only one of the following three to match radio frequency +//#define FREQUENCY RF69_433MHZ +//#define FREQUENCY RF69_868MHZ +#define FREQUENCY RF69_915MHZ + +//#define IS_RFM69HW //NOTE: uncomment this ONLY for RFM69HW or RFM69HCW +#define ENCRYPT_KEY "EncryptKey123456" // use same 16byte encryption key for all devices on net +#define ACK_TIME 50 // max msec for ACK wait +#define SERIAL_BAUD 115200 +#define VERSION "1.0" + +#define MSGBUFSIZE 64 // message buffersize, but for this demo we only use: + // 1-byte NODEID + 4-bytes for time + 1-byte for temp in C + 2-bytes for vcc(mV) + +Serial pc(PA_9, PA_10); +DigitalOut myled(PC_13); +DigitalOut but(PA_1, PullUp); +//RFM69::RFM69(PinName PinName mosi, PinName miso, PinName sclk,slaveSelectPin, PinName int) +RFM69 radio(PB_15, PB_14, PB_13, PB_12, PA_8); + +bool promiscuousMode = false; // set 'true' to sniff all packets on the same network +bool requestACK=false; +//packet_t data; +uint8_t data[sizeof(packet_t)]; +Timer tmr; + +main() { + uint8_t theNodeID; + tmr.start(); + + pc.baud(SERIAL_BAUD); +// pc.printf("\r\nListener %s startup at %d Mhz...\r\n",VERSION,(FREQUENCY==RF69_433MHZ ? 433 : FREQUENCY==RF69_868MHZ ? 868 : 915)); + wait(1); + radio.initialize(RF69_915MHZ, BOXRADIO_ID, NETWORK_ID); + radio.encrypt(0); + radio.promiscuous(promiscuousMode); +// pc.printf("Frequency at %d\r\n", radio.getFrequency()); +// pc.printf("Temp at %ld\r\n", sizeof(packet_t));// radio.readTemperature(0)); + radio.setPowerLevel(20); +#ifdef IS_RFM69HW + radio.setHighPower(); //uncomment #define ONLY if radio is of type: RFM69HW or RFM69HCW +#endif + bool box = true; + +while(1) { + if (radio.receiveDone()) { +// pc.printf("Received from TNODE: %d \r\n",radio.SENDERID); + memcpy(&data, (uint8_t *)radio.DATA, sizeof(packet_t)); + theNodeID = radio.SENDERID; + pc.putc(theNodeID); + for(int i = 0; i < sizeof(data); i++) + pc.putc(data[i]); + + //pc.printf("temperature = %d\r\n",data.temp.motor); +// pc.printf("speed=%d\r\n", data.data_10hz[0].speed); +// pc.printf("speed=%d\r\n", data.data_10hz[1].speed); +// pc.printf("rpm=%d\r\n", data.data_10hz[0].rpm); +// pc.printf("rpm=%d\r\n", data.data_10hz[1].rpm); +// pc.printf("flags=%d\r\n", data.data_10hz[0].flags); +// pc.printf("flags=%d\r\n", data.data_10hz[1].flags); +// pc.printf("time=%d\r\n", data.data_saved); +// pc.printf("imu acc x =%d\r\n", data.imu[0].acc_x); +// pc.printf("imu acc y =%d\r\n", data.imu[0].acc_y); +// pc.printf("imu acc z =%d\r\n", data.imu[0].acc_z); +// pc.printf("imu dps x =%d\r\n", data.imu[0].dps_x); +// pc.printf("imu dps y =%d\r\n", data.imu[0].dps_y); +// pc.printf("imu dps z =%d\r\n", data.imu[0].dps_z); + if (radio.ACKRequested()){ + theNodeID = radio.SENDERID; + radio.sendACK(); + } + + myled = !myled; +// pc.printf(" - ACK sent. Receive RSSI: %d\r\n",radio.RSSI); +// } else pc.printf("Receive RSSI: %d\r\n",radio.RSSI); + } +// myled = !myled; + } +}