Paso 5: El código
CÓDIGO:
Bueno veo ha llegado lejos, tienes una idea sobre el hardware, el esquema y el PCB, como caso muy bien. Ahora veamos la magia intangible que hace todo este trabajo.
Aquí escribimos el código en el código utilizando el IDE de Arduino para hacer NodeMCU trabajar con un relé, sensor de movimiento PIR y utilizar IOT plataforma carriots sobre WIFI
Chicos, que pasé un largo tiempo de problemas con este proyecto. había varios problemas. Voy a enumerar algunos de ellos para ayudarle a saltar quemando el aceite de la medianoche.
1) Compruebe que la NodeMCU de los pernos si están dando la entrada-salida correcto como están asumiendo, por ejemplo, permite decir que usted no está tomando el pin 4 (GPIO) como un pin de entrada. Ahora por defecto que este pin debe leer... bajo derecho Recuerde pero por alguna razón Lee alta incluso después de inicializar el pin de entrada. a prueba!!!! las consecuencias de las pruebas no son largos y no tan divertido.
2) utilizando un método directo de get y post HTTP en lugar de utilizar una función de visualización por BLYNK o Thinger.io. Mi profundo respeto a estos chicos para la construcción de plataformas y servicios increíbles.
Mis 2 centavos: la razón es que el PIR salida permanece alta durante un par de envíos y usted necesita traer retraso es necesario para evitar el envío de múltiples correos electrónicos. con algunos servicios como BLYNK este retraso causa un problema. como es necesaria para llamar a esa función una vez es de 6 o 7 seg. Esta es mi experiencia, puedo equivocarme.
3) una vez satisface la condición de if loop, llamar a una función, en lugar de escribir todo con el lazo. Esto aporta claridad del código y ayuda en la resolución de problemas. Otra vez este es mi sentimiento.
Usted podría ajustar la sensibilidad del PIR para reducir el tiempo que permanece alta. algo que usted puede considerar...
Diviértete haciendo este dispositivo de Internet...
escrito por Junaid Ahmed
Este es un software libre, protegido por la licencia de creative commons
Esto es para como utilizar y puede haber otros problemas y errores.
#include
#include "ESP8266WiFi.h"
const char * ssid = "NETGXXXXX";
const char * clave = "XXXXXXXXX";
const char * servidor = "api.carriots.com";
const String APIKEY = "1e2f6920a92e3ca079bf60329d7871d69b3881df88df9b2c44eXXXXXXXXXX"; Sustituir con su apikey Carriots
DISPOSITIVO de cadena const = "luz / / reemplazar con el id_developer del dispositivo
int ledpin = 4;
pirpin INT = 12;
int pirstate = bajo;
int val = 0;
void setup() {}
Serial.Begin(115200);
Delay(10);
pinMode(ledpin,OUTPUT);
pinMode(pirpin,INPUT);
Serial.println("calibrating");
para (int i = 0; i < 20; i ++) {}
Serial.Print(".");
Delay(1000);
}
iniciar wifi
Serial.println();
Serial.println();
Serial.Print ("conectarse");
Serial.println(SSID);
WiFi.begin (ssid, contraseña);
mientras que (WiFi.status()! = WL_CONNECTED) {}
Delay(500);
Serial.Print(".");
}
Serial.println("");
Serial.println ("Wi-Fi conectado");
Serial.println ("dirección IP:");
Serial.println(WiFi.localIP());
}
función para hablar con la plataforma Carriot
void sendStream()
{
String txt = ""; Texto para enviar
Si (pirstate == HIGH) {/ / alarma
txt = "Detecta movimiento;"
} else {/ / alarma en
txt = "Algo mal";
}
Serial.println(txt);
Serial.println(Val); / / para fines de depuración
Cliente WiFiClient;
const int httpPort = 80;
Si (client.connect (servidor, 80)) {/ / si hay una conexión exitosa
Serial.println(F("Connected"));
Construir el campo de datos
String json = "{\"protocol\":\"v2\",\"device\":\""+DEVICE+"\",\"at\":\"now\",\"data\":{\"light\":\""+txt+"\ "}}";
Realizar una solicitud HTTP
Client.println ("POST /streams HTTP/1.1");
Client.println ("Host: api.carriots.com");
Client.println ("Accept: aplicación/json");
Client.println ("User-Agent: Arduino-Carriots");
Client.println ("Content-Type: aplicación/json");
Client.Print ("carriots.apikey:");
Client.println(APIKEY);
Client.Print ("Content-Length:");
int thisLength = json.length();
Client.println(thisLength);
Client.println ("conexión: cerrar");
Client.println();
Client.println(JSON);
}
Else {}
Si no tienes una conexión con el servidor:
Serial.println (F ("Conexión fallida"));
}
}
void loop() {}
Val = digitalRead(pirpin);
Serial.println(Val);
if(Val == High) {}
digitalWrite(ledpin,HIGH);
Si (pirstate == LOW) {}
Serial.println ("movimiento detectado");
pirstate = alto;
Serial.println (F ("secuencia de enviar"));
sendStream();
Delay(30000);
}
/ * {while(client.available())}
String linea = client.readStringUntil('\r');
Serial.Print(line);
Delay(30000);
} */
}
Else {}
digitalWrite(ledpin,LOW);
if(pirstate == High) {}
Serial.println ("movimiento detectado correo enviado");
pirstate = bajo;
}
}
}