Naguissa escribió: ↑02 Mar 2018, 13:10
P.D.: Añade los otros dos includes que hablamos antes, el de server y el de client.
Hola Naguissa, al final he desistido de utilizar el ESP8266, no soy capaz de solucionar ese error, he probado de mil maneras, así que he vuelto al viejo Bluetooth.
Me he hecho una aplicación para Android, (de momento estoy con el HC-06), y funciona muy bien, (los botones no salen como en el APP inventor), me salen mas a la izquierda, pero funciona que es de lo que se trata a cambio puedo poner claves de los caracteres que quiera.
Esta es la imagen de la aplicacion en el APP Inventor, en mi movil salen los botones desplazados a la izquierda, si alguien lo sabe por favor que me lo diga.
Ya he conseguido que salgan centrados
Me falta implementar algunas cosas al código, y hacer pruebas de funcionamiento real, cosas que me funcionaban por separado, y que quiero poner poco a poco, por ejemplo que el SIM800 solo reaccione a un numero de teléfono determinado, que cuente los RING, para abrir una puerta exterior (comunitaria) y así no gastar saldo, etc....
Código: Seleccionar todo
[...]
#include <SoftwareSerial.h>
#include<EEPROM.h>
SoftwareSerial BTkeypad(2 , 4); // RX TX
SoftwareSerial SIM800(7, 8); // RX TX
char inicio_clave;
char clave1;
char clave2;
char clave3;
char clave4;
char clave5;
int relay = 13;
int relayState = 0;
int conta = 0;
String clave = "6BB65";
String claveA = "A3Cfj478";
//int relay1 = 12;
//int relayState1 = 0;
String readString;
String CODIGO1 = "6BB65"; // Clave que se cambia por SMS
String CODIGO2 = "A3Cfj478"; /* Clave de Seguridad
(cambiar por la que se quiera)*/
void setup() {
EEPROM.put(0,clave); //graba en la EEPROM la primera clave
delay(100);
EEPROM.put(8,claveA); //graba en la EEPROM la claveA de seguridad
delay(100);
Serial.begin(9600);
BTkeypad.begin(9600);
SIM800.begin(9600);
pinMode(relay, OUTPUT);
}
void Recibe_nueva_clave() {
inicio_clave=SIM800.read();
if (inicio_clave=='#'){ /* toda clave va seguido
del carácter # cambiar por el que mas les guste*/
//Serial.print("clave correcta");
//Serial.print("clave correcta");
clave1=SIM800.read();
clave2=SIM800.read();
clave3=SIM800.read();
clave4=SIM800.read();
clave5=SIM800.read();
clave += clave1;
clave += clave2;
clave += clave3;
clave += clave4;
clave += clave5;
}
else if (CODIGO1 != clave){
EEPROM.put (0, clave);
EEPROM.get (0, clave);
CODIGO1 = clave;
inicio_clave = "";
clave1 = "";
clave2 = "";
clave3 = "";
clave4 = "";
clave5 = "";
clave = "";
SIM800.print("OK"); /*envia a arduino OK
para un uso posterior*/
delay(100);
}
else {
SIM800.print("FAIL"); /*envia a arduino error
para un uso posterior*/
delay(100);
}
}
void loop() {
if(SIM800.available() > 0){
// funcion de recepcion de clave.
Recibe_nueva_clave();
}
relayState = digitalRead(relay);
while (BTkeypad.available()) {
delay(3);
char c = BTkeypad.read();
readString += c;
}
if (readString.length() >0) {
Serial.println(readString);
if (readString == CODIGO1) //codigo enviado por la aplicacion de Android
{
digitalWrite(relay, HIGH);
delay(3000); // Espera 3 segundos
digitalWrite(relay, LOW);
readString="";
conta=0;
}
else {conta++;
}
if (readString == CODIGO2) //comprueba si es el codigo de seguridad
{
digitalWrite(relay, HIGH);
delay(3000); //Espera 3 segundos
digitalWrite(relay, LOW);
readString="";
conta=0;
}
else {
conta++;
}
if (conta<7) {
Serial.println(conta);
delay(500);
readString="";
}
else if (conta>7) {
Serial.println(conta);
delay(100000); no deja meter mas codigos hasta que pasen 100 segundos
readString="";
conta=0;
}
}
}
[...]
Pongo una captura de pantalla, de las pruebas que estoy realizando.
Esto son pruebas con un Arduino Nano, un modulo SIM800, y un modulo HC-06, de momento reservo el Leonardo y el HC-10 para cuando funcione al 100%.
Saludos
PD. Si alguien está interesado en la apk, que me la pida por correo