0% encontró este documento útil (0 votos)
60 vistas5 páginas

Codigo de Arduino

Este documento describe el código para un sensor ultrasónico conectado a WiFi. Define las librerías y pines digitales utilizados. Se conecta al WiFi, mide la distancia con el sensor ultrasónico, envía los datos mediante JSON a un servidor y recibe una orden también en formato JSON para activar o desactivar las alarmas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
60 vistas5 páginas

Codigo de Arduino

Este documento describe el código para un sensor ultrasónico conectado a WiFi. Define las librerías y pines digitales utilizados. Se conecta al WiFi, mide la distancia con el sensor ultrasónico, envía los datos mediante JSON a un servidor y recibe una orden también en formato JSON para activar o desactivar las alarmas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

//SE DEFINE LAS LIBRERIAS A USAR

#include <ESP8266WiFi.h>

#include <ESP8266HTTPClient.h>

#include <ArduinoJson.h>

#include <stdio.h>

//SE DEFINE LOS PINES DIGITALES QUE SE USARA

#define Trigger D1 //Pin digital 2 para el Trigger del sensor

#define Echo D3 //Pin digital 3 para el Echo del sensor

#define LED D4

#define BUZZER D5

#define LEDCASA D6

//PARAMETROS WIFI

const char* ssid = "WiFi ID";

const char* pass = "contraseña";

const char* host = "35.245.196.73"; //Direccion del servidor

int id_ant=0;

//SE EJECUTA SOLO UNA VEZ LO QUE ESTA DENTRO DEL VOID SETUP

void setup() {

Serial.begin(115200);

//SE DEFINE COMO ENTRADA O SALIDA

pinMode(Trigger, OUTPUT); //pin como salida

pinMode(Echo, INPUT); //pin como entrada

//pinMode(D4, OUTPUT);

pinMode(D6, OUTPUT);

//SE INICIALIZA EN CIERTO ESTADO

digitalWrite(Trigger, LOW); //Inicializamos el pin con 0

digitalWrite(D4, HIGH); //Se define el led como HIGH al principio porque tiene lógica invertida

//SE IMPRIME EN EL MONITOR LA INICIALIZACION DE LA CONEXION

Serial.println();
Serial.print("Connecting to ");

Serial.println(ssid);

WiFi.begin(ssid, pass); //Se hace la conexion WiFi

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print("."); }

Serial.println("");

Serial.println("WiFi connected");

Serial.println("IP address: ");

Serial.println(WiFi.localIP());

void loop() {

//SE DEFINE LAS VARIABLES PARA LA MEDICION DE TIEMPO Y DISTANCIA

float t; //tiempo que demora en llegar el eco

float d; //distancia en centimetros

//SE INICIALIZA LA MEDICION DEL ULTRASONICO

digitalWrite(Trigger, HIGH);

delayMicroseconds(10); //Enviamos un pulso de 10us

digitalWrite(Trigger, LOW);

t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso

d = t/59; //escalamos el tiempo a una distancia en cm

// PROCESO PARA ENVIAR UN VALOR Y GUARDAR EN FORMATO JSON AL SERVIDOR -


CODIFICACION

StaticJsonBuffer<300> JSONbuffer;

JsonObject& JSONencoder = JSONbuffer.createObject();


JSONencoder["distance"] = d;

char JSONmessageBuffer[300];

JSONencoder.prettyPrintTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));

//Serial.println(JSONmessageBuffer);

if (WiFi.status() == WL_CONNECTED) {

// SE RECOPILARA EL VALOR DEL SERVIDOR

HTTPClient http1; //Se crea el objeto http1 para recibir la informacion

http1.begin("http://35.245.196.73/order");

int httpCode1 = http1.GET();

// SE ENVIARA LA DATA AL SERVIDOR

HTTPClient http2; //Se crea el objeto htt2 para enviar la informacion

http2.begin("http://35.245.196.73/api/sensor/ultrasonic"); //Specify request destination

http2.addHeader("Content-Type", "application/json"); //Specify content-type header

int httpCode2 = http2.POST(JSONmessageBuffer); //Send the request

String payload = http2.getString();

// SE REVISA QUE DEVUELVE EL SERVIDOR

if (httpCode1 > 0 && httpCode2>0) {

// PROCESO PARA RECIBIR UN VALOR JSON Y GUARDARLO EN UNA VARIABLE -


DECODIFICACION

const size_t bufferSize = JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(1) + 8;

DynamicJsonBuffer jsonBuffer(bufferSize);

JsonObject& root = jsonBuffer.parseObject(http1.getString());

int id = root["value"];

Serial.print("Distancia: ");

Serial.print(d);

Serial.print("cm");

Serial.println(" ");
// LA DECISION QUE SE TOMARA LUEGO DE RECIBIR EL VALOR Y GUARDARLO EN UNA
VARIABLE

if (id) {

if(id==1 && id_ant==0)

{Serial.println("SENSOR ACTIVADO");}

id_ant=1;

if(d<60)

{//digitalWrite(D4, LOW);

digitalWrite(D6, HIGH);

delay(900);

Serial.println("MANTENER SU DISTANCIA POR FAVOR");

tone(D5,1000);}

else

{ noTone(D5);

//digitalWrite(D4, HIGH);

digitalWrite(D6, LOW);}

else if(id==0) {

if(id==0 && id_ant==1)

{Serial.println("SENSOR DESACTIVADO");

id_ant=0;

digitalWrite(D6, LOW);

noTone(D5);}

else{

Serial.println("No olvide activar el sensor cuando este dentro de su vivienda.");

digitalWrite(D6, LOW);

noTone(D5);

}
else {

Serial.println("Hubo un errror :( ");}

http1.end();

http2.end();

delay(500);

También podría gustarte