Arduino Mega+ESP8266 ESP-01S sending data to Google Sheets

how many pins do you require? what interfaces (I2C, SPI, ADC, DAC, etc)? what logic levels?
consider a ESP32

I have used a Mega with a ESP-01S using the following circuit

note the voltage divider on the Mega Tx pin 18 5V logic to the ESP-01s GPIO3 3.3V logic

the following Mega and ESP-01s programs communicate via serial using above circuit

// Mega - read Serial1 0101010 input from ESP8266 to blink LED
//    ESP-01 transmits 0 or 1 to Serial1 to switch LED OFF/ON
//    enter new blink period in mSec on keyboard, e.g. 500 for 0.5sec

void setup() {
  Serial.begin(115200);
  Serial.println("\nMega to ESP-01 Serial1 test");
  Serial.println("ESP-01 transmits 0 or 1 to Serial1 to switch LED OFF/ON");
  Serial.println("enter new blink period in mSec on keyboard, e.g. 500 for 0.5sec");
  Serial1.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  // if text available read next time value and send to ESP8266 over Serial1
  if (Serial.available() > 0) {         // wait for serial input
    int timeonoff = Serial.parseInt();  // read time value
    Serial1.println(timeonoff);         // send to ESP8266
    Serial.print("\n\Period in mSec sent to ESP-01 ");
    Serial.println(timeonoff);
    delay(10);
    while (Serial.available()) Serial.read();  // flush input
  }
  if (Serial1.available() > 0) {  // wait for Serial1 input
    char ch = Serial1.read();     // should 0 or 1 to blient LED
    Serial.print(ch);
    if (ch == '0') digitalWrite(LED_BUILTIN, LOW);  // turn the LED off by making the voltage LOW
    else if (ch == '1') digitalWrite(LED_BUILTIN, HIGH);           // turn the LED on (HIGH is the voltage level)
  }
}

ESP-01S code

// ESP8266 - transmit 0101010 in timing loop - read new loop time from keyboard
//  Serial 0101010 output will be sent to mega to blink LED

void setup() {
  Serial.begin(9600);    // <<<<<<< note 9600baud
}

void loop() {
  static long timer=millis();
  //  send 010101 etc every time interval
  static int onoff=0, timeonoff=1000;
  if((millis()-timer)>timeonoff) {
    timer=millis();
    Serial.print(onoff);
    onoff=!onoff;                   // invert value 0 or 1
  }
  // if text available read next time value
  if(Serial.available()==0) return; // wait for serial input
  timeonoff=Serial.parseInt();      // read time value
  //Serial.println(timeonoff);
  delay(10);
  while(Serial.available()) Serial.read(); // flush input
}