I am trying to send measurements over UDP, but the function Udp.endPacket continuously fails.
I use an Arduino Uno WiFi rev 2, WiFiNINA library version 1.4.0 and WiFiNINA firmware version 1.2.1 which seems to be the latest available.
WiFi connection setup works, obtaining a correct IP address in the 192.168.3.0/24 network.
This is a snippet of my code:
const char* udpDestIP = "192.168.3.126";
const int udpDestPort = 1844;
WiFiUDP Udp;
void loop() {
// establish variables for distance result:
long cm;
// execute measurement
cm = measureDistance();
// check for false measurements and repeat if necessary
if(minDist < cm && cm < maxDist) {
Serial.print(cm);
Serial.print(" cm");
Serial.println();
// Check WiFi connection and reconnect if necessary
if (WiFi.status() != WL_CONNECTED) {
connectToWifi();
}
// Send over UDP
//if(!Udp.beginPacket("192.168.3.255", udpDestPort)) {
if(!Udp.beginPacket(udpDestIP, udpDestPort)) {
Serial.println("beginPacket fail");
}
String msg = "water_distance:";
msg += cm;
byte size = Udp.write(msg.c_str(), msg.length());
if(DEBUG){
Serial.print("Sending this message over UDP: ");
Serial.println(msg);
Serial.print("udp write: ");
Serial.println(size);
}
if(!Udp.endPacket()) Serial.println("endPacket fail");
delay(delayTime);
}
}
Terminal output is as follows:
151 cm
Sending this message over UDP: water_distance:151
udp write: 18
endPacket fail
151 cm
Sending this message over UDP: water_distance:151
udp write: 18
endPacket fail
33 cm
Sending this message over UDP: water_distance:33
udp write: 17
endPacket fail
34 cm
Sending this message over UDP: water_distance:34
udp write: 17
endPacket fail
153 cm
Sending this message over UDP: water_distance:153
udp write: 18
endPacket fail
Which makes me conclude the beginPacket, and udp.write functions are executed correctly, but I see no reason why the endPacket function keeps failing. Does anyone have an idea? Thanks a lot.
Udp.begin()
to setup(). if it works I write an answer with explanationUDP.begin(random(1024, 65536));