Inteligencia Artificial
API de ChatGPT con ESP32: Guía Completa para Integrarla y Mostrar Respuestas
PUBLICIDAD • RECOMENDADO
📖 Resumen & Explicación del Proyecto
En este video, aprenderás cómo conectar un ESP32 a la API de ChatGPT de OpenAI para enviar preguntas y recibir respuestas en tiempo real. Además, mostraremos las respuestas en una pantalla LCD 20x04 e OLED, creando un sistema interactivo con inteligencia artificial.
✅ 📌 Contenido del video:
✔️ Configuración del ESP32 y conexión a Wi-Fi
✔️ Uso de la API de OpenAI para enviar y recibir datos
✔️ Integración con una pantalla LCD 20x04 con I2C y OLED 128x64
✔️ Procesamiento de respuestas en formato JSON con ArduinoJson
✔️ Código optimizado y explicado paso a paso
🔹 📜 Código y recursos:
👉 [ https://drive.google.com/file/d/1fE_U_6qETWW1FIs1NR2yBc5YFxs1O_44/view?usp=drive_link ]
Crear API : https://platform.openai.com/settings/profile/user
Documentaciòn API : https://platform.openai.com/docs/api-reference/introduction
🔹 🔧 Hardware utilizado:
ESP32 (modelo WROOM-32)
Pantalla LCD 20x04 con módulo I2C
Pantalla OLED 128x64
🛠️ Componentes & Materiales Requeridos
- ✓ESP32 WROOM-32
- ✓Pantalla LCD 20x04 con módulo I2C
- ✓Display OLED 128x64
- ✓Pulsador de activación (Trigger prompt)
- ✓API Key de OpenAI (ChatGPT API)
⚡ Conexión de Pines (Pinout)
| Pin Microcontrolador | Pin Dispositivo / Sensor | Función / Descripción |
|---|---|---|
GPIO 21 | SDA (LCD/OLED) | Bus I2C compartido para pantallas |
GPIO 22 | SCL (LCD/OLED) | Reloj de sincronización I2C |
GPIO 15 | Pulsador Trigger | Disparo manual para enviar consulta |
5V / 3V3 | VCC | Alimentación de displays |
🔍 Integración de ESP32 con la API de OpenAI y visualización simultánea en LCD 20x04 e I2C OLED.
💻 Códigos Fuente del Proyecto
Verificados en LaboratorioCopia y pega directamente los scripts en tu entorno de desarrollo (Arduino IDE, PlatformIO o editor de código):
C++ / Arduino IDE
ESP32_ChatGPT_Client.ino
Código 1: Cliente HTTPS para ChatGPT en C++
#include <WiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>
#include <ArduinoJson.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
const char* ssid = "TU_WIFI";
const char* password = "TU_PASSWORD";
const char* openAIKey = "sk-proj-TU_OPENAI_API_KEY";
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Conectando WiFi...");
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) { delay(500); }
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ChatGPT ESP32 Listo");
enviarPreguntaChatGPT("¿Que es un transistor?");
}
void loop() {}
void enviarPreguntaChatGPT(String pregunta) {
WiFiClientSecure client;
client.setInsecure();
HTTPClient http;
http.begin(client, "https://api.openai.com/v1/chat/completions");
http.addHeader("Content-Type", "application/json");
http.addHeader("Authorization", String("Bearer ") + openAIKey);
StaticJsonDocument<512> doc;
doc["model"] = "gpt-4o-mini";
JsonArray messages = doc.createNestedArray("messages");
JsonObject userMsg = messages.createNestedObject();
userMsg["role"] = "user";
userMsg["content"] = pregunta + " (Responde en maximo 25 palabras para pantalla LCD)";
String requestBody;
serializeJson(doc, requestBody);
int code = http.POST(requestBody);
if (code == 200) {
String res = http.getString();
DynamicJsonDocument resDoc(2048);
deserializeJson(resDoc, res);
const char* respuesta = resDoc["choices"][0]["message"]["content"];
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(respuesta);
Serial.println(respuesta);
}
http.end();
}
JSON / OpenAI API
chatgpt_request_schema.json
Código 2: JSON Payload de Request para Chat Completions
{
"model": "gpt-4o-mini",
"messages": [
{
"role": "system",
"content": "Eres un asistente para microcontroladores. Respuestas concisas."
},
{
"role": "user",
"content": "Dame una recomendacion tecnica de electronica en 15 palabras."
}
],
"max_tokens": 50,
"temperature": 0.5
}
🚀 Puesta en Marcha Paso a Paso
-
1
Crear una cuenta en platform.openai.com y generar una Secret API Key.
-
2
Conectar el display LCD 20x04 con módulo I2C a los pines SDA (GPIO 21) y SCL (GPIO 22).
-
3
Descargar la biblioteca LiquidCrystal_I2C y ArduinoJson v7.
-
4
Cargar el código configurando los parámetros de tokens para limitar la longitud de la respuesta a 4 líneas de texto.
-
5
Verificar las respuestas generadas directamente en pantalla.
📥 Descargas & Recursos Oficiales
PUBLICIDAD • RECOMENDADO