Connecting with Arduino over WiFi¶
#include <WiFiS3.h>
char ssid[] = "YOU-SSID";
char password[] = "YOUR-PASSWORD";
int status = WL_IDLE_STATUS;
WiFiServer server(8005);
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
delay(1000);
if (Serial.available()) {
Serial.println("Connecting to WiFi...");
}
while (status != WL_CONNECTED) {
Serial.print("Connecting to ");
Serial.println(ssid);
status = WiFi.begin(ssid, password);
delay(5000);
}
Serial.println("\nWiFi connected.");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
Serial.println("HTTP server started");
}
void loop() {
WiFiClient client = server.available();
if (client) {
//client.flush();
Serial.println("Client connected.");
String request = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
request += c;
if (c == '\n' && request.endsWith("\r\n\r\n")) {
break; // End of HTTP headers
}
}
}
String body = "";
while (client.available()) {
body += (char)client.read();
}
if(body == "ON"){
digitalWrite(LED_BUILTIN, HIGH);
String response = "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nLED is ON\n";
client.print(response);
}
else if(body == "OFF"){
digitalWrite(LED_BUILTIN, LOW);
String response = "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nLED is OFF\n";
client.print(response);
}
delay(1);
client.stop();
Serial.println("Client disconnected.");
}
}
#include "rlenvs/boards/arduino/arduino_connector_wifi_base.h"
#include <iostream>
namespace example
{
using rlenvscpp::boards::arduino::ArduinoCMDBase;
using rlenvscpp::boards::arduino::ArduinoConnectorWIFIBase;
struct ArduinoONCMD: public ArduinoCMDBase
{
virtual std::string get_cmd()const final;
};
std::string ArduinoONCMD::get_cmd() const
{
return "ON";
}
struct ArduinoOFFCMD: public ArduinoCMDBase
{
virtual std::string get_cmd()const final;
};
std::string ArduinoOFFCMD::get_cmd() const
{
return "OFF";
}
}
int main() {
using namespace example;
ArduinoConnectorWIFIBase connector("http://192.168.0.70:8005");
ArduinoONCMD on_cmd;
ArduinoOFFCMD off_cmd;
std::string user_input;
while (true)
{
std::cout << "Enter command ON/OFF or e (to exit): ";
std::getline(std::cin, user_input);
if (user_input == "e") {
connector.send_cmd(off_cmd);
break;
}
if (user_input == "ON")
{
auto response = connector.send_cmd(on_cmd);
std::cout<<"Arduino response: "<<response<<std::endl;
}
if (user_input == "OFF")
{
auto response = connector.send_cmd(off_cmd);
std::cout<<"Arduino response: "<<response<<std::endl;
}
std::this_thread::sleep_for(std::chrono::seconds(1));
}
return 0;
}