Hola comunidad soy nuevo, necesito una manito para un proyecto porfavor
les cuento necesito dos sensores el PIR y Ultrasonido trabajen como uno y que manden una señal para una cerradura eléctrica porfavor, nose como unir estas dos programaciones
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
/Crear el objeto de la clase NewPing/
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(9600);
}
void loop() {
// Esperar 1 segundo entre mediciones
delay(100);
// Obtener medicion de tiempo de viaje del sonido y guardar en variable uS
int uS = sonar.ping_median();
// Imprimir la distancia medida a la consola serial
Serial.print("Distancia: ");
// Calcular la distancia con base en una constante
Serial.print(uS / US_ROUNDTRIP_CM);
Serial.println("cm");
}
Si, estudiar como programar y no soy irónico.
Estas pidiendo que te hagan la tarea, y sin saber programar no puedes poner dos sensores juntos.
Como se hace?
Se colocan juntos y listo. Se respeta las variables globales de ambos, lo relevante del setup, y lo mismo con el loop.
Con esta simple explicación lo deberías lograr.
Necesitas algo que demore la ejecución de una parte del código, entonces no uses delay() y en su reemplazo estudia y usa millis()
Ve a Documentación => Indice de temas tutoriales => millis()
const int PIRPin= 2;
const int Trigger = 12; //Pin digital 2 para el Trigger del sensor
const int Echo = 11; //Pin digital 3 para el Echo del sensor
long t; //timepo que demora en llegar el eco
long d; //distancia en centimetros
void setup()
{
Serial.begin(9600);
pinMode(PIRPin, INPUT);
Serial.begin(9600);//iniciailzamos la comunicación
pinMode(Trigger, OUTPUT); //pin como salida
pinMode(Echo, INPUT); //pin como entrada
digitalWrite(Trigger, LOW);//Inicializamos el pin con 0
}
void loop()
{
int value= digitalRead(PIRPin);
if (value == HIGH)
{
Serial.println("prendido");
}
else
{
Serial.println("apagado");
}
digitalWrite(Trigger, HIGH);
delayMicroseconds(100); //Enviamos un pulso de 10us
digitalWrite(Trigger, LOW);
t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso
d = t/10; //escalamos el tiempo a una distancia en cm
Serial.print("Distancia: ");
Serial.print(d); //Enviamos serialmente el valor de la distancia
Serial.print("cm");
Serial.println();
delay(100);
}
necesito saber si es posible agregarle el modulo ESP8266 y que pueda abrir la cerradura, hasta el momento va todo bien! si alguien ayuda es bienvenida su aporte
Que el ESP8266 funcione con una app? No entiendo eso.
Si usas el ESP8266 puedes interactuar con una app via socket, sabes como? Pero también es fácil o mas facil hacer que el ESP8266 tenga una pequeña pagina y tu colocas la ip del esp8266 y entonces con el navegador del celular comandar lo que gustes. Eso es fácil tambien.
Explico bien, el ESP8266 lo tengo con una pagina web que es la direccion ip privada, ahora tengo un relay en la cerradura entonces el esp8266 deberia ir en el relay ? y necesito que envie a un servidor la informacion
Ej:
Lunes 08 se abrió 13 veces la puerta, tengo el servidor con la base de datos lista pero no puedo dejarla funcionando
Todo lo que estas haciendo lo puedes hacer con el ESP, pero si no compartes el código es dificil entender lo que intentas hacer.
Tienes un PIR y un ultrasónico mas un rele que controlaría el cerrojo.
Ademas quieres que eso se refleje en tu aplicación o mejor dicho que el ESP actuando como webserver permita que alguien con la ip pueda visualizar que esta ocurriendo.
Okay, muestranos eso en un código y de ahi trabajamos en solucionarlo.
#include <ESP8266WiFi.h>
//Credenciales del WiFi
const char* ssid = "Wifi_Casa";
const char* password = "password"; // no mostrar clave
int ledPin = D0;
WiFiServer server(80);
void setup() {
Serial.begin(115200); //Reconteo
delay(10);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
// Conecto con la red WiFi en modo estación (STA)
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("WiFi conectado");
// Inicializo el servidor
server.begin();
Serial.println("Servidor iniciado");
// Muestro la IP local asignada. URL del servidor
Serial.print("Usa esta URL para conectar al servidor: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// Compruebo si hay un cliente disponible (una petición)
WiFiClient client = server.available();
if (!client) {
return; // En caso de no haber un cliente, no hago nada
}
Serial.println("¡Nuevo cliente!");
while(!client.available()){
delay(1);
}
// Leo la primera linea de la petición del cliente
String request = client.readStringUntil('\r'); // Leo hasta retorno de carro
Serial.println(request); //Imprimo la petición
client.flush(); //Limpio el buffer
// Interpreto lo que he recibido
int value = LOW;
if (request.indexOf("/CERRADURA=ON") != -1) {
digitalWrite(ledPin, HIGH);
value = HIGH;
}
if (request.indexOf("/CERRADURA=OFF") != -1) {
digitalWrite(ledPin, LOW);
value = LOW;
}
// Pongo ledPin al valor que ha solicitado el cliente en la petición
// Devuelvo la respuesta al cliente -> Todo ha ido bien, el mensaje ha sido interpretado correctamente
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
// A partir de aquí creo la página en raw HTML
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("La CERRADURA está: ");
if(value == HIGH) {
client.print("ON");
} else {
client.print("OFF");
}
client.println("
");
client.println("<a href=\"/CERRADURA=ON\"\"><button>Abrir </button></a>"); // Los botones con enlace
client.println("<a href=\"/CERRADURA=OFF\"\"><button>Apagar </button></a>
");
client.println("</html>");
delay(1);
Serial.println("Cliente desconectado"); // Nos desconectamos del cliente
Serial.println("");
}
hasta el momento llevo esto, no se que esta bien o mal, la pagina me funciona al 100% el lunes pruebo de nuevo en la cerradura que no la tengo en mis manos, y la base de datos esta lista pero por desconocimiento no se donde agregar la linea o que esta demás en la programación.
ya amigo, mira tengo un proyecto de una puerta que se abra automáticamente constara con dos sensores el Pir y ultrasonido, esa programación esta arriba lista, el relay esta instalado igual, pero necesito que se envié la información de cuantas veces se abrió a una base de datos y investigue y se necesita el modulo esp...
hasta el momento me falta la programación o ver como debo hacerla, no se si ahora se entendió un poco