Conectar Arduino con una hoja de cálculo - Configuración del código

힘센캥거루
2025년 10월 8일(수정됨)
5
37

En el artículo anterior, hablamos sobre la configuración de la hoja para conectar Arduino con una hoja de cálculo.

En este artículo, aprenderemos cómo enviar datos desde el tablero Arduino D1 utilizando comunicación HTTPS.

1. Instalar la biblioteca del tablero Arduino D1

Para utilizar el tablero Arduino D1, primero debemos instalar la biblioteca del tablero.

En Arduino IDE, vaya a Archivo - Preferencias.

Conectar Arduino con una hoja de cálculo - Configuración del código-2

Ingrese la siguiente URL adicional del gestor de tarjetas.

http://arduino.esp8266.com/stable/package_esp8266com_index.json
Conectar Arduino con una hoja de cálculo - Configuración del código-3Conectar Arduino con una hoja de cálculo - Configuración del código-4

Haga clic en Aceptar una vez que haya terminado.

Conectar Arduino con una hoja de cálculo - Configuración del código-5

Busque el tablero Arduino D1 en el gestor de placas a la izquierda y proceda a instalarlo.

Con esto, la instalación de la biblioteca del tablero está completa.

Conectar Arduino con una hoja de cálculo - Configuración del código-6

Después de seleccionar el tablero, vaya a Archivo - Ejemplos para verificar que el ejemplo ESP8266 aparezca correctamente.

Configure la placa como se muestra a continuación.

Conectar Arduino con una hoja de cálculo - Configuración del código-7

Si el ejemplo aparece correctamente, la instalación fue exitosa.

Conectar Arduino con una hoja de cálculo - Configuración del código-8

2. Compilar el código de Arduino

Ahora es hora de cargar el código en el Arduino.

Primero, llame al módulo y realice la configuración básica para conectarse al WiFi.

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>

// int fan_pin = 8;

const char* ssid = "nombre del WiFi";   // nombre del WiFi
const char* password = "contraseña del WiFi"; // contraseña del WiFi

//----------------------------------------Host & puerto https (https es 443)
const char* host = "script.google.com";
const int httpsPort = 443;
//----------------------------------------

WiFiClientSecure client; // Crear objeto WiFiClientSecure

// ID del script de la hoja de cálculo de Google
String GAS_ID = "ID del script de Google Spreadsheet";

En setup, configure la velocidad de comunicación serial y conecte al WiFi.

La velocidad de comunicación serial predeterminada de ESP8266 es 115,200.

Intente conectarse usando WiFi.begin(ssid, password) y verifique el estado de la conexión con WiFi.status().

Utilice client.setInsecure para permitir la conexión HTTPS.

void setup() {  
  Serial.begin(115200);  
  WiFi.begin(ssid, password);  // Conectar al router WiFi
  Serial.println("");  
  //----------------------------------------Esperando conexión
  Serial.print("Conectando");  
  while (WiFi.status() != WL_CONNECTED) {  
    Serial.print(".");
    delay(1000);
    };
  //----------------------------------------
  Serial.println("");
  Serial.print("Conexión WiFi exitosa : ");
  Serial.println(ssid);
  Serial.print("Dirección IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();
  //----------------------------------------
  client.setInsecure();
}

Ahora es el momento de escribir el código principal.

Actualmente no hay nada conectado al Arduino, así que solo he enviado dos variables definidas a la hoja de Google.

void loop() {
  delay(1000);
  int v1 = 2000;
  int v2 = 3000;
  if (!client.connect(host, httpsPort)) {
    Serial.println("Fallo de conexión al host");
    return;
  };
  String value1 =  String(v1);
  String value2 =  String(v2);
  String url = "/macros/s/" + GAS_ID + "/exec?value1=" + value1 + "&value2=" + value2;
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
         "Host: " + host + "\r\n" +
         "User-Agent: BuildFailureDetectorESP8266\r\n" +
         "Connection: close\r\n\r\n");
  Serial.println("Solicitud enviada");
};

Si miramos la hoja, podemos ver que se envían los valores correctamente.

Conectar Arduino con una hoja de cálculo - Configuración del código-9

Ahora hagamos una función para enviar los valores.

Nombramos la función como sendData, y la función acepta dos parámetros int.

Si observa la función a continuación, la parte esencial es la misma que antes, pero se ha agregado la parte de manejo de la respuesta.

void sendData(int data1, int data2) {
  Serial.println("==========");
  Serial.print("Conectando al host");
  Serial.println(host);
  
  //----------------------------------------Conectar al host de Google
  if (!client.connect(host, httpsPort)) {
    Serial.println("Fallo de conexión al host"); 
    return;
  }
  //----------------------------------------
//----------------------------------------Procesamiento de datos y envío de datos
  String value1 =  String(data1);
  String value2 =  String(data2);
  String url = "/macros/s/" + GAS_ID + "/exec?value1=" + value1 + "&value2=" + value2;
  Serial.print("URL de la solicitud: ");
  Serial.println(url);

client.print(String("GET ") + url + " HTTP/1.1\r\n" +
         "Host: " + host + "\r\n" +
         "User-Agent: BuildFailureDetectorESP8266\r\n" +
         "Connection: close\r\n\r\n");

Serial.println("Solicitud enviada");
  //----------------------------------------

//----------------------------------------Verificar si los datos fueron enviados exitosamente
  while (client.connected()) {
    String line = client.readStringUntil('\n');
    if (line == "\r") {
      Serial.println("Encabezado recibido");
      break;
    }
  }
  String line = client.readStringUntil('\n');
  if (line.startsWith("{\"state\":\"success\"")) {
    Serial.println("Datos enviados exitosamente");
  } else {
    Serial.println("Error al enviar datos");
    Serial.println(line);
  }
  Serial.print("Respuesta : ");
  Serial.println(line);
  Serial.println("Cerrando conexión");
  Serial.println("==========");
  Serial.println();
  //----------------------------------------
}

Ponga esto dentro del bucle y verifique si funciona correctamente.

void loop() {
  delay(1000);
  int v1 = 2000;
  int v2 = 3000;
  sendData(v1, v2);
}

3. Código completo

El código completo es el siguiente. Espero que sea útil, en el próximo artículo mediremos la temperatura y la humedad utilizando un sensor de temperatura y humedad.

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>

// int fan_pin = 8;

const char* ssid = "nombre del WiFi";   // nombre del WiFi
const char* password = "contraseña del WiFi"; // contraseña del WiFi

//----------------------------------------Host & puerto https (https es 443)
const char* host = "script.google.com";
const int httpsPort = 443;
//----------------------------------------

WiFiClientSecure client; // Crear objeto WiFiClientSecure

// ID del script de la hoja de cálculo de Google
String GAS_ID = "ID del script de Google Spreadsheet";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password); // Conectar al router WiFi
  Serial.println("");
  //----------------------------------------Esperando conexión
  Serial.print("Conectando");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(1000);
    };
  //----------------------------------------
  Serial.println("");
  Serial.print("Conexión WiFi exitosa : ");
  Serial.println(ssid);
  Serial.print("Dirección IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();
  //----------------------------------------

client.setInsecure();
};

void loop() {
  delay(1000);
  int v1 = 2000;
  int v2 = 3000;
  sendData(v1, v2);
};

// Enviar datos a Google Spreadsheet
void sendData(int data1, int data2) {
  Serial.println("==========");
  Serial.print("Conectando al host");
  Serial.println(host);
  
  //----------------------------------------Conectar al host de Google
  if (!client.connect(host, httpsPort)) {
    Serial.println("Fallo de conexión al host");
    return;
  };
  //----------------------------------------

//----------------------------------------Procesamiento de datos y envío de datos
  String value1 =  String(data1);
  String value2 =  String(data2);
  String url = "/macros/s/" + GAS_ID + "/exec?value1=" + value1 + "&value2=" + value2;
  Serial.print("URL de la solicitud: ");
  Serial.println(url);

client.print(String("GET ") + url + " HTTP/1.1\r\n" +
         "Host: " + host + "\r\n" +
         "User-Agent: BuildFailureDetectorESP8266\r\n" +
         "Connection: close\r\n\r\n");

Serial.println("Solicitud enviada");
  //----------------------------------------

//----------------------------------------Verificar si los datos fueron enviados exitosamente
  while (client.connected()) {
    String line = client.readStringUntil('\n');
    if (line == "\r") {
      Serial.println("Encabezado recibido");
      break;
    };
  };
  String line = client.readStringUntil('\n');
  if (line.startsWith("{\"state\":\"success\"")) {
    Serial.println("Datos enviados exitosamente");
  } else {
    Serial.println("Error al enviar datos");
    Serial.println(line);
  };
  Serial.print("Respuesta : ");
  Serial.println(line);
  Serial.println("Cerrando conexión");
  Serial.println("==========");
  Serial.println();
  //----------------------------------------
}
Conectar Arduino con una hoja de cálculo - Configuración del código-10

관련 글

Programar un robot araña con micro:bit
Programar un robot araña con micro:bit
Esta vez, en un encuentro relacionado con tecnología robótica, se abrió gratuitamente una clase.Era una capacitación en el uso de la micro:bit para co...
Clonar una tarjeta RFID con Arduino
Clonar una tarjeta RFID con Arduino
Hoy voy a escribir sobre cómo clonar una tarjeta RFID con Arduino.Como no me olvido de lo que escribo una vez, lo dejo aquí a modo de repaso.1. Estruc...
Recopilación de datos de temperatura y humedad con Arduino ESP32
Recopilación de datos de temperatura y humedad con Arduino ESP32
Hoy crearemos una garita meteorológica WiFi que mide la temperatura y la humedad utilizando el Arduino ESP32. Este contenido está basado en el guión de clases 16+1 que se llevará a cabo en la escuela. 1. Materiales necesarios. Los materiales son simples. ESP32, DHT-22, 3 cables. Primero, expliquemos brevemente el ESP32...
Experiencia usando Arduino D1 R2
Experiencia usando Arduino D1 R2
Podría haberlo hecho simplemente con un Arduino Uno, pero decidí probar el Wemos D1 R2 con WiFi integrado y terminé teniendo bastantes problemas. Este artículo es para aquellos que usan un Arduino con mapeo de pines diferente, como el D1 R2. 1. Configuración del IDE El Arduino tiene tantos tipos ...
Cómo resolver 'Timed out waiting for packet header' en Arduino en MacBook
Cómo resolver 'Timed out waiting for packet header' en Arduino en MacBook
Método para resolver el problema de 'Timed out' al conectar Arduino Wemos D1 R2 en MacBook
Conexión de Arduino con Hoja de Cálculo - Configuración de Google Sheets
Conexión de Arduino con Hoja de Cálculo - Configuración de Google Sheets
Recientemente decidimos con los estudiantes usar Arduino para observar la temperatura y humedad alrededor de la escuela y analizar los valores. Necesitábamos una tarjeta SD para guardar los datos medidos por Arduino, y era un inconveniente retirar la tarjeta SD para verificar los datos. De repente pensé ¿qué tal si ...

댓글을 불러오는 중...