Arduino-to-arduino communication

Hello
I've been trying to get two duinotech-brand arduino Unos with WiFi (https://www.jaycar.com.au/uno-with-wi-fi/p/XC4411) to communicate with eachother on a basic level, by having one send a single character to the other
Long story short, it doesn't send the character

Reciever:

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
 
// Set AP credentials
#define AP_SSID "TheOtherESP"
#define AP_PASS "flashmeifyoucan"
 
// UDP
WiFiUDP UDP;
IPAddress local_IP(192,168,4,1);
IPAddress gateway(192,168,4,1);
IPAddress subnet(255,255,255,0);
String buffer = String();
//char bufferchar[UDP_TX_PACKET_MAX_SIZE];
//String storage;
#define UDP_PORT 4210
 
void setup() {

  WiFi.config(192, 168, 4, 1);
  // Setup serial port
  Serial.begin(115200);
  Serial.println();
 
  // Begin Access Point
  Serial.println("Starting access point...");
  WiFi.softAPConfig(local_IP, gateway, subnet);
  WiFi.softAP(AP_SSID, AP_PASS);
  Serial.println(WiFi.localIP());
 
  // Begin listening to UDP port
  UDP.begin(UDP_PORT);
  Serial.print("Listening on UDP port ");
  Serial.println(UDP_PORT);
 
}

void loop() {
  // Receive packet
  /*
  UDP.parsePacket();
  UDP.read(bufferchar, UDP_TX_PACKET_MAX_SIZE);
  buffer += bufferchar;
  int len = le_buffer.length();
  if (len == 13){
    storage = buffer;
    buffer = '?';
    Serial.println(storage);
  }
  */
  UDP.parsePacket();
  UDP.read(bufferchar, UDP_TX_PACKET_MAX_SIZE);
  if(bufferchar=="k"){
    Serial.println(bufferchar);
  }
}

Sender:

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
  
// Set WiFi credentials
#define WIFI_SSID "TheOtherESP"
#define WIFI_PASS "flashmeifyoucan"
 
// UDP
WiFiUDP UDP;
IPAddress remote_IP(192, 0, 0, 0);
#define UDP_PORT 4210
 
void setup() {
   
  // Setup serial port
  Serial.begin(115200);
  
  // Begin WiFi
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  WiFi.mode(WIFI_STA);
  
  // Connecting to WiFi...
  Serial.print("Connecting to ");
  Serial.print(WIFI_SSID);
  // Loop continuously while WiFi is not connected
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(100);
    Serial.print(".");
  }

  //hey we connect
  Serial.println();
  Serial.print("Connected! IP address: ");
  Serial.println(WiFi.localIP());
  
  // Begin UDP port
  UDP.begin(UDP_PORT);
  Serial.print("Opening UDP port ");
  Serial.print(UDP_PORT);
  
}
  
void loop() {
 
  // we send this
  String transmit = Serial.readString();
 
  // Send Packet
  /*
  for (int i=12; i>=0; i--){
    char beingsent = transmit[i];
    Serial.println(beingsent);
    UDP.beginPacket(remote_IP, UDP_PORT);
    UDP.print(beingsent);
    UDP.endPacket();
  }
  */
  UDP.beginPacket(remote_IP, UDP_PORT);
  UDP.print('k');
  UDP.endPacket();
}

Thanks in advance

You should check the value returned by this call. If it’s 0 (which is likely most of the time) there is nothing to read so you should not do the UDP.read(bufferchar, UDP_TX_PACKET_MAX_SIZE);

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.