1 files modified
3 files added
New file |
| | |
| | | /* There was a help from these two pages: |
| | | https://forum.arduino.cc/t/connect-nrf24l01-to-esp32/678710/4 |
| | | https://electropeak.com/learn/wireless-communication-w-arduino-and-nrf24l01/ |
| | | */ |
| | | |
| | | #include <RF24_config.h> |
| | | #include <nRF24L01.h> |
| | | #include <RF24.h> |
| | | #include <printf.h> |
| | | |
| | | #include<WiFi.h> |
| | | |
| | | #define IN_TRIGGER 17 |
| | | #define OUT_TRIGGER 16 |
| | | |
| | | |
| | | //RF24 radio(2, 4); // CE, CSN |
| | | RF24 radio(22, 21); // CE, CSN |
| | | |
| | | const byte address[6] = {'R','E','C','V', '1'}; |
| | | char dataToSend[4] = "TRG"; |
| | | |
| | | void IRAM_ATTR isr() { |
| | | // detachInterrupt(digitalPinToInterrupt(IN_TRIGGER)); |
| | | digitalWrite(OUT_TRIGGER, LOW); |
| | | long time=micros(); |
| | | while(micros()-time<4000); |
| | | digitalWrite(OUT_TRIGGER,HIGH); |
| | | // radio.write( &dataToSend, sizeof(dataToSend) ); |
| | | |
| | | // attachInterrupt(digitalPinToInterrupt(IN_TRIGGER), isr, RISING); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | void setup() { |
| | | // put your setup code here, to run once: |
| | | |
| | | WiFi.mode(WIFI_OFF); |
| | | btStop(); |
| | | |
| | | |
| | | radio.begin(); |
| | | radio.openWritingPipe(address); |
| | | radio.setPALevel(RF24_PA_MAX); |
| | | radio.setDataRate( RF24_1MBPS ); |
| | | radio.setRetries(1,0); // delay, count |
| | | //pinMode(IN_TRIGGER, INPUT_PULLUP); |
| | | pinMode(OUT_TRIGGER, OUTPUT); |
| | | digitalWrite(OUT_TRIGGER,HIGH); |
| | | attachInterrupt(digitalPinToInterrupt(IN_TRIGGER), isr, FALLING); |
| | | Serial.begin(115200); |
| | | |
| | | } |
| | | |
| | | void loop() { |
| | | // put your main code here, to run repeatedly: |
| | | //Serial.print(micros()); |
| | | //Serial.println(": ---> TRG"); |
| | | //unsigned long start_timer = micros(); |
| | | |
| | | radio.write( &dataToSend, 4 ); |
| | | long time=micros(); |
| | | while(micros()-time<5000); |
| | | //Serial.print(micros()); |
| | | //Serial.println(": TRG--->"); |
| | | /* |
| | | unsigned long end_timer = micros(); |
| | | Serial.print(F(" Time to transmit: ")); |
| | | Serial.print(end_timer - start_timer); // print the timer result |
| | | Serial.println(F(" us")); |
| | | */ |
| | | } |
New file |
| | |
| | | #include <RF24_config.h> |
| | | #include <nRF24L01.h> |
| | | #include <RF24.h> |
| | | #include <printf.h> |
| | | |
| | | RF24 radio(22, 21); // CE, CSN |
| | | //RF24 radio(15,4); // CE, CSN |
| | | |
| | | const byte address[6] = {'L','O','G','G', 'R'}; |
| | | |
| | | char val[4]; |
| | | |
| | | struct PayloadStruct |
| | | { |
| | | uint8_t nodeID; |
| | | uint16_t payloadID; |
| | | float ax; |
| | | float ay; |
| | | float az; |
| | | float wx; |
| | | float wy; |
| | | float wz; |
| | | }; |
| | | |
| | | PayloadStruct payload; |
| | | void setup() { |
| | | // put your setup code here, to run once: |
| | | |
| | | Serial.begin(115200); |
| | | radio.begin(); |
| | | radio.openReadingPipe(0, address); |
| | | radio.setPALevel(RF24_PA_MIN); |
| | | radio.setDataRate( RF24_1MBPS ); |
| | | radio.startListening(); |
| | | |
| | | } |
| | | |
| | | void loop() { |
| | | // put your main code here, to run repeatedly: |
| | | |
| | | delay(5); |
| | | //radio.startListening(); |
| | | if ( radio.available()) { |
| | | while (radio.available()) { |
| | | Serial.print(millis()); |
| | | radio.read(&payload, sizeof(payload)); |
| | | /* Serial.print("Received payload ID = "); |
| | | Serial.print((int)payload.payloadID); |
| | | Serial.print(" ax="); |
| | | Serial.println(payload.ax); |
| | | */ |
| | | |
| | | Serial.print(","); |
| | | Serial.print(payload.nodeID); |
| | | Serial.print(","); |
| | | Serial.print(payload.payloadID); |
| | | Serial.print(","); |
| | | Serial.print(payload.ax); |
| | | Serial.print(","); |
| | | Serial.print(payload.ay); |
| | | Serial.print(","); |
| | | Serial.print(payload.az); |
| | | Serial.print(","); |
| | | Serial.print(payload.wx); |
| | | Serial.print(","); |
| | | Serial.print(payload.wy); |
| | | Serial.print(","); |
| | | Serial.println(payload.wz); |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | #include <RF24_config.h> |
| | | #include <nRF24L01.h> |
| | | #include <RF24.h> |
| | | #include <printf.h> |
| | | |
| | | #include <Adafruit_MPU6050.h> |
| | | #include <Adafruit_Sensor.h> |
| | | #include <Wire.h> |
| | | |
| | | Adafruit_MPU6050 mpu; |
| | | |
| | | |
| | | //RF24 radio(22, 21); // CE, CSN |
| | | RF24 radio(15,4); // CE, CSN |
| | | |
| | | const byte RXaddress[6] = {'R','E','C','V', '1'}; |
| | | const byte TXaddress[6] = {'L','O','G','G', 'R'}; |
| | | |
| | | char val[4]; |
| | | |
| | | struct PayloadStruct |
| | | { |
| | | uint8_t nodeID; |
| | | uint16_t payloadID; |
| | | float ax; |
| | | float ay; |
| | | float az; |
| | | float wx; |
| | | float wy; |
| | | float wz; |
| | | }; |
| | | |
| | | PayloadStruct payload; |
| | | void setup() { |
| | | // put your setup code here, to run once: |
| | | |
| | | Serial.begin(115200); |
| | | radio.begin(); |
| | | radio.openReadingPipe(0, RXaddress); |
| | | radio.openWritingPipe(TXaddress); |
| | | radio.setPALevel(RF24_PA_MIN); |
| | | radio.setDataRate( RF24_1MBPS ); |
| | | // radio.setPayloadSize(sizeof(payload)); |
| | | radio.setRetries(1,0); // delay, count |
| | | radio.startListening(); |
| | | payload.payloadID=0; |
| | | payload.nodeID=1; |
| | | |
| | | // Try to initialize MPU accel! |
| | | if (!mpu.begin()) { |
| | | Serial.println("Failed to find MPU6050 chip"); |
| | | while (1) { |
| | | delay(10); |
| | | } |
| | | } |
| | | Serial.println("MPU6050 Found!"); |
| | | |
| | | mpu.setAccelerometerRange(MPU6050_RANGE_4_G); |
| | | mpu.setGyroRange(MPU6050_RANGE_500_DEG); |
| | | mpu.setFilterBandwidth(MPU6050_BAND_260_HZ); |
| | | } |
| | | |
| | | void loop() { |
| | | // put your main code here, to run repeatedly: |
| | | sensors_event_t a, g, temp; |
| | | //delay(5); |
| | | mpu.getEvent(&a, &g, &temp); |
| | | //radio.startListening(); |
| | | if ( radio.available()) { |
| | | while (radio.available()) { |
| | | |
| | | radio.read(&val, sizeof(val)); |
| | | // Serial.print("Received = "); |
| | | // Serial.println(val); |
| | | radio.stopListening(); // put radio in TX mode |
| | | |
| | | // unsigned long start_timer = micros(); // start the timer |
| | | |
| | | |
| | | payload.ax=a.acceleration.x; |
| | | payload.ay=a.acceleration.y; |
| | | payload.az=a.acceleration.z; |
| | | payload.wx=g.gyro.x; |
| | | payload.wy=g.gyro.y; |
| | | payload.wz=g.gyro.z; |
| | | bool report = radio.write(&payload, sizeof(payload)); // transmit & save the report |
| | | // unsigned long end_timer = micros(); // end the timer |
| | | /* if (report) { |
| | | // payload was delivered |
| | | |
| | | Serial.print(F("Transmission of payloadID ")); |
| | | Serial.print(payload.payloadID); // print payloadID |
| | | Serial.print(F(" as node ")); |
| | | Serial.print(payload.nodeID); // print nodeID |
| | | Serial.print(F(" successful!")); |
| | | Serial.print(F(" Time to transmit: ")); |
| | | Serial.print(end_timer - start_timer); // print the timer result |
| | | Serial.println(F(" us")); |
| | | } else { |
| | | Serial.println(F("Transmission failed or timed out")); // payload was not delivered |
| | | } */ |
| | | payload.payloadID++; // increment payload number |
| | | radio.startListening(); |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | #include <RF24.h> |
| | | #include <printf.h> |
| | | |
| | | RF24 radio(22, 21); // CE, CSN |
| | | const byte address[6] = {'R','E','C','V', '1'}; |
| | | //RF24 radio(22, 21); // CE, CSN |
| | | RF24 radio(15,4); // CE, CSN |
| | | |
| | | const byte RXaddress[6] = {'R','E','C','V', '1'}; |
| | | const byte TXaddress[6] = {'L','O','G','G', 'R'}; |
| | | |
| | | char val[4]; |
| | | |
| | | struct PayloadStruct |
| | | { |
| | | uint8_t nodeID; |
| | | unsigned long payloadID; |
| | | float ax; |
| | | float ay; |
| | | float az; |
| | | float wx; |
| | | float wy; |
| | | float wz; |
| | | }; |
| | | |
| | | PayloadStruct payload; |
| | | void setup() { |
| | | // put your setup code here, to run once: |
| | | |
| | | Serial.begin(115200); |
| | | radio.begin(); |
| | | radio.openReadingPipe(0, address); |
| | | radio.openReadingPipe(0, RXaddress); |
| | | radio.openWritingPipe(TXaddress); |
| | | radio.setPALevel(RF24_PA_MIN); |
| | | radio.setDataRate( RF24_250KBPS ); |
| | | radio.setPayloadSize(sizeof(payload)); |
| | | radio.startListening(); |
| | | payload.payloadID=0; |
| | | payload.nodeID=1; |
| | | |
| | | } |
| | | |
| | |
| | | // put your main code here, to run repeatedly: |
| | | |
| | | delay(5); |
| | | radio.startListening(); |
| | | //radio.startListening(); |
| | | if ( radio.available()) { |
| | | while (radio.available()) { |
| | | |
| | | radio.read(&val, sizeof(val)); |
| | | Serial.print("Received = "); |
| | | Serial.println(val); |
| | | radio.stopListening(); // put radio in TX mode |
| | | |
| | | unsigned long start_timer = micros(); // start the timer |
| | | bool report = radio.write(&payload, sizeof(payload)); // transmit & save the report |
| | | unsigned long end_timer = micros(); // end the timer |
| | | if (report) { |
| | | // payload was delivered |
| | | |
| | | Serial.print(F("Transmission of payloadID ")); |
| | | Serial.print(payload.payloadID); // print payloadID |
| | | Serial.print(F(" as node ")); |
| | | Serial.print(payload.nodeID); // print nodeID |
| | | Serial.print(F(" successful!")); |
| | | Serial.print(F(" Time to transmit: ")); |
| | | Serial.print(end_timer - start_timer); // print the timer result |
| | | Serial.println(F(" us")); |
| | | } else { |
| | | Serial.println(F("Transmission failed or timed out")); // payload was not delivered |
| | | } |
| | | payload.payloadID++; // increment payload number |
| | | radio.startListening(); |
| | | } |
| | | } |
| | | |