Inteligencia Artificial en ESP32: Conectando Google Gemini paso a paso
VER VIDEO COMPLETO EN YOUTUBE
🔴 CANAL OFICIAL 1080p 60fps HD
Haz clic aquí para ver directamente en YouTube y apoyar al canal 13:48 min
Reproducir en YouTube Oficial ↗

💡 Apoya el proyecto: Al reproducir en YouTube recibimos visualizaciones y anuncios del canal oficial. ¡Aquí abajo encuentras el diagrama de pines, componentes y códigos listos para copiar!

Inteligencia Artificial

Inteligencia Artificial en ESP32: Conectando Google Gemini paso a paso

⏱️ Duración: 13:48 min 👁️ 35.695 vistas 📅 11 may 2026 👤 Ing. A Torres
PUBLICIDAD • RECOMENDADO

📖 Resumen & Explicación del Proyecto

Aprende a integrar la API de Google Gemini AI en el ESP32 utilizando una conexión segura (HTTPS) y muestra las respuestas generadas en una pantalla OLED I2C de 0.96". Un proyecto de Inteligencia Artificial e IoT optimizado, directo y sin librerías complejas. En este tutorial explicamos paso a paso el código, la conexión física y cómo estructurar el formato JSON para limitar los tokens y recibir respuestas precisas. 📌 Enlaces y Recursos: • Código completo : https://drive.google.com/file/d/1PepDLPq0yczPKJHu9R5na13gFhBvCQO_/view?usp=sharing • Obtén tu API Key de Gemini gratis aquí: https://aistudio.google.com/ #ESP32 #GeminiAI #IoT #OLED #Arduino #InteligenciaArtificial #Maker

🛠️ Componentes & Materiales Requeridos

  • ✓Placa de desarrollo ESP32 (DOIT DevKit V1 o NodeMCU ESP32)
  • ✓Pantalla OLED I2C SSD1306 0.96" (128x64 píxeles)
  • ✓Cables de conexión Dupont Hembra - Macho
  • ✓Cable Micro-USB para programación y alimentación
  • ✓API Key gratuita de Google Gemini (Google AI Studio)

⚡ Conexión de Pines (Pinout)

Pin Microcontrolador Pin Dispositivo / Sensor Función / Descripción
GPIO 21SDA (OLED)Bus de datos bidireccional I2C
GPIO 22SCL (OLED)Línea de reloj del bus I2C
3V3 / VINVCCAlimentación positiva lógica (3.3V)
GNDGNDTierra común del circuito
Diagrama de arquitectura del ESP32 enviando HTTPS POST a Google Gemini y mostrando la respuesta en OLED.

🔍 Diagrama de arquitectura del ESP32 enviando HTTPS POST a Google Gemini y mostrando la respuesta en OLED.

💻 Códigos Fuente del Proyecto

Verificados en Laboratorio

Copia y pega directamente los scripts en tu entorno de desarrollo (Arduino IDE, PlatformIO o editor de código):

C++ / Arduino IDE ESP32_Gemini_AI_Client.ino

Código 1: Firmware ESP32 en Arduino IDE (C++)

#include <WiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>
#include <ArduinoJson.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

const char* ssid = "TU_RED_WIFI";
const char* password = "TU_PASSWORD_WIFI";
const char* apiKey = "TU_GEMINI_API_KEY_AQUI";

const char* geminiEndpoint = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=";

void setup() {
  Serial.begin(115200);
  Wire.begin(21, 22);

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("Fallo OLED"));
    for(;;);
  }

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 10);
  display.println("Conectando WiFi...");
  display.display();

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  display.clearDisplay();
  display.setCursor(0, 10);
  display.println("WiFi Conectado!");
  display.println(WiFi.localIP());
  display.display();
  delay(1500);

  consultarGemini("Explica en 15 palabras que es el Internet de las Cosas.");
}

void loop() {
  // En este demo se realiza la consulta en setup()
}

void consultarGemini(String prompt) {
  WiFiClientSecure client;
  client.setInsecure(); // Para prototipos HTTPS directos
  HTTPClient http;

  String url = String(geminiEndpoint) + apiKey;
  http.begin(client, url);
  http.addHeader("Content-Type", "application/json");

  // Construcción del Payload JSON
  StaticJsonDocument<512> doc;
  JsonArray contents = doc.createNestedArray("contents");
  JsonObject partObj = contents.createNestedObject();
  JsonArray parts = partObj.createNestedArray("parts");
  JsonObject textObj = parts.createNestedObject();
  textObj["text"] = prompt;

  String requestBody;
  serializeJson(doc, requestBody);

  int httpCode = http.POST(requestBody);
  if (httpCode == HTTP_CODE_OK) {
    String payload = http.getString();
    DynamicJsonDocument responseDoc(2048);
    deserializeJson(responseDoc, payload);
    const char* respuesta = responseDoc["candidates"][0]["content"]["parts"][0]["text"];

    display.clearDisplay();
    display.setCursor(0, 0);
    display.println("Respuesta Gemini:");
    display.setCursor(0, 15);
    display.println(respuesta);
    display.display();
    Serial.println(respuesta);
  } else {
    Serial.printf("Error HTTP: %d\n", httpCode);
  }
  http.end();
}
JSON / API REST gemini_payload_template.json

Código 2: Estructura del Payload JSON para Google Gemini REST API

{
  "contents": [
    {
      "parts": [
        {
          "text": "Eres un asistente de hardware embebido. Responde en maximo 20 palabras: ¿Cual es el consumo tipico del ESP32 en Deep Sleep?"
        }
      ]
    }
  ],
  "generationConfig": {
    "temperature": 0.4,
    "topK": 32,
    "topP": 1,
    "maxOutputTokens": 60,
    "stopSequences": []
  }
}

🚀 Puesta en Marcha Paso a Paso

  1. 1

    Obtener tu API Key gratuita en Google AI Studio (aistudio.google.com).

  2. 2

    Instalar las librerías ArduinoJson (versión 7 recomendada) y Adafruit SSD1306 desde el gestor de bibliotecas de Arduino IDE.

  3. 3

    Realizar el conexionado físico del display OLED I2C en los pines GPIO 21 (SDA) y GPIO 22 (SCL).

  4. 4

    Configurar el nombre de red (SSID), contraseña y pegar tu API Key en las variables del sketch.

  5. 5

    Compilar y cargar el código al ESP32 seleccionando la placa 'DOIT ESP32 DEVKIT V1'.

📥 Descargas & Recursos Oficiales

PUBLICIDAD • RECOMENDADO