documentacion-proceso:tecnologicos:taller-esp8266
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previaPróxima revisiónAmbos lados, revisión siguiente | ||
documentacion-proceso:tecnologicos:taller-esp8266 [2016/03/12 05:41] – [Registro] brolin | documentacion-proceso:tecnologicos:taller-esp8266 [2016/03/12 06:19] – [Relevo wifi] brolin | ||
---|---|---|---|
Línea 164: | Línea 164: | ||
{{: | {{: | ||
- | ===== 4. Ejemplo | + | ===== 4. Ejemplos ===== |
+ | |||
+ | ==== LED-Blink ==== | ||
El builtin led para el ESP-12 no es el mismo que está definido dentro del código de arduino. Se debe renombrar esta variable y usar el **pin 2**. A continuación se muestra el código probado con la modificación mencionada. | El builtin led para el ESP-12 no es el mismo que está definido dentro del código de arduino. Se debe renombrar esta variable y usar el **pin 2**. A continuación se muestra el código probado con la modificación mencionada. | ||
Línea 196: | Línea 198: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | ==== Relevo wifi ==== | ||
+ | |||
+ | La idea es programar el ESP8266 para que de manera remota a través de una petición a un servidor web que se crea dentro del chip se encienda o se apage un pin. El código a continuación es tomado del ejemplo **WifiWebServer** de Arduino para ESP8266. Probamos usando el **pin GPIO2** para activar el relevo pero presentaba problemas con la conexión a la red. Lo cambiamos para el **pin GPIO4** | ||
+ | |||
+ | <code c> | ||
+ | /* | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | */ | ||
+ | |||
+ | #include < | ||
+ | |||
+ | const char* ssid = " | ||
+ | const char* password = " | ||
+ | |||
+ | // Create an instance of the server | ||
+ | // specify the port to listen on as an argument | ||
+ | WiFiServer server(80); | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(115200); | ||
+ | delay(10); | ||
+ | |||
+ | // prepare GPIO2 | ||
+ | pinMode(4, OUTPUT); | ||
+ | digitalWrite(4, | ||
+ | | ||
+ | // Connect to WiFi network | ||
+ | Serial.println(); | ||
+ | Serial.println(); | ||
+ | Serial.print(" | ||
+ | Serial.println(ssid); | ||
+ | | ||
+ | WiFi.begin(ssid, | ||
+ | | ||
+ | while (WiFi.status() != WL_CONNECTED) { | ||
+ | delay(500); | ||
+ | Serial.print(" | ||
+ | } | ||
+ | Serial.println("" | ||
+ | Serial.println(" | ||
+ | | ||
+ | // Start the server | ||
+ | server.begin(); | ||
+ | Serial.println(" | ||
+ | |||
+ | // Print the IP address | ||
+ | Serial.println(WiFi.localIP()); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // Check if a client has connected | ||
+ | WiFiClient client = server.available(); | ||
+ | if (!client) { | ||
+ | return; | ||
+ | } | ||
+ | | ||
+ | // Wait until the client sends some data | ||
+ | Serial.println(" | ||
+ | while(!client.available()){ | ||
+ | delay(1); | ||
+ | } | ||
+ | | ||
+ | // Read the first line of the request | ||
+ | String req = client.readStringUntil(' | ||
+ | Serial.println(req); | ||
+ | client.flush(); | ||
+ | | ||
+ | // Match the request | ||
+ | int val; | ||
+ | if (req.indexOf("/ | ||
+ | val = 0; | ||
+ | else if (req.indexOf("/ | ||
+ | val = 1; | ||
+ | else { | ||
+ | Serial.println(" | ||
+ | client.stop(); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | // Set GPIO2 according to the request | ||
+ | digitalWrite(4, | ||
+ | | ||
+ | client.flush(); | ||
+ | |||
+ | // Prepare the response | ||
+ | String s = " | ||
+ | s += (val)?" | ||
+ | s += "</ | ||
+ | |||
+ | // Send the response to the client | ||
+ | client.print(s); | ||
+ | delay(1); | ||
+ | Serial.println(" | ||
+ | |||
+ | // The client will actually be disconnected | ||
+ | // when the function returns and ' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | {{https:// | ||
+ | |||