Arduino Uno with WiFi – Arduino to Arduino Communication

This project allows me to send commands directly from one Arduino Wifi to another. The SENSOR Arduino has an analog temp sensor and sends commands to the RECEIVER. The RECEIVER Parses the commands ?red or ?green and turns on the appropriate LED.

The Receiver Arduino has a Static IP, and the Sensor Arduino sends the commands as GET’s.

Sensor Arduino Code

#include <WiFiNINA.h>

#define sensorPin A5

char ssid[] = "Basement";
char pass[] = "0123456789";

int status = WL_IDLE_STATUS;

char server[] = "10.0.1.16";

String postData;

WiFiClient client;

void setup() {

  Serial.begin(9600);

  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to Network named: ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, pass);
    delay(10000);
  }

  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
  IPAddress ip = WiFi.localIP();
  IPAddress gateway = WiFi.gatewayIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
}

void loop() {

  int reading = analogRead(sensorPin);
  float voltage = reading * 5.0;
  voltage /= 1024.0;
  float temperatureC = (voltage - 0.5) * 100 ;
  float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
  delay (1000);

  Serial.print("Temp F");
  Serial.println(temperatureF);

  if (temperatureF > 75) {
    if (client.connect(server, 80)) {
      Serial.println("connected");
      client.println("GET /?red HTTP/1.0");
      client.println();
    }
  } else if (temperatureF < 75) {
    if (client.connect(server, 80)) {
      Serial.println("connected");
      client.println("GET /?green HTTP/1.0");
      client.println();
    }
  } else {
    Serial.println("problem");
  }


  if (client.connected()) {
    client.stop();
  }
  Serial.println(postData);

  delay(1000);
}

Arduino Receiver Code

#include <WiFiNINA.h>

#define greenLED 8
#define redLED 9

char ssid[] = "Basement";
char pass[] = "0123456789";
IPAddress ip(10, 0, 1, 16);


int status = WL_IDLE_STATUS;
WiFiServer server(80);

String readString;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(greenLED, OUTPUT);
  pinMode(redLED, OUTPUT);

  Serial.begin(9600);

  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to Network named: ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, pass);
    delay(10000);
  }

  digitalWrite(LED_BUILTIN, HIGH);
  WiFi.config(ip);
  server.begin();

  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
}

void loop() {


  WiFiClient client = server.available();
  if (client) {
    Serial.println("new client");

    while (client.connected())
    {
      if (client.available())
      {
        char c = client.read();
        if (readString.length() < 100)
        {
          readString += c;
          Serial.write(c);

          if (c == '\n') {

            if (readString.indexOf("?green") > 0)
            {
              digitalWrite(greenLED, HIGH);
              digitalWrite(redLED, LOW);

              delay(1);
            } else if (readString.indexOf("?red") > 0) {
              digitalWrite(greenLED, LOW);
              digitalWrite(redLED, HIGH);

              delay(1);

            } else if (readString.indexOf("?both") > 0) {

              digitalWrite(greenLED, HIGH);
              digitalWrite(redLED, HIGH);

              delay(1);

            } else if (readString.indexOf("?off") > 0) {

              digitalWrite(greenLED, LOW);
              digitalWrite(redLED, LOW);

              delay(1);

            } else {

              Serial.print("PROBLEM:  ");
              Serial.println(readString);

            }

            readString = "";

            delay(1);
            client.stop();
            Serial.println("client disconnected");
          }
        }
      }
    }
  }
}

Be the first to comment

Leave a Reply