Hola en este tutorial veremos como encender hasta 8 focos de 110v a 220v, con el módulo esp32 y un módulo relay de 8 canales.
Se incluye el circuito eléctrico y también el código fuente completo para que puedas modificar y mejorar tanto el skech como la aplicación en app inventor.
Este módulo esp32 ha sido gentileza de www.banggood.com
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
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
ESP32 pinout
Circuito
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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
#include <WiFi.h> const char* ssid = "xxxxxx"; const char* password = "xxxxxx"; WiFiServer server(80); void setup() { Serial.begin(115200); // Seteamos estos pines como salida pinMode(16, OUTPUT); pinMode(5, OUTPUT); pinMode(4, OUTPUT); pinMode(2, OUTPUT); pinMode(14, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); pinMode(15, OUTPUT); //Y los ponemos en alto digitalWrite(16, HIGH); digitalWrite(5, HIGH); digitalWrite(4, HIGH); digitalWrite(2, HIGH); digitalWrite(14, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); digitalWrite(15, HIGH); delay(10); // Comenzamos conectándonos a una red WiFi Serial.println(); Serial.println(); 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(); } 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 client.print("Click <a href=\"/E16\">Encender</a> Para Encender led 16.<br>"); client.print("Click <a href=\"/A16\">Apagar</a> Para Apagar led 16.<br>"); //------------------------------------------------------------------------------------------- client.print("Click <a href=\"/E5\">Encender</a> Para Encender led 5.<br>"); client.print("Click <a href=\"/A5\">Apagar</a> Para Apagar led 5.<br>"); //------------------------------------------------------------------------------------------- client.print("Click <a href=\"/E4\">Encender</a> Para Encender led 4.<br>"); client.print("Click <a href=\"/A4\">Apagar</a> Para Apagar led 4.<br>"); //------------------------------------------------------------------------------------------- client.print("Click <a href=\"/E2\">Encender</a> Para Encender led 2.<br>"); client.print("Click <a href=\"/A2\">Apagar</a> Para encender led 2.<br>"); //------------------------------------------------------------------------------------------- client.print("Click <a href=\"/E14\">Encender</a> Para Encender led 14.<br>"); client.print("Click <a href=\"/A14\">Apagar</a> Para Apagar led 14.<br>"); //------------------------------------------------------------------------------------------- client.print("Click <a href=\"/E12\">Encender</a> Para Encender led 12.<br>"); client.print("Click <a href=\"/A12\">Apagar</a> Para Apagar led 12.<br>"); //------------------------------------------------------------------------------------------- client.print("Click <a href=\"/E13\">Encender</a> Para Encender led 13.<br>"); client.print("Click <a href=\"/A13\">Apagar</a> Para Apagar led 13.<br>"); //------------------------------------------------------------------------------------------- client.print("Click <a href=\"/E15\">Encender</a> Para Encender led 15.<br>"); client.print("Click <a href=\"/A15\">Apagar</a> Para Apagar led 15.<br>"); client.println(); // Salir del ciclo while: break; } else { // si tienes una nueva línea, borra currentLine: currentLine = ""; } } else if (c != '\r') { currentLine += c; } // Verifica si la solicitud del cliente fue "GET /E" de encendido o "GET /A de apagado": if (currentLine.endsWith("GET /A16")) { digitalWrite(16, HIGH); } if (currentLine.endsWith("GET /E16")) { digitalWrite(16, LOW); } //----------------------- if (currentLine.endsWith("GET /A5")) { digitalWrite(5, HIGH); } if (currentLine.endsWith("GET /E5")) { digitalWrite(5, LOW); } //----------------------- if (currentLine.endsWith("GET /A4")) { digitalWrite(4, HIGH); } if (currentLine.endsWith("GET /E4")) { digitalWrite(4, LOW); } //----------------------- if (currentLine.endsWith("GET /A2")) { digitalWrite(2, HIGH); } if (currentLine.endsWith("GET /E2")) { digitalWrite(2, LOW); } //----------------------- if (currentLine.endsWith("GET /A14")) { digitalWrite(14, HIGH); } if (currentLine.endsWith("GET /E14")) { digitalWrite(14, LOW); } //----------------------- if (currentLine.endsWith("GET /A12")) { digitalWrite(12, HIGH); } if (currentLine.endsWith("GET /E12")) { digitalWrite(12, LOW); } //----------------------- if (currentLine.endsWith("GET /A13")) { digitalWrite(13, HIGH); } if (currentLine.endsWith("GET /E13")) { digitalWrite(13, LOW); } //----------------------- if (currentLine.endsWith("GET /A15")) { digitalWrite(15, HIGH); } if (currentLine.endsWith("GET /E15")) { digitalWrite(15, LOW); } } } // Cierra la conexión client.stop(); Serial.println("Cliente desconectado"); } } |
Aplicación en app inventor
Descargar app y archivo fuente
Descargar app y archivo fuente –>8_luces_esp32
Si aun no has instalado la tarjeta ESP32 en tu ide de arduino te recomiendo ver el sigueinte video:
Este módulo puedes adquirir en la página de bangood en el siguiente enlace:
ModuloESP32 OLED WiFi + Bluetooth
https://ban.ggood.vip/mbj
Tambien puedes adquires otros módulos y kit de review anterios:
Kit de 45 sensores para arduino
https://ban.ggood.vip/mbh
Kit generador de función con XR2206
https://ban.ggood.vip/mbl
Descarga la aplicación de Banggood
(para obtener 10% de descuento)
https://www.banggood.com/AppDownload.html?gasource=global-top-nav





