CupCarbon & ESP32
Tutorial

ESP32 and CupCarbon

In CupCarbon, create a subscriber on the topic you want:
Example: abcd/gps (change abcd by your prefered topic)
Then write the Arduino code of the ESP32 which will send the GPS coordinate via the same topic.
Add the instruction move to move the device to the received coords.

#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "*******"; // The ssid of your wifi
const char* password = "*****"; // The password
const char* mqtt_server = "broker.hivemq.com"; // can be modified
const char* mqtt_topic = "cupcarbon/gps"; // modify it

WiFiClient espClient;
PubSubClient client(espClient);

int pled = 2;
bool ready = false;
int i = 0;
long lastMsg = 0;

char* gpsLocs[] = {
"50.150486 26.31439", "50.150502 26.31444775", "50.150518 26.3145055", "50.150534 26.31456325", "50.15055 26.314621", "50.15055525 26.3146875", "50.1505605 26.314754", "50.15056575 26.3148205", "50.150571 26.314887", "50.15056375 26.31496475", "50.1505565 26.3150425", "50.15054925 26.31512025", "50.150542 26.315198", "50.15051625 26.31526925", "50.1504905 26.3153405", "50.15046475 26.31541175", "50.150439 26.315483", "50.15040025 26.315544", "50.1503615 26.315605", "50.15032275 26.315666", "50.150284 26.315727", "50.1502075 26.31586375", "50.150131 26.3160005", "50.1500545 26.31613725", "50.149978 26.316274", "50.14988475 26.316388", "50.1497915 26.316502", "50.14969825 26.316616", "50.149605 26.31673", "50.149506 26.31687675", "50.149407 26.3170235", "50.149308 26.31717025", "50.149209 26.317317", "50.14918725 26.317338", "50.1491655 26.317359", "50.14914375 26.31738", "50.149122 26.317401", "50.14909525 26.3174185", "50.1490685 26.317436", "50.14904175 26.3174535", "50.149015 26.317471", "50.1489765 26.31748875", "50.148938 26.3175065", "50.1488995 26.31752425", "50.148861 26.317542", "50.14882275 26.31755075", "50.1487845 26.3175595", "50.14874625 26.31756825", "50.148708 26.317577", "50.14866 26.31757675", "50.148612 26.3175765", "50.148564 26.31757625", "50.148516 26.317576", "50.14848125 26.31757025", "50.1484465 26.3175645", "50.14841175 26.31755875", "50.148377 26.317553", "50.14774975 26.3172435", "50.1471225 26.316934", "50.14649525 26.3166245", "50.145868 26.316315", "50.14580475 26.316293", "50.1457415 26.316271", "50.14567825 26.316249", "50.145615 26.316227", "50.14456375 26.31594725", "50.1435125 26.3156675", "50.14246125 26.31538775", "50.14141 26.315108", "50.1410555 26.31502675", "50.140701 26.3149455", "50.1403465 26.31486425", "50.139992 26.314783", "50.13992275 26.314983", "50.1398535 26.315183", "50.13978425 26.315383", "50.139715 26.315583", "50.1396975 26.31561425", "50.13968 26.3156455", "50.1396625 26.31567675", "50.139645 26.315708", "50.139562 26.31596325", "50.139479 26.3162185", "50.139396 26.31647375", "50.139313 26.316729", "50.1389545 26.316622", "50.138596 26.316515", "50.1382375 26.316408", "50.137879 26.316301", "50.137732 26.3162465", "50.137585 26.316192", "50.137438 26.3161375", "50.137291 26.316083", "50.137214 26.3160505", "50.137137 26.316018", "50.13706 26.3159855", "50.136983 26.315953", "50.1368935 26.3159345", "50.136804 26.315916", "50.1367145 26.3158975", "50.136625 26.315879", "50.1365185 26.31584425", "50.136412 26.3158095", "50.1363055 26.31577475", "50.136199 26.31574", "50.13611775 26.3157035", "50.1360365 26.315667", "50.13595525 26.3156305", "50.135874 26.315594", "50.13584575 26.315559", "50.1358175 26.315524", "50.13578925 26.315489", "50.135761 26.315454", "50.13574 26.315372", "50.135719 26.31529", "50.135698 26.315208", "50.135677 26.315126", "50.135659 26.31508625", "50.135641 26.3150465", "50.135623 26.31500675", "50.135605 26.314967", "50.135578 26.31492925", "50.135551 26.3148915", "50.135524 26.31485375", "50.135497 26.314816", "50.1354455 26.31470775", "50.135394 26.3145995", "50.1353425 26.31449125", "50.135291 26.314383", "50.135201 26.31423375", "50.135111 26.3140845", "50.135021 26.31393525", "50.134931 26.313786", "50.1348785 26.313671", "50.134826 26.313556", "50.1347735 26.313441", "50.134721 26.313326", "50.13478125 26.3132995", "50.1348415 26.313273", "50.13490175 26.3132465", "50.134962 26.31322", "50.1350075 26.31321125", "50.135053 26.3132025", "50.1350985 26.31319375", "50.135144 26.313185", "50.1351975 26.31318525", "50.135251 26.3131855", "50.1353045 26.31318575", "50.135358 26.313186", "50.135398 26.313199", "50.135438 26.313212", "50.135478 26.313225", "50.135518 26.313238", "50.13553275 26.31325975", "50.1355475 26.3132815", "50.13556225 26.31330325", "50.135577 26.313325", "50.13573275 26.3134245", "50.1358885 26.313524", "50.13604425 26.3136235", "50.1362 26.313723", "50.136236 26.313735", "50.136272 26.313747", "50.136308 26.313759", "50.136344 26.313771", "50.1363625 26.3137735", "50.136381 26.313776", "50.1363995 26.3137785"
};

void reconnect() {
     while (!client.connected()) {
          Serial.println("En cours ...");
          if (client.connect("client123")) {
               Serial.println("Connected!");
               digitalWrite(pled, HIGH); 
               client.publish(mqtt_topic, "Connected");
          }
     }
}

void setup() {
     pinMode(pled, OUTPUT);

     Serial.begin(115200);

     delay(10);
     WiFi.begin(ssid, password);
     while (WiFi.status() != WL_CONNECTED) {
          digitalWrite(pled, LOW);
     }

     digitalWrite(pled, HIGH);
     delay(100);
     digitalWrite(pled, LOW);
     delay(100);

     client.setServer(mqtt_server, 1883);
}

void loop() {
     if (!client.connected()) {
          digitalWrite(pled, HIGH);
          delay(100);
          digitalWrite(pled, LOW);
          delay(100);
          reconnect();
     }
     client.loop();

     long now = millis();
     if (now - lastMsg > 500) {
          lastMsg = now;
          client.publish(mqtt_topic, gpsLocs[i]);
          i++;
          if(i==173) i=0;
     }
}