        <style>
            #donation_buttons td{
                border:medium none;
                background: inherit !important;
            }
            #donation_buttons table{               
                border:medium none;
                margin: auto;
                width: auto;
            }
        </style>
        {"id":5500,"date":"2020-04-09T23:27:56","date_gmt":"2020-04-09T23:27:56","guid":{"rendered":"http:\/\/rogerbit.com\/wprb\/?p=5500"},"modified":"2020-04-09T23:27:56","modified_gmt":"2020-04-09T23:27:56","slug":"como-hacer-un-pestillo-electronico-con-esp32-y-actuador-lineal-para-servo","status":"publish","type":"post","link":"https:\/\/rogerbit.com\/wprb\/2020\/04\/como-hacer-un-pestillo-electronico-con-esp32-y-actuador-lineal-para-servo\/","title":{"rendered":"Como hacer un pestillo electr\u00f3nico con esp32 y actuador lineal para servo"},"content":{"rendered":"<p><iframe loading=\"lazy\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/t9cf2tj02VQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<p>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\u00e9n el c\u00f3digo fuente. Todo este proyecto lo controlaremos a traves de wifi y una aplicaci\u00f3n para andprid hecha en app inventor, aunque tambi\u00e9n, 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\u00f1o como sg90, puede alimentarlo directamente desde el ESP32.<\/p>\n<h4>Conexi\u00f3n del servomotor al ESP32 (circuito electr\u00f3nico)<\/h4>\n<p data-slot-rendered-dynamic=\"true\">Los servomotores tienen tres cables: alimentaci\u00f3n, tierra y se\u00f1al.\u00a0El de 5 voltios suele ser rojo, el GND es negro o marr\u00f3n, y el cable de se\u00f1al puede ser amarillo, naranja o tambi\u00e9n\u00a0blanco.<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>Cable<\/strong><\/td>\n<td><strong>Color<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Poder<\/td>\n<td>rojo<\/td>\n<\/tr>\n<tr>\n<td>GND<\/td>\n<td>Negro o marr\u00f3n<\/td>\n<\/tr>\n<tr>\n<td>Se\u00f1al<\/td>\n<td>Amarillo, naranja o blanco<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Cuando un servo peque\u00f1o como el SG90 como se muestra en la figura a continuaci\u00f3n, puede alimentarlo directamente desde el ESP32.<\/p>\n<p>En este nuestro ejemplo, conectaremos el cable de se\u00f1al a\u00a0<span class=\"rnthl rntcorange\">GPIO 5<\/span>\u00a0.\u00a0Entonces, puedes seguir el siguiente diagrama esquem\u00e1tico para cablear este circuito.<\/p>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/cerradura_esp32_servo_actuador_lineal.jpg\"><img loading=\"lazy\" class=\"alignnone wp-image-5502\" src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/cerradura_esp32_servo_actuador_lineal-939x1024.jpg\" alt=\"\" width=\"597\" height=\"651\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/cerradura_esp32_servo_actuador_lineal-939x1024.jpg 939w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/cerradura_esp32_servo_actuador_lineal-275x300.jpg 275w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/cerradura_esp32_servo_actuador_lineal-768x837.jpg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/cerradura_esp32_servo_actuador_lineal-600x654.jpg 600w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/cerradura_esp32_servo_actuador_lineal-820x894.jpg 820w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/cerradura_esp32_servo_actuador_lineal-1320x1439.jpg 1320w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/cerradura_esp32_servo_actuador_lineal.jpg 1687w\" sizes=\"(max-width: 597px) 100vw, 597px\" \/><\/a><\/p>\n<p><b>icas de Servo SG90 Tower Pro<\/b><\/p>\n<ul>\n<li>Dimensiones (L x W xH) = 22.0 x 11.5 x 27 mm (0.86 x 0.45 x 1.0 pulgadas)<\/li>\n<li>Peso: 9 gramos<\/li>\n<li>Peso con cable y conector: 10.6 gramos<\/li>\n<li>Torque a 4.8 volts: 16.7 oz\/in o 1.2 kg\/cm<\/li>\n<li>Voltaje de operaci\u00f3n: 4.0 a 7.2 volts<\/li>\n<li>Velocidad de giro a 4.8 volts: 0.12 seg \/ 60 \u00ba<\/li>\n<li>Conector universal para la mayor\u00eda de los receptores de radio control<\/li>\n<li>Compatible con tarjetas como Arduino y microcontroladores que funcionan a 5 volts.<\/li>\n<\/ul>\n<p><img src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2016\/03\/sg90.jpeg\" alt=\"sg90\" \/><\/p>\n<h2>\u00bfC\u00f3mo controlar un servomotor?<\/h2>\n<p>Puede colocar el eje del servo en varios \u00e1ngulos de 0 a 180\u00ba.\u00a0Los servos se controlan utilizando una se\u00f1al de modulaci\u00f3n de ancho de pulso (PWM).\u00a0Esto significa que la se\u00f1al PWM enviada al motor determinar\u00e1 la posici\u00f3n del eje.<\/p>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/180.jpg\"><img loading=\"lazy\" class=\"alignnone wp-image-5504\" src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/180.jpg\" alt=\"\" width=\"309\" height=\"238\" \/><\/a><\/p>\n<p data-slot-rendered-dynamic=\"true\">Para controlar el motor, simplemente puede usar las capacidades PWM del ESP32 enviando una se\u00f1al de 50Hz con el ancho de pulso apropiado.\u00a0O puede usar una biblioteca para hacer esta tarea mucho m\u00e1s simple.<\/p>\n<p data-slot-rendered-dynamic=\"true\">Libreria Servo compatible con esp32 &#8212;&gt;<a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/ServoESP32-master.zip\">ServoESP32-master<\/a><\/p>\n<h4>Caracteristicas del m\u00f3dulo ESP32-T<\/h4>\n<h3>Conectividad<\/h3>\n<hr \/>\n<p>El m\u00f3dulo ESP32 dispone de todas las variantes del\u00a0<strong>WiFi<\/strong>:<\/p>\n<ul>\n<li>802.11 b\/g\/n\/e\/i\/n<\/li>\n<li>Wi-Fi Direct (P2P), P2P Discovery, P2P Group Owner mode and P2P Power Management<\/li>\n<\/ul>\n<p>Esta versi\u00f3n nueva incluye la conectividad mediante<strong>\u00a0Bluethoot<\/strong>\u00a0de bajo consumo<\/p>\n<ul>\n<li>Bluetooth v4.2 BR\/EDR and BLE<\/li>\n<li>BLE Beacon<\/li>\n<\/ul>\n<p>Adem\u00e1s, puede comunicarse mediante los protocoles<strong>\u00a0SPI, I2C, UART, MAC Ethernet, Host SD<\/strong><\/p>\n<h3>Prestaciones\u00a0del microcontrolador<\/h3>\n<hr \/>\n<p>La\u00a0<strong>CPU<\/strong>\u00a0est\u00e1 formado por un\u00a0<strong>SoC modelo Tensilica LX6<\/strong>\u00a0con las siguientes caracter\u00edsticas\u00a0y memoria<\/p>\n<ul>\n<li>Doble n\u00facleo de 32 bits con velocidad de 160MHz<\/li>\n<li>Memoria ROM de 448 kBytes<\/li>\n<li>Memoria SRAM de 520kBytes<\/li>\n<\/ul>\n<p>Dispne de<strong>\u00a048 Pines<\/strong><\/p>\n<ul>\n<li>18 ADC de 12 bits<\/li>\n<li>2 DAC de 8 bits<\/li>\n<li>10 pines sensores de contacto<\/li>\n<li>16 PWM<\/li>\n<li>20 Entradas\/salidas digitales<\/li>\n<\/ul>\n<h3>Alimentaci\u00f3n y modos de consumo<\/h3>\n<hr \/>\n<p>Para un correcto funcionamiento del ESP32 es necesario subministrar un voltaje de entre 2,8V y 3,6V. La energ\u00eda que consume depende del modo de funcionamiento. Contiene un modo, el\u00a0<strong>Ultra Low Power Solution (ULP)<\/strong>, en que se contin\u00faan realizando tareas b\u00e1sicas (ADC, RTC\u2026) en el modo Sleep.<\/p>\n<h4>ESP8266 versus ESP32<\/h4>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/1.gif\"><img loading=\"lazy\" class=\"alignnone wp-image-2359\" src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/1-300x181.gif\" sizes=\"(max-width: 597px) 100vw, 597px\" srcset=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/1-300x181.gif 300w, http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/1-600x363.gif 600w\" alt=\"\" width=\"597\" height=\"360\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/2.gif\"><img loading=\"lazy\" class=\"alignnone wp-image-2361\" src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/2-300x297.gif\" sizes=\"(max-width: 593px) 100vw, 593px\" srcset=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/2-300x297.gif 300w, http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/2-600x595.gif 600w\" alt=\"\" width=\"593\" height=\"587\" \/><\/a><\/p>\n<h4>Pin Out<\/h4>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/esp32pinout.jpg\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-2363\" src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/esp32pinout-227x300.jpg\" sizes=\"(max-width: 227px) 100vw, 227px\" srcset=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/esp32pinout-227x300.jpg 227w, http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/esp32pinout.jpg 471w\" alt=\"\" width=\"227\" height=\"300\" \/><\/a><\/p>\n<h5>C\u00f3digo Fuente<\/h5>\n<pre class=\"lang:default decode:true\" title=\"C\u00f3digo Fuente\">\/\/Librerias para el uso del proyecto\r\n#include &lt;WiFi.h&gt;\r\n#include &lt;Servo.h&gt;\r\nServo servoMotor1; \r\nconst char* ssid     = \"xxxx\";\r\nconst char* password = \"xxxx\";\r\nWiFiServer server(80);\/\/Puerto 80 usado en el navegador web\r\nvoid setup()\r\n{\r\n    Serial.begin(115200);\/\/Velocidad de configuraci\u00f3n del puerto serial\r\n    servoMotor1.attach(5);\/\/Pin n\u00famero 5 del esp32 para conectar la se\u00f1al de control del servo\r\n    pinMode(2, OUTPUT);\r\n    delay(10);\r\n    \/\/ Comenzamos conect\u00e1ndonos a una red WiFi\r\n    Serial.print(\"Conectando a \");\r\n    Serial.println(ssid);\r\n    WiFi.begin(ssid, password);\r\n    while (WiFi.status() != WL_CONNECTED) {\r\n        delay(500);\r\n        Serial.print(\".\");\r\n    }\r\n    Serial.println(\"\");\r\n    Serial.println(\"Conectado a red Wifi.\");\r\n    Serial.println(\"Direcci\u00f3n IP \");\r\n    Serial.println(WiFi.localIP());  \r\n    server.begin();\r\n    digitalWrite(2, HIGH);\/\/Enciende un led cuando el m\u00f3dulo esp32 se conecta a la re wifi\r\n}\r\nint value = 0;\r\nvoid loop(){\r\n WiFiClient client = server.available();   \/\/ Escuchando a los clientes entrantes\r\n  if (client) {                             \/\/ Si hay un cliente,\r\n    Serial.println(\"Nuevo cliente\");        \/\/ Imprime un mensaje en el puerto serie\r\n    String currentLine = \"\";                \/\/ String para contener datos entrantes del cliente\r\n    while (client.connected()) {            \/\/ Bucle mientras el cliente est\u00e1 conectado\r\n      if (client.available()) {             \/\/ Si hay bytes para leer del cliente,\r\n        char c = client.read();             \/\/ Lee un caracter\r\n        Serial.write(c);                    \/\/ Lo imprimimos en el monitor serial\r\n        if (c == '\\n') {                    \/\/ Si el byte es un car\u00e1cter de nueva l\u00ednea        \r\n          if (currentLine.length() == 0) {\r\n            client.println(\"HTTP\/1.1 200 OK\");\r\n            client.println(\"Content-type:text\/html\");\r\n            client.println();\r\n\r\n            \/\/ Contenido HTML si lo vemos en el navegador\r\n\/\/-------------------------------------------------------------------------------------------\r\n            client.print(\"Click &lt;a href=\\\"\/ABRIR\\\"&gt;Abrir&lt;\/a&gt; Para Abrir la puerta.&lt;br&gt;\");\r\n            client.print(\"Click &lt;a href=\\\"\/CERRAR\\\"&gt;Cerrar&lt;\/a&gt; Para Cerrar la puerta.&lt;br&gt;\");\r\n\/\/-------------------------------------------------------------------------------------------\r\n             client.println();\r\n            \/\/ Salir del ciclo while:\r\n            break;\r\n          } else {    \/\/ si tienes una nueva l\u00ednea, borra currentLine:\r\n            currentLine = \"\";\r\n          }\r\n        } else if (c != '\\r') {  \r\n          currentLine += c;      \r\n        }\r\n        \/\/-----------------------\r\n        if (currentLine.endsWith(\"GET \/ABRIR\")) {\/\/Posici\u00f3n del servo para abrir la puerta\r\n          servoMotor1.write(110);            \r\n        }\r\n        if (currentLine.endsWith(\"GET \/CERRAR\")) {\/\/Posici\u00f3n del servo para abrir la puerta\r\n          servoMotor1.write(180);           \r\n        }\r\n        \/\/-----------------------\r\n      }\r\n    }\r\n    \/\/ Cierra la conexi\u00f3n\r\n    client.stop();\r\n    Serial.println(\"Cliente desconectado\");\r\n  }\r\n}<\/pre>\n<p>Archivos stl del actuador lineal para servo sg90<\/p>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/Actuador-lineal-servo-stl.zip\">Actuador lineal servo stl<\/a><\/p>\n<h4>Aplicaci\u00f3n en app inventor para movil android<\/h4>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/app_inventor.jpg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-5508\" src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/app_inventor.jpg\" alt=\"\" width=\"411\" height=\"960\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/app_inventor.jpg 411w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/app_inventor-128x300.jpg 128w\" sizes=\"(max-width: 411px) 100vw, 411px\" \/><\/a><\/p>\n<h4>Descargar de aplicaci\u00f3n y archivo fuente<\/h4>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/04\/cerradura_con_servo_esp32.zip\">cerradura_con_servo_esp32<\/a><\/p>\n<hr \/>\n<p>SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS M\u00c1S DESTACADAS, S\u00d3LO INGRESANDO TU CORREO ELECTR\u00d3NICO<\/p>\n<p>[wysija_form id=&#8221;1&#8243;]<\/p>\n<hr \/>\n<div class=\"page-sidebar widget\" id=\"donation_buttons\"><form action=\"https:\/\/www.paypal.com\/cgi-bin\/webscr\" method=\"post\" target=\"_blank\" ><input type=\"hidden\" name=\"business\" value=\"donacion@rogerbit.com\"><input type=\"hidden\" name=\"bn\" value=\"mbjtechnolabs_SP\"><input type=\"hidden\" name=\"cmd\" value=\"_donations\"><input type=\"hidden\" name=\"item_name\" value=\"Ayuda a RogerBit.com\"><input type=\"hidden\" name=\"item_number\" value=\"www.rogerbit.com\"><input type=\"hidden\" class=\"set_donation_button_amount\" name=\"amount\" value=\"1\"><table ><tbody><tr><td><label for=\"rogerBit necesita de tu ayuda para seguir existiendo :-)\">rogerBit necesita de tu ayuda para seguir existiendo :-)<\/label><\/td><\/tr><\/tbody><\/table><table ><tbody><tr><td><input style=\"margin-top:10px;\" type=\"image\" name=\"submit\" border=\"0\" src=\"https:\/\/www.paypal.com\/en_US\/i\/btn\/btn_donateCC_LG.gif\" alt=\"PayPal - The safer, easier way to pay online\"><\/td><\/tr><\/tbody><\/table><input type=\"hidden\" name=\"currency_code\" value=\"USD\"><input type=\"hidden\" name=\"notify_url\" value=\"https:\/\/rogerbit.com\/wprb\/?Donation_Button&#038;action=ipn_handler\"><\/form><\/div>\n<hr \/>\n<p><strong>VIDEO RECOMENDADO<\/strong><\/p>\n<p><iframe loading=\"lazy\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/XT_Dg-tzdOo?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<p>&nbsp;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>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\u00e9n el c\u00f3digo fuente. Todo este proyecto lo controlaremos a traves de wifi y una aplicaci\u00f3n para andprid hecha en app inventor, aunque tambi\u00e9n, se puede [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":5511,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[11],"tags":[],"_links":{"self":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/5500"}],"collection":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/comments?post=5500"}],"version-history":[{"count":5,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/5500\/revisions"}],"predecessor-version":[{"id":5512,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/5500\/revisions\/5512"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/media\/5511"}],"wp:attachment":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/media?parent=5500"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/categories?post=5500"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/tags?post=5500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}