#378IntermedioIoT

ESP32 Abridor de Cortinas IoT (Servo SG90)

Toca + o − en el móvil y el servo gira a ese ángulo en el mismo instante: abre y cierra una cortina de maqueta, la varilla de una persiana o una tapa pequeña estés donde estés. Este proyecto es la guía paso a paso de la plantilla IoT Cortina con servo de la app, con un ESP32 y un servo SG90, con solo 3 cables. Ve a Taller › Dispositivos › Añadir dispositivo; Ohmi prepara el código con tu clave de dispositivo. El código de aquí es un ejemplo: la clave y el Wi-Fi son de relleno.

0.0(0)
ESP32 Abridor de Cortinas IoT (Servo SG90)
Si quieres abrir la cortina sin salir de la cama o cerrar la persiana cuando estás fuera, este proyecto es para ti. El servomotor gira al ángulo que elijas en el móvil, y tras un corte de luz la placa vuelve al último ángulo. Empiezas con una cortina de maqueta o la varilla de una persiana y aprendes cuánta fuerza tiene el servo y dónde están sus límites. Con solo tres cables es un buen primer paso para controlar movimiento desde el móvil.
IoT · control remotoTu primer dispositivo es gratis

Controla este dispositivo desde la app

Conecta tu ESP32 o Raspberry Pi Pico W al wifi, enciéndelo y apágalo desde el móvil y mira las lecturas en directo. Ohmi prepara el código; tú solo pones los datos de tu wifi y lo subes.

Plantilla en la app: Cortina con servo

  • ¿Dónde está en la app?Añade un dispositivo nuevo desde la pestaña Herramientas o en Taller › Dispositivos y elige esta plantilla.
  • Librería de ArduinoAbre el Gestor de librerías en el Arduino IDE, busca BlueGraysIoT e instálala.
Descarga la app gratis

El plan gratis incluye 1 dispositivo, 1 gráfica y 24 horas de historial. Con Premium tienes más dispositivos, más gráficas y un historial más largo.

Diagrama del circuito

ESP32 Abridor de Cortinas IoT (Servo SG90) - Circuit

Código fuente

C++ (Arduino IDE)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   ESP32 Abridor de Cortinas IoT (Servo SG90)
4// ─────────────────────────────────────────
5// La plantilla IoT "Cortina con servo" de la app BlueGrays: el ajuste
6// Ángulo de la cortina de la app (botones + y −) gira el servo SG90 al
7// ángulo que quieras entre 0 y 180 grados, así abres y cierras desde el
8// móvil una cortina de maqueta, la varilla de una persiana o una tapa
9// pequeña. Ohmi prepara el código real en la app con tu propia clave de
10// dispositivo (Taller › Dispositivos › Añadir dispositivo); el código de
11// aquí es un ejemplo, la clave del dispositivo y los datos del Wi-Fi son
12// de relleno. Gestor de bibliotecas: BlueGraysIoT (con sus dependencias) y
13// ESP32Servo. La placa solo se conecta a redes Wi-Fi de 2,4 GHz. El SG90
14// es un servo pequeño; una cortina de verdad necesita un servo más fuerte
15// con su propia alimentación de 5 V, y no metas los dedos en el brazo que
16// gira.
17//
18// Pines:
19//   GPIO18 -> Señal del servo (naranja)
20//   5V, GND -> Servo V+ (rojo), GND (marrón)
21//   Pico W: señal del servo GP17
22
23/*
24 * Cortina con servo · BlueGrays IoT
25 * BlueGrays · bluegrays.com
26 * No compartas este código: contiene la clave de tu dispositivo y la contraseña del Wi-Fi.
27 */
28
29#include <BlueGraysIoT.h>
30#include <ESP32Servo.h>  // Gestor de bibliotecas: 'ESP32Servo'
31
32const char *DEVICE_KEY = "TU_CLAVE_DE_DISPOSITIVO";
33const char *WIFI_NAME = "TU_RED_WIFI";
34const char *WIFI_PASSWORD = "TU_CONTRASENA_WIFI";
35
36BlueGraysIoT bg(DEVICE_KEY);
37
38const int SERVO_PIN = 18;
39Servo servo;
40
41void setup() {
42  Serial.begin(115200);
43  servo.attach(SERVO_PIN);
44  bg.onNumber("aci", [](float v) { servo.write((int)v); });
45  bg.setDebug(Serial);
46  bg.setLanguage(BG_LANG_EN);
47  bg.begin(WIFI_NAME, WIFI_PASSWORD);
48}
49
50void loop() {
51  bg.loop();  // evita aquí los delay() largos
52}
53

Preguntas frecuentes

¿Puedo subir a la placa el código de esta página tal cual?

Puedes, pero no se conectará: la clave del dispositivo y los datos del Wi-Fi son de relleno. En la app ve a Taller › Dispositivos › Añadir dispositivo y elige la plantilla Cortina con servo; Ohmi prepara el código con tu clave, el nombre de tu red y tu contraseña. Copia ese código y súbelo. Después puedes ver el código completo en Dispositivo › Código y clave.

¿Funciona también con una Pico W?

Sí. Al añadir el dispositivo elige Pico W como placa; el código es el mismo, el pin del servo pasa a ser GP17 y el código usa la biblioteca Servo que trae el paquete pico en lugar de ESP32Servo, así que no hay que instalar nada más. Conecta el cable rojo del servo a VBUS (5 V). En Arduino IDE instala el paquete "pico" desde el Gestor de placas. El circuito y la foto de esta página se hicieron con un ESP32.

¿Puede un SG90 mover una cortina de verdad?

No. El SG90 es un servo pequeño; puede girar una cortina de maqueta, la varilla de una persiana o una tapa ligera. Una cortina de verdad necesita un servo fuerte como el MG996R o un motor con reductora. Alimenta un servo fuerte con un adaptador de 5 V aparte de al menos 2 A, no desde el pin 5V de la placa, y une el GND del adaptador con el GND de la placa. No metas los dedos en el brazo que gira y no dejes obstáculos duros en su recorrido.

¿Están seguras mi contraseña del Wi-Fi y la clave del dispositivo?

La contraseña del Wi-Fi se queda en tu móvil y nunca se envía a nuestro servidor; se añade al código en el móvil. La clave del dispositivo solo viaja en la cabecera de la conexión segura y nunca se muestra en el Monitor Serie. Aun así, las dos están dentro del código, así que no compartas el código que copias de la app. Si alguien vio tu clave, consigue una nueva con Renovar clave y sube el código nuevo.