Hacer pulsar un bot贸n y que haga una llamda a una URL (Arduino Uno + ESP8266).

Hola muy buenas, hace cosa de un par de semanas que estoy engorilado con Arduino UNO, me ha enganchado mucho, pero como no tengo varias dudas :stuck_out_tongue:

Estoy intentando desarrollar un proyecto personal, simple, pero en el que necesito algo de gu铆a y por eso acudo a vosotros cracks!

La idea es que al pulsar un bot贸n, hacer una llamada a una URL, conectando Arduino UNO a una wifi mediante el m贸dulo ESP8266

Actualmente tengo:

  • Arduino UNO
  • M贸dulo ESP8266
  • Circuito de bot贸n con resistencia.

El circuito del bot贸n lo tengo montado, he conectado el m贸dulo ESP8266 y interactuo con 茅l mediante comandos AT conectandome a la WiFi de casa etc..

Ahora las dudas que tengo:

  • C贸mo hago que Arduino se conecte autom谩ticamente a la WiFi.

  • Una vez Arduino se conecta autom谩ticamente a la WiFi, hacer que se mantenga conectado y reconecte si hay alguna desconexi贸n.

  • Y por 煤ltimo, que librer铆a necesito para poder hacer una llamada a una URL y en el caso de que la conexi贸n haya sido correcta encender un LED.

Es una pr谩ctica muy b谩sica pero creo que recoge bastantes puntos diversos y b谩sicos para operar con Arduino, internet y alguna API externa.

De este modo, otros que tienen estas dudas iniciales encontraran un ejemplo.

Agradecer todas las aportaciones que hac茅is al foro, es genial.

Abrazo.

Mira los tutoriales de ESP8266 de Jopapa en DOCUMENTACION de este foro.

surbyte:
Mira los tutoriales de ESP8266 de Jopapa en DOCUMENTACION de este foro.

Los he mirado, y voy controlando el tema, pero, me surgen algunas dudas de cosas especificas que con arduino uno no funcionan y me traen loco..

el "find("ready") " por ejemplo no funciona correctamente, ya que el m贸dulo de ESP8266 que tengo al conectarlo no devuelve un "ready"...

Por lo cual, no se con que funci贸n evaluar si arduino est谩 "ok" para proseguir con las comparaciones.

Qu茅 forma de evaluar esto utiliz谩is? Gracias.

Comprueba que el firmware de tu ESP8266 sea el mismo que en el tutorial.

La versi贸n del Firmware es la 0018000902-AI03

Os indico como va procediendo mi c贸digo: (Con el que tengo algunos problemas de control de eventos / disparadores / stoppers)

Algunas funciones las he ido adaptando de trozos de c贸digo que he ido encontrando por el foro.

#include <SoftwareSerial.h>

#define debug
#define SSID "MYWIFI-ID"
#define PASSWORD "MYWIFI-PASS"

SoftwareSerial ESPserial(2, 3); // RX - TX

boolean connectWiFi(){
聽 char evalua[3] = "OK";
聽 
聽 ESPserial.println("AT+CWMODE=1");
聽 String cmd="AT+CWJAP=\"";
聽 cmd+=SSID;
聽 cmd+="\",\"";
聽 cmd+=PASSWORD;
聽 cmd+="\"";
聽 
聽 ESPserial.println(cmd);
聽 delay(2000);
聽 if(ESPserial.find(evalua)){
聽 聽 Serial.println("Conectado a WiFi!");
聽 聽 ESPserial.println("AT+CWMODE=3");
聽 聽 ESPserial.println("AT+CIPMUX=1");
聽 聽 
聽 聽 return true;}
聽 else{
聽 聽 Serial.println("No puede conectar a WiFi");
聽 聽 return false;}
}

void setup()
{
聽 Serial.begin(9600); //communication with the host computer
聽 ESPserial.begin(9600);
聽 ESPserial.println("AT+RST");
聽 
聽 
聽 
聽 聽 Serial.println("------------------");
聽 聽 Serial.println("Modulo preparado");
聽 聽 Serial.println("------------------");
聽 
聽 聽 delay(800);
聽 
聽 聽 boolean connected=false;
聽 聽 
聽 聽 for(int i=0;i<6;i++)
聽 聽 {
聽 聽 聽 if(connectWiFi())
聽 聽 聽 {
聽 聽 聽 聽 connected = true;
聽 聽 聽 聽 break;
聽 聽 聽 }
聽 聽 }
}

void loop()
{
聽 if(ESPserial.available()){Serial.write(ESPserial.read());}

聽 if(Serial.available()){ESPserial.write(Serial.read());}
}

En 茅sta parte del c贸digo al evaluar "OK" para saber si se ha conectado a la WIFI no me funciona correctamente ya que parece ser que el m贸dulo evalua el OK m谩s r谩pido de lo que tarda en conectarse...

El m贸dulo ESP8266 con el firmware 0018000902-AI03

Al conectarlo, no me printa un "ready" hasta que no le ejecuto el comando "AT+RST", que seguramente ser铆a la forma adecuada de hacer un eval()... pero creo que me estoy liando con el tema de los "tempos" para gestionar bien las comparaciones entre c贸digo y lo que printa el puerto...

Como veis tengo un peque帽o lio al respecto. Agradecer铆a cualquier tipo de ayuda / aclaraci贸n.

Gracias!