Keypad con NodeMCU

Objetivo


El objetivo de esta practica sera para poder crear una cerradura la cual te dira a que hora han entrado y si alguien intento ento entrar, esto puede serbir para poder registrar horas de entrada.
Gracias al nodeMCU podremos usar su capacidad de conectarse a internet y con una api diseñada y una web nos ara mas facil el uso de esta.

Materiales

Matriz 4x4 kaypad

4x4 Matrix Keypad.png

NodeMCU
Resultado de imagen para nodemcu


Descripción 



NodeMCU 4x4 Matrix Keypad diagram


Siguiendo la imagen de arriva lo primero que aremos sera conectar nuestra teclado a nuestra nodemcu exactamente de esta forma.


Conectaremos el NodeMCU con el compilador de arduino y cargaremos el siguiente codigo:

Incluimos las librerias
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <Keypad.h>
declaramos nuestras varibles de coneccion y de configuracion del keypad

const char* ssid = "NOMBRE_RED";
const char* pass = "CONTRASEÑA_RED";
const byte n_rows = 4;
const byte n_cols = 4;
String payload ="";

char keys[n_rows][n_cols] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte colPins[n_rows] = {D3, D2, D1, D0};
byte rowPins[n_cols] = {D7, D6, D5, D4};
const String PASS = "1234";
String password = "";
byte i = 0;
Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, n_rows, n_cols); 




Creamos nuestra conección a internet y a la api para verificar que todo funciona bien

void setup(){
  Serial.begin(115200);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print("Attempting to connect to WPA SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network:
    WiFi.begin(ssid, pass);
    // wait 5 seconds for connection:
    delay(5000);
    Serial.print("Status = ");
    Serial.println(WiFi.status());
  }
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;  //Declare an object of class HTTPClient
    http.begin("http://192.168.43.154:8080/api/password");  //Specify request destination
    int httpCode = http.GET();                                                                  //Send the request
    if (httpCode > 0) { //Check the returning code
      payload = http.getString();   //Get the request response payload
      Serial.println(payload);                     //Print the response payload
    }
    http.end();   //Close connection
  }
}

Creamos en el loop otra coneccion que mande la señal que ingresamos en el teclado para que este en constante coneccion con el servidor.

void loop(){

  char myKey = myKeypad.getKey();
  if (myKey != NULL){
    if(i < 4){
      password= (String(password + myKey));
      Serial.println(myKey);
      i++;
    }
    if(i == 4){
     
     
      if((password) == payload){
          HTTPClient http;  //Declare an object of class HTTPClient
          http.begin("http://192.168.43.154:8080/api/send-date/1");  //Specify request destination
          int httpCode = http.GET();                                                                  //Send the request
          if (httpCode > 0) { //Check the returning code
           String payloadget = http.getString();   //Get the request response payload
            Serial.println(payloadget);                     //Print the response payload
          }
          http.end();   //Close connection
          Serial.println("Enter");
      }else{
         HTTPClient http;  //Declare an object of class HTTPClient
          http.begin("http://192.168.43.154:8080/api/send-date/2");  //Specify request destination
          int httpCode = http.GET();                                                                  //Send the request
          if (httpCode > 0) { //Check the returning code
           String payloadget = http.getString();   //Get the request response payload
            Serial.println(payloadget);                     //Print the response payload
          }
          http.end();   //Close connection
        Serial.println("No");
      }
      i=0;
      password="";
    }
   
  }
}

En el siguiente link podran descargar el repositorio del front-end y back-end del proyecto para poder terminarlo, en esta ocacion utilize nodejs como back y mongodb como base de datos y Angular 4 como front




Conclución 

Gracias al Nodemcu la comunicación con internet  y hardware, es de una manera demasiado sencilla ya que nos permite poder realizar peticiones y podernos conectar a una API con una simple tarjeta podríamos incluso crear nuestra propia casa inteligente.



Comentarios

Entradas populares de este blog

Practica internet de las cosas 1