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
NodeMCU
Descripción
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
Publicar un comentario