En este proyecto controlaremos un servo motor SG90 con el esp32, para poder abrir un pestillo colocado en una puerta, veremos el circuito, el armado del actuador lineal y también el código fuente. Todo este proyecto lo controlaremos a traves de wifi y una aplicación para andprid hecha en app inventor, aunque también, se puede controlar desde un web server desde cualquier navegador. Todo el circuito se alimenta con 5 voltios, podemos utilizar una power bank. Si vamos a utilizar un servo pequeño como sg90, puede alimentarlo directamente desde el ESP32.
Conexión del servomotor al ESP32 (circuito electrónico)
Los servomotores tienen tres cables: alimentación, tierra y señal. El de 5 voltios suele ser rojo, el GND es negro o marrón, y el cable de señal puede ser amarillo, naranja o también blanco.
Cable | Color |
Poder | rojo |
GND | Negro o marrón |
Señal | Amarillo, naranja o blanco |
Cuando un servo pequeño como el SG90 como se muestra en la figura a continuación, puede alimentarlo directamente desde el ESP32.
En este nuestro ejemplo, conectaremos el cable de señal a GPIO 5 . Entonces, puedes seguir el siguiente diagrama esquemático para cablear este circuito.
icas de Servo SG90 Tower Pro
- Dimensiones (L x W xH) = 22.0 x 11.5 x 27 mm (0.86 x 0.45 x 1.0 pulgadas)
- Peso: 9 gramos
- Peso con cable y conector: 10.6 gramos
- Torque a 4.8 volts: 16.7 oz/in o 1.2 kg/cm
- Voltaje de operación: 4.0 a 7.2 volts
- Velocidad de giro a 4.8 volts: 0.12 seg / 60 º
- Conector universal para la mayoría de los receptores de radio control
- Compatible con tarjetas como Arduino y microcontroladores que funcionan a 5 volts.
¿Cómo controlar un servomotor?
Puede colocar el eje del servo en varios ángulos de 0 a 180º. Los servos se controlan utilizando una señal de modulación de ancho de pulso (PWM). Esto significa que la señal PWM enviada al motor determinará la posición del eje.
Para controlar el motor, simplemente puede usar las capacidades PWM del ESP32 enviando una señal de 50Hz con el ancho de pulso apropiado. O puede usar una biblioteca para hacer esta tarea mucho más simple.
Libreria Servo compatible con esp32 —>ServoESP32-master
Caracteristicas del módulo ESP32-T
Conectividad
El módulo ESP32 dispone de todas las variantes del WiFi:
- 802.11 b/g/n/e/i/n
- Wi-Fi Direct (P2P), P2P Discovery, P2P Group Owner mode and P2P Power Management
Esta versión nueva incluye la conectividad mediante Bluethoot de bajo consumo
- Bluetooth v4.2 BR/EDR and BLE
- BLE Beacon
Además, puede comunicarse mediante los protocoles SPI, I2C, UART, MAC Ethernet, Host SD
Prestaciones del microcontrolador
La CPU está formado por un SoC modelo Tensilica LX6 con las siguientes características y memoria
- Doble núcleo de 32 bits con velocidad de 160MHz
- Memoria ROM de 448 kBytes
- Memoria SRAM de 520kBytes
Dispne de 48 Pines
- 18 ADC de 12 bits
- 2 DAC de 8 bits
- 10 pines sensores de contacto
- 16 PWM
- 20 Entradas/salidas digitales
Alimentación y modos de consumo
Para un correcto funcionamiento del ESP32 es necesario subministrar un voltaje de entre 2,8V y 3,6V. La energía que consume depende del modo de funcionamiento. Contiene un modo, el Ultra Low Power Solution (ULP), en que se continúan realizando tareas básicas (ADC, RTC…) en el modo Sleep.
ESP8266 versus ESP32
Pin Out
Código Fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
//Librerias para el uso del proyecto #include <WiFi.h> #include <Servo.h> Servo servoMotor1; const char* ssid = "xxxx"; const char* password = "xxxx"; WiFiServer server(80);//Puerto 80 usado en el navegador web void setup() { Serial.begin(115200);//Velocidad de configuración del puerto serial servoMotor1.attach(5);//Pin número 5 del esp32 para conectar la señal de control del servo pinMode(2, OUTPUT); delay(10); // Comenzamos conectándonos a una red WiFi Serial.print("Conectando a "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("Conectado a red Wifi."); Serial.println("Dirección IP "); Serial.println(WiFi.localIP()); server.begin(); digitalWrite(2, HIGH);//Enciende un led cuando el módulo esp32 se conecta a la re wifi } int value = 0; void loop(){ WiFiClient client = server.available(); // Escuchando a los clientes entrantes if (client) { // Si hay un cliente, Serial.println("Nuevo cliente"); // Imprime un mensaje en el puerto serie String currentLine = ""; // String para contener datos entrantes del cliente while (client.connected()) { // Bucle mientras el cliente está conectado if (client.available()) { // Si hay bytes para leer del cliente, char c = client.read(); // Lee un caracter Serial.write(c); // Lo imprimimos en el monitor serial if (c == '\n') { // Si el byte es un carácter de nueva línea if (currentLine.length() == 0) { client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println(); // Contenido HTML si lo vemos en el navegador //------------------------------------------------------------------------------------------- client.print("Click <a href=\"/ABRIR\">Abrir</a> Para Abrir la puerta.<br>"); client.print("Click <a href=\"/CERRAR\">Cerrar</a> Para Cerrar la puerta.<br>"); //------------------------------------------------------------------------------------------- client.println(); // Salir del ciclo while: break; } else { // si tienes una nueva línea, borra currentLine: currentLine = ""; } } else if (c != '\r') { currentLine += c; } //----------------------- if (currentLine.endsWith("GET /ABRIR")) {//Posición del servo para abrir la puerta servoMotor1.write(110); } if (currentLine.endsWith("GET /CERRAR")) {//Posición del servo para abrir la puerta servoMotor1.write(180); } //----------------------- } } // Cierra la conexión client.stop(); Serial.println("Cliente desconectado"); } } |
Archivos stl del actuador lineal para servo sg90
Aplicación en app inventor para movil android
Descargar de aplicación y archivo fuente
SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO
[wysija_form id=”1″]
VIDEO RECOMENDADO
Hola amigo, disculpa quiero descargar el archivo stl del servomotor pero no me deja, espero me puedas ayudar, gracias.