/* WiFi UDP Send and Receive String This sketch waits for a UDP packet on localPort using the WiFi module. When a packet is received an Acknowledge packet is sent to the client on port remotePort created 30 December 2012 by dlf (Metodo2 srl) */ #include #include #include #include "PluggableUSBHID.h" #include "USBMouseKeyboard.h" int status = WL_IDLE_STATUS; #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h char ssid[] = SECRET_SSID; // your network SSID (name) char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP) int keyIndex = 0; // your network key index number (needed only for WEP) unsigned int localPort = 9696; // local port to listen on char packetBuffer[256]; //buffer to hold incoming packet char ReplyBuffer[] = "acknowledged"; // a string to send back WiFiUDP Udp; USBMouseKeyboard MouseKeyboard; void setup() { //Initialize serial and wait for port to open: //Serial.begin(9600); // while (!Serial) { // ; // wait for serial port to connect. Needed for native USB port only // } // check for the WiFi module: if (WiFi.status() == WL_NO_MODULE) { //Serial.println("Communication with WiFi module failed!"); // don't continue while (true); } String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { //Serial.println("Please upgrade the firmware"); } // attempt to connect to WiFi network: while (status != WL_AP_LISTENING) { //Serial.print("Attempting to connect to SSID: "); //Serial.println(ssid); // Connect to WPA/WPA2 network. Change this line if using open or WEP network: status = WiFi.beginAP(ssid, pass); // wait 10 seconds for connection: delay(10000); } //Serial.println("Connected to WiFi"); printWifiStatus(); //Serial.println("\nStarting connection to server..."); // if you get a connection, report back via serial: Udp.begin(localPort); } void loop() { // if there's data available, read a packet int packetSize = Udp.parsePacket(); if (packetSize) { //Serial.print("Received packet of size "); //Serial.println(packetSize); //Serial.print("From "); IPAddress remoteIp = Udp.remoteIP(); //Serial.print(remoteIp); //Serial.print(", port "); //Serial.println(Udp.remotePort()); // read the packet into packetBuffer int len = Udp.read(packetBuffer, 255); if (len > 0) { packetBuffer[len] = 0; } //Serial.println("Contents:"); //Serial.println(packetBuffer); String cmd=packetBuffer; if(cmd=="BLD") { MouseKeyboard.press(1); } if(cmd=="BLU") { MouseKeyboard.release(1); } if(cmd=="CL") { MouseKeyboard.click(1); } if(cmd=="HW") { MouseKeyboard.printf("Hello, infoeducatie!"); } if(cmd.startsWith("MR")){ int x=cmd.substring(3,cmd.indexOf("Y")).toInt(); int y=cmd.substring(cmd.indexOf("Y")+1).toInt(); //Serial.println("x:"+String(x)+"&y:"+String(y)); MouseKeyboard.move(x, y); } // send a reply, to the IP address and port that sent us the packet we received Udp.beginPacket(Udp.remoteIP(), Udp.remotePort()); Udp.write(ReplyBuffer); Udp.endPacket(); } } void printWifiStatus() { // print the SSID of the network you're attached to: //Serial.print("SSID: "); //Serial.println(WiFi.SSID()); // print your board's IP address: IPAddress ip = WiFi.localIP(); //Serial.print("IP Address: "); //Serial.println(ip); // print the received signal strength: long rssi = WiFi.RSSI(); //Serial.print("signal strength (RSSI):"); //Serial.print(rssi); //Serial.println(" dBm"); }