Rf24 network met stucts
12 berichten
• Pagina 1 van 2 • 1, 2
- babbelkwebbel
- Berichten: 68
- Geregistreerd: 21 Apr 2013, 22:48
- Woonplaats: Hoorn
Rf24 network met stucts
Beste allemaal,
Ik ben bezig met de RF24 wifi modules en probeer daar mee stucts te verzenden en te ontvangen, het verzenden gaat goed (denk ik), echter het ontvangen niet.
Met de transmitter sketch wordt de struct variable gevuld, en als controle de struct uit geprint naar de serial monitor, en dat gaat goed.
Echter met de reciever sketch komen de gevens niet in de struct, alles wat ik uit print van de struct naar de serial monitor heeft de waarde 0.
Wat echter wel werkt is de functie network.available, de Serial.print geeft keurig de tekst "data available".
Ongetwijfeld zie ik iets over het hoofd maar ik zie het niet, heb diverse voorbeelden op internet gevonden, maar het kwartje valt niet.
Wie ziet wat ik over het hoofd zie???..
RF24 versie 1.4.7
RF24network versie 1.0.17
hier onder beide sketches
Ik ben bezig met de RF24 wifi modules en probeer daar mee stucts te verzenden en te ontvangen, het verzenden gaat goed (denk ik), echter het ontvangen niet.
Met de transmitter sketch wordt de struct variable gevuld, en als controle de struct uit geprint naar de serial monitor, en dat gaat goed.
Echter met de reciever sketch komen de gevens niet in de struct, alles wat ik uit print van de struct naar de serial monitor heeft de waarde 0.
Wat echter wel werkt is de functie network.available, de Serial.print geeft keurig de tekst "data available".
Ongetwijfeld zie ik iets over het hoofd maar ik zie het niet, heb diverse voorbeelden op internet gevonden, maar het kwartje valt niet.
Wie ziet wat ik over het hoofd zie???..
RF24 versie 1.4.7
RF24network versie 1.0.17
hier onder beide sketches
- Code: Alles selecteren
*******Transmitter*******
#include <stdlib.h> // library for ITOA (converts a INT to Ascii)
#include <SPI.h> // library for SPI bus
#include <Wire.h> // library for I2C bus
#include <RF24.h> // library for RF24 (driver WiFi module)
#include <RF24Network.h> // library RF24 network
RF24 radio(9, 10); // make object radio for NRF24L01 Rect_Wifi module
RF24Network network(radio); // make object network include radio
const uint16_t server = 00; // node address server
const uint16_t fan_server_controller = 01; // node address fan controller server
// bool update_time_date = true;
bool update_parameters = false;
uint8_t sensor_tempratures[2] = {23, 28}; // array with data from the temprature sensors
uint8_t alarm_temprature = 18;
uint8_t fan_pwm = 36;
typedef struct
{
uint8_t from_node;
uint8_t to_node;
uint8_t values[15];
bool values_update;
}
CTS;
void setup()
{
Serial.begin(115200); // start driver serial interface
Wire.begin(); // start driver I2C interface
radio.begin(); // start driver WiFi module
network.begin(125, fan_server_controller); // start driver network > channel = 125, nodename = fan_server_controller
}
void loop()
{
network.update();
process_struct_client_to_server();
delay(1000);
}
void process_struct_client_to_server()
{
CTS process = {(0, 0), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), ("")};
process.from_node = fan_server_controller;
Serial.print("from node = ");
Serial.print(process.from_node);
Serial.print(" ");
process.to_node = server;
Serial.print("to node = ");
Serial.print(process.to_node);
Serial.println("");
Serial.println("");
process.values[0] = sensor_tempratures[0];
Serial.print("sensor 0 value = ");
Serial.print(process.values[0]);
Serial.print(" ");
process.values[1] = sensor_tempratures[1];
Serial.print("sensor 1 value = ");
Serial.print(process.values[1]);
Serial.print(" ");
process.values[2] = fan_pwm;
Serial.print("fan pwm = ");
Serial.print(process.values[2]);
Serial.print(" ");
process.values[3] = alarm_temprature;
Serial.print("alarm temprature = ");
Serial.print(process.values[3]);
Serial.print(" ");
process.values_update = update_parameters;
Serial.print("values update = ");
Serial.print(process.values_update);
Serial.println("");
Serial.println("");
RF24NetworkHeader header0(server);
bool ok0 = network.write(header0, &CTS, sizeof(CTS));
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
******Reciever******
#include <SPI.h> // library for SPI bus
#include <Wire.h> // library for I2C bus
#include <RF24.h> // library for RF24 (driver WiFi module)
#include <RF24Network.h> // library RF24 network
RF24 radio(9, 10); // make object radio for NRF24L01 Rect_Wifi module
RF24Network network(radio); // make object network include radio
uint16_t server = 00; // node address server
uint16_t fan_server_controller = 01; // node address fan server controller
bool update_parameters;
uint8_t sensor_tempratures[2] = {}; // array with data from the temprature sensors
uint8_t alarm_temprature;
uint8_t fan_pwm;
typedef struct
{
uint8_t from_node;
uint8_t to_node;
uint8_t values[15];
bool values_update;
}
client_to_server;
client_to_server CTS;
void setup()
{
Serial.begin(115200); // start driver serial interface
Wire.begin(); // start driver I2C interface
radio.begin(); // start driver WiFi module
network.begin(125, server); // start driver network > channel = 125, nodename = server
}
void loop()
{
network.update();
process_struct_client_to_server();
}
void process_struct_client_to_server()
{
client_to_server process = {(0, 0), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), ("")};
if (network.available())
{
Serial.println("data is available");
RF24NetworkHeader header0;
network.read(header0, &CTS, sizeof(CTS));
fan_server_controller = process.from_node;
Serial.print("from node = ");
Serial.print(fan_server_controller);
Serial.print(" ");
server = process.to_node;
Serial.print("to node = ");
Serial.print(server);
Serial.println("");
Serial.println("");
sensor_tempratures[0] = process.values[0];
Serial.print("sensor 0 value = ");
Serial.print(sensor_tempratures[0]);
Serial.print(" ");
sensor_tempratures[1] = process.values[1];
Serial.print("sensor 1 value = ");
Serial.print(sensor_tempratures[1]);
Serial.print(" ");
fan_pwm = process.values[2];
Serial.print("fan pwm = ");
Serial.print(fan_pwm);
Serial.print(" ");
alarm_temprature = process.values[3];
Serial.print("alarm temprature = ");
Serial.print(alarm_temprature);
Serial.print(" ");
update_parameters = process.values_update;
Serial.print("values update = ");
Serial.print(update_parameters);
Serial.println("");
Serial.println("");
}
}
Advertisement
- sterretjeToo
- Berichten: 62
- Geregistreerd: 05 Feb 2023, 13:30
Re: Rf24 network met stucts
Werken simpele voorbeelden wel? Bijvoorbeeld iets als "Hallo wereld" sturen naar de andere kant?
- babbelkwebbel
- Berichten: 68
- Geregistreerd: 21 Apr 2013, 22:48
- Woonplaats: Hoorn
Re: Rf24 network met stucts
Ja geen probleem, hardware technische werkt alles, heb het met een enkele array gedaan en werkt ook, alleen met een struct krijg ik het niet aan de gang, denk dat ik software matig het niet goed doe, maar wat?...
Gr
Babbel,
Gr
Babbel,
Re: Rf24 network met stucts
denk je aan afsluiting met /r en /n en ik zie dat je definieert met een zootje 0 en worden dat inderdaad allemaal INT of zit er een float tussen etc. en wellicht is het bericht te lang dus teveel bytes
paul deelen
shooter@home.nl
shooter@home.nl
- babbelkwebbel
- Berichten: 68
- Geregistreerd: 21 Apr 2013, 22:48
- Woonplaats: Hoorn
Re: Rf24 network met stucts
Kom nog niet in de buurt van de 32 Byte limit van de Wire beperking, met sizeoff getest, maar nog steeds geen idee waar het mis gaat......
- babbelkwebbel
- Berichten: 68
- Geregistreerd: 21 Apr 2013, 22:48
- Woonplaats: Hoorn
Re: Rf24 network met stucts
shooter schreef:denk je aan afsluiting met /r en /n en ik zie dat je definieert met een zootje 0 en worden dat inderdaad allemaal INT of zit er een float tussen etc. en wellicht is het bericht te lang dus teveel bytes
Oeps vergeten, zie de stuct opbouw.
typedef struct
{
uint8_t from_node;
uint8_t to_node;
uint8_t values[15];
bool values_update;
}
CTS;
- sterretjeToo
- Berichten: 62
- Geregistreerd: 05 Feb 2023, 13:30
Re: Rf24 network met stucts
Je transmitter programma compileert niet in IDE 2.x (en met 99.99% waarschijnlijkheid ook niet in IDE 1.x). Hieronder de verbeteringen.
cpp code
cpp code
Ik heb maar niet gekeken naar de receiver.
cpp code
CTS process = {0, 0, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, false};
cpp code
bool ok0 = network.write(header0, &process, sizeof(CTS));
Ik heb maar niet gekeken naar de receiver.
- babbelkwebbel
- Berichten: 68
- Geregistreerd: 21 Apr 2013, 22:48
- Woonplaats: Hoorn
Re: Rf24 network met stucts
Geprobeerd echter helaas nog steeds niet werken, ga van het weekend er maar weer eens voor zitten.
In ieder geval bedankt voor het meedenken, wordt erg gewaardeerd.
Groet
Babbel.
In ieder geval bedankt voor het meedenken, wordt erg gewaardeerd.
Groet
Babbel.
- sterretjeToo
- Berichten: 62
- Geregistreerd: 05 Feb 2023, 13:30
Re: Rf24 network met stucts
babbelkwebbel schreef:Geprobeerd echter helaas nog steeds niet werken
Wat houdt "niet werken" in? Compileert het niet? Of doet het niet wat je verwacht?
- babbelkwebbel
- Berichten: 68
- Geregistreerd: 21 Apr 2013, 22:48
- Woonplaats: Hoorn
Re: Rf24 network met stucts
Sorry voor de late reactie maar ben net thuis na 12 uur werken
De sketch Compileert wel, maar doet nog steeds niet wat het zou moeten doen.
Van het weekend ga ik er mee verder, ik houd je op de hoogte.
Groet
Babbel
De sketch Compileert wel, maar doet nog steeds niet wat het zou moeten doen.
Van het weekend ga ik er mee verder, ik houd je op de hoogte.
Groet
Babbel
12 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: ocopojipi, ubuwaodace en 11 gasten